diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug._index/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug._index/route.tsx index 95f20beeea..85c1780ffa 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug._index/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug._index/route.tsx @@ -1,21 +1,22 @@ -import { Link } from "@remix-run/react"; -import simplur from "simplur"; +import { Link, MetaFunction } from "@remix-run/react"; import { PageBody, PageContainer } from "~/components/layout/AppLayout"; import { Badge } from "~/components/primitives/Badge"; import { LinkButton } from "~/components/primitives/Buttons"; import { Header3 } from "~/components/primitives/Headers"; import { NamedIcon } from "~/components/primitives/NamedIcon"; -import { - PageAccessories, - NavBar, - PageInfoGroup, - PageInfoRow, - PageTitle, -} from "~/components/primitives/PageHeader"; +import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader"; import { Paragraph } from "~/components/primitives/Paragraph"; import { useOrganization } from "~/hooks/useOrganizations"; import { newProjectPath, projectPath } from "~/utils/pathBuilder"; +export const meta: MetaFunction = () => { + return [ + { + title: "Projects | Trigger.dev", + }, + ]; +}; + export default function Page() { const organization = useOrganization(); diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam._index/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam._index/route.tsx index 69c63e5148..824e7fa0bc 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam._index/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam._index/route.tsx @@ -8,7 +8,7 @@ import { UserPlusIcon, VideoCameraIcon, } from "@heroicons/react/20/solid"; -import { json } from "@remix-run/node"; +import { json, type MetaFunction } from "@remix-run/node"; import { Link, useRevalidator, useSubmit } from "@remix-run/react"; import { ActionFunctionArgs, LoaderFunctionArgs } from "@remix-run/server-runtime"; import { DiscordIcon } from "@trigger.dev/companyicons"; @@ -89,6 +89,14 @@ import { v3TestTaskPath, } from "~/utils/pathBuilder"; +export const meta: MetaFunction = () => { + return [ + { + title: `Tasks | Trigger.dev`, + }, + ]; +}; + export const loader = async ({ request, params }: LoaderFunctionArgs) => { const userId = await requireUserId(request); const { organizationSlug, projectParam } = ProjectParamSchema.parse(params); diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.alerts/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.alerts/route.tsx index 29876d96dc..bf202b7feb 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.alerts/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.alerts/route.tsx @@ -7,11 +7,10 @@ import { EnvelopeIcon, GlobeAltIcon, LockClosedIcon, - LockOpenIcon, PlusIcon, TrashIcon, } from "@heroicons/react/20/solid"; -import { Form, Outlet, useActionData, useNavigation } from "@remix-run/react"; +import { Form, MetaFunction, Outlet, useActionData, useNavigation } from "@remix-run/react"; import { type ActionFunctionArgs, type LoaderFunctionArgs, json } from "@remix-run/server-runtime"; import { SlackIcon } from "@trigger.dev/companyicons"; import { type ProjectAlertChannelType, type ProjectAlertType } from "@trigger.dev/database"; @@ -24,7 +23,6 @@ import { Button, LinkButton } from "~/components/primitives/Buttons"; import { ClipboardField } from "~/components/primitives/ClipboardField"; import { DetailCell } from "~/components/primitives/DetailCell"; import { Header2, Header3 } from "~/components/primitives/Headers"; -import { InfoPanel } from "~/components/primitives/InfoPanel"; import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader"; import { Paragraph } from "~/components/primitives/Paragraph"; import { @@ -63,6 +61,14 @@ import { v3ProjectAlertsPath, } from "~/utils/pathBuilder"; +export const meta: MetaFunction = () => { + return [ + { + title: `Alerts | Trigger.dev`, + }, + ]; +}; + export const loader = async ({ request, params }: LoaderFunctionArgs) => { const userId = await requireUserId(request); const { projectParam, organizationSlug } = ProjectParamSchema.parse(params); diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.apikeys/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.apikeys/route.tsx index ea9c9c4e2e..6608fb69b3 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.apikeys/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.apikeys/route.tsx @@ -1,5 +1,6 @@ import { BookOpenIcon, InformationCircleIcon, LockOpenIcon } from "@heroicons/react/20/solid"; import { ArrowUpCircleIcon } from "@heroicons/react/24/outline"; +import { MetaFunction } from "@remix-run/react"; import { LoaderFunctionArgs } from "@remix-run/server-runtime"; import { typedjson, useTypedLoaderData } from "remix-typedjson"; import { AdminDebugTooltip } from "~/components/admin/debugTooltip"; @@ -28,6 +29,14 @@ import { ApiKeysPresenter } from "~/presenters/v3/ApiKeysPresenter.server"; import { requireUserId } from "~/services/session.server"; import { ProjectParamSchema, docsPath, v3BillingPath } from "~/utils/pathBuilder"; +export const meta: MetaFunction = () => { + return [ + { + title: `API keys | Trigger.dev`, + }, + ]; +}; + export const loader = async ({ request, params }: LoaderFunctionArgs) => { const userId = await requireUserId(request); const { projectParam } = ProjectParamSchema.parse(params); diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.batches/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.batches/route.tsx index ceb620624f..1bc79b2cf7 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.batches/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.batches/route.tsx @@ -4,7 +4,7 @@ import { ExclamationCircleIcon, } from "@heroicons/react/20/solid"; import { BookOpenIcon } from "@heroicons/react/24/solid"; -import { useLocation, useNavigation } from "@remix-run/react"; +import { MetaFunction, useLocation, useNavigation } from "@remix-run/react"; import { LoaderFunctionArgs } from "@remix-run/server-runtime"; import { formatDuration } from "@trigger.dev/core/v3/utils/durations"; import { typedjson, useTypedLoaderData } from "remix-typedjson"; @@ -50,6 +50,14 @@ import { import { requireUserId } from "~/services/session.server"; import { docsPath, ProjectParamSchema, v3BatchRunsPath } from "~/utils/pathBuilder"; +export const meta: MetaFunction = () => { + return [ + { + title: `Batches | Trigger.dev`, + }, + ]; +}; + export const loader = async ({ request, params }: LoaderFunctionArgs) => { const userId = await requireUserId(request); const { projectParam, organizationSlug } = ProjectParamSchema.parse(params); diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.concurrency/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.concurrency/route.tsx index b4ef617d52..08798ff4de 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.concurrency/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.concurrency/route.tsx @@ -3,7 +3,8 @@ import { BookOpenIcon, ChatBubbleLeftEllipsisIcon, } from "@heroicons/react/20/solid"; -import { Await } from "@remix-run/react"; +import { LockOpenIcon } from "@heroicons/react/24/solid"; +import { Await, MetaFunction } from "@remix-run/react"; import { type LoaderFunctionArgs } from "@remix-run/server-runtime"; import { Suspense } from "react"; import { typeddefer, useTypedLoaderData } from "remix-typedjson"; @@ -12,8 +13,8 @@ import { EnvironmentLabel } from "~/components/environments/EnvironmentLabel"; import { Feedback } from "~/components/Feedback"; import { PageBody, PageContainer } from "~/components/layout/AppLayout"; import { Button, LinkButton } from "~/components/primitives/Buttons"; -import { Header2 } from "~/components/primitives/Headers"; import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader"; +import { Paragraph } from "~/components/primitives/Paragraph"; import { Spinner } from "~/components/primitives/Spinner"; import { Table, @@ -31,8 +32,14 @@ import { import { requireUserId } from "~/services/session.server"; import { docsPath, ProjectParamSchema, v3BillingPath } from "~/utils/pathBuilder"; import { useCurrentPlan } from "../_app.orgs.$organizationSlug/route"; -import { LockOpenIcon } from "@heroicons/react/24/solid"; -import { Paragraph } from "~/components/primitives/Paragraph"; + +export const meta: MetaFunction = () => { + return [ + { + title: `Concurrency limits | Trigger.dev`, + }, + ]; +}; export const loader = async ({ request, params }: LoaderFunctionArgs) => { const userId = await requireUserId(request); diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.deployments/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.deployments/route.tsx index 411698cdb6..331bc74b1d 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.deployments/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.deployments/route.tsx @@ -4,7 +4,7 @@ import { BookOpenIcon, ServerStackIcon, } from "@heroicons/react/20/solid"; -import { Outlet, useLocation, useParams } from "@remix-run/react"; +import { MetaFunction, Outlet, useLocation, useParams } from "@remix-run/react"; import { LoaderFunctionArgs } from "@remix-run/server-runtime"; import { typedjson, useTypedLoaderData } from "remix-typedjson"; import { z } from "zod"; @@ -37,8 +37,8 @@ import { import { TextLink } from "~/components/primitives/TextLink"; import { DeploymentStatus, - deploymentStatuses, deploymentStatusDescription, + deploymentStatuses, } from "~/components/runs/v3/DeploymentStatus"; import { RetryDeploymentIndexingDialog } from "~/components/runs/v3/RetryDeploymentIndexingDialog"; import { RollbackDeploymentDialog } from "~/components/runs/v3/RollbackDeploymentDialog"; @@ -50,7 +50,6 @@ import { DeploymentListPresenter, } from "~/presenters/v3/DeploymentListPresenter.server"; import { requireUserId } from "~/services/session.server"; -import { cn } from "~/utils/cn"; import { ProjectParamSchema, docsPath, @@ -60,6 +59,14 @@ import { import { createSearchParams } from "~/utils/searchParams"; import { deploymentIndexingIsRetryable } from "~/v3/deploymentStatus"; +export const meta: MetaFunction = () => { + return [ + { + title: `Deployments | Trigger.dev`, + }, + ]; +}; + const SearchParams = z.object({ page: z.coerce.number().optional(), }); diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.environment-variables/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.environment-variables/route.tsx index 9b3d2aa566..07fb7b00b3 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.environment-variables/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.environment-variables/route.tsx @@ -9,7 +9,7 @@ import { TrashIcon, } from "@heroicons/react/20/solid"; import { ArrowUpCircleIcon } from "@heroicons/react/24/outline"; -import { Form, Outlet, useActionData, useNavigation } from "@remix-run/react"; +import { Form, MetaFunction, Outlet, useActionData, useNavigation } from "@remix-run/react"; import { ActionFunctionArgs, LoaderFunctionArgs, @@ -69,6 +69,14 @@ import { EditEnvironmentVariable, } from "~/v3/environmentVariables/repository"; +export const meta: MetaFunction = () => { + return [ + { + title: `Environment variables | Trigger.dev`, + }, + ]; +}; + export const loader = async ({ request, params }: LoaderFunctionArgs) => { const userId = await requireUserId(request); const { projectParam } = ProjectParamSchema.parse(params); diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.runs._index/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.runs._index/route.tsx index 5b2bebefbd..1ad234895e 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.runs._index/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.runs._index/route.tsx @@ -1,6 +1,6 @@ import { ArrowPathIcon, StopCircleIcon } from "@heroicons/react/20/solid"; import { BeakerIcon, BookOpenIcon } from "@heroicons/react/24/solid"; -import { Form, useNavigation } from "@remix-run/react"; +import { Form, MetaFunction, useNavigation } from "@remix-run/react"; import { LoaderFunctionArgs } from "@remix-run/server-runtime"; import { IconCircleX } from "@tabler/icons-react"; import { AnimatePresence, motion } from "framer-motion"; @@ -53,6 +53,14 @@ import { } from "~/utils/pathBuilder"; import { ListPagination } from "../../components/ListPagination"; +export const meta: MetaFunction = () => { + return [ + { + title: `Runs | Trigger.dev`, + }, + ]; +}; + export const loader = async ({ request, params }: LoaderFunctionArgs) => { const userId = await requireUserId(request); const { projectParam, organizationSlug } = ProjectParamSchema.parse(params); diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.schedules/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.schedules/route.tsx index 7a47613a8f..a490dceceb 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.schedules/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.schedules/route.tsx @@ -1,6 +1,6 @@ import { ClockIcon, LockOpenIcon, PlusIcon, RectangleGroupIcon } from "@heroicons/react/20/solid"; import { BookOpenIcon } from "@heroicons/react/24/solid"; -import { Outlet, useLocation, useParams } from "@remix-run/react"; +import { MetaFunction, Outlet, useLocation, useParams } from "@remix-run/react"; import { LoaderFunctionArgs } from "@remix-run/server-runtime"; import { typedjson, useTypedLoaderData } from "remix-typedjson"; import { Feedback } from "~/components/Feedback"; @@ -66,6 +66,14 @@ import { useCurrentPlan } from "../_app.orgs.$organizationSlug/route"; import { ArrowUpCircleIcon } from "@heroicons/react/24/outline"; import { SimpleTooltip } from "~/components/primitives/Tooltip"; +export const meta: MetaFunction = () => { + return [ + { + title: `Schedules | Trigger.dev`, + }, + ]; +}; + export const loader = async ({ request, params }: LoaderFunctionArgs) => { const userId = await requireUserId(request); const { projectParam, organizationSlug } = ProjectParamSchema.parse(params); diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.settings/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.settings/route.tsx index 41df19f61f..25d3e86ba6 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.settings/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.settings/route.tsx @@ -1,6 +1,6 @@ import { conform, useForm } from "@conform-to/react"; import { parse } from "@conform-to/zod"; -import { Form, useActionData, useNavigation } from "@remix-run/react"; +import { Form, MetaFunction, useActionData, useNavigation } from "@remix-run/react"; import { ActionFunction, json } from "@remix-run/server-runtime"; import { z } from "zod"; import { AdminDebugTooltip } from "~/components/admin/debugTooltip"; @@ -24,6 +24,14 @@ import { redirectWithSuccessMessage } from "~/models/message.server"; import { requireUserId } from "~/services/session.server"; import { v3ProjectPath } from "~/utils/pathBuilder"; +export const meta: MetaFunction = () => { + return [ + { + title: `Project settings | Trigger.dev`, + }, + ]; +}; + export function createSchema( constraints: { getSlugMatch?: (slug: string) => { isMatch: boolean; projectSlug: string }; diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.test/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.test/route.tsx index 57c10df9ff..716aa78e4b 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.test/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.projects.v3.$projectParam.test/route.tsx @@ -1,5 +1,12 @@ import { BookOpenIcon } from "@heroicons/react/20/solid"; -import { Link, Outlet, useLocation, useNavigation, useParams } from "@remix-run/react"; +import { + Link, + MetaFunction, + Outlet, + useLocation, + useNavigation, + useParams, +} from "@remix-run/react"; import { LoaderFunctionArgs } from "@remix-run/server-runtime"; import { typedjson, useTypedLoaderData } from "remix-typedjson"; import { z } from "zod"; @@ -47,6 +54,14 @@ import { requireUserId } from "~/services/session.server"; import { cn } from "~/utils/cn"; import { docsPath, ProjectParamSchema, v3TestPath, v3TestTaskPath } from "~/utils/pathBuilder"; +export const meta: MetaFunction = () => { + return [ + { + title: `Test | Trigger.dev`, + }, + ]; +}; + export const TestSearchParams = z.object({ environment: z.string().optional(), }); diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings/route.tsx index dc0efb69b2..ad5b329888 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings/route.tsx @@ -1,6 +1,6 @@ import { conform, useForm } from "@conform-to/react"; import { parse } from "@conform-to/zod"; -import { Form, useActionData, useNavigation } from "@remix-run/react"; +import { Form, MetaFunction, useActionData, useNavigation } from "@remix-run/react"; import { ActionFunction, json } from "@remix-run/server-runtime"; import { redirect } from "remix-typedjson"; import { z } from "zod"; @@ -28,6 +28,14 @@ import { logger } from "~/services/logger.server"; import { requireUserId } from "~/services/session.server"; import { organizationPath, organizationSettingsPath, rootPath } from "~/utils/pathBuilder"; +export const meta: MetaFunction = () => { + return [ + { + title: `Organization settings | Trigger.dev`, + }, + ]; +}; + export function createSchema( constraints: { getSlugMatch?: (slug: string) => { isMatch: boolean; organizationSlug: string }; diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.team/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.team/route.tsx index be0dc5dc04..8452e8ece6 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.team/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.team/route.tsx @@ -1,7 +1,7 @@ import { useForm } from "@conform-to/react"; import { parse } from "@conform-to/zod"; import { LockOpenIcon, UserPlusIcon } from "@heroicons/react/20/solid"; -import { Form, useActionData } from "@remix-run/react"; +import { Form, MetaFunction, useActionData } from "@remix-run/react"; import { ActionFunction, LoaderFunctionArgs, json } from "@remix-run/server-runtime"; import { useState } from "react"; import { UseDataFunctionReturn, typedjson, useTypedLoaderData } from "remix-typedjson"; @@ -44,6 +44,14 @@ import { v3BillingPath, } from "~/utils/pathBuilder"; +export const meta: MetaFunction = () => { + return [ + { + title: `Team | Trigger.dev`, + }, + ]; +}; + const Params = z.object({ organizationSlug: z.string(), }); diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.v3.billing/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.v3.billing/route.tsx index 2f304600dc..29b599fe5e 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.v3.billing/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.v3.billing/route.tsx @@ -1,10 +1,14 @@ +import { CalendarDaysIcon, StarIcon } from "@heroicons/react/20/solid"; import { LoaderFunctionArgs } from "@remix-run/server-runtime"; +import { PlanDefinition } from "@trigger.dev/platform/v3"; import { redirect, typedjson, useTypedLoaderData } from "remix-typedjson"; import { PageBody, PageContainer } from "~/components/layout/AppLayout"; import { LinkButton } from "~/components/primitives/Buttons"; +import { DateTime } from "~/components/primitives/DateTime"; import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader"; import { prisma } from "~/db.server"; import { featuresForRequest } from "~/features.server"; +import { getCurrentPlan, getPlans } from "~/services/platform.v3.server"; import { requireUserId } from "~/services/session.server"; import { OrganizationParamsSchema, @@ -12,10 +16,15 @@ import { v3StripePortalPath, } from "~/utils/pathBuilder"; import { PricingPlans } from "../resources.orgs.$organizationSlug.select-plan"; -import { PlanDefinition } from "@trigger.dev/platform/v3"; -import { CalendarDaysIcon, StarIcon } from "@heroicons/react/20/solid"; -import { DateTime } from "~/components/primitives/DateTime"; -import { getCurrentPlan, getPlans } from "~/services/platform.v3.server"; +import { MetaFunction } from "@remix-run/react"; + +export const meta: MetaFunction = () => { + return [ + { + title: `Billing | Trigger.dev`, + }, + ]; +}; export async function loader({ params, request }: LoaderFunctionArgs) { await requireUserId(request); diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.v3.usage/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.v3.usage/route.tsx index b509a9728f..b54873dd36 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.v3.usage/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.v3.usage/route.tsx @@ -1,5 +1,5 @@ -import { ArrowRightIcon } from "@heroicons/react/24/solid"; -import { Await } from "@remix-run/react"; +import { InformationCircleIcon } from "@heroicons/react/20/solid"; +import { Await, MetaFunction } from "@remix-run/react"; import { LoaderFunctionArgs } from "@remix-run/server-runtime"; import { formatDurationMilliseconds } from "@trigger.dev/core/v3"; import { Suspense } from "react"; @@ -14,7 +14,8 @@ import { ChartTooltip, ChartTooltipContent, } from "~/components/primitives/Chart"; -import { Header2, Header3 } from "~/components/primitives/Headers"; +import { Header2 } from "~/components/primitives/Headers"; +import { InfoPanel } from "~/components/primitives/InfoPanel"; import { NavBar, PageTitle } from "~/components/primitives/PageHeader"; import { Paragraph } from "~/components/primitives/Paragraph"; import { Select, SelectItem } from "~/components/primitives/Select"; @@ -35,8 +36,14 @@ import { requireUserId } from "~/services/session.server"; import { formatCurrency, formatCurrencyAccurate, formatNumber } from "~/utils/numberFormatter"; import { OrganizationParamsSchema, organizationPath } from "~/utils/pathBuilder"; import { useCurrentPlan } from "../_app.orgs.$organizationSlug/route"; -import { InfoPanel } from "~/components/primitives/InfoPanel"; -import { InformationCircleIcon } from "@heroicons/react/20/solid"; + +export const meta: MetaFunction = () => { + return [ + { + title: `Usage | Trigger.dev`, + }, + ]; +}; export async function loader({ params, request }: LoaderFunctionArgs) { await requireUserId(request); diff --git a/apps/webapp/app/routes/account._index/route.tsx b/apps/webapp/app/routes/account._index/route.tsx index 4f31e93575..81c08fe017 100644 --- a/apps/webapp/app/routes/account._index/route.tsx +++ b/apps/webapp/app/routes/account._index/route.tsx @@ -1,6 +1,6 @@ import { conform, useForm } from "@conform-to/react"; import { parse } from "@conform-to/zod"; -import { Form, useActionData } from "@remix-run/react"; +import { Form, MetaFunction, useActionData } from "@remix-run/react"; import { ActionFunction, json } from "@remix-run/server-runtime"; import { z } from "zod"; import { UserProfilePhoto } from "~/components/UserProfilePhoto"; @@ -22,6 +22,14 @@ import { updateUser } from "~/models/user.server"; import { requireUserId } from "~/services/session.server"; import { accountPath } from "~/utils/pathBuilder"; +export const meta: MetaFunction = () => { + return [ + { + title: `Your profile | Trigger.dev`, + }, + ]; +}; + function createSchema( constraints: { isEmailUnique?: (email: string) => Promise; diff --git a/apps/webapp/app/routes/account.tokens/route.tsx b/apps/webapp/app/routes/account.tokens/route.tsx index 804ea0f327..38a9e78acc 100644 --- a/apps/webapp/app/routes/account.tokens/route.tsx +++ b/apps/webapp/app/routes/account.tokens/route.tsx @@ -3,7 +3,7 @@ import { parse } from "@conform-to/zod"; import { BookOpenIcon, ShieldCheckIcon, TrashIcon } from "@heroicons/react/20/solid"; import { ShieldExclamationIcon } from "@heroicons/react/24/solid"; import { DialogClose } from "@radix-ui/react-dialog"; -import { Form, useActionData, useFetcher } from "@remix-run/react"; +import { Form, MetaFunction, useActionData, useFetcher } from "@remix-run/react"; import { ActionFunction, LoaderFunctionArgs, json } from "@remix-run/server-runtime"; import { typedjson, useTypedLoaderData } from "remix-typedjson"; import { z } from "zod"; @@ -45,6 +45,14 @@ import { import { requireUserId } from "~/services/session.server"; import { docsPath, personalAccessTokensPath } from "~/utils/pathBuilder"; +export const meta: MetaFunction = () => { + return [ + { + title: `Personal Access Tokens | Trigger.dev`, + }, + ]; +}; + export const loader = async ({ request, params }: LoaderFunctionArgs) => { const userId = await requireUserId(request);