page.tsx27 lines · main
| 1 | import { apiOrigin } from '../../../../../../lib/env'; |
| 2 | import { ServiceBadgesPanel } from './service-badges-panel'; |
| 3 | |
| 4 | export const metadata = { title: 'service badges' }; |
| 5 | export const dynamic = 'force-dynamic'; |
| 6 | |
| 7 | export default async function ServiceBadgesPage({ |
| 8 | params, |
| 9 | }: { |
| 10 | params: Promise<{ id: string }>; |
| 11 | }) { |
| 12 | const { id } = await params; |
| 13 | |
| 14 | return ( |
| 15 | <div className="flex flex-col gap-6"> |
| 16 | <header> |
| 17 | <h2 className="font-mono text-lg tracking-tight">service badges</h2> |
| 18 | <p className="mt-1 max-w-2xl font-mono text-xs text-[var(--color-text-muted)]"> |
| 19 | each badge is a pass for <strong className="text-[var(--color-text)]">one room only</strong>{' '} |
| 20 | inside this project: database, S3 storage, or Auth machines. a database badge cannot open |
| 21 | storage or auth. secrets are shown once — copy them, then store them safely. |
| 22 | </p> |
| 23 | </header> |
| 24 | <ServiceBadgesPanel apiOrigin={apiOrigin} projectId={id} /> |
| 25 | </div> |
| 26 | ); |
| 27 | } |