{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "provider-sign-in-button-demo", "title": "Provider Sign-In Button Example", "author": "MR ", "description": "A full page rendering Provider Sign-In Button, with its own sample data — what \"Open in v0\" hands over, and what to copy when wiring the component into a real screen.", "registryDependencies": [ "@cantera/aps-oauth-preset", "@cantera/oauth-types", "@cantera/provider-sign-in-button" ], "files": [ { "path": "registry/examples/provider-sign-in-button-demo.tsx", "content": "'use client'\n\nimport { ProviderSignInButton } from '@/components/ui/provider-sign-in-button'\nimport { apsProvider } from '@/lib/aps-oauth-preset'\nimport type { OAuthProvider } from '@/lib/oauth-types'\n\n/** A provider with no brand mark: `icon` is optional, and every surface renders one without. */\nconst procoreProvider: OAuthProvider = { id: 'procore', name: 'Procore' }\n\n/**\n * A returned promise drives the pending state, so there is no `loading` state to\n * wire: the label stays put, the mark crossfades to a spinner, and activation is\n * blocked with `aria-disabled` rather than the native attribute.\n *\n * In a real app this is usually an `href` to the auth route instead —\n * ``.\n */\nfunction startSignIn(): Promise {\n return new Promise((resolve) => {\n setTimeout(resolve, 1200)\n })\n}\n\nexport function ProviderSignInButtonDemo() {\n return (\n
\n \n \n
\n )\n}\n", "type": "registry:component", "target": "components/examples/provider-sign-in-button-demo.tsx" }, { "path": "registry/examples/pages/provider-sign-in-button-demo-page.tsx", "content": "// Generated by scripts/build-examples.mts. Edit the demo, not this file.\nimport { ProviderSignInButtonDemo } from '@/components/examples/provider-sign-in-button-demo'\n\nexport default function Page() {\n return (\n
\n
\n \n
\n
\n )\n}\n", "type": "registry:page", "target": "app/examples/provider-sign-in-button/page.tsx" } ], "categories": [ "authentication", "buttons" ], "type": "registry:example" }