add better page metadata titles

This commit is contained in:
miloschwartz
2026-04-18 12:05:54 -07:00
parent dddf060e1a
commit 20ed9966b9
57 changed files with 337 additions and 12 deletions

View File

@@ -12,6 +12,11 @@ import type { ListRolesResponse } from "@server/routers/role";
import type { AxiosResponse } from "axios"; import type { AxiosResponse } from "axios";
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import { tierMatrix } from "@server/lib/billing/tierMatrix"; import { tierMatrix } from "@server/lib/billing/tierMatrix";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Approvals"
};
export interface ApprovalFeedPageProps { export interface ApprovalFeedPageProps {
params: Promise<{ orgId: string }>; params: Promise<{ orgId: string }>;

View File

@@ -7,6 +7,11 @@ import { getTranslations } from "next-intl/server";
import { getCachedOrgUser } from "@app/lib/api/getCachedOrgUser"; import { getCachedOrgUser } from "@app/lib/api/getCachedOrgUser";
import { getCachedOrg } from "@app/lib/api/getCachedOrg"; import { getCachedOrg } from "@app/lib/api/getCachedOrg";
import { build } from "@server/build"; import { build } from "@server/build";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Billing"
};
type BillingSettingsProps = { type BillingSettingsProps = {
children: React.ReactNode; children: React.ReactNode;

View File

@@ -6,6 +6,11 @@ import { authCookieHeader } from "@app/lib/api/cookies";
import { HorizontalTabs, TabItem } from "@app/components/HorizontalTabs"; import { HorizontalTabs, TabItem } from "@app/components/HorizontalTabs";
import SettingsSectionTitle from "@app/components/SettingsSectionTitle"; import SettingsSectionTitle from "@app/components/SettingsSectionTitle";
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Identity Provider"
};
interface SettingsLayoutProps { interface SettingsLayoutProps {
children: React.ReactNode; children: React.ReactNode;

View File

@@ -1,5 +1,10 @@
import type { Metadata } from "next";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
export const metadata: Metadata = {
title: "Identity Provider"
};
export default async function IdpPage(props: { export default async function IdpPage(props: {
params: Promise<{ orgId: string; idpId: string }>; params: Promise<{ orgId: string; idpId: string }>;
}) { }) {

View File

@@ -0,0 +1,10 @@
import type { Metadata } from "next";
import type { ReactNode } from "react";
export const metadata: Metadata = {
title: "Create Identity Provider"
};
export default function Layout({ children }: { children: ReactNode }) {
return children;
}

View File

@@ -7,6 +7,11 @@ import { getTranslations } from "next-intl/server";
import { PaidFeaturesAlert } from "@app/components/PaidFeaturesAlert"; import { PaidFeaturesAlert } from "@app/components/PaidFeaturesAlert";
import { IdpGlobalModeBanner } from "@app/components/IdpGlobalModeBanner"; import { IdpGlobalModeBanner } from "@app/components/IdpGlobalModeBanner";
import { tierMatrix } from "@server/lib/billing/tierMatrix"; import { tierMatrix } from "@server/lib/billing/tierMatrix";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Identity Providers"
};
type OrgIdpPageProps = { type OrgIdpPageProps = {
params: Promise<{ orgId: string }>; params: Promise<{ orgId: string }>;

View File

@@ -3,6 +3,11 @@ import { internal } from "@app/lib/api";
import { authCookieHeader } from "@app/lib/api/cookies"; import { authCookieHeader } from "@app/lib/api/cookies";
import { ListGeneratedLicenseKeysResponse } from "@server/routers/generatedLicense/types"; import { ListGeneratedLicenseKeysResponse } from "@server/routers/generatedLicense/types";
import { AxiosResponse } from "axios"; import { AxiosResponse } from "axios";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Enterprise Licenses"
};
type Props = { type Props = {
params: Promise<{ orgId: string }>; params: Promise<{ orgId: string }>;

View File

@@ -1,5 +1,10 @@
import type { Metadata } from "next";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
export const metadata: Metadata = {
title: "Remote Exit Node"
};
export default async function RemoteExitNodePage(props: { export default async function RemoteExitNodePage(props: {
params: Promise<{ orgId: string; remoteExitNodeId: string }>; params: Promise<{ orgId: string; remoteExitNodeId: string }>;
}) { }) {

View File

@@ -0,0 +1,10 @@
import type { Metadata } from "next";
import type { ReactNode } from "react";
export const metadata: Metadata = {
title: "Create Remote Exit Node"
};
export default function Layout({ children }: { children: ReactNode }) {
return children;
}

View File

@@ -7,6 +7,11 @@ import ExitNodesTable, {
} from "@app/components/ExitNodesTable"; } from "@app/components/ExitNodesTable";
import SettingsSectionTitle from "@app/components/SettingsSectionTitle"; import SettingsSectionTitle from "@app/components/SettingsSectionTitle";
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Remote Exit Nodes"
};
type RemoteExitNodesPageProps = { type RemoteExitNodesPageProps = {
params: Promise<{ orgId: string }>; params: Promise<{ orgId: string }>;

View File

@@ -11,6 +11,11 @@ import UserProvider from "@app/providers/UserProvider";
import { verifySession } from "@app/lib/auth/verifySession"; import { verifySession } from "@app/lib/auth/verifySession";
import SettingsSectionTitle from "@app/components/SettingsSectionTitle"; import SettingsSectionTitle from "@app/components/SettingsSectionTitle";
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Invitations"
};
type InvitationsPageProps = { type InvitationsPageProps = {
params: Promise<{ orgId: string }>; params: Promise<{ orgId: string }>;

View File

@@ -1,5 +1,10 @@
import type { Metadata } from "next";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
export const metadata: Metadata = {
title: "Access"
};
type AccessPageProps = { type AccessPageProps = {
params: Promise<{ orgId: string }>; params: Promise<{ orgId: string }>;
}; };

View File

@@ -8,6 +8,11 @@ import RolesTable, { type RoleRow } from "@app/components/RolesTable";
import SettingsSectionTitle from "@app/components/SettingsSectionTitle"; import SettingsSectionTitle from "@app/components/SettingsSectionTitle";
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import { getCachedOrg } from "@app/lib/api/getCachedOrg"; import { getCachedOrg } from "@app/lib/api/getCachedOrg";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Roles"
};
type RolesPageProps = { type RolesPageProps = {
params: Promise<{ orgId: string }>; params: Promise<{ orgId: string }>;

View File

@@ -8,6 +8,11 @@ import { HorizontalTabs } from "@app/components/HorizontalTabs";
import { cache } from "react"; import { cache } from "react";
import SettingsSectionTitle from "@app/components/SettingsSectionTitle"; import SettingsSectionTitle from "@app/components/SettingsSectionTitle";
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "User"
};
interface UserLayoutProps { interface UserLayoutProps {
children: React.ReactNode; children: React.ReactNode;

View File

@@ -1,5 +1,10 @@
import type { Metadata } from "next";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
export const metadata: Metadata = {
title: "User"
};
export default async function UserPage(props: { export default async function UserPage(props: {
params: Promise<{ orgId: string; userId: string }>; params: Promise<{ orgId: string; userId: string }>;
}) { }) {

View File

@@ -0,0 +1,10 @@
import type { Metadata } from "next";
import type { ReactNode } from "react";
export const metadata: Metadata = {
title: "Create User"
};
export default function Layout({ children }: { children: ReactNode }) {
return children;
}

View File

@@ -11,6 +11,11 @@ import UserProvider from "@app/providers/UserProvider";
import { verifySession } from "@app/lib/auth/verifySession"; import { verifySession } from "@app/lib/auth/verifySession";
import SettingsSectionTitle from "@app/components/SettingsSectionTitle"; import SettingsSectionTitle from "@app/components/SettingsSectionTitle";
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Users"
};
type UsersPageProps = { type UsersPageProps = {
params: Promise<{ orgId: string }>; params: Promise<{ orgId: string }>;

View File

@@ -7,6 +7,11 @@ import { GetApiKeyResponse } from "@server/routers/apiKeys";
import ApiKeyProvider from "@app/providers/ApiKeyProvider"; import ApiKeyProvider from "@app/providers/ApiKeyProvider";
import { HorizontalTabs } from "@app/components/HorizontalTabs"; import { HorizontalTabs } from "@app/components/HorizontalTabs";
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "API Key"
};
interface SettingsLayoutProps { interface SettingsLayoutProps {
children: React.ReactNode; children: React.ReactNode;

View File

@@ -1,5 +1,10 @@
import type { Metadata } from "next";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
export const metadata: Metadata = {
title: "API Key"
};
export default async function ApiKeysPage(props: { export default async function ApiKeysPage(props: {
params: Promise<{ orgId: string; apiKeyId: string }>; params: Promise<{ orgId: string; apiKeyId: string }>;
}) { }) {

View File

@@ -0,0 +1,10 @@
import type { Metadata } from "next";
import type { ReactNode } from "react";
export const metadata: Metadata = {
title: "Create API Key"
};
export default function Layout({ children }: { children: ReactNode }) {
return children;
}

View File

@@ -2,11 +2,14 @@ import { internal } from "@app/lib/api";
import { authCookieHeader } from "@app/lib/api/cookies"; import { authCookieHeader } from "@app/lib/api/cookies";
import { AxiosResponse } from "axios"; import { AxiosResponse } from "axios";
import SettingsSectionTitle from "@app/components/SettingsSectionTitle"; import SettingsSectionTitle from "@app/components/SettingsSectionTitle";
import OrgApiKeysTable, { import OrgApiKeysTable, { OrgApiKeyRow } from "@app/components/OrgApiKeysTable";
OrgApiKeyRow
} from "@app/components/OrgApiKeysTable";
import { ListOrgApiKeysResponse } from "@server/routers/apiKeys"; import { ListOrgApiKeysResponse } from "@server/routers/apiKeys";
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "API Keys"
};
type ApiKeyPageProps = { type ApiKeyPageProps = {
params: Promise<{ orgId: string }>; params: Promise<{ orgId: string }>;

View File

@@ -17,7 +17,7 @@ type BluePrintsPageProps = {
}; };
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Blueprint Detail" title: "Edit Blueprint"
}; };
export default async function BluePrintDetailPage(props: BluePrintsPageProps) { export default async function BluePrintDetailPage(props: BluePrintsPageProps) {

View File

@@ -12,7 +12,7 @@ export interface CreateBlueprintPageProps {
} }
export const metadata: Metadata = { export const metadata: Metadata = {
title: "Create blueprint" title: "Create Blueprint"
}; };
export default async function CreateBlueprintPage( export default async function CreateBlueprintPage(

View File

@@ -8,6 +8,11 @@ import { GetClientResponse } from "@server/routers/client";
import { AxiosResponse } from "axios"; import { AxiosResponse } from "axios";
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Machine Client"
};
type SettingsLayoutProps = { type SettingsLayoutProps = {
children: React.ReactNode; children: React.ReactNode;

View File

@@ -1,5 +1,10 @@
import type { Metadata } from "next";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
export const metadata: Metadata = {
title: "Machine Client"
};
export default async function ClientPage(props: { export default async function ClientPage(props: {
params: Promise<{ orgId: string; niceId: number | string }>; params: Promise<{ orgId: string; niceId: number | string }>;
}) { }) {

View File

@@ -0,0 +1,10 @@
import type { Metadata } from "next";
import type { ReactNode } from "react";
export const metadata: Metadata = {
title: "Create Machine Client"
};
export default function Layout({ children }: { children: ReactNode }) {
return children;
}

View File

@@ -8,6 +8,11 @@ import { ListClientsResponse } from "@server/routers/client";
import { AxiosResponse } from "axios"; import { AxiosResponse } from "axios";
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import type { Pagination } from "@server/types/Pagination"; import type { Pagination } from "@server/types/Pagination";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Machine Clients"
};
type ClientsPageProps = { type ClientsPageProps = {
params: Promise<{ orgId: string }>; params: Promise<{ orgId: string }>;

View File

@@ -1,5 +1,10 @@
import type { Metadata } from "next";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
export const metadata: Metadata = {
title: "Clients"
};
type ClientsPageProps = { type ClientsPageProps = {
params: Promise<{ orgId: string }>; params: Promise<{ orgId: string }>;
searchParams: Promise<{ view?: string }>; searchParams: Promise<{ view?: string }>;

View File

@@ -8,6 +8,11 @@ import { GetClientResponse } from "@server/routers/client";
import { AxiosResponse } from "axios"; import { AxiosResponse } from "axios";
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "User Device"
};
type SettingsLayoutProps = { type SettingsLayoutProps = {
children: React.ReactNode; children: React.ReactNode;

View File

@@ -1,10 +1,13 @@
import type { Metadata } from "next";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
export const metadata: Metadata = {
title: "User Device"
};
export default async function ClientPage(props: { export default async function ClientPage(props: {
params: Promise<{ orgId: string; niceId: number | string }>; params: Promise<{ orgId: string; niceId: number | string }>;
}) { }) {
const params = await props.params; const params = await props.params;
redirect( redirect(`/${params.orgId}/settings/clients/user/${params.niceId}/general`);
`/${params.orgId}/settings/clients/user/${params.niceId}/general`
);
} }

View File

@@ -7,6 +7,11 @@ import { type ListUserDevicesResponse } from "@server/routers/client";
import type { Pagination } from "@server/types/Pagination"; import type { Pagination } from "@server/types/Pagination";
import { AxiosResponse } from "axios"; import { AxiosResponse } from "axios";
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "User Devices"
};
type ClientsPageProps = { type ClientsPageProps = {
params: Promise<{ orgId: string }>; params: Promise<{ orgId: string }>;

View File

@@ -11,6 +11,11 @@ import { GetDNSRecordsResponse } from "@server/routers/domain";
import DNSRecordsTable from "@app/components/DNSRecordTable"; import DNSRecordsTable from "@app/components/DNSRecordTable";
import DomainCertForm from "@app/components/DomainCertForm"; import DomainCertForm from "@app/components/DomainCertForm";
import { build } from "@server/build"; import { build } from "@server/build";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Domain"
};
interface DomainSettingsPageProps { interface DomainSettingsPageProps {
params: Promise<{ domainId: string; orgId: string }>; params: Promise<{ domainId: string; orgId: string }>;

View File

@@ -11,6 +11,11 @@ import OrgProvider from "@app/providers/OrgProvider";
import { ListDomainsResponse } from "@server/routers/domain"; import { ListDomainsResponse } from "@server/routers/domain";
import { toUnicode } from "punycode"; import { toUnicode } from "punycode";
import { getCachedOrg } from "@app/lib/api/getCachedOrg"; import { getCachedOrg } from "@app/lib/api/getCachedOrg";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Domains"
};
type Props = { type Props = {
params: Promise<{ orgId: string }>; params: Promise<{ orgId: string }>;

View File

@@ -11,6 +11,7 @@ import {
GetLoginPageResponse GetLoginPageResponse
} from "@server/routers/loginPage/types"; } from "@server/routers/loginPage/types";
import { AxiosResponse } from "axios"; import { AxiosResponse } from "axios";
import type { Metadata } from "next";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
export interface AuthPageProps { export interface AuthPageProps {

View File

@@ -11,6 +11,11 @@ import { getCachedOrg } from "@app/lib/api/getCachedOrg";
import { getCachedOrgUser } from "@app/lib/api/getCachedOrgUser"; import { getCachedOrgUser } from "@app/lib/api/getCachedOrgUser";
import { build } from "@server/build"; import { build } from "@server/build";
import { pullEnv } from "@app/lib/pullEnv"; import { pullEnv } from "@app/lib/pullEnv";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Organization"
};
type GeneralSettingsProps = { type GeneralSettingsProps = {
children: React.ReactNode; children: React.ReactNode;

View File

@@ -0,0 +1,10 @@
import type { Metadata } from "next";
import type { ReactNode } from "react";
export const metadata: Metadata = {
title: "Access Logs"
};
export default function Layout({ children }: { children: ReactNode }) {
return children;
}

View File

@@ -0,0 +1,10 @@
import type { Metadata } from "next";
import type { ReactNode } from "react";
export const metadata: Metadata = {
title: "Action Logs"
};
export default function Layout({ children }: { children: ReactNode }) {
return children;
}

View File

@@ -2,6 +2,11 @@ import { LogAnalyticsData } from "@app/components/LogAnalyticsData";
import SettingsSectionTitle from "@app/components/SettingsSectionTitle"; import SettingsSectionTitle from "@app/components/SettingsSectionTitle";
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import { Suspense } from "react"; import { Suspense } from "react";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Log Analytics"
};
export interface AnalyticsPageProps { export interface AnalyticsPageProps {
params: Promise<{ orgId: string }>; params: Promise<{ orgId: string }>;

View File

@@ -0,0 +1,10 @@
import type { Metadata } from "next";
import type { ReactNode } from "react";
export const metadata: Metadata = {
title: "Connection Logs"
};
export default function Layout({ children }: { children: ReactNode }) {
return children;
}

View File

@@ -1,3 +1,9 @@
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Logs"
};
export default function GeneralPage() { export default function GeneralPage() {
return null; return null;
} }

View File

@@ -0,0 +1,10 @@
import type { Metadata } from "next";
import type { ReactNode } from "react";
export const metadata: Metadata = {
title: "Request Logs"
};
export default function Layout({ children }: { children: ReactNode }) {
return children;
}

View File

@@ -0,0 +1,10 @@
import type { Metadata } from "next";
import type { ReactNode } from "react";
export const metadata: Metadata = {
title: "Streaming Logs"
};
export default function Layout({ children }: { children: ReactNode }) {
return children;
}

View File

@@ -1,5 +1,10 @@
import type { Metadata } from "next";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
export const metadata: Metadata = {
title: "Settings"
};
type OrgPageProps = { type OrgPageProps = {
params: Promise<{ orgId: string }>; params: Promise<{ orgId: string }>;
}; };

View File

@@ -12,6 +12,11 @@ import DismissableBanner from "@app/components/DismissableBanner";
import Link from "next/link"; import Link from "next/link";
import { Button } from "@app/components/ui/button"; import { Button } from "@app/components/ui/button";
import { ArrowRight, Plug } from "lucide-react"; import { ArrowRight, Plug } from "lucide-react";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Provisioning Keys"
};
type ProvisioningKeysPageProps = { type ProvisioningKeysPageProps = {
params: Promise<{ orgId: string }>; params: Promise<{ orgId: string }>;

View File

@@ -1,5 +1,10 @@
import type { Metadata } from "next";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
export const metadata: Metadata = {
title: "Provisioning"
};
type ProvisioningPageProps = { type ProvisioningPageProps = {
params: Promise<{ orgId: string }>; params: Promise<{ orgId: string }>;
}; };

View File

@@ -11,6 +11,11 @@ import { Button } from "@app/components/ui/button";
import { ArrowRight, Plug } from "lucide-react"; import { ArrowRight, Plug } from "lucide-react";
import { PaidFeaturesAlert } from "@app/components/PaidFeaturesAlert"; import { PaidFeaturesAlert } from "@app/components/PaidFeaturesAlert";
import { TierFeature, tierMatrix } from "@server/lib/billing/tierMatrix"; import { TierFeature, tierMatrix } from "@server/lib/billing/tierMatrix";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Pending Sites"
};
type PendingSitesPageProps = { type PendingSitesPageProps = {
params: Promise<{ orgId: string }>; params: Promise<{ orgId: string }>;

View File

@@ -10,8 +10,13 @@ import type { ListResourcesResponse } from "@server/routers/resource";
import type { ListAllSiteResourcesByOrgResponse } from "@server/routers/siteResource"; import type { ListAllSiteResourcesByOrgResponse } from "@server/routers/siteResource";
import type { AxiosResponse } from "axios"; import type { AxiosResponse } from "axios";
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import type { Metadata } from "next";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
export const metadata: Metadata = {
title: "Private Resources"
};
export interface ClientResourcesPageProps { export interface ClientResourcesPageProps {
params: Promise<{ orgId: string }>; params: Promise<{ orgId: string }>;
searchParams: Promise<Record<string, string>>; searchParams: Promise<Record<string, string>>;

View File

@@ -1,5 +1,10 @@
import type { Metadata } from "next";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
export const metadata: Metadata = {
title: "Public Resources"
};
export interface ResourcesPageProps { export interface ResourcesPageProps {
params: Promise<{ orgId: string }>; params: Promise<{ orgId: string }>;
} }

View File

@@ -14,6 +14,11 @@ import OrgProvider from "@app/providers/OrgProvider";
import { cache } from "react"; import { cache } from "react";
import ResourceInfoBox from "@app/components/ResourceInfoBox"; import ResourceInfoBox from "@app/components/ResourceInfoBox";
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Public Resource"
};
export const dynamic = "force-dynamic"; export const dynamic = "force-dynamic";

View File

@@ -1,5 +1,10 @@
import type { Metadata } from "next";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
export const metadata: Metadata = {
title: "Proxy Resource"
};
export default async function ResourcePage(props: { export default async function ResourcePage(props: {
params: Promise<{ niceId: string; orgId: string }>; params: Promise<{ niceId: string; orgId: string }>;
}) { }) {

View File

@@ -0,0 +1,10 @@
import type { Metadata } from "next";
import type { ReactNode } from "react";
export const metadata: Metadata = {
title: "Create Public Resource"
};
export default function Layout({ children }: { children: ReactNode }) {
return children;
}

View File

@@ -13,6 +13,11 @@ import { getTranslations } from "next-intl/server";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
import { toUnicode } from "punycode"; import { toUnicode } from "punycode";
import { cache } from "react"; import { cache } from "react";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Proxy Resources"
};
export interface ProxyResourcesPageProps { export interface ProxyResourcesPageProps {
params: Promise<{ orgId: string }>; params: Promise<{ orgId: string }>;

View File

@@ -7,10 +7,13 @@ import { cache } from "react";
import { GetOrgResponse } from "@server/routers/org"; import { GetOrgResponse } from "@server/routers/org";
import OrgProvider from "@app/providers/OrgProvider"; import OrgProvider from "@app/providers/OrgProvider";
import { ListAccessTokensResponse } from "@server/routers/accessToken"; import { ListAccessTokensResponse } from "@server/routers/accessToken";
import ShareLinksTable, { import ShareLinksTable, { ShareLinkRow } from "@app/components/ShareLinksTable";
ShareLinkRow
} from "@app/components/ShareLinksTable";
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Shareable Links"
};
type ShareLinksPageProps = { type ShareLinksPageProps = {
params: Promise<{ orgId: string }>; params: Promise<{ orgId: string }>;

View File

@@ -8,7 +8,11 @@ import { HorizontalTabs } from "@app/components/HorizontalTabs";
import SettingsSectionTitle from "@app/components/SettingsSectionTitle"; import SettingsSectionTitle from "@app/components/SettingsSectionTitle";
import SiteInfoCard from "@app/components/SiteInfoCard"; import SiteInfoCard from "@app/components/SiteInfoCard";
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
import type { Metadata } from "next";
export const metadata: Metadata = {
title: "Site"
};
interface SettingsLayoutProps { interface SettingsLayoutProps {
children: React.ReactNode; children: React.ReactNode;

View File

@@ -1,5 +1,10 @@
import type { Metadata } from "next";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
export const metadata: Metadata = {
title: "Site"
};
export default async function SitePage(props: { export default async function SitePage(props: {
params: Promise<{ orgId: string; niceId: string }>; params: Promise<{ orgId: string; niceId: string }>;
}) { }) {

View File

@@ -0,0 +1,10 @@
import type { Metadata } from "next";
import type { ReactNode } from "react";
export const metadata: Metadata = {
title: "Create Site"
};
export default function Layout({ children }: { children: ReactNode }) {
return children;
}

View File

@@ -5,8 +5,13 @@ import { AxiosResponse } from "axios";
import SitesTable, { SiteRow } from "@app/components/SitesTable"; import SitesTable, { SiteRow } from "@app/components/SitesTable";
import SettingsSectionTitle from "@app/components/SettingsSectionTitle"; import SettingsSectionTitle from "@app/components/SettingsSectionTitle";
import SitesBanner from "@app/components/SitesBanner"; import SitesBanner from "@app/components/SitesBanner";
import type { Metadata } from "next";
import { getTranslations } from "next-intl/server"; import { getTranslations } from "next-intl/server";
export const metadata: Metadata = {
title: "Sites"
};
type SitesPageProps = { type SitesPageProps = {
params: Promise<{ orgId: string }>; params: Promise<{ orgId: string }>;
searchParams: Promise<Record<string, string>>; searchParams: Promise<Record<string, string>>;