hts/apps/migrant/app/[locale]/pay/page.tsx

175 lines
5.2 KiB
TypeScript

import { Separator } from "@/components/ui/separator";
// import { db, schema } from "@/lib/db";
// import { ingestAuditLogs } from "@/lib/tinybird";
// import { auth } from "@clerk/nextjs";
// import { newId } from "@aigxion/id";
import { ArrowRight } from "lucide-react";
import { headers } from "next/headers";
import Link from "next/link";
import { notFound, redirect } from "next/navigation";
import { CreateApi } from "./create-api";
import { CreateWorkspace } from "./create-workspace";
import { Keys } from "./keys";
type Props = {
searchParams: {
workspaceId?: string;
apiId?: string;
};
};
type PropsHeader = {
title: React.ReactNode;
description?: string;
/**
* A set of components displayed in the top right
* null components are filtered out
*/
actions?: React.ReactNode[];
};
const PageHeader: React.FC<PropsHeader> = ({ title, description, actions }) => {
const actionRows: React.ReactNode[][] = [];
if (actions) {
for (let i = 0; i < actions.length; i += 3) {
actionRows.push(actions.slice(i, i + 3));
}
}
return (
<div className="flex flex-col items-start justify-between w-full gap-2 mb-4 md:items-center md:flex-row md:gap-4">
<div className="space-y-1 ">
<h1 className="text-2xl font-semibold tracking-tight">{title}</h1>
<p className="text-sm text-gray-500 dark:text-gray-400">{description}</p>
</div>
{actionRows.map((row, i) => (
<ul
key={i.toString()}
className="flex flex-wrap items-center justify-end gap-2 md:gap-4 md:flex-nowrap"
>
{row.map((action, i) => (
// biome-ignore lint/suspicious/noArrayIndexKey: I got nothing better right now
<li key={i}>{action}</li>
))}
</ul>
))}
</div>
);
};
export default async function (props: Props) {
// const { userId } = auth();
// if (props.searchParams.apiId) {
// const api = await db.query.apis.findFirst({
// where: (table, { eq }) => eq(table.id, props.searchParams.apiId!),
// });
// if (!api) {
// return notFound();
// }
// return (
// <div className="container m-16 mx-auto">
// <PageHeader
// title="Unkey"
// description="Create your first key"
// actions={[
// <Link
// key="skip"
// href="/app"
// className="flex items-center gap-1 text-sm duration-200 text-content-subtle hover:text-foreground"
// >
// Skip <ArrowRight className="w-4 h-4" />{" "}
// </Link>,
// ]}
// />
// <Separator className="my-6" />
// <Keys keyAuthId={api.keyAuthId!} apiId={api.id} />
// </div>
// );
// }
// if (props.searchParams.workspaceId) {
// const workspace = await db.query.workspaces.findFirst({
// where: (table, { and, eq, isNull }) =>
// and(eq(table.id, props.searchParams.workspaceId!), isNull(table.deletedAt)),
// });
// if (!workspace) {
// return redirect("/new");
// }
// return (
// <div className="container m-16 mx-auto">
// <PageHeader
// title="Unkey"
// description="Create a new API"
// actions={[
// <Link
// key="skip"
// href="/app"
// className="flex items-center gap-1 text-sm duration-200 text-content-subtle hover:text-foreground"
// >
// Skip <ArrowRight className="w-4 h-4" />{" "}
// </Link>,
// ]}
// />
// <Separator className="my-6" />
// <CreateApi workspace={workspace} />
// </div>
// );
// }
// if (userId) {
// const personalWorkspace = await db.query.workspaces.findFirst({
// where: (table, { and, eq, isNull }) =>
// and(eq(table.tenantId, userId), isNull(table.deletedAt)),
// });
// // if no personal workspace exists, we create one
// if (!personalWorkspace) {
// const workspaceId = newId("workspace");
// await db.insert(schema.workspaces).values({
// id: workspaceId,
// tenantId: userId,
// name: "Personal",
// plan: "free",
// stripeCustomerId: null,
// stripeSubscriptionId: null,
// features: {},
// betaFeatures: {},
// subscriptions: null,
// createdAt: new Date(),
// });
// await ingestAuditLogs({
// workspaceId: workspaceId,
// event: "workspace.create",
// actor: {
// type: "user",
// id: userId,
// },
// description: `Created ${workspaceId}`,
// resources: [
// {
// type: "workspace",
// id: workspaceId,
// },
// ],
// context: {
// userAgent: headers().get("user-agent") ?? undefined,
// location: headers().get("x-forwarded-for") ?? process.env.VERCEL_REGION ?? "unknown",
// },
// });
// return redirect(`/new?workspaceId=${workspaceId}`);
// }
// }
return (
<div className="container m-1 mx-auto">
<PageHeader title="创建AI客服" description="" />
<Separator className="my-6" />
<CreateWorkspace />
</div>
);
}