mirror of
https://github.com/supabase/supabase.git
synced 2026-10-11 12:25:05 +03:00
## I have read the [CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md) file. YES ## What kind of change does this PR introduce? Refactor, bug fix. Part 1 of 6 in a stack that splits the library redesign into reviewable pieces. This one is the foundation the rest build on and has no visual change. ## What is the current behavior? Three build steps each reimplement "where does this registry file land in the user's project": `process-registry`'s `getDefaultPath`, `registry/utils`' `uniqBy` on `file.path`, and the Markdown exporter. They disagree, which produces real bugs: - A Vue block whose files come from `node_modules/@supabase/vue-blocks/` keeps its package path, so the installer writes the package folder into the user's project. - `registryItemAppend` builds its `docs` string from `(item.docs, items.flatMap(...))` — a comma expression, so the item's own docs are discarded. - A name collision between a block file and its client's file silently keeps one of the two. - Install commands guess the CLI family from substrings in the item name, so `infinite-query-composable` — a Vue block with neither "vue" nor "nuxtjs" in its name — gets the React CLI. - Production Vue installs use `@supabase/<name>`, but the `@supabase` namespace is registered with shadcn, not shadcn-vue. - `build:registry`, `build:content`, `build:markdown` and `build:llms` run in parallel, but the last three read `public/r`. ## What is the new behavior? `lib/registry-resolution.ts` owns installed-path derivation, first-party dependency naming, deduplication, and cycle detection, and every consumer calls it. `build-registry` validates the whole registry against shadcn's schema and resolves every item, so a broken reference fails the build instead of shipping. `clean-registry` throws rather than logging past a failure. Pages declare their install `framework` explicitly instead of it being inferred, and production Vue installs use the absolute registry URL. The build steps are serialized behind `build:prepare`, and a new `library-tests.yml` workflow runs the library's tests, checks the generated registry is committed, and builds the app. ## Additional context Regenerated registry artifacts are the mechanical result of the resolution fix — the Vue client items and the OAuth consent items that gained their client's docs. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added explicit React and Vue framework selection for library blocks and installation commands. * Improved registry resolution, dependency handling, path validation, and Vue file normalization. * Added support for reliable local, preview, and production registry URLs. * **Documentation** * Updated Vue and Nuxt installation documentation to identify the Vue framework explicitly. * **Bug Fixes** * Preserved combined documentation and validated generated registry content more consistently. * **Tests** * Added coverage for installation commands, registry resolution, dependency handling, and generated artifacts. * **Chores** * Added automated pull-request checks for library tests and builds. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com> Co-authored-by: Ivan Vasilov <vasilov.ivan@gmail.com>
2991 lines
106 KiB
JSON
2991 lines
106 KiB
JSON
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry.json",
|
|
"name": "Supabase Library",
|
|
"homepage": "https://supabase.com/library",
|
|
"items": [
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "safe-next-path",
|
|
"type": "registry:lib",
|
|
"title": "Safe next path",
|
|
"description": "Validates same-origin paths before redirecting.",
|
|
"registryDependencies": [],
|
|
"dependencies": [],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/safe-next-path/lib/safe-next-path.ts",
|
|
"type": "registry:lib",
|
|
"target": "lib/safe-next-path.ts"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "password-based-auth-nextjs",
|
|
"type": "registry:block",
|
|
"title": "Password Based Auth flow for Nextjs and Supabase",
|
|
"description": "Password Based Auth flow for Nextjs and Supabase",
|
|
"registryDependencies": [
|
|
"button",
|
|
"card",
|
|
"input",
|
|
"label",
|
|
"https://supabase.com/library/r/safe-next-path.json"
|
|
],
|
|
"dependencies": [
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-nextjs/app/auth/login/page.tsx",
|
|
"type": "registry:page",
|
|
"target": "app/auth/login/page.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-nextjs/app/auth/error/page.tsx",
|
|
"type": "registry:page",
|
|
"target": "app/auth/error/page.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-nextjs/app/protected/page.tsx",
|
|
"type": "registry:page",
|
|
"target": "app/protected/page.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-nextjs/app/auth/confirm/route.ts",
|
|
"type": "registry:page",
|
|
"target": "app/auth/confirm/route.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-nextjs/components/login-form.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-nextjs/middleware.ts",
|
|
"type": "registry:file",
|
|
"target": "middleware.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-nextjs/app/auth/sign-up/page.tsx",
|
|
"type": "registry:page",
|
|
"target": "app/auth/sign-up/page.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-nextjs/app/auth/sign-up-success/page.tsx",
|
|
"type": "registry:page",
|
|
"target": "app/auth/sign-up-success/page.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-nextjs/components/sign-up-form.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-nextjs/app/auth/forgot-password/page.tsx",
|
|
"type": "registry:page",
|
|
"target": "app/auth/forgot-password/page.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-nextjs/app/auth/update-password/page.tsx",
|
|
"type": "registry:page",
|
|
"target": "app/auth/update-password/page.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-nextjs/components/forgot-password-form.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-nextjs/components/update-password-form.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-nextjs/components/logout-button.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/middleware.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `NEXT_PUBLIC_SUPABASE_URL` and `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"NEXT_PUBLIC_SUPABASE_URL": "",
|
|
"NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"name": "password-based-auth-react",
|
|
"type": "registry:block",
|
|
"title": "Password Based Auth flow for React and Supabase",
|
|
"description": "Password Based Auth flow for React and Supabase",
|
|
"registryDependencies": [
|
|
"button",
|
|
"card",
|
|
"input",
|
|
"label",
|
|
"https://supabase.com/library/r/safe-next-path.json"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-react/components/login-form.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-react/components/sign-up-form.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-react/components/forgot-password-form.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-react/components/update-password-form.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"dependencies": [
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"name": "password-based-auth-react-router",
|
|
"type": "registry:block",
|
|
"title": "Password Based Auth flow for React Router and Supabase",
|
|
"description": "Password Based Auth flow for React Router and Supabase",
|
|
"registryDependencies": [
|
|
"button",
|
|
"card",
|
|
"input",
|
|
"label",
|
|
"https://supabase.com/library/r/safe-next-path.json"
|
|
],
|
|
"dependencies": [
|
|
"@supabase/ssr@latest",
|
|
"@react-router/dev@latest",
|
|
"@react-router/fs-routes@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-react-router/app/routes/auth.confirm.tsx",
|
|
"type": "registry:file",
|
|
"target": "app/routes/auth.confirm.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-react-router/app/routes/auth.error.tsx",
|
|
"type": "registry:file",
|
|
"target": "app/routes/auth.error.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-react-router/app/routes/forgot-password.tsx",
|
|
"type": "registry:file",
|
|
"target": "app/routes/forgot-password.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-react-router/app/routes/login.tsx",
|
|
"type": "registry:file",
|
|
"target": "app/routes/login.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-react-router/app/routes/logout.tsx",
|
|
"type": "registry:file",
|
|
"target": "app/routes/logout.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-react-router/app/routes/protected.tsx",
|
|
"type": "registry:file",
|
|
"target": "app/routes/protected.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-react-router/app/routes/sign-up.tsx",
|
|
"type": "registry:file",
|
|
"target": "app/routes/sign-up.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-react-router/app/routes/update-password.tsx",
|
|
"type": "registry:file",
|
|
"target": "app/routes/update-password.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-react-router/app/routes.ts",
|
|
"type": "registry:file",
|
|
"target": "app/routes.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react-router/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react-router/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"name": "password-based-auth-tanstack",
|
|
"type": "registry:block",
|
|
"title": "Password Based Auth flow for tanstack and Supabase",
|
|
"description": "Password Based Auth flow for tanstack and Supabase",
|
|
"registryDependencies": [
|
|
"button",
|
|
"card",
|
|
"input",
|
|
"label",
|
|
"https://supabase.com/library/r/safe-next-path.json"
|
|
],
|
|
"dependencies": [
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-tanstack/routes/login.tsx",
|
|
"type": "registry:file",
|
|
"target": "routes/login.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-tanstack/routes/auth/error.tsx",
|
|
"type": "registry:file",
|
|
"target": "routes/auth/error.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-tanstack/routes/_protected.tsx",
|
|
"type": "registry:file",
|
|
"target": "routes/_protected.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-tanstack/routes/_protected/protected.tsx",
|
|
"type": "registry:file",
|
|
"target": "routes/_protected/protected.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-tanstack/routes/auth/confirm.ts",
|
|
"type": "registry:file",
|
|
"target": "routes/auth/confirm.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-tanstack/components/login-form.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-tanstack/routes/sign-up.tsx",
|
|
"type": "registry:file",
|
|
"target": "routes/sign-up.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-tanstack/routes/sign-up-success.tsx",
|
|
"type": "registry:file",
|
|
"target": "routes/sign-up-success.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-tanstack/components/sign-up-form.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-tanstack/routes/forgot-password.tsx",
|
|
"type": "registry:file",
|
|
"target": "routes/forgot-password.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-tanstack/routes/update-password.tsx",
|
|
"type": "registry:file",
|
|
"target": "routes/update-password.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-tanstack/components/forgot-password-form.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-tanstack/components/update-password-form.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/password-based-auth-tanstack/lib/supabase/fetch-user-server-fn.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/tanstack/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/tanstack/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"name": "social-auth-nextjs",
|
|
"type": "registry:block",
|
|
"title": "Social Auth flow for Nextjs and Supabase",
|
|
"description": "Social Auth flow for Nextjs and Supabase",
|
|
"registryDependencies": [
|
|
"button",
|
|
"card",
|
|
"https://supabase.com/library/r/safe-next-path.json"
|
|
],
|
|
"dependencies": [
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/social-auth-nextjs/app/auth/login/page.tsx",
|
|
"type": "registry:page",
|
|
"target": "app/auth/login/page.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/social-auth-nextjs/app/auth/error/page.tsx",
|
|
"type": "registry:page",
|
|
"target": "app/auth/error/page.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/social-auth-nextjs/app/protected/page.tsx",
|
|
"type": "registry:page",
|
|
"target": "app/protected/page.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/social-auth-nextjs/app/auth/oauth/route.ts",
|
|
"type": "registry:page",
|
|
"target": "app/auth/oauth/route.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/social-auth-nextjs/components/login-form.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/social-auth-nextjs/middleware.ts",
|
|
"type": "registry:file",
|
|
"target": "middleware.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/social-auth-nextjs/components/logout-button.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/middleware.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `NEXT_PUBLIC_SUPABASE_URL` and `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"NEXT_PUBLIC_SUPABASE_URL": "",
|
|
"NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"name": "social-auth-react",
|
|
"type": "registry:block",
|
|
"title": "Social Auth flow for React and Supabase",
|
|
"description": "Social Auth flow for React and Supabase",
|
|
"registryDependencies": [
|
|
"button",
|
|
"card"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/social-auth-react/components/login-form.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"dependencies": [
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"name": "social-auth-react-router",
|
|
"type": "registry:block",
|
|
"title": "Social Auth flow for React Router and Supabase",
|
|
"description": "Social Auth flow for React Router and Supabase",
|
|
"registryDependencies": [
|
|
"button",
|
|
"card",
|
|
"https://supabase.com/library/r/safe-next-path.json"
|
|
],
|
|
"dependencies": [
|
|
"@supabase/ssr@latest",
|
|
"@react-router/dev@latest",
|
|
"@react-router/fs-routes@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/social-auth-react-router/app/routes/auth.error.tsx",
|
|
"type": "registry:file",
|
|
"target": "app/routes/auth.error.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/social-auth-react-router/app/routes/auth.oauth.tsx",
|
|
"type": "registry:file",
|
|
"target": "app/routes/auth.oauth.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/social-auth-react-router/app/routes/login.tsx",
|
|
"type": "registry:file",
|
|
"target": "app/routes/login.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/social-auth-react-router/app/routes/logout.tsx",
|
|
"type": "registry:file",
|
|
"target": "app/routes/logout.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/social-auth-react-router/app/routes/protected.tsx",
|
|
"type": "registry:file",
|
|
"target": "app/routes/protected.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/social-auth-react-router/app/routes.ts",
|
|
"type": "registry:file",
|
|
"target": "app/routes.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react-router/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react-router/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"name": "social-auth-tanstack",
|
|
"type": "registry:block",
|
|
"title": "Social Auth flow for TanStack and Supabase",
|
|
"description": "Social Auth flow for TanStack and Supabase",
|
|
"registryDependencies": [
|
|
"button",
|
|
"card",
|
|
"https://supabase.com/library/r/safe-next-path.json"
|
|
],
|
|
"dependencies": [
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/social-auth-tanstack/components/login-form.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/social-auth-tanstack/lib/supabase/fetch-user-server-fn.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/social-auth-tanstack/routes/_protected.tsx",
|
|
"type": "registry:file",
|
|
"target": "routes/_protected.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/social-auth-tanstack/routes/_protected/protected.tsx",
|
|
"type": "registry:file",
|
|
"target": "routes/_protected/protected.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/social-auth-tanstack/routes/auth/error.tsx",
|
|
"type": "registry:file",
|
|
"target": "routes/auth/error.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/social-auth-tanstack/routes/auth/oauth.ts",
|
|
"type": "registry:file",
|
|
"target": "routes/auth/oauth.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/social-auth-tanstack/routes/login.tsx",
|
|
"type": "registry:file",
|
|
"target": "routes/login.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/tanstack/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/tanstack/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "dropzone-nextjs",
|
|
"type": "registry:component",
|
|
"title": "Dropzone (File Upload)",
|
|
"description": "Displays a control for easier uploading of files directly to Supabase Storage.",
|
|
"registryDependencies": [
|
|
"button"
|
|
],
|
|
"dependencies": [
|
|
"react-dropzone",
|
|
"lucide-react",
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/dropzone/components/dropzone.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/dropzone/hooks/use-supabase-upload.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/middleware.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `NEXT_PUBLIC_SUPABASE_URL` and `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"NEXT_PUBLIC_SUPABASE_URL": "",
|
|
"NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "dropzone-react",
|
|
"type": "registry:component",
|
|
"title": "Dropzone (File Upload)",
|
|
"description": "Displays a control for easier uploading of files directly to Supabase Storage.",
|
|
"registryDependencies": [
|
|
"button"
|
|
],
|
|
"dependencies": [
|
|
"react-dropzone",
|
|
"lucide-react",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/dropzone/components/dropzone.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/dropzone/hooks/use-supabase-upload.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "dropzone-react-router",
|
|
"type": "registry:component",
|
|
"title": "Dropzone (File Upload)",
|
|
"description": "Displays a control for easier uploading of files directly to Supabase Storage.",
|
|
"registryDependencies": [
|
|
"button"
|
|
],
|
|
"dependencies": [
|
|
"react-dropzone",
|
|
"lucide-react",
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/dropzone/components/dropzone.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/dropzone/hooks/use-supabase-upload.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react-router/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react-router/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "dropzone-tanstack",
|
|
"type": "registry:component",
|
|
"title": "Dropzone (File Upload)",
|
|
"description": "Displays a control for easier uploading of files directly to Supabase Storage.",
|
|
"registryDependencies": [
|
|
"button"
|
|
],
|
|
"dependencies": [
|
|
"react-dropzone",
|
|
"lucide-react",
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/dropzone/components/dropzone.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/dropzone/hooks/use-supabase-upload.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/tanstack/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/tanstack/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "realtime-cursor-nextjs",
|
|
"type": "registry:component",
|
|
"title": "Realtime Cursor",
|
|
"description": "Component which renders realtime cursors from other users in a room.",
|
|
"registryDependencies": [],
|
|
"dependencies": [
|
|
"lucide-react",
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/realtime-cursor/components/cursor.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-cursor/components/realtime-cursors.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-cursor/hooks/use-realtime-cursors.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/middleware.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `NEXT_PUBLIC_SUPABASE_URL` and `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"NEXT_PUBLIC_SUPABASE_URL": "",
|
|
"NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "realtime-cursor-react",
|
|
"type": "registry:component",
|
|
"title": "Realtime Cursor",
|
|
"description": "Component which renders realtime cursors from other users in a room.",
|
|
"registryDependencies": [],
|
|
"dependencies": [
|
|
"lucide-react",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/realtime-cursor/components/cursor.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-cursor/components/realtime-cursors.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-cursor/hooks/use-realtime-cursors.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "realtime-cursor-react-router",
|
|
"type": "registry:component",
|
|
"title": "Realtime Cursor",
|
|
"description": "Component which renders realtime cursors from other users in a room.",
|
|
"registryDependencies": [],
|
|
"dependencies": [
|
|
"lucide-react",
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/realtime-cursor/components/cursor.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-cursor/components/realtime-cursors.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-cursor/hooks/use-realtime-cursors.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react-router/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react-router/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "realtime-cursor-tanstack",
|
|
"type": "registry:component",
|
|
"title": "Realtime Cursor",
|
|
"description": "Component which renders realtime cursors from other users in a room.",
|
|
"registryDependencies": [],
|
|
"dependencies": [
|
|
"lucide-react",
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/realtime-cursor/components/cursor.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-cursor/components/realtime-cursors.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-cursor/hooks/use-realtime-cursors.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/tanstack/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/tanstack/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "current-user-avatar-nextjs",
|
|
"type": "registry:component",
|
|
"title": "Current User Avatar",
|
|
"description": "Component which renders the current user's avatar.",
|
|
"registryDependencies": [
|
|
"avatar"
|
|
],
|
|
"dependencies": [
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/current-user-avatar/components/current-user-avatar.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/current-user-avatar/hooks/use-current-user-name.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/current-user-avatar/hooks/use-current-user-image.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/middleware.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `NEXT_PUBLIC_SUPABASE_URL` and `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"NEXT_PUBLIC_SUPABASE_URL": "",
|
|
"NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "current-user-avatar-react",
|
|
"type": "registry:component",
|
|
"title": "Current User Avatar",
|
|
"description": "Component which renders the current user's avatar.",
|
|
"registryDependencies": [
|
|
"avatar"
|
|
],
|
|
"dependencies": [
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/current-user-avatar/components/current-user-avatar.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/current-user-avatar/hooks/use-current-user-name.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/current-user-avatar/hooks/use-current-user-image.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "current-user-avatar-react-router",
|
|
"type": "registry:component",
|
|
"title": "Current User Avatar",
|
|
"description": "Component which renders the current user's avatar.",
|
|
"registryDependencies": [
|
|
"avatar"
|
|
],
|
|
"dependencies": [
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/current-user-avatar/components/current-user-avatar.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/current-user-avatar/hooks/use-current-user-name.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/current-user-avatar/hooks/use-current-user-image.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react-router/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react-router/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "current-user-avatar-tanstack",
|
|
"type": "registry:component",
|
|
"title": "Current User Avatar",
|
|
"description": "Component which renders the current user's avatar.",
|
|
"registryDependencies": [
|
|
"avatar"
|
|
],
|
|
"dependencies": [
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/current-user-avatar/components/current-user-avatar.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/current-user-avatar/hooks/use-current-user-name.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/current-user-avatar/hooks/use-current-user-image.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/tanstack/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/tanstack/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "realtime-avatar-stack-nextjs",
|
|
"type": "registry:component",
|
|
"title": "Avatar Stack with Realtime Presence",
|
|
"description": "Component which stack of avatars, tracked by realtime presence.",
|
|
"registryDependencies": [
|
|
"avatar",
|
|
"tooltip"
|
|
],
|
|
"dependencies": [
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/realtime-avatar-stack/components/avatar-stack.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-avatar-stack/components/realtime-avatar-stack.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-avatar-stack/hooks/use-realtime-presence-room.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/current-user-avatar/hooks/use-current-user-name.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/current-user-avatar/hooks/use-current-user-image.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/middleware.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `NEXT_PUBLIC_SUPABASE_URL` and `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"NEXT_PUBLIC_SUPABASE_URL": "",
|
|
"NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "realtime-avatar-stack-react",
|
|
"type": "registry:component",
|
|
"title": "Avatar Stack with Realtime Presence",
|
|
"description": "Component which stack of avatars, tracked by realtime presence.",
|
|
"registryDependencies": [
|
|
"avatar",
|
|
"tooltip"
|
|
],
|
|
"dependencies": [
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/realtime-avatar-stack/components/avatar-stack.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-avatar-stack/components/realtime-avatar-stack.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-avatar-stack/hooks/use-realtime-presence-room.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/current-user-avatar/hooks/use-current-user-name.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/current-user-avatar/hooks/use-current-user-image.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "realtime-avatar-stack-react-router",
|
|
"type": "registry:component",
|
|
"title": "Avatar Stack with Realtime Presence",
|
|
"description": "Component which stack of avatars, tracked by realtime presence.",
|
|
"registryDependencies": [
|
|
"avatar",
|
|
"tooltip"
|
|
],
|
|
"dependencies": [
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/realtime-avatar-stack/components/avatar-stack.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-avatar-stack/components/realtime-avatar-stack.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-avatar-stack/hooks/use-realtime-presence-room.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/current-user-avatar/hooks/use-current-user-name.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/current-user-avatar/hooks/use-current-user-image.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react-router/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react-router/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "realtime-avatar-stack-tanstack",
|
|
"type": "registry:component",
|
|
"title": "Avatar Stack with Realtime Presence",
|
|
"description": "Component which stack of avatars, tracked by realtime presence.",
|
|
"registryDependencies": [
|
|
"avatar",
|
|
"tooltip"
|
|
],
|
|
"dependencies": [
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/realtime-avatar-stack/components/avatar-stack.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-avatar-stack/components/realtime-avatar-stack.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-avatar-stack/hooks/use-realtime-presence-room.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/current-user-avatar/hooks/use-current-user-name.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/current-user-avatar/hooks/use-current-user-image.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/tanstack/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/tanstack/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "realtime-chat-nextjs",
|
|
"type": "registry:component",
|
|
"title": "Realtime Chat",
|
|
"description": "Component which renders realtime chat messages from other users in a room.",
|
|
"registryDependencies": [
|
|
"input",
|
|
"button"
|
|
],
|
|
"dependencies": [
|
|
"lucide-react",
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/realtime-chat/components/chat-message.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-chat/components/realtime-chat.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-chat/hooks/use-realtime-chat.tsx",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-chat/hooks/use-chat-scroll.tsx",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/middleware.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `NEXT_PUBLIC_SUPABASE_URL` and `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"NEXT_PUBLIC_SUPABASE_URL": "",
|
|
"NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "realtime-chat-react",
|
|
"type": "registry:component",
|
|
"title": "Realtime Chat",
|
|
"description": "Component which renders realtime chat messages from other users in a room.",
|
|
"registryDependencies": [
|
|
"input",
|
|
"button"
|
|
],
|
|
"dependencies": [
|
|
"lucide-react",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/realtime-chat/components/chat-message.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-chat/components/realtime-chat.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-chat/hooks/use-realtime-chat.tsx",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-chat/hooks/use-chat-scroll.tsx",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "realtime-chat-react-router",
|
|
"type": "registry:component",
|
|
"title": "Realtime Chat",
|
|
"description": "Component which renders realtime chat messages from other users in a room.",
|
|
"registryDependencies": [
|
|
"input",
|
|
"button"
|
|
],
|
|
"dependencies": [
|
|
"lucide-react",
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/realtime-chat/components/chat-message.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-chat/components/realtime-chat.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-chat/hooks/use-realtime-chat.tsx",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-chat/hooks/use-chat-scroll.tsx",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react-router/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react-router/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "realtime-chat-tanstack",
|
|
"type": "registry:component",
|
|
"title": "Realtime Chat",
|
|
"description": "Component which renders realtime chat messages from other users in a room.",
|
|
"registryDependencies": [
|
|
"input",
|
|
"button"
|
|
],
|
|
"dependencies": [
|
|
"lucide-react",
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/realtime-chat/components/chat-message.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-chat/components/realtime-chat.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-chat/hooks/use-realtime-chat.tsx",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-chat/hooks/use-chat-scroll.tsx",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/tanstack/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/tanstack/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "realtime-flow-nextjs",
|
|
"type": "registry:component",
|
|
"title": "Realtime Flow",
|
|
"description": "Real-time flow diagram editor for collaborative applications.",
|
|
"registryDependencies": [],
|
|
"dependencies": [
|
|
"@xyflow/react@latest",
|
|
"@supabase-labs/y-supabase@latest",
|
|
"y-protocols@latest",
|
|
"yjs@latest",
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/realtime-flow/hooks/use-realtime-flow.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-flow/components/realtime-flow.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/middleware.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `NEXT_PUBLIC_SUPABASE_URL` and `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"NEXT_PUBLIC_SUPABASE_URL": "",
|
|
"NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "realtime-flow-react",
|
|
"type": "registry:component",
|
|
"title": "Realtime Flow",
|
|
"description": "Real-time flow diagram editor for collaborative applications.",
|
|
"registryDependencies": [],
|
|
"dependencies": [
|
|
"@xyflow/react@latest",
|
|
"@supabase-labs/y-supabase@latest",
|
|
"y-protocols@latest",
|
|
"yjs@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/realtime-flow/hooks/use-realtime-flow.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-flow/components/realtime-flow.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "realtime-flow-react-router",
|
|
"type": "registry:component",
|
|
"title": "Realtime Flow",
|
|
"description": "Real-time flow diagram editor for collaborative applications.",
|
|
"registryDependencies": [],
|
|
"dependencies": [
|
|
"@xyflow/react@latest",
|
|
"@supabase-labs/y-supabase@latest",
|
|
"y-protocols@latest",
|
|
"yjs@latest",
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/realtime-flow/hooks/use-realtime-flow.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-flow/components/realtime-flow.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react-router/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react-router/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "realtime-flow-tanstack",
|
|
"type": "registry:component",
|
|
"title": "Realtime Flow",
|
|
"description": "Real-time flow diagram editor for collaborative applications.",
|
|
"registryDependencies": [],
|
|
"dependencies": [
|
|
"@xyflow/react@latest",
|
|
"@supabase-labs/y-supabase@latest",
|
|
"y-protocols@latest",
|
|
"yjs@latest",
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/realtime-flow/hooks/use-realtime-flow.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-flow/components/realtime-flow.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/tanstack/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/tanstack/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "realtime-monaco-nextjs",
|
|
"type": "registry:component",
|
|
"title": "Realtime Monaco",
|
|
"description": "Real-time Monaco editor for collaborative applications.",
|
|
"registryDependencies": [],
|
|
"dependencies": [
|
|
"@monaco-editor/react@latest",
|
|
"y-monaco@latest",
|
|
"yjs@latest",
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/realtime-monaco/hooks/use-connect-on-mount.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-monaco/components/realtime-monaco.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/middleware.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `NEXT_PUBLIC_SUPABASE_URL` and `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"NEXT_PUBLIC_SUPABASE_URL": "",
|
|
"NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "realtime-monaco-react",
|
|
"type": "registry:component",
|
|
"title": "Realtime Monaco",
|
|
"description": "Real-time Monaco editor for collaborative applications.",
|
|
"registryDependencies": [],
|
|
"dependencies": [
|
|
"@monaco-editor/react@latest",
|
|
"y-monaco@latest",
|
|
"yjs@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/realtime-monaco/hooks/use-connect-on-mount.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-monaco/components/realtime-monaco.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "realtime-monaco-react-router",
|
|
"type": "registry:component",
|
|
"title": "Realtime Monaco",
|
|
"description": "Real-time Monaco editor for collaborative applications.",
|
|
"registryDependencies": [],
|
|
"dependencies": [
|
|
"@monaco-editor/react@latest",
|
|
"y-monaco@latest",
|
|
"yjs@latest",
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/realtime-monaco/hooks/use-connect-on-mount.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-monaco/components/realtime-monaco.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react-router/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react-router/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "realtime-monaco-tanstack",
|
|
"type": "registry:component",
|
|
"title": "Realtime Monaco",
|
|
"description": "Real-time Monaco editor for collaborative applications.",
|
|
"registryDependencies": [],
|
|
"dependencies": [
|
|
"@monaco-editor/react@latest",
|
|
"y-monaco@latest",
|
|
"yjs@latest",
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/realtime-monaco/hooks/use-connect-on-mount.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/realtime-monaco/components/realtime-monaco.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/tanstack/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/tanstack/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "infinite-query-hook",
|
|
"type": "registry:block",
|
|
"title": "Infinite Query Hook",
|
|
"description": "React hook for infinite lists, fetching data from Supabase.",
|
|
"dependencies": [
|
|
"@supabase/supabase-js",
|
|
"@supabase/postgrest-js@*"
|
|
],
|
|
"registryDependencies": [],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/infinite-query-hook/hooks/use-infinite-query.ts",
|
|
"type": "registry:hook"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "mcp-server",
|
|
"type": "registry:item",
|
|
"title": "MCP Server",
|
|
"description": "Add a user-scoped MCP server to your product.",
|
|
"docs": "Disable gateway JWT verification, then deploy the Edge Function. A trusted product backend can call it with the signed-in user's access token. For external clients, install the [OAuth Consent block](https://supabase.com/library/docs/nextjs/oauth-consent), enable OAuth and dynamic registration, and set the Auth Site URL to the consent app. Every call runs through the user's RLS-scoped client. OAuth tokens include `client_id`; product sessions do not, so define policies for both paths. See [MCP authentication](https://supabase.com/docs/guides/auth/oauth-server/mcp-authentication) and [token security](https://supabase.com/docs/guides/auth/oauth-server/token-security).",
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/mcp-server/supabase/functions/mcp-server/index.ts",
|
|
"type": "registry:file",
|
|
"target": "~/supabase/functions/mcp-server/index.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/mcp-server/supabase/functions/mcp-server/deno.json",
|
|
"type": "registry:file",
|
|
"target": "~/supabase/functions/mcp-server/deno.json"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/mcp-server/supabase/functions/mcp-server/deno.lock",
|
|
"type": "registry:file",
|
|
"target": "~/supabase/functions/mcp-server/deno.lock"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/mcp-server/supabase/functions/mcp-server/.env.example",
|
|
"type": "registry:file",
|
|
"target": "~/supabase/functions/mcp-server/.env.example"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/mcp-server/supabase/functions/mcp-server/tools/types.ts",
|
|
"type": "registry:file",
|
|
"target": "~/supabase/functions/mcp-server/tools/types.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/mcp-server/supabase/functions/mcp-server/tools/result.ts",
|
|
"type": "registry:file",
|
|
"target": "~/supabase/functions/mcp-server/tools/result.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/mcp-server/supabase/functions/mcp-server/tools/whoami.ts",
|
|
"type": "registry:file",
|
|
"target": "~/supabase/functions/mcp-server/tools/whoami.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/mcp-server/supabase/functions/mcp-server/tools/index.ts",
|
|
"type": "registry:file",
|
|
"target": "~/supabase/functions/mcp-server/tools/index.ts"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "headless-app-tanstack",
|
|
"type": "registry:block",
|
|
"title": "Headless App for TanStack Start",
|
|
"description": "A backend with an agent as the primary interface, combining auth, OAuth consent, and an MCP server.",
|
|
"docs": "Follow https://supabase.com/library/docs/tanstack/headless-app for setup. Merge `supabase/config.toml` with existing project settings. Open `/agents` to connect your agent and approve access, then try the example task tools.\n\nYou'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_PRODUCT_NAME": "Your product",
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
},
|
|
"registryDependencies": [
|
|
"button",
|
|
"https://supabase.com/library/r/password-based-auth-tanstack.json",
|
|
"https://supabase.com/library/r/oauth-consent-tanstack.json"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/headless-app-tanstack/supabase/functions/mcp-server/tools/index.ts",
|
|
"type": "registry:file",
|
|
"target": "~/supabase/functions/mcp-server/tools/index.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/headless-app-tanstack/supabase/functions/mcp-server/tools/tasks.ts",
|
|
"type": "registry:file",
|
|
"target": "~/supabase/functions/mcp-server/tools/tasks.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/headless-app-tanstack/routes/_protected/agents.tsx",
|
|
"type": "registry:file",
|
|
"target": "routes/_protected/agents.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/headless-app-tanstack/components/connected-agents.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/headless-app-tanstack/hooks/use-oauth-grants.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/headless-app-tanstack/supabase/config.toml",
|
|
"type": "registry:file",
|
|
"target": "~/supabase/config.toml"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/headless-app-tanstack/supabase/schemas/public/tables/tasks.sql",
|
|
"type": "registry:file",
|
|
"target": "~/supabase/schemas/public/tables/tasks.sql"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/mcp-server/supabase/functions/mcp-server/index.ts",
|
|
"type": "registry:file",
|
|
"target": "~/supabase/functions/mcp-server/index.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/mcp-server/supabase/functions/mcp-server/deno.json",
|
|
"type": "registry:file",
|
|
"target": "~/supabase/functions/mcp-server/deno.json"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/mcp-server/supabase/functions/mcp-server/deno.lock",
|
|
"type": "registry:file",
|
|
"target": "~/supabase/functions/mcp-server/deno.lock"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/mcp-server/supabase/functions/mcp-server/.env.example",
|
|
"type": "registry:file",
|
|
"target": "~/supabase/functions/mcp-server/.env.example"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/mcp-server/supabase/functions/mcp-server/tools/types.ts",
|
|
"type": "registry:file",
|
|
"target": "~/supabase/functions/mcp-server/tools/types.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/mcp-server/supabase/functions/mcp-server/tools/result.ts",
|
|
"type": "registry:file",
|
|
"target": "~/supabase/functions/mcp-server/tools/result.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/mcp-server/supabase/functions/mcp-server/tools/whoami.ts",
|
|
"type": "registry:file",
|
|
"target": "~/supabase/functions/mcp-server/tools/whoami.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/tanstack/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/tanstack/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"dependencies": [
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
]
|
|
},
|
|
{
|
|
"name": "oauth-consent-nextjs",
|
|
"type": "registry:block",
|
|
"title": "OAuth Consent for Next.js",
|
|
"description": "OAuth 2.1 consent screen and route for an existing authenticated application.",
|
|
"docs": "After installation, set the following in `supabase/config.toml`. Recent CLI versions already write an `[auth.oauth_server]` section with `enabled = false` — edit that section rather than adding a second one:\n\n```toml\n[auth.oauth_server]\nenabled = true\nauthorization_url_path = \"/oauth/consent\"\n```\n\nYou'll need to set the following environment variables in your project: `NEXT_PUBLIC_SUPABASE_URL` and `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"registryDependencies": [
|
|
"button",
|
|
"card",
|
|
"https://supabase.com/library/r/safe-next-path.json"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/oauth-consent/components/oauth-consent.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/oauth-consent/hooks/use-oauth-consent.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/oauth-consent-nextjs/app/oauth/consent/page.tsx",
|
|
"type": "registry:page",
|
|
"target": "app/oauth/consent/page.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/middleware.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"dependencies": [
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"envVars": {
|
|
"NEXT_PUBLIC_SUPABASE_URL": "",
|
|
"NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"name": "oauth-consent-react",
|
|
"type": "registry:block",
|
|
"title": "OAuth Consent for React",
|
|
"description": "OAuth 2.1 consent component for an existing authenticated application.",
|
|
"docs": "After installation, set the following in `supabase/config.toml`. Recent CLI versions already write an `[auth.oauth_server]` section with `enabled = false` — edit that section rather than adding a second one:\n\n```toml\n[auth.oauth_server]\nenabled = true\nauthorization_url_path = \"/oauth/consent\"\n```\n\nYou'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"registryDependencies": [
|
|
"button",
|
|
"card",
|
|
"https://supabase.com/library/r/safe-next-path.json"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/oauth-consent/components/oauth-consent.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/oauth-consent/hooks/use-oauth-consent.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"dependencies": [
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"name": "oauth-consent-react-router",
|
|
"type": "registry:block",
|
|
"title": "OAuth Consent for React Router",
|
|
"description": "OAuth 2.1 consent screen and route for an existing authenticated application.",
|
|
"docs": "After installation, set the following in `supabase/config.toml`. Recent CLI versions already write an `[auth.oauth_server]` section with `enabled = false` — edit that section rather than adding a second one:\n\n```toml\n[auth.oauth_server]\nenabled = true\nauthorization_url_path = \"/oauth/consent\"\n```\n\nYou'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"registryDependencies": [
|
|
"button",
|
|
"card",
|
|
"https://supabase.com/library/r/safe-next-path.json"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/oauth-consent/components/oauth-consent.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/oauth-consent/hooks/use-oauth-consent.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/oauth-consent-react-router/app/routes/oauth.consent.tsx",
|
|
"type": "registry:file",
|
|
"target": "app/routes/oauth.consent.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react-router/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react-router/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"dependencies": [
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"name": "oauth-consent-tanstack",
|
|
"type": "registry:block",
|
|
"title": "OAuth Consent for TanStack Start",
|
|
"description": "OAuth 2.1 consent screen and route for an existing authenticated application.",
|
|
"docs": "After installation, set the following in `supabase/config.toml`. Recent CLI versions already write an `[auth.oauth_server]` section with `enabled = false` — edit that section rather than adding a second one:\n\n```toml\n[auth.oauth_server]\nenabled = true\nauthorization_url_path = \"/oauth/consent\"\n```\n\nYou'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"registryDependencies": [
|
|
"button",
|
|
"card",
|
|
"https://supabase.com/library/r/safe-next-path.json"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/blocks/oauth-consent/components/oauth-consent.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/oauth-consent/hooks/use-oauth-consent.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/blocks/oauth-consent-tanstack/routes/oauth/consent.tsx",
|
|
"type": "registry:file",
|
|
"target": "routes/oauth/consent.tsx"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/tanstack/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/tanstack/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"dependencies": [
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "tanstack-db-nextjs",
|
|
"type": "registry:block",
|
|
"title": "TanStack DB for Next.js and Supabase",
|
|
"description": "TanStack DB integration with Supabase collections for type-safe database operations",
|
|
"registryDependencies": [
|
|
"button",
|
|
"input",
|
|
"label",
|
|
"sheet"
|
|
],
|
|
"dependencies": [
|
|
"supa-tdb-collection@latest",
|
|
"zod@latest",
|
|
"@tanstack/db@latest",
|
|
"@tanstack/react-db@latest",
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/middleware.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
],
|
|
"docs": "This block provides TanStack DB integration with Supabase collections. The schemas and collections are generated based on your database schema.\n\nYou'll need to set the following environment variables in your project: `NEXT_PUBLIC_SUPABASE_URL` and `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"NEXT_PUBLIC_SUPABASE_URL": "",
|
|
"NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY": ""
|
|
}
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "supabase-client-nextjs",
|
|
"type": "registry:lib",
|
|
"title": "Supabase Client for Next.js",
|
|
"description": "",
|
|
"registryDependencies": [],
|
|
"dependencies": [
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `NEXT_PUBLIC_SUPABASE_URL` and `NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"NEXT_PUBLIC_SUPABASE_URL": "",
|
|
"NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY": ""
|
|
},
|
|
"files": [
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/middleware.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nextjs/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "supabase-client-react",
|
|
"type": "registry:lib",
|
|
"title": "Supabase Client for React",
|
|
"description": "",
|
|
"registryDependencies": [],
|
|
"dependencies": [
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
},
|
|
"files": [
|
|
{
|
|
"path": "registry/default/clients/react/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "supabase-client-react-router",
|
|
"type": "registry:lib",
|
|
"title": "Supabase Client for React Router",
|
|
"description": "",
|
|
"registryDependencies": [],
|
|
"dependencies": [
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
},
|
|
"files": [
|
|
{
|
|
"path": "registry/default/clients/react-router/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/react-router/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "supabase-client-tanstack",
|
|
"type": "registry:lib",
|
|
"title": "Supabase Client for TanStack Start",
|
|
"description": "",
|
|
"registryDependencies": [],
|
|
"dependencies": [
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
},
|
|
"files": [
|
|
{
|
|
"path": "registry/default/clients/tanstack/lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/tanstack/lib/supabase/server.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "platform-kit-nextjs",
|
|
"type": "registry:block",
|
|
"title": "Platform Kit for Nextjs and Supabase",
|
|
"description": "Platform Kit for Nextjs and Supabase",
|
|
"registryDependencies": [
|
|
"alert",
|
|
"badge",
|
|
"button",
|
|
"card",
|
|
"chart",
|
|
"command",
|
|
"dialog",
|
|
"drawer",
|
|
"form",
|
|
"hover-card",
|
|
"input",
|
|
"label",
|
|
"popover",
|
|
"select",
|
|
"skeleton",
|
|
"switch",
|
|
"table",
|
|
"toggle",
|
|
"toggle-group",
|
|
"tooltip"
|
|
],
|
|
"dependencies": [
|
|
"@hookform/resolvers",
|
|
"@monaco-editor/react",
|
|
"@tanstack/react-query",
|
|
"@tanstack/react-table",
|
|
"axios",
|
|
"cmdk",
|
|
"common-tags",
|
|
"openai",
|
|
"openapi-fetch",
|
|
"react-hook-form",
|
|
"react-markdown",
|
|
"recharts",
|
|
"sonner"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/app/api/ai/sql/route.ts",
|
|
"type": "registry:page",
|
|
"target": "app/api/ai/sql/route.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/app/api/supabase-proxy/[...path]/route.ts",
|
|
"type": "registry:page",
|
|
"target": "app/api/supabase-proxy/[...path]/route.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/components/dynamic-form.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/components/logo-supabase.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/components/results-table.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/components/sql-editor.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/components/supabase-manager/auth.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/components/supabase-manager/database.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/components/supabase-manager/index.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/components/supabase-manager/logs.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/components/supabase-manager/secrets.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/components/supabase-manager/storage.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/components/supabase-manager/suggestions.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/components/supabase-manager/users.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/components/users-growth-chart.tsx",
|
|
"type": "registry:component"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/hooks/use-auth.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/hooks/use-logs.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/hooks/use-run-query.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/hooks/use-secrets.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/hooks/use-storage.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/hooks/use-suggestions.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/hooks/use-tables.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/hooks/use-user-counts.ts",
|
|
"type": "registry:hook"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/lib/logs.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/lib/management-api-schema.d.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/lib/management-api.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/lib/pg-meta/sql.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/lib/pg-meta/index.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/lib/pg-meta/types.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/lib/schemas/auth.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/lib/schemas/secrets.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/platform/platform-kit-nextjs/contexts/SheetNavigationContext.tsx",
|
|
"type": "registry:component",
|
|
"target": "contexts/SheetNavigationContext.tsx"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "supabase-client-nuxtjs",
|
|
"type": "registry:lib",
|
|
"title": "Supabase Client for Nuxt.js",
|
|
"description": "",
|
|
"registryDependencies": [],
|
|
"dependencies": [
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `NUXT_PUBLIC_SUPABASE_URL` and `NUXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"NUXT_PUBLIC_SUPABASE_URL": "",
|
|
"NUXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY": ""
|
|
},
|
|
"files": [
|
|
{
|
|
"path": "lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nuxtjs/server/middleware/is-authenticated.ts",
|
|
"type": "registry:file",
|
|
"target": "server/middleware/is-authenticated.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nuxtjs/server/api/profile.get.ts",
|
|
"type": "registry:file",
|
|
"target": "server/api/profile.get.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/clients/nuxtjs/server/supabase/client.ts",
|
|
"type": "registry:file",
|
|
"target": "server/supabase/client.ts"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
|
"name": "supabase-client-vue",
|
|
"type": "registry:lib",
|
|
"title": "Supabase Client for Vue",
|
|
"description": "",
|
|
"registryDependencies": [],
|
|
"dependencies": [
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"docs": "You'll need to set the following environment variables in your project: `VITE_SUPABASE_URL` and `VITE_SUPABASE_PUBLISHABLE_KEY`.",
|
|
"envVars": {
|
|
"VITE_SUPABASE_URL": "",
|
|
"VITE_SUPABASE_PUBLISHABLE_KEY": ""
|
|
},
|
|
"files": [
|
|
{
|
|
"path": "lib/supabase/client.ts",
|
|
"type": "registry:lib"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "password-based-auth-nuxtjs",
|
|
"type": "registry:block",
|
|
"title": "Password Based Auth flow for Nuxt.js and Supabase",
|
|
"description": "Password Based Auth flow for Nuxt.js and Supabase",
|
|
"registryDependencies": [
|
|
"button",
|
|
"card",
|
|
"input",
|
|
"label"
|
|
],
|
|
"dependencies": [
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/password-based-auth/nuxtjs/app/components/login-form.vue",
|
|
"type": "registry:file",
|
|
"target": "app/components/login-form.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/password-based-auth/nuxtjs/app/components/sign-up-form.vue",
|
|
"type": "registry:file",
|
|
"target": "app/components/sign-up-form.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/password-based-auth/nuxtjs/app/components/forgot-password-form.vue",
|
|
"type": "registry:file",
|
|
"target": "app/components/forgot-password-form.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/password-based-auth/nuxtjs/app/components/update-password-form.vue",
|
|
"type": "registry:file",
|
|
"target": "app/components/update-password-form.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/password-based-auth/nuxtjs/app/pages/auth/login.vue",
|
|
"type": "registry:file",
|
|
"target": "app/pages/auth/login.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/password-based-auth/nuxtjs/app/pages/auth/sign-up.vue",
|
|
"type": "registry:file",
|
|
"target": "app/pages/auth/sign-up.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/password-based-auth/nuxtjs/app/pages/auth/forgot-password.vue",
|
|
"type": "registry:file",
|
|
"target": "app/pages/auth/forgot-password.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/password-based-auth/nuxtjs/app/pages/auth/update-password.vue",
|
|
"type": "registry:file",
|
|
"target": "app/pages/auth/update-password.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/password-based-auth/nuxtjs/app/pages/auth/error.vue",
|
|
"type": "registry:file",
|
|
"target": "app/pages/auth/error.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/password-based-auth/nuxtjs/app/pages/auth/sign-up-success.vue",
|
|
"type": "registry:file",
|
|
"target": "app/pages/auth/sign-up-success.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/password-based-auth/nuxtjs/app/pages/protected/index.vue",
|
|
"type": "registry:file",
|
|
"target": "app/pages/protected/index.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/password-based-auth/nuxtjs/server/routes/auth/confirm.get.ts",
|
|
"type": "registry:file",
|
|
"target": "server/routes/auth/confirm.get.ts"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"name": "password-based-auth-vue",
|
|
"type": "registry:block",
|
|
"title": "Password Based Auth flow for Vue and Supabase",
|
|
"description": "Password Based Auth flow for Vue and Supabase",
|
|
"registryDependencies": [
|
|
"button",
|
|
"card",
|
|
"input",
|
|
"label"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/password-based-auth/vue/components/login-form.vue",
|
|
"type": "registry:component",
|
|
"target": "components/login-form.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/password-based-auth/vue/components/sign-up-form.vue",
|
|
"type": "registry:component",
|
|
"target": "components/sign-up-form.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/password-based-auth/vue/components/forgot-password-form.vue",
|
|
"type": "registry:component",
|
|
"target": "components/forgot-password-form.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/password-based-auth/vue/components/update-password-form.vue",
|
|
"type": "registry:component",
|
|
"target": "components/update-password-form.vue"
|
|
}
|
|
],
|
|
"dependencies": [
|
|
"@supabase/supabase-js@latest"
|
|
]
|
|
},
|
|
{
|
|
"name": "social-auth-vue",
|
|
"type": "registry:block",
|
|
"title": "Social Auth flow for Vue and Supabase",
|
|
"description": "Social Auth flow for Vue and Supabase",
|
|
"registryDependencies": [
|
|
"button",
|
|
"card"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/social-auth/vue/components/login-form.vue",
|
|
"type": "registry:component",
|
|
"target": "components/login-form.vue"
|
|
}
|
|
],
|
|
"dependencies": [
|
|
"@supabase/supabase-js@latest"
|
|
]
|
|
},
|
|
{
|
|
"name": "social-auth-nuxtjs",
|
|
"type": "registry:block",
|
|
"title": "Social Auth flow for Nuxt and Supabase",
|
|
"description": "Social Auth flow for Nuxt and Supabase",
|
|
"registryDependencies": [
|
|
"button",
|
|
"card",
|
|
"input",
|
|
"label"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/social-auth/nuxtjs/app/components/login-form.vue",
|
|
"type": "registry:file",
|
|
"target": "app/components/login-form.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/social-auth/nuxtjs/app/components/logout-button.vue",
|
|
"type": "registry:file",
|
|
"target": "app/components/logout-button.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/social-auth/nuxtjs/app/pages/auth/login.vue",
|
|
"type": "registry:file",
|
|
"target": "app/pages/auth/login.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/social-auth/nuxtjs/app/pages/auth/error.vue",
|
|
"type": "registry:file",
|
|
"target": "app/pages/auth/error.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/social-auth/nuxtjs/app/pages/protected/index.vue",
|
|
"type": "registry:file",
|
|
"target": "app/pages/protected/index.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/social-auth/nuxtjs/server/middleware/auth.ts",
|
|
"type": "registry:file",
|
|
"target": "server/middleware/auth.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/social-auth/nuxtjs/server/routes/auth/oauth.ts",
|
|
"type": "registry:file",
|
|
"target": "server/routes/auth/oauth.ts"
|
|
}
|
|
],
|
|
"dependencies": [
|
|
"@supabase/ssr@latest",
|
|
"@supabase/supabase-js@latest"
|
|
]
|
|
},
|
|
{
|
|
"name": "dropzone-nuxtjs",
|
|
"type": "registry:block",
|
|
"title": "Dropzone (File Upload) for Nuxt and Supabase",
|
|
"description": "Displays a control for easier uploading of files directly to Supabase Storage.",
|
|
"registryDependencies": [
|
|
"button"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/dropzone/nuxtjs/app/components/dropzone.vue",
|
|
"type": "registry:component",
|
|
"target": "app/components/dropzone.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/dropzone/nuxtjs/app/components/dropzone-empty-state.vue",
|
|
"type": "registry:component",
|
|
"target": "app/components/dropzone-empty-state.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/dropzone/nuxtjs/app/components/dropzone-content.vue",
|
|
"type": "registry:component",
|
|
"target": "app/components/dropzone-content.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/dropzone/nuxtjs/app/composables/useSupabaseUpload.ts",
|
|
"type": "registry:component",
|
|
"target": "app/composables/useSupabaseUpload.ts"
|
|
}
|
|
],
|
|
"dependencies": [
|
|
"@supabase/supabase-js@latest",
|
|
"@vueuse/core",
|
|
"lucide-vue-next"
|
|
]
|
|
},
|
|
{
|
|
"name": "dropzone-vue",
|
|
"type": "registry:block",
|
|
"title": "Dropzone (File Upload) for Vue and Supabase",
|
|
"description": "Displays a control for easier uploading of files directly to Supabase Storage.",
|
|
"registryDependencies": [
|
|
"button"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/dropzone/vue/components/dropzone.vue",
|
|
"type": "registry:component",
|
|
"target": "components/dropzone.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/dropzone/vue/components/dropzone-empty-state.vue",
|
|
"type": "registry:component",
|
|
"target": "components/dropzone-empty-state.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/dropzone/vue/components/dropzone-content.vue",
|
|
"type": "registry:component",
|
|
"target": "components/dropzone-content.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/dropzone/vue/composables/useSupabaseUpload.ts",
|
|
"type": "registry:component",
|
|
"target": "composables/useSupabaseUpload.ts"
|
|
}
|
|
],
|
|
"dependencies": [
|
|
"@supabase/supabase-js@latest",
|
|
"@vueuse/core",
|
|
"lucide-vue-next"
|
|
]
|
|
},
|
|
{
|
|
"name": "realtime-cursor-nuxtjs",
|
|
"type": "registry:component",
|
|
"title": "Realtime Cursor for Nuxt and Supabase",
|
|
"description": "Component which renders realtime cursors from other users in a room.",
|
|
"files": [
|
|
{
|
|
"path": "registry/default/realtime-cursor/nuxtjs/app/components/cursor.vue",
|
|
"type": "registry:component",
|
|
"target": "app/components/cursor.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/realtime-cursor/nuxtjs/app/components/realtime-cursors.vue",
|
|
"type": "registry:component",
|
|
"target": "app/components/realtime-cursors.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/realtime-cursor/nuxtjs/app/composables/useRealtimeCursors.ts",
|
|
"type": "registry:component",
|
|
"target": "app/composables/useRealtimeCursors.ts"
|
|
}
|
|
],
|
|
"dependencies": [
|
|
"@supabase/supabase-js@latest",
|
|
"@vueuse/core",
|
|
"lucide-vue-next"
|
|
]
|
|
},
|
|
{
|
|
"name": "realtime-cursor-vue",
|
|
"type": "registry:component",
|
|
"title": "Realtime Cursor for Vue and Supabase",
|
|
"description": "Component which renders realtime cursors from other users in a room.",
|
|
"files": [
|
|
{
|
|
"path": "registry/default/realtime-cursor/vue/components/cursor.vue",
|
|
"type": "registry:component",
|
|
"target": "components/cursor.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/realtime-cursor/vue/components/realtime-cursors.vue",
|
|
"type": "registry:component",
|
|
"target": "components/realtime-cursors.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/realtime-cursor/vue/composables/useRealtimeCursors.ts",
|
|
"type": "registry:component",
|
|
"target": "composables/useRealtimeCursors.ts"
|
|
}
|
|
],
|
|
"dependencies": [
|
|
"@supabase/supabase-js@latest",
|
|
"@vueuse/core",
|
|
"lucide-vue-next"
|
|
]
|
|
},
|
|
{
|
|
"name": "current-user-avatar-nuxtjs",
|
|
"type": "registry:block",
|
|
"title": "Current User Avatar",
|
|
"description": "Component which renders the current user's avatar.",
|
|
"registryDependencies": [
|
|
"avatar"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/current-user-avatar/nuxtjs/app/components/current-user-avatar.vue",
|
|
"type": "registry:component",
|
|
"target": "app/components/current-user-avatar.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/current-user-avatar/nuxtjs/app/composables/useCurrentUserName.ts",
|
|
"type": "registry:component",
|
|
"target": "app/composables/useCurrentUserName.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/current-user-avatar/nuxtjs/app/composables/useCurrentUserImage.ts",
|
|
"type": "registry:component",
|
|
"target": "app/composables/useCurrentUserImage.ts"
|
|
}
|
|
],
|
|
"dependencies": [
|
|
"@supabase/supabase-js@latest"
|
|
]
|
|
},
|
|
{
|
|
"name": "current-user-avatar-vue",
|
|
"type": "registry:block",
|
|
"title": "Current User Avatar",
|
|
"description": "Component which renders the current user's avatar.",
|
|
"registryDependencies": [
|
|
"avatar"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/current-user-avatar/vue/components/current-user-avatar.vue",
|
|
"type": "registry:component",
|
|
"target": "components/current-user-avatar.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/current-user-avatar/vue/composables/useCurrentUserName.ts",
|
|
"type": "registry:component",
|
|
"target": "composables/useCurrentUserName.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/current-user-avatar/vue/composables/useCurrentUserImage.ts",
|
|
"type": "registry:component",
|
|
"target": "composables/useCurrentUserImage.ts"
|
|
}
|
|
],
|
|
"dependencies": [
|
|
"@supabase/supabase-js@latest"
|
|
]
|
|
},
|
|
{
|
|
"name": "realtime-avatar-stack-nuxtjs",
|
|
"type": "registry:block",
|
|
"title": "Realtime Avatar Stack",
|
|
"description": "Component which stack of avatars, tracked by realtime presence.",
|
|
"registryDependencies": [
|
|
"avatar",
|
|
"tooltip"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/realtime-avatar-stack/nuxtjs/app/components/realtime-avatar-stack.vue",
|
|
"type": "registry:component",
|
|
"target": "app/components/realtime-avatar-stack.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/realtime-avatar-stack/nuxtjs/app/components/avatar-stack.vue",
|
|
"type": "registry:component",
|
|
"target": "app/components/avatar-stack.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/realtime-avatar-stack/nuxtjs/app/composables/useCurrentUserImage.ts",
|
|
"type": "registry:component",
|
|
"target": "app/composables/useCurrentUserImage.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/realtime-avatar-stack/nuxtjs/app/composables/useCurrentUserName.ts",
|
|
"type": "registry:component",
|
|
"target": "app/composables/useCurrentUserName.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/realtime-avatar-stack/nuxtjs/app/composables/useRealtimePresenceRoom.ts",
|
|
"type": "registry:component",
|
|
"target": "app/composables/useRealtimePresenceRoom.ts"
|
|
}
|
|
],
|
|
"dependencies": [
|
|
"@supabase/supabase-js@latest"
|
|
]
|
|
},
|
|
{
|
|
"name": "realtime-avatar-stack-vue",
|
|
"type": "registry:block",
|
|
"title": "Realtime Avatar Stack",
|
|
"description": "Component which stack of avatars, tracked by realtime presence.",
|
|
"registryDependencies": [
|
|
"avatar",
|
|
"tooltip"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/realtime-avatar-stack/vue/components/realtime-avatar-stack.vue",
|
|
"type": "registry:component",
|
|
"target": "components/realtime-avatar-stack.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/realtime-avatar-stack/vue/components/avatar-stack.vue",
|
|
"type": "registry:component",
|
|
"target": "components/avatar-stack.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/realtime-avatar-stack/vue/composables/useCurrentUserImage.ts",
|
|
"type": "registry:component",
|
|
"target": "composables/useCurrentUserImage.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/realtime-avatar-stack/vue/composables/useCurrentUserName.ts",
|
|
"type": "registry:component",
|
|
"target": "composables/useCurrentUserName.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/realtime-avatar-stack/vue/composables/useRealtimePresenceRoom.ts",
|
|
"type": "registry:component",
|
|
"target": "composables/useRealtimePresenceRoom.ts"
|
|
}
|
|
],
|
|
"dependencies": [
|
|
"@supabase/supabase-js@latest"
|
|
]
|
|
},
|
|
{
|
|
"name": "realtime-chat-nuxtjs",
|
|
"type": "registry:block",
|
|
"title": "Realtime Chat",
|
|
"description": "Component which provides a realtime chat interface.",
|
|
"registryDependencies": [
|
|
"button",
|
|
"input"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/realtime-chat/nuxtjs/app/components/realtime-chat.vue",
|
|
"type": "registry:component",
|
|
"target": "app/components/realtime-chat.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/realtime-chat/nuxtjs/app/components/chat-message-item.vue",
|
|
"type": "registry:component",
|
|
"target": "app/components/chat-message-item.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/realtime-chat/nuxtjs/app/composables/useChatScroll.ts",
|
|
"type": "registry:component",
|
|
"target": "app/composables/useChatScroll.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/realtime-chat/nuxtjs/app/composables/useRealtimeChat.ts",
|
|
"type": "registry:component",
|
|
"target": "app/composables/useRealtimeChat.ts"
|
|
}
|
|
],
|
|
"dependencies": [
|
|
"@supabase/supabase-js@latest",
|
|
"lucide-vue-next@latest"
|
|
]
|
|
},
|
|
{
|
|
"name": "realtime-chat-vue",
|
|
"type": "registry:block",
|
|
"title": "Realtime Chat",
|
|
"description": "Component which provides a realtime chat interface.",
|
|
"registryDependencies": [
|
|
"button",
|
|
"input"
|
|
],
|
|
"files": [
|
|
{
|
|
"path": "registry/default/realtime-chat/vue/components/realtime-chat.vue",
|
|
"type": "registry:component",
|
|
"target": "components/realtime-chat.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/realtime-chat/vue/components/chat-message-item.vue",
|
|
"type": "registry:component",
|
|
"target": "components/chat-message-item.vue"
|
|
},
|
|
{
|
|
"path": "registry/default/realtime-chat/vue/composables/useChatScroll.ts",
|
|
"type": "registry:component",
|
|
"target": "composables/useChatScroll.ts"
|
|
},
|
|
{
|
|
"path": "registry/default/realtime-chat/vue/composables/useRealtimeChat.ts",
|
|
"type": "registry:component",
|
|
"target": "composables/useRealtimeChat.ts"
|
|
}
|
|
],
|
|
"dependencies": [
|
|
"@supabase/supabase-js@latest",
|
|
"lucide-vue-next@latest"
|
|
]
|
|
},
|
|
{
|
|
"name": "infinite-query-composable",
|
|
"type": "registry:component",
|
|
"title": "Infinite Query for Vue and Supabase",
|
|
"description": "Vue Composable for infinite lists, fetching data from Supabase.",
|
|
"files": [
|
|
{
|
|
"path": "registry/default/infinite-query/vue/composables/useInfiniteQuery.ts",
|
|
"type": "registry:component",
|
|
"target": "composables/useInfiniteQuery.ts"
|
|
}
|
|
],
|
|
"dependencies": [
|
|
"@supabase/supabase-js@latest",
|
|
"@supabase/postgrest-js@*"
|
|
]
|
|
}
|
|
]
|
|
} |