Skip to content

Commit c855e4a

Browse files
authored
v3 pages have page titles (#1582)
* Adds tasks page title * Adds page titles to the <head>
1 parent e1497c8 commit c855e4a

File tree

18 files changed

+180
-39
lines changed
  • apps/webapp/app/routes
    • _app.orgs.$organizationSlug._index
    • _app.orgs.$organizationSlug.projects.v3.$projectParam._index
    • _app.orgs.$organizationSlug.projects.v3.$projectParam.alerts
    • _app.orgs.$organizationSlug.projects.v3.$projectParam.apikeys
    • _app.orgs.$organizationSlug.projects.v3.$projectParam.batches
    • _app.orgs.$organizationSlug.projects.v3.$projectParam.concurrency
    • _app.orgs.$organizationSlug.projects.v3.$projectParam.deployments
    • _app.orgs.$organizationSlug.projects.v3.$projectParam.environment-variables
    • _app.orgs.$organizationSlug.projects.v3.$projectParam.runs._index
    • _app.orgs.$organizationSlug.projects.v3.$projectParam.schedules
    • _app.orgs.$organizationSlug.projects.v3.$projectParam.settings
    • _app.orgs.$organizationSlug.projects.v3.$projectParam.test
    • _app.orgs.$organizationSlug.settings
    • _app.orgs.$organizationSlug.team
    • _app.orgs.$organizationSlug.v3.billing
    • _app.orgs.$organizationSlug.v3.usage
    • account._index
    • account.tokens

18 files changed

+180
-39
lines changed

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

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
1-
import { Link } from "@remix-run/react";
2-
import simplur from "simplur";
1+
import { Link, MetaFunction } from "@remix-run/react";
32
import { PageBody, PageContainer } from "~/components/layout/AppLayout";
43
import { Badge } from "~/components/primitives/Badge";
54
import { LinkButton } from "~/components/primitives/Buttons";
65
import { Header3 } from "~/components/primitives/Headers";
76
import { NamedIcon } from "~/components/primitives/NamedIcon";
8-
import {
9-
PageAccessories,
10-
NavBar,
11-
PageInfoGroup,
12-
PageInfoRow,
13-
PageTitle,
14-
} from "~/components/primitives/PageHeader";
7+
import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader";
158
import { Paragraph } from "~/components/primitives/Paragraph";
169
import { useOrganization } from "~/hooks/useOrganizations";
1710
import { newProjectPath, projectPath } from "~/utils/pathBuilder";
1811

12+
export const meta: MetaFunction = () => {
13+
return [
14+
{
15+
title: "Projects | Trigger.dev",
16+
},
17+
];
18+
};
19+
1920
export default function Page() {
2021
const organization = useOrganization();
2122

apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam._index/route.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
UserPlusIcon,
99
VideoCameraIcon,
1010
} from "@heroicons/react/20/solid";
11-
import { json } from "@remix-run/node";
11+
import { json, type MetaFunction } from "@remix-run/node";
1212
import { Link, useRevalidator, useSubmit } from "@remix-run/react";
1313
import { ActionFunctionArgs, LoaderFunctionArgs } from "@remix-run/server-runtime";
1414
import { DiscordIcon } from "@trigger.dev/companyicons";
@@ -89,6 +89,14 @@ import {
8989
v3TestTaskPath,
9090
} from "~/utils/pathBuilder";
9191

92+
export const meta: MetaFunction = () => {
93+
return [
94+
{
95+
title: `Tasks | Trigger.dev`,
96+
},
97+
];
98+
};
99+
92100
export const loader = async ({ request, params }: LoaderFunctionArgs) => {
93101
const userId = await requireUserId(request);
94102
const { organizationSlug, projectParam } = ProjectParamSchema.parse(params);

apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.alerts/route.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,10 @@ import {
77
EnvelopeIcon,
88
GlobeAltIcon,
99
LockClosedIcon,
10-
LockOpenIcon,
1110
PlusIcon,
1211
TrashIcon,
1312
} from "@heroicons/react/20/solid";
14-
import { Form, Outlet, useActionData, useNavigation } from "@remix-run/react";
13+
import { Form, MetaFunction, Outlet, useActionData, useNavigation } from "@remix-run/react";
1514
import { type ActionFunctionArgs, type LoaderFunctionArgs, json } from "@remix-run/server-runtime";
1615
import { SlackIcon } from "@trigger.dev/companyicons";
1716
import { type ProjectAlertChannelType, type ProjectAlertType } from "@trigger.dev/database";
@@ -24,7 +23,6 @@ import { Button, LinkButton } from "~/components/primitives/Buttons";
2423
import { ClipboardField } from "~/components/primitives/ClipboardField";
2524
import { DetailCell } from "~/components/primitives/DetailCell";
2625
import { Header2, Header3 } from "~/components/primitives/Headers";
27-
import { InfoPanel } from "~/components/primitives/InfoPanel";
2826
import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader";
2927
import { Paragraph } from "~/components/primitives/Paragraph";
3028
import {
@@ -63,6 +61,14 @@ import {
6361
v3ProjectAlertsPath,
6462
} from "~/utils/pathBuilder";
6563

64+
export const meta: MetaFunction = () => {
65+
return [
66+
{
67+
title: `Alerts | Trigger.dev`,
68+
},
69+
];
70+
};
71+
6672
export const loader = async ({ request, params }: LoaderFunctionArgs) => {
6773
const userId = await requireUserId(request);
6874
const { projectParam, organizationSlug } = ProjectParamSchema.parse(params);

apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.apikeys/route.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { BookOpenIcon, InformationCircleIcon, LockOpenIcon } from "@heroicons/react/20/solid";
22
import { ArrowUpCircleIcon } from "@heroicons/react/24/outline";
3+
import { MetaFunction } from "@remix-run/react";
34
import { LoaderFunctionArgs } from "@remix-run/server-runtime";
45
import { typedjson, useTypedLoaderData } from "remix-typedjson";
56
import { AdminDebugTooltip } from "~/components/admin/debugTooltip";
@@ -28,6 +29,14 @@ import { ApiKeysPresenter } from "~/presenters/v3/ApiKeysPresenter.server";
2829
import { requireUserId } from "~/services/session.server";
2930
import { ProjectParamSchema, docsPath, v3BillingPath } from "~/utils/pathBuilder";
3031

32+
export const meta: MetaFunction = () => {
33+
return [
34+
{
35+
title: `API keys | Trigger.dev`,
36+
},
37+
];
38+
};
39+
3140
export const loader = async ({ request, params }: LoaderFunctionArgs) => {
3241
const userId = await requireUserId(request);
3342
const { projectParam } = ProjectParamSchema.parse(params);

apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.batches/route.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
ExclamationCircleIcon,
55
} from "@heroicons/react/20/solid";
66
import { BookOpenIcon } from "@heroicons/react/24/solid";
7-
import { useLocation, useNavigation } from "@remix-run/react";
7+
import { MetaFunction, useLocation, useNavigation } from "@remix-run/react";
88
import { LoaderFunctionArgs } from "@remix-run/server-runtime";
99
import { formatDuration } from "@trigger.dev/core/v3/utils/durations";
1010
import { typedjson, useTypedLoaderData } from "remix-typedjson";
@@ -50,6 +50,14 @@ import {
5050
import { requireUserId } from "~/services/session.server";
5151
import { docsPath, ProjectParamSchema, v3BatchRunsPath } from "~/utils/pathBuilder";
5252

53+
export const meta: MetaFunction = () => {
54+
return [
55+
{
56+
title: `Batches | Trigger.dev`,
57+
},
58+
];
59+
};
60+
5361
export const loader = async ({ request, params }: LoaderFunctionArgs) => {
5462
const userId = await requireUserId(request);
5563
const { projectParam, organizationSlug } = ProjectParamSchema.parse(params);

apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.concurrency/route.tsx

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ import {
33
BookOpenIcon,
44
ChatBubbleLeftEllipsisIcon,
55
} from "@heroicons/react/20/solid";
6-
import { Await } from "@remix-run/react";
6+
import { LockOpenIcon } from "@heroicons/react/24/solid";
7+
import { Await, MetaFunction } from "@remix-run/react";
78
import { type LoaderFunctionArgs } from "@remix-run/server-runtime";
89
import { Suspense } from "react";
910
import { typeddefer, useTypedLoaderData } from "remix-typedjson";
@@ -12,8 +13,8 @@ import { EnvironmentLabel } from "~/components/environments/EnvironmentLabel";
1213
import { Feedback } from "~/components/Feedback";
1314
import { PageBody, PageContainer } from "~/components/layout/AppLayout";
1415
import { Button, LinkButton } from "~/components/primitives/Buttons";
15-
import { Header2 } from "~/components/primitives/Headers";
1616
import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader";
17+
import { Paragraph } from "~/components/primitives/Paragraph";
1718
import { Spinner } from "~/components/primitives/Spinner";
1819
import {
1920
Table,
@@ -31,8 +32,14 @@ import {
3132
import { requireUserId } from "~/services/session.server";
3233
import { docsPath, ProjectParamSchema, v3BillingPath } from "~/utils/pathBuilder";
3334
import { useCurrentPlan } from "../_app.orgs.$organizationSlug/route";
34-
import { LockOpenIcon } from "@heroicons/react/24/solid";
35-
import { Paragraph } from "~/components/primitives/Paragraph";
35+
36+
export const meta: MetaFunction = () => {
37+
return [
38+
{
39+
title: `Concurrency limits | Trigger.dev`,
40+
},
41+
];
42+
};
3643

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

apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.deployments/route.tsx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
BookOpenIcon,
55
ServerStackIcon,
66
} from "@heroicons/react/20/solid";
7-
import { Outlet, useLocation, useParams } from "@remix-run/react";
7+
import { MetaFunction, Outlet, useLocation, useParams } from "@remix-run/react";
88
import { LoaderFunctionArgs } from "@remix-run/server-runtime";
99
import { typedjson, useTypedLoaderData } from "remix-typedjson";
1010
import { z } from "zod";
@@ -37,8 +37,8 @@ import {
3737
import { TextLink } from "~/components/primitives/TextLink";
3838
import {
3939
DeploymentStatus,
40-
deploymentStatuses,
4140
deploymentStatusDescription,
41+
deploymentStatuses,
4242
} from "~/components/runs/v3/DeploymentStatus";
4343
import { RetryDeploymentIndexingDialog } from "~/components/runs/v3/RetryDeploymentIndexingDialog";
4444
import { RollbackDeploymentDialog } from "~/components/runs/v3/RollbackDeploymentDialog";
@@ -50,7 +50,6 @@ import {
5050
DeploymentListPresenter,
5151
} from "~/presenters/v3/DeploymentListPresenter.server";
5252
import { requireUserId } from "~/services/session.server";
53-
import { cn } from "~/utils/cn";
5453
import {
5554
ProjectParamSchema,
5655
docsPath,
@@ -60,6 +59,14 @@ import {
6059
import { createSearchParams } from "~/utils/searchParams";
6160
import { deploymentIndexingIsRetryable } from "~/v3/deploymentStatus";
6261

62+
export const meta: MetaFunction = () => {
63+
return [
64+
{
65+
title: `Deployments | Trigger.dev`,
66+
},
67+
];
68+
};
69+
6370
const SearchParams = z.object({
6471
page: z.coerce.number().optional(),
6572
});

apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.environment-variables/route.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
TrashIcon,
1010
} from "@heroicons/react/20/solid";
1111
import { ArrowUpCircleIcon } from "@heroicons/react/24/outline";
12-
import { Form, Outlet, useActionData, useNavigation } from "@remix-run/react";
12+
import { Form, MetaFunction, Outlet, useActionData, useNavigation } from "@remix-run/react";
1313
import {
1414
ActionFunctionArgs,
1515
LoaderFunctionArgs,
@@ -69,6 +69,14 @@ import {
6969
EditEnvironmentVariable,
7070
} from "~/v3/environmentVariables/repository";
7171

72+
export const meta: MetaFunction = () => {
73+
return [
74+
{
75+
title: `Environment variables | Trigger.dev`,
76+
},
77+
];
78+
};
79+
7280
export const loader = async ({ request, params }: LoaderFunctionArgs) => {
7381
const userId = await requireUserId(request);
7482
const { projectParam } = ProjectParamSchema.parse(params);

apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.runs._index/route.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { ArrowPathIcon, StopCircleIcon } from "@heroicons/react/20/solid";
22
import { BeakerIcon, BookOpenIcon } from "@heroicons/react/24/solid";
3-
import { Form, useNavigation } from "@remix-run/react";
3+
import { Form, MetaFunction, useNavigation } from "@remix-run/react";
44
import { LoaderFunctionArgs } from "@remix-run/server-runtime";
55
import { IconCircleX } from "@tabler/icons-react";
66
import { AnimatePresence, motion } from "framer-motion";
@@ -53,6 +53,14 @@ import {
5353
} from "~/utils/pathBuilder";
5454
import { ListPagination } from "../../components/ListPagination";
5555

56+
export const meta: MetaFunction = () => {
57+
return [
58+
{
59+
title: `Runs | Trigger.dev`,
60+
},
61+
];
62+
};
63+
5664
export const loader = async ({ request, params }: LoaderFunctionArgs) => {
5765
const userId = await requireUserId(request);
5866
const { projectParam, organizationSlug } = ProjectParamSchema.parse(params);

apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.schedules/route.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { ClockIcon, LockOpenIcon, PlusIcon, RectangleGroupIcon } from "@heroicons/react/20/solid";
22
import { BookOpenIcon } from "@heroicons/react/24/solid";
3-
import { Outlet, useLocation, useParams } from "@remix-run/react";
3+
import { MetaFunction, Outlet, useLocation, useParams } from "@remix-run/react";
44
import { LoaderFunctionArgs } from "@remix-run/server-runtime";
55
import { typedjson, useTypedLoaderData } from "remix-typedjson";
66
import { Feedback } from "~/components/Feedback";
@@ -66,6 +66,14 @@ import { useCurrentPlan } from "../_app.orgs.$organizationSlug/route";
6666
import { ArrowUpCircleIcon } from "@heroicons/react/24/outline";
6767
import { SimpleTooltip } from "~/components/primitives/Tooltip";
6868

69+
export const meta: MetaFunction = () => {
70+
return [
71+
{
72+
title: `Schedules | Trigger.dev`,
73+
},
74+
];
75+
};
76+
6977
export const loader = async ({ request, params }: LoaderFunctionArgs) => {
7078
const userId = await requireUserId(request);
7179
const { projectParam, organizationSlug } = ProjectParamSchema.parse(params);

apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.settings/route.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { conform, useForm } from "@conform-to/react";
22
import { parse } from "@conform-to/zod";
3-
import { Form, useActionData, useNavigation } from "@remix-run/react";
3+
import { Form, MetaFunction, useActionData, useNavigation } from "@remix-run/react";
44
import { ActionFunction, json } from "@remix-run/server-runtime";
55
import { z } from "zod";
66
import { AdminDebugTooltip } from "~/components/admin/debugTooltip";
@@ -24,6 +24,14 @@ import { redirectWithSuccessMessage } from "~/models/message.server";
2424
import { requireUserId } from "~/services/session.server";
2525
import { v3ProjectPath } from "~/utils/pathBuilder";
2626

27+
export const meta: MetaFunction = () => {
28+
return [
29+
{
30+
title: `Project settings | Trigger.dev`,
31+
},
32+
];
33+
};
34+
2735
export function createSchema(
2836
constraints: {
2937
getSlugMatch?: (slug: string) => { isMatch: boolean; projectSlug: string };

apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.test/route.tsx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
import { BookOpenIcon } from "@heroicons/react/20/solid";
2-
import { Link, Outlet, useLocation, useNavigation, useParams } from "@remix-run/react";
2+
import {
3+
Link,
4+
MetaFunction,
5+
Outlet,
6+
useLocation,
7+
useNavigation,
8+
useParams,
9+
} from "@remix-run/react";
310
import { LoaderFunctionArgs } from "@remix-run/server-runtime";
411
import { typedjson, useTypedLoaderData } from "remix-typedjson";
512
import { z } from "zod";
@@ -47,6 +54,14 @@ import { requireUserId } from "~/services/session.server";
4754
import { cn } from "~/utils/cn";
4855
import { docsPath, ProjectParamSchema, v3TestPath, v3TestTaskPath } from "~/utils/pathBuilder";
4956

57+
export const meta: MetaFunction = () => {
58+
return [
59+
{
60+
title: `Test | Trigger.dev`,
61+
},
62+
];
63+
};
64+
5065
export const TestSearchParams = z.object({
5166
environment: z.string().optional(),
5267
});

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { conform, useForm } from "@conform-to/react";
22
import { parse } from "@conform-to/zod";
3-
import { Form, useActionData, useNavigation } from "@remix-run/react";
3+
import { Form, MetaFunction, useActionData, useNavigation } from "@remix-run/react";
44
import { ActionFunction, json } from "@remix-run/server-runtime";
55
import { redirect } from "remix-typedjson";
66
import { z } from "zod";
@@ -28,6 +28,14 @@ import { logger } from "~/services/logger.server";
2828
import { requireUserId } from "~/services/session.server";
2929
import { organizationPath, organizationSettingsPath, rootPath } from "~/utils/pathBuilder";
3030

31+
export const meta: MetaFunction = () => {
32+
return [
33+
{
34+
title: `Organization settings | Trigger.dev`,
35+
},
36+
];
37+
};
38+
3139
export function createSchema(
3240
constraints: {
3341
getSlugMatch?: (slug: string) => { isMatch: boolean; organizationSlug: string };

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { useForm } from "@conform-to/react";
22
import { parse } from "@conform-to/zod";
33
import { LockOpenIcon, UserPlusIcon } from "@heroicons/react/20/solid";
4-
import { Form, useActionData } from "@remix-run/react";
4+
import { Form, MetaFunction, useActionData } from "@remix-run/react";
55
import { ActionFunction, LoaderFunctionArgs, json } from "@remix-run/server-runtime";
66
import { useState } from "react";
77
import { UseDataFunctionReturn, typedjson, useTypedLoaderData } from "remix-typedjson";
@@ -44,6 +44,14 @@ import {
4444
v3BillingPath,
4545
} from "~/utils/pathBuilder";
4646

47+
export const meta: MetaFunction = () => {
48+
return [
49+
{
50+
title: `Team | Trigger.dev`,
51+
},
52+
];
53+
};
54+
4755
const Params = z.object({
4856
organizationSlug: z.string(),
4957
});

0 commit comments

Comments
 (0)