Skip to content

Commit 442f5a3

Browse files
committed
feat(webapp): tab titles for organization, account and onboarding pages
1 parent 497927b commit 442f5a3

24 files changed

Lines changed: 67 additions & 90 deletions

File tree

apps/webapp/app/routes/_app.orgs.$organizationSlug.invite/route.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ import { dashboardAction, dashboardLoader } from "~/services/routeBuilders/dashb
3838
import { acceptInvitePath, organizationTeamPath, v3BillingPath } from "~/utils/pathBuilder";
3939
import { isAtOrBelow } from "~/utils/inviteRoleLadder";
4040
import { PurchaseSeatsModal } from "../_app.orgs.$organizationSlug.settings.team/route";
41+
import { pageMeta } from "~/utils/pageTitle";
42+
43+
export const meta = pageMeta("Invite team members");
4144

4245
const Params = z.object({
4346
organizationSlug: z.string(),

apps/webapp/app/routes/_app.orgs.$organizationSlug.settings._index/route.tsx

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
FolderIcon,
88
TrashIcon,
99
} from "@heroicons/react/20/solid";
10-
import { Form, type MetaFunction, useActionData, useNavigation, useSubmit } from "@remix-run/react";
10+
import { Form, useActionData, useNavigation, useSubmit } from "@remix-run/react";
1111
import { json, type LoaderFunctionArgs } from "@remix-run/server-runtime";
1212
import { useEffect, useRef, useState } from "react";
1313
import { redirect, typedjson, useTypedLoaderData } from "remix-typedjson";
@@ -54,14 +54,9 @@ import { dashboardAction } from "~/services/routeBuilders/dashboardBuilder";
5454
import { cn } from "~/utils/cn";
5555
import { extractDomain, faviconUrl as buildFaviconUrl } from "~/utils/favicon";
5656
import { OrganizationParamsSchema, organizationSettingsPath, rootPath } from "~/utils/pathBuilder";
57+
import { pageMeta } from "~/utils/pageTitle";
5758

58-
export const meta: MetaFunction = () => {
59-
return [
60-
{
61-
title: `Organization settings | Trigger.dev`,
62-
},
63-
];
64-
};
59+
export const meta = pageMeta("Organization settings");
6560

6661
export const loader = async ({ request, params }: LoaderFunctionArgs) => {
6762
const userId = await requireUserId(request);

apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.billing-limits/route.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { parseWithZod } from "@conform-to/zod";
2-
import type { MetaFunction } from "@remix-run/react";
32
import { json, redirect } from "@remix-run/server-runtime";
43
import { tryCatch } from "@trigger.dev/core";
54
import { typedjson, useTypedLoaderData } from "remix-typedjson";
@@ -74,15 +73,14 @@ import {
7473
v3BillingLimitsPath,
7574
v3BillingPath,
7675
} from "~/utils/pathBuilder";
76+
import { pageMeta } from "~/utils/pageTitle";
7777

7878
const billingLimitsAuthorization = {
7979
action: "manage" as const,
8080
resource: { type: "billing-limits" as const },
8181
};
8282

83-
export const meta: MetaFunction = () => {
84-
return [{ title: `Billing limits | Trigger.dev` }];
85-
};
83+
export const meta = pageMeta("Billing limits");
8684

8785
export const loader = dashboardLoader(
8886
{

apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.billing/route.tsx

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { CalendarDaysIcon, CreditCardIcon, StarIcon } from "@heroicons/react/20/solid";
2-
import { type MetaFunction } from "@remix-run/react";
32
import { type PlanDefinition } from "@trigger.dev/platform";
43
import { redirect, typedjson, useTypedLoaderData } from "remix-typedjson";
54
import { Feedback } from "~/components/Feedback";
@@ -21,14 +20,9 @@ import {
2120
v3StripePortalPath,
2221
} from "~/utils/pathBuilder";
2322
import { PricingPlans } from "../resources.orgs.$organizationSlug.select-plan";
23+
import { pageMeta } from "~/utils/pageTitle";
2424

25-
export const meta: MetaFunction = () => {
26-
return [
27-
{
28-
title: `Billing | Trigger.dev`,
29-
},
30-
];
31-
};
25+
export const meta = pageMeta("Billing");
3226

3327
export const loader = dashboardLoader(
3428
{

apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.integrations.slack.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ import { $transaction, prisma } from "~/db.server";
4040
import { requireOrganization } from "~/services/org.server";
4141
import { OrganizationParamsSchema, organizationSlackIntegrationPath } from "~/utils/pathBuilder";
4242
import { logger } from "~/services/logger.server";
43+
import { pageMeta } from "~/utils/pageTitle";
44+
45+
export const meta = pageMeta("Slack integration");
4346

4447
export const loader = async ({ request, params }: LoaderFunctionArgs) => {
4548
const { organizationSlug } = OrganizationParamsSchema.parse(params);

apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.integrations.vercel.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ import { requireOrganization } from "~/services/org.server";
3535
import { rbac } from "~/services/rbac.server";
3636
import { dashboardAction } from "~/services/routeBuilders/dashboardBuilder";
3737
import { OrganizationParamsSchema, v3ProjectSettingsIntegrationsPath } from "~/utils/pathBuilder";
38+
import { pageMeta } from "~/utils/pageTitle";
39+
40+
export const meta = pageMeta("Vercel integration");
3841

3942
function formatDate(date: Date): string {
4043
return new Intl.DateTimeFormat("en-US", {

apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections._index/route.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
PlusIcon,
55
TrashIcon,
66
} from "@heroicons/react/20/solid";
7-
import { Form, useRevalidator, type MetaFunction } from "@remix-run/react";
7+
import { Form, useRevalidator } from "@remix-run/react";
88
import { json, type ActionFunctionArgs, type LoaderFunctionArgs } from "@remix-run/server-runtime";
99
import { tryCatch } from "@trigger.dev/core/utils";
1010
import type { PrivateLinkConnectionStatus } from "@trigger.dev/platform";
@@ -33,10 +33,9 @@ import {
3333
} from "~/utils/pathBuilder";
3434
import { canAccessPrivateConnections } from "~/v3/canAccessPrivateConnections.server";
3535
import { useCurrentPlan } from "../_app.orgs.$organizationSlug/route";
36+
import { pageMeta } from "~/utils/pageTitle";
3637

37-
export const meta: MetaFunction = () => {
38-
return [{ title: `Private Connections | Trigger.dev` }];
39-
};
38+
export const meta = pageMeta("Private Connections");
4039

4140
export async function loader({ params, request }: LoaderFunctionArgs) {
4241
const userId = await requireUserId(request);

apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections.new/route.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { getFormProps, getInputProps, getSelectProps, useForm } from "@conform-to/react";
22
import { parseWithZod } from "@conform-to/zod";
3-
import { Form, useActionData, useParams, type MetaFunction } from "@remix-run/react";
3+
import { Form, useActionData, useParams } from "@remix-run/react";
44
import { json, type ActionFunction, type LoaderFunctionArgs } from "@remix-run/server-runtime";
55
import { tryCatch } from "@trigger.dev/core/utils";
66
import { useState } from "react";
@@ -45,10 +45,9 @@ import {
4545
SparklesIcon,
4646
TrashIcon,
4747
} from "@heroicons/react/20/solid";
48+
import { pageMeta } from "~/utils/pageTitle";
4849

49-
export const meta: MetaFunction = () => {
50-
return [{ title: `Add Private Connection | Trigger.dev` }];
51-
};
50+
export const meta = pageMeta("Add Private Connection");
5251

5352
export async function loader({ params, request }: LoaderFunctionArgs) {
5453
const userId = await requireUserId(request);

apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.roles/route.tsx

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { CheckIcon, XMarkIcon } from "@heroicons/react/20/solid";
2-
import { type MetaFunction } from "@remix-run/react";
32
import { useState } from "react";
43
import { type UseDataFunctionReturn, typedjson, useTypedLoaderData } from "remix-typedjson";
54
import { z } from "zod";
@@ -27,14 +26,9 @@ import { useShowSelfServe } from "~/hooks/useShowSelfServe";
2726
import { resolveOrgIdFromSlug } from "~/models/organization.server";
2827
import { rbac } from "~/services/rbac.server";
2928
import { dashboardLoader } from "~/services/routeBuilders/dashboardBuilder";
29+
import { pageMeta } from "~/utils/pageTitle";
3030

31-
export const meta: MetaFunction = () => {
32-
return [
33-
{
34-
title: `Roles | Trigger.dev`,
35-
},
36-
];
37-
};
31+
export const meta = pageMeta("Roles");
3832

3933
const Params = z.object({
4034
organizationSlug: z.string(),

apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.sso/route.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import {
44
ClockIcon,
55
ExclamationCircleIcon,
66
} from "@heroicons/react/20/solid";
7-
import { type MetaFunction } from "@remix-run/react";
87
import { redirect } from "@remix-run/server-runtime";
98
import { useEffect, useState } from "react";
109
import { useFetcher, useRevalidator } from "@remix-run/react";
@@ -48,8 +47,9 @@ import { FEATURE_FLAG } from "~/v3/featureFlags";
4847
import { dashboardAction, dashboardLoader } from "~/services/routeBuilders/dashboardBuilder";
4948
import { cn } from "~/utils/cn";
5049
import { throwPermissionDenied } from "~/utils/permissionDenied";
50+
import { pageMeta } from "~/utils/pageTitle";
5151

52-
export const meta: MetaFunction = () => [{ title: "SSO & Directory Sync | Trigger.dev" }];
52+
export const meta = pageMeta("SSO & Directory Sync");
5353

5454
const Params = z.object({ organizationSlug: z.string() });
5555

0 commit comments

Comments
 (0)