From bf526a0ecb8b468d4d958a7dc5c434f5a5cb95b4 Mon Sep 17 00:00:00 2001 From: Ivan Vasilov Date: Sat, 22 Mar 2025 00:11:38 +0100 Subject: [PATCH] Regenerate the registry files. --- apps/ui-library/__registry__/index.tsx | 476 ++++++++---------- apps/ui-library/public/r/dropzone-react.json | 2 +- .../public/r/dropzone-tanstack.json | 3 +- .../public/r/password-based-auth-nextjs.json | 15 + .../public/r/password-based-auth-react.json | 2 +- .../public/r/realtime-cursor-react.json | 2 +- .../public/r/realtime-cursor-tanstack.json | 3 +- .../public/r/supabase-client-react.json | 2 +- .../public/r/supabase-client-tanstack.json | 3 +- apps/ui-library/registry.json | 23 +- apps/ui-library/registry/blocks.ts | 12 +- .../clients/react/lib/supabase/client.ts | 4 +- .../clients/tanstack/registry-item.json | 2 +- 13 files changed, 252 insertions(+), 297 deletions(-) diff --git a/apps/ui-library/__registry__/index.tsx b/apps/ui-library/__registry__/index.tsx index a35cb1d63b..b1efc02e6c 100644 --- a/apps/ui-library/__registry__/index.tsx +++ b/apps/ui-library/__registry__/index.tsx @@ -1,297 +1,215 @@ + // @ts-nocheck // This file is autogenerated by scripts/build-registry.ts // Do not edit this file directly. -import * as React from 'react' +import * as React from "react" export const Index: Record = { - default: { - 'password-based-auth-nextjs': { - name: 'password-based-auth-nextjs', - type: 'registry:block', - registryDependencies: ['button', 'card', 'input', 'label'], - component: React.lazy( - () => import('@/registry/default/blocks/password-based-auth-nextjs/app/login/page.tsx') - ), - source: '', - files: [ - 'registry/default/blocks/password-based-auth-nextjs/app/login/page.tsx', - 'registry/default/blocks/password-based-auth-nextjs/app/error/page.tsx', - 'registry/default/blocks/password-based-auth-nextjs/app/protected/page.tsx', - 'registry/default/blocks/password-based-auth-nextjs/app/confirm/route.ts', - 'registry/default/blocks/password-based-auth-nextjs/components/login-form.tsx', - 'registry/default/blocks/password-based-auth-nextjs/middleware.ts', - 'registry/default/blocks/password-based-auth-nextjs/app/sign-up/page.tsx', - 'registry/default/blocks/password-based-auth-nextjs/app/sign-up-success/page.tsx', - 'registry/default/blocks/password-based-auth-nextjs/components/sign-up-form.tsx', - 'registry/default/blocks/password-based-auth-nextjs/app/forgot-password/page.tsx', - 'registry/default/blocks/password-based-auth-nextjs/app/update-password/page.tsx', - 'registry/default/blocks/password-based-auth-nextjs/components/forgot-password-form.tsx', - 'registry/default/blocks/password-based-auth-nextjs/components/update-password-form.tsx', - ], - category: 'undefined', - subcategory: 'undefined', - chunks: [], - }, - 'password-based-auth-react': { - name: 'password-based-auth-react', - type: 'registry:block', - registryDependencies: ['button', 'card', 'input', 'label'], - component: React.lazy( - () => - import('@/registry/default/blocks/password-based-auth-react/components/login-form.tsx') - ), - source: '', - files: [ - 'registry/default/blocks/password-based-auth-react/components/login-form.tsx', - 'registry/default/blocks/password-based-auth-react/components/sign-up-form.tsx', - 'registry/default/blocks/password-based-auth-react/components/forgot-password-form.tsx', - 'registry/default/blocks/password-based-auth-react/components/update-password-form.tsx', - 'registry/default/clients/react/lib/supabase/client.ts', - ], - category: 'undefined', - subcategory: 'undefined', - chunks: [], - }, - 'dropzone-nextjs': { - name: 'dropzone-nextjs', - type: 'registry:component', - registryDependencies: ['button', 'tooltip', 'progress'], - component: React.lazy( - () => import('@/registry/default/blocks/dropzone/components/dropzone.tsx') - ), - source: '', - files: [ - 'registry/default/blocks/dropzone/components/dropzone.tsx', - 'registry/default/blocks/dropzone/hooks/use-supabase-upload.ts', - 'registry/default/clients/nextjs/lib/supabase/client.ts', - 'registry/default/clients/nextjs/lib/supabase/middleware.ts', - 'registry/default/clients/nextjs/lib/supabase/server.ts', - ], - category: 'undefined', - subcategory: 'undefined', - chunks: [], - }, - 'dropzone-react': { - name: 'dropzone-react', - type: 'registry:component', - registryDependencies: ['button', 'tooltip', 'progress'], - component: React.lazy( - () => import('@/registry/default/blocks/dropzone/components/dropzone.tsx') - ), - source: '', - files: [ - 'registry/default/blocks/dropzone/components/dropzone.tsx', - 'registry/default/blocks/dropzone/hooks/use-supabase-upload.ts', - 'registry/default/clients/react/lib/supabase/client.ts', - ], - category: 'undefined', - subcategory: 'undefined', - chunks: [], - }, - 'dropzone-react-router': { - name: 'dropzone-react-router', - type: 'registry:component', - registryDependencies: ['button', 'tooltip', 'progress'], - component: React.lazy( - () => import('@/registry/default/blocks/dropzone/components/dropzone.tsx') - ), - source: '', - files: [ - 'registry/default/blocks/dropzone/components/dropzone.tsx', - 'registry/default/blocks/dropzone/hooks/use-supabase-upload.ts', - 'registry/default/clients/react-router/lib/supabase.client.ts', - 'registry/default/clients/react-router/lib/supabase.server.ts', - ], - category: 'undefined', - subcategory: 'undefined', - chunks: [], - }, - 'dropzone-tanstack': { - name: 'dropzone-tanstack', - type: 'registry:component', - registryDependencies: ['button', 'tooltip', 'progress'], - component: React.lazy( - () => import('@/registry/default/blocks/dropzone/components/dropzone.tsx') - ), - source: '', - files: [ - 'registry/default/blocks/dropzone/components/dropzone.tsx', - 'registry/default/blocks/dropzone/hooks/use-supabase-upload.ts', - 'registry/default/clients/tanstack/lib/supabase/client.ts', - 'registry/default/clients/tanstack/lib/supabase/server.ts', - ], - category: 'undefined', - subcategory: 'undefined', - chunks: [], - }, - 'realtime-cursor-nextjs': { - name: 'realtime-cursor-nextjs', - type: 'registry:component', + "default": { + + "password-based-auth-nextjs": { + name: "password-based-auth-nextjs", + type: "registry:block", + registryDependencies: ["button","card","input","label"], + component: React.lazy(() => import("@/registry/default/blocks/password-based-auth-nextjs/app/login/page.tsx")), + source: "", + files: ["registry/default/blocks/password-based-auth-nextjs/app/login/page.tsx","registry/default/blocks/password-based-auth-nextjs/app/error/page.tsx","registry/default/blocks/password-based-auth-nextjs/app/protected/page.tsx","registry/default/blocks/password-based-auth-nextjs/app/confirm/route.ts","registry/default/blocks/password-based-auth-nextjs/components/login-form.tsx","registry/default/blocks/password-based-auth-nextjs/middleware.ts","registry/default/blocks/password-based-auth-nextjs/app/sign-up/page.tsx","registry/default/blocks/password-based-auth-nextjs/app/sign-up-success/page.tsx","registry/default/blocks/password-based-auth-nextjs/components/sign-up-form.tsx","registry/default/blocks/password-based-auth-nextjs/app/forgot-password/page.tsx","registry/default/blocks/password-based-auth-nextjs/app/update-password/page.tsx","registry/default/blocks/password-based-auth-nextjs/components/forgot-password-form.tsx","registry/default/blocks/password-based-auth-nextjs/components/update-password-form.tsx","registry/default/clients/nextjs/lib/supabase/client.ts","registry/default/clients/nextjs/lib/supabase/middleware.ts","registry/default/clients/nextjs/lib/supabase/server.ts"], + category: "undefined", + subcategory: "undefined", + chunks: [] + } + , + "password-based-auth-react": { + name: "password-based-auth-react", + type: "registry:block", + registryDependencies: ["button","card","input","label"], + component: React.lazy(() => import("@/registry/default/blocks/password-based-auth-react/components/login-form.tsx")), + source: "", + files: ["registry/default/blocks/password-based-auth-react/components/login-form.tsx","registry/default/blocks/password-based-auth-react/components/sign-up-form.tsx","registry/default/blocks/password-based-auth-react/components/forgot-password-form.tsx","registry/default/blocks/password-based-auth-react/components/update-password-form.tsx","registry/default/clients/react/lib/supabase/client.ts"], + category: "undefined", + subcategory: "undefined", + chunks: [] + } + , + "dropzone-nextjs": { + name: "dropzone-nextjs", + type: "registry:component", + registryDependencies: ["button","tooltip","progress"], + component: React.lazy(() => import("@/registry/default/blocks/dropzone/components/dropzone.tsx")), + source: "", + files: ["registry/default/blocks/dropzone/components/dropzone.tsx","registry/default/blocks/dropzone/hooks/use-supabase-upload.ts","registry/default/clients/nextjs/lib/supabase/client.ts","registry/default/clients/nextjs/lib/supabase/middleware.ts","registry/default/clients/nextjs/lib/supabase/server.ts"], + category: "undefined", + subcategory: "undefined", + chunks: [] + } + , + "dropzone-react": { + name: "dropzone-react", + type: "registry:component", + registryDependencies: ["button","tooltip","progress"], + component: React.lazy(() => import("@/registry/default/blocks/dropzone/components/dropzone.tsx")), + source: "", + files: ["registry/default/blocks/dropzone/components/dropzone.tsx","registry/default/blocks/dropzone/hooks/use-supabase-upload.ts","registry/default/clients/react/lib/supabase/client.ts"], + category: "undefined", + subcategory: "undefined", + chunks: [] + } + , + "dropzone-react-router": { + name: "dropzone-react-router", + type: "registry:component", + registryDependencies: ["button","tooltip","progress"], + component: React.lazy(() => import("@/registry/default/blocks/dropzone/components/dropzone.tsx")), + source: "", + files: ["registry/default/blocks/dropzone/components/dropzone.tsx","registry/default/blocks/dropzone/hooks/use-supabase-upload.ts","registry/default/clients/react-router/lib/supabase.client.ts","registry/default/clients/react-router/lib/supabase.server.ts"], + category: "undefined", + subcategory: "undefined", + chunks: [] + } + , + "dropzone-tanstack": { + name: "dropzone-tanstack", + type: "registry:component", + registryDependencies: ["button","tooltip","progress"], + component: React.lazy(() => import("@/registry/default/blocks/dropzone/components/dropzone.tsx")), + source: "", + files: ["registry/default/blocks/dropzone/components/dropzone.tsx","registry/default/blocks/dropzone/hooks/use-supabase-upload.ts","registry/default/clients/tanstack/lib/supabase/client.ts","registry/default/clients/tanstack/lib/supabase/server.ts"], + category: "undefined", + subcategory: "undefined", + chunks: [] + } + , + "realtime-cursor-nextjs": { + name: "realtime-cursor-nextjs", + type: "registry:component", registryDependencies: [], - component: React.lazy( - () => import('@/registry/default/blocks/realtime-cursor/components/cursor.tsx') - ), - source: '', - files: [ - 'registry/default/blocks/realtime-cursor/components/cursor.tsx', - 'registry/default/blocks/realtime-cursor/components/realtime-cursors.tsx', - 'registry/default/blocks/realtime-cursor/hooks/use-realtime-cursors.ts', - 'registry/default/clients/nextjs/lib/supabase/client.ts', - 'registry/default/clients/nextjs/lib/supabase/middleware.ts', - 'registry/default/clients/nextjs/lib/supabase/server.ts', - ], - category: 'undefined', - subcategory: 'undefined', - chunks: [], - }, - 'realtime-cursor-react': { - name: 'realtime-cursor-react', - type: 'registry:component', + component: React.lazy(() => import("@/registry/default/blocks/realtime-cursor/components/cursor.tsx")), + source: "", + files: ["registry/default/blocks/realtime-cursor/components/cursor.tsx","registry/default/blocks/realtime-cursor/components/realtime-cursors.tsx","registry/default/blocks/realtime-cursor/hooks/use-realtime-cursors.ts","registry/default/clients/nextjs/lib/supabase/client.ts","registry/default/clients/nextjs/lib/supabase/middleware.ts","registry/default/clients/nextjs/lib/supabase/server.ts"], + category: "undefined", + subcategory: "undefined", + chunks: [] + } + , + "realtime-cursor-react": { + name: "realtime-cursor-react", + type: "registry:component", registryDependencies: [], - component: React.lazy( - () => import('@/registry/default/blocks/realtime-cursor/components/cursor.tsx') - ), - source: '', - files: [ - 'registry/default/blocks/realtime-cursor/components/cursor.tsx', - 'registry/default/blocks/realtime-cursor/components/realtime-cursors.tsx', - 'registry/default/blocks/realtime-cursor/hooks/use-realtime-cursors.ts', - 'registry/default/clients/react/lib/supabase/client.ts', - ], - category: 'undefined', - subcategory: 'undefined', - chunks: [], - }, - 'realtime-cursor-react-router': { - name: 'realtime-cursor-react-router', - type: 'registry:component', + component: React.lazy(() => import("@/registry/default/blocks/realtime-cursor/components/cursor.tsx")), + source: "", + files: ["registry/default/blocks/realtime-cursor/components/cursor.tsx","registry/default/blocks/realtime-cursor/components/realtime-cursors.tsx","registry/default/blocks/realtime-cursor/hooks/use-realtime-cursors.ts","registry/default/clients/react/lib/supabase/client.ts"], + category: "undefined", + subcategory: "undefined", + chunks: [] + } + , + "realtime-cursor-react-router": { + name: "realtime-cursor-react-router", + type: "registry:component", registryDependencies: [], - component: React.lazy( - () => import('@/registry/default/blocks/realtime-cursor/components/cursor.tsx') - ), - source: '', - files: [ - 'registry/default/blocks/realtime-cursor/components/cursor.tsx', - 'registry/default/blocks/realtime-cursor/components/realtime-cursors.tsx', - 'registry/default/blocks/realtime-cursor/hooks/use-realtime-cursors.ts', - 'registry/default/clients/react-router/lib/supabase.client.ts', - 'registry/default/clients/react-router/lib/supabase.server.ts', - ], - category: 'undefined', - subcategory: 'undefined', - chunks: [], - }, - 'realtime-cursor-tanstack': { - name: 'realtime-cursor-tanstack', - type: 'registry:component', + component: React.lazy(() => import("@/registry/default/blocks/realtime-cursor/components/cursor.tsx")), + source: "", + files: ["registry/default/blocks/realtime-cursor/components/cursor.tsx","registry/default/blocks/realtime-cursor/components/realtime-cursors.tsx","registry/default/blocks/realtime-cursor/hooks/use-realtime-cursors.ts","registry/default/clients/react-router/lib/supabase.client.ts","registry/default/clients/react-router/lib/supabase.server.ts"], + category: "undefined", + subcategory: "undefined", + chunks: [] + } + , + "realtime-cursor-tanstack": { + name: "realtime-cursor-tanstack", + type: "registry:component", registryDependencies: [], - component: React.lazy( - () => import('@/registry/default/blocks/realtime-cursor/components/cursor.tsx') - ), - source: '', - files: [ - 'registry/default/blocks/realtime-cursor/components/cursor.tsx', - 'registry/default/blocks/realtime-cursor/components/realtime-cursors.tsx', - 'registry/default/blocks/realtime-cursor/hooks/use-realtime-cursors.ts', - 'registry/default/clients/tanstack/lib/supabase/client.ts', - 'registry/default/clients/tanstack/lib/supabase/server.ts', - ], - category: 'undefined', - subcategory: 'undefined', - chunks: [], - }, - 'supabase-client-nextjs': { - name: 'supabase-client-nextjs', - type: 'registry:lib', + component: React.lazy(() => import("@/registry/default/blocks/realtime-cursor/components/cursor.tsx")), + source: "", + files: ["registry/default/blocks/realtime-cursor/components/cursor.tsx","registry/default/blocks/realtime-cursor/components/realtime-cursors.tsx","registry/default/blocks/realtime-cursor/hooks/use-realtime-cursors.ts","registry/default/clients/tanstack/lib/supabase/client.ts","registry/default/clients/tanstack/lib/supabase/server.ts"], + category: "undefined", + subcategory: "undefined", + chunks: [] + } + , + "supabase-client-nextjs": { + name: "supabase-client-nextjs", + type: "registry:lib", registryDependencies: [], - - source: '', - files: [ - 'registry/default/clients/nextjs/lib/supabase/client.ts', - 'registry/default/clients/nextjs/lib/supabase/middleware.ts', - 'registry/default/clients/nextjs/lib/supabase/server.ts', - ], - category: 'undefined', - subcategory: 'undefined', - chunks: [], - }, - 'supabase-client-react': { - name: 'supabase-client-react', - type: 'registry:lib', + + source: "", + files: ["registry/default/clients/nextjs/lib/supabase/client.ts","registry/default/clients/nextjs/lib/supabase/middleware.ts","registry/default/clients/nextjs/lib/supabase/server.ts"], + category: "undefined", + subcategory: "undefined", + chunks: [] + } + , + "supabase-client-react": { + name: "supabase-client-react", + type: "registry:lib", registryDependencies: [], - - source: '', - files: ['registry/default/clients/react/lib/supabase/client.ts'], - category: 'undefined', - subcategory: 'undefined', - chunks: [], - }, - 'supabase-client-react-router': { - name: 'supabase-client-react-router', - type: 'registry:lib', + + source: "", + files: ["registry/default/clients/react/lib/supabase/client.ts"], + category: "undefined", + subcategory: "undefined", + chunks: [] + } + , + "supabase-client-react-router": { + name: "supabase-client-react-router", + type: "registry:lib", registryDependencies: [], - - source: '', - files: [ - 'registry/default/clients/react-router/lib/supabase.client.ts', - 'registry/default/clients/react-router/lib/supabase.server.ts', - ], - category: 'undefined', - subcategory: 'undefined', - chunks: [], - }, - 'supabase-client-tanstack': { - name: 'supabase-client-tanstack', - type: 'registry:lib', + + source: "", + files: ["registry/default/clients/react-router/lib/supabase.client.ts","registry/default/clients/react-router/lib/supabase.server.ts"], + category: "undefined", + subcategory: "undefined", + chunks: [] + } + , + "supabase-client-tanstack": { + name: "supabase-client-tanstack", + type: "registry:lib", registryDependencies: [], - - source: '', - files: [ - 'registry/default/clients/tanstack/lib/supabase/client.ts', - 'registry/default/clients/tanstack/lib/supabase/server.ts', - ], - category: 'undefined', - subcategory: 'undefined', - chunks: [], - }, - 'ai-editor-rules': { - name: 'ai-editor-rules', - type: 'registry:file', + + source: "", + files: ["registry/default/clients/tanstack/lib/supabase/client.ts","registry/default/clients/tanstack/lib/supabase/server.ts"], + category: "undefined", + subcategory: "undefined", + chunks: [] + } + , + "ai-editor-rules": { + name: "ai-editor-rules", + type: "registry:file", registryDependencies: [], - - source: '', - files: [ - 'registry/default/ai-editor-rules/create-db-functions.md', - 'registry/default/ai-editor-rules/create-migration.md', - 'registry/default/ai-editor-rules/create-rls-policies.md', - 'registry/default/ai-editor-rules/postgres-sql-style-guide.md', - 'registry/default/ai-editor-rules/writing-supabase-edge-functions.md', - ], - category: 'undefined', - subcategory: 'undefined', - chunks: [], - }, - 'dropzone-demo': { - name: 'dropzone-demo', - type: 'registry:example', + + source: "", + files: ["registry/default/ai-editor-rules/create-db-functions.md","registry/default/ai-editor-rules/create-migration.md","registry/default/ai-editor-rules/create-rls-policies.md","registry/default/ai-editor-rules/postgres-sql-style-guide.md","registry/default/ai-editor-rules/writing-supabase-edge-functions.md"], + category: "undefined", + subcategory: "undefined", + chunks: [] + } + , + "dropzone-demo": { + name: "dropzone-demo", + type: "registry:example", registryDependencies: [], - component: React.lazy(() => import('@/registry/default/examples/dropzone-demo.tsx')), - source: '', - files: ['registry/default/examples/dropzone-demo.tsx'], - category: 'undefined', - subcategory: 'undefined', - chunks: [], - }, - 'realtime-cursor-demo': { - name: 'realtime-cursor-demo', - type: 'registry:example', + component: React.lazy(() => import("@/registry/default/examples/dropzone-demo.tsx")), + source: "", + files: ["registry/default/examples/dropzone-demo.tsx"], + category: "undefined", + subcategory: "undefined", + chunks: [] + } + , + "realtime-cursor-demo": { + name: "realtime-cursor-demo", + type: "registry:example", registryDependencies: [], - component: React.lazy(() => import('@/registry/default/examples/realtime-cursor-demo.tsx')), - source: '', - files: ['registry/default/examples/realtime-cursor-demo.tsx'], - category: 'undefined', - subcategory: 'undefined', - chunks: [], - }, + component: React.lazy(() => import("@/registry/default/examples/realtime-cursor-demo.tsx")), + source: "", + files: ["registry/default/examples/realtime-cursor-demo.tsx"], + category: "undefined", + subcategory: "undefined", + chunks: [] + } + }, } diff --git a/apps/ui-library/public/r/dropzone-react.json b/apps/ui-library/public/r/dropzone-react.json index 9e5cfb8684..3182760c66 100644 --- a/apps/ui-library/public/r/dropzone-react.json +++ b/apps/ui-library/public/r/dropzone-react.json @@ -27,7 +27,7 @@ }, { "path": "registry/default/clients/react/lib/supabase/client.ts", - "content": "import { createClient as createSupabaseClient } from '@supabase/supabase-js'\n\nexport function createClient() {\n return createSupabaseClient(\n process.env.NEXT_PUBLIC_SUPABASE_URL!,\n process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!\n )\n}\n", + "content": "import { createClient as createSupabaseClient } from '@supabase/supabase-js'\n\nexport function createClient() {\n return createSupabaseClient(\n process.env.VITE_PUBLIC_SUPABASE_URL!,\n process.env.VITE_PUBLIC_SUPABASE_ANON_KEY!\n )\n}\n", "type": "registry:lib" } ] diff --git a/apps/ui-library/public/r/dropzone-tanstack.json b/apps/ui-library/public/r/dropzone-tanstack.json index 273f6ff8fd..d3bd55053c 100644 --- a/apps/ui-library/public/r/dropzone-tanstack.json +++ b/apps/ui-library/public/r/dropzone-tanstack.json @@ -7,7 +7,8 @@ "dependencies": [ "react-dropzone", "lucide-react", - "@supabase/ssr@latest" + "@supabase/ssr@latest", + "@supabase/supabase-js@latest" ], "registryDependencies": [ "button", diff --git a/apps/ui-library/public/r/password-based-auth-nextjs.json b/apps/ui-library/public/r/password-based-auth-nextjs.json index dcce3ce196..dc51fc1c53 100644 --- a/apps/ui-library/public/r/password-based-auth-nextjs.json +++ b/apps/ui-library/public/r/password-based-auth-nextjs.json @@ -87,6 +87,21 @@ "path": "registry/default/blocks/password-based-auth-nextjs/components/update-password-form.tsx", "content": "'use client'\n\nimport { cn } from '@/lib/utils'\nimport { createClient } from '@/registry/default/clients/nextjs/lib/supabase/client'\nimport { Button } from '@/registry/default/components/ui/button'\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from '@/registry/default/components/ui/card'\nimport { Input } from '@/registry/default/components/ui/input'\nimport { Label } from '@/registry/default/components/ui/label'\nimport { useRouter } from 'next/navigation'\nimport { useState } from 'react'\n\nexport function UpdatePasswordForm({ className, ...props }: React.ComponentPropsWithoutRef<'div'>) {\n const [password, setPassword] = useState('')\n const [error, setError] = useState(null)\n const [isLoading, setIsLoading] = useState(false)\n const router = useRouter()\n const supabase = createClient()\n\n const handleForgotPassword = async (e: React.FormEvent) => {\n e.preventDefault()\n setIsLoading(true)\n setError(null)\n\n try {\n const { error } = await supabase.auth.updateUser({ password })\n if (error) throw error\n // Update this route to redirect to an authenticated route. The user already has an active session.\n router.push('/protected')\n } catch (error: unknown) {\n setError(error instanceof Error ? error.message : 'An error occurred')\n } finally {\n setIsLoading(false)\n }\n }\n\n return (\n
\n \n \n Reset Your Password\n Please enter your new password below.\n \n \n
\n
\n
\n \n setPassword(e.target.value)}\n />\n
\n {error &&

{error}

}\n \n
\n
\n Already have an account?{' '}\n \n Login\n \n
\n
\n
\n
\n
\n )\n}\n", "type": "registry:component" + }, + { + "path": "registry/default/clients/nextjs/lib/supabase/client.ts", + "content": "import { createBrowserClient } from '@supabase/ssr'\n\nexport function createClient() {\n return createBrowserClient(\n process.env.NEXT_PUBLIC_SUPABASE_URL!,\n process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!\n )\n}\n", + "type": "registry:lib" + }, + { + "path": "registry/default/clients/nextjs/lib/supabase/middleware.ts", + "content": "import { createServerClient } from '@supabase/ssr'\nimport { NextResponse, type NextRequest } from 'next/server'\n\nexport async function updateSession(request: NextRequest) {\n let supabaseResponse = NextResponse.next({\n request,\n })\n\n const supabase = createServerClient(\n process.env.NEXT_PUBLIC_SUPABASE_URL!,\n process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,\n {\n cookies: {\n getAll() {\n return request.cookies.getAll()\n },\n setAll(cookiesToSet) {\n cookiesToSet.forEach(({ name, value }) => request.cookies.set(name, value))\n supabaseResponse = NextResponse.next({\n request,\n })\n cookiesToSet.forEach(({ name, value, options }) =>\n supabaseResponse.cookies.set(name, value, options)\n )\n },\n },\n }\n )\n\n // Do not run code between createServerClient and\n // supabase.auth.getUser(). A simple mistake could make it very hard to debug\n // issues with users being randomly logged out.\n\n // IMPORTANT: DO NOT REMOVE auth.getUser()\n\n const {\n data: { user },\n } = await supabase.auth.getUser()\n\n if (\n !user &&\n !request.nextUrl.pathname.startsWith('/login') &&\n !request.nextUrl.pathname.startsWith('/auth')\n ) {\n // no user, potentially respond by redirecting the user to the login page\n const url = request.nextUrl.clone()\n url.pathname = '/login'\n return NextResponse.redirect(url)\n }\n\n // IMPORTANT: You *must* return the supabaseResponse object as it is.\n // If you're creating a new response object with NextResponse.next() make sure to:\n // 1. Pass the request in it, like so:\n // const myNewResponse = NextResponse.next({ request })\n // 2. Copy over the cookies, like so:\n // myNewResponse.cookies.setAll(supabaseResponse.cookies.getAll())\n // 3. Change the myNewResponse object to fit your needs, but avoid changing\n // the cookies!\n // 4. Finally:\n // return myNewResponse\n // If this is not done, you may be causing the browser and server to go out\n // of sync and terminate the user's session prematurely!\n\n return supabaseResponse\n}\n", + "type": "registry:lib" + }, + { + "path": "registry/default/clients/nextjs/lib/supabase/server.ts", + "content": "import { createServerClient } from '@supabase/ssr'\nimport { cookies } from 'next/headers'\n\nexport async function createClient() {\n const cookieStore = await cookies()\n\n return createServerClient(\n process.env.NEXT_PUBLIC_SUPABASE_URL!,\n process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!,\n {\n cookies: {\n getAll() {\n return cookieStore.getAll()\n },\n setAll(cookiesToSet) {\n try {\n cookiesToSet.forEach(({ name, value, options }) =>\n cookieStore.set(name, value, options)\n )\n } catch {\n // The `setAll` method was called from a Server Component.\n // This can be ignored if you have middleware refreshing\n // user sessions.\n }\n },\n },\n }\n )\n}\n", + "type": "registry:lib" } ] } \ No newline at end of file diff --git a/apps/ui-library/public/r/password-based-auth-react.json b/apps/ui-library/public/r/password-based-auth-react.json index 392b2238cb..cd196d808d 100644 --- a/apps/ui-library/public/r/password-based-auth-react.json +++ b/apps/ui-library/public/r/password-based-auth-react.json @@ -36,7 +36,7 @@ }, { "path": "registry/default/clients/react/lib/supabase/client.ts", - "content": "import { createClient as createSupabaseClient } from '@supabase/supabase-js'\n\nexport function createClient() {\n return createSupabaseClient(\n process.env.NEXT_PUBLIC_SUPABASE_URL!,\n process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!\n )\n}\n", + "content": "import { createClient as createSupabaseClient } from '@supabase/supabase-js'\n\nexport function createClient() {\n return createSupabaseClient(\n process.env.VITE_PUBLIC_SUPABASE_URL!,\n process.env.VITE_PUBLIC_SUPABASE_ANON_KEY!\n )\n}\n", "type": "registry:lib" } ] diff --git a/apps/ui-library/public/r/realtime-cursor-react.json b/apps/ui-library/public/r/realtime-cursor-react.json index 645ba4621b..5b97593fb7 100644 --- a/apps/ui-library/public/r/realtime-cursor-react.json +++ b/apps/ui-library/public/r/realtime-cursor-react.json @@ -27,7 +27,7 @@ }, { "path": "registry/default/clients/react/lib/supabase/client.ts", - "content": "import { createClient as createSupabaseClient } from '@supabase/supabase-js'\n\nexport function createClient() {\n return createSupabaseClient(\n process.env.NEXT_PUBLIC_SUPABASE_URL!,\n process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!\n )\n}\n", + "content": "import { createClient as createSupabaseClient } from '@supabase/supabase-js'\n\nexport function createClient() {\n return createSupabaseClient(\n process.env.VITE_PUBLIC_SUPABASE_URL!,\n process.env.VITE_PUBLIC_SUPABASE_ANON_KEY!\n )\n}\n", "type": "registry:lib" } ] diff --git a/apps/ui-library/public/r/realtime-cursor-tanstack.json b/apps/ui-library/public/r/realtime-cursor-tanstack.json index a0fc11211c..a11872ca01 100644 --- a/apps/ui-library/public/r/realtime-cursor-tanstack.json +++ b/apps/ui-library/public/r/realtime-cursor-tanstack.json @@ -6,7 +6,8 @@ "description": "Component which renders realtime cursors from other users in a room.", "dependencies": [ "lucide-react", - "@supabase/ssr@latest" + "@supabase/ssr@latest", + "@supabase/supabase-js@latest" ], "registryDependencies": [], "files": [ diff --git a/apps/ui-library/public/r/supabase-client-react.json b/apps/ui-library/public/r/supabase-client-react.json index 7fd2a7a727..0299c8d7cd 100644 --- a/apps/ui-library/public/r/supabase-client-react.json +++ b/apps/ui-library/public/r/supabase-client-react.json @@ -11,7 +11,7 @@ "files": [ { "path": "registry/default/clients/react/lib/supabase/client.ts", - "content": "import { createClient as createSupabaseClient } from '@supabase/supabase-js'\n\nexport function createClient() {\n return createSupabaseClient(\n process.env.NEXT_PUBLIC_SUPABASE_URL!,\n process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!\n )\n}\n", + "content": "import { createClient as createSupabaseClient } from '@supabase/supabase-js'\n\nexport function createClient() {\n return createSupabaseClient(\n process.env.VITE_PUBLIC_SUPABASE_URL!,\n process.env.VITE_PUBLIC_SUPABASE_ANON_KEY!\n )\n}\n", "type": "registry:lib" } ] diff --git a/apps/ui-library/public/r/supabase-client-tanstack.json b/apps/ui-library/public/r/supabase-client-tanstack.json index ee9566bc77..6610a6bfbe 100644 --- a/apps/ui-library/public/r/supabase-client-tanstack.json +++ b/apps/ui-library/public/r/supabase-client-tanstack.json @@ -5,7 +5,8 @@ "title": "Supabase Client for Tanstack Start", "description": "", "dependencies": [ - "@supabase/ssr@latest" + "@supabase/ssr@latest", + "@supabase/supabase-js@latest" ], "registryDependencies": [], "files": [ diff --git a/apps/ui-library/registry.json b/apps/ui-library/registry.json index 6eeeac7227..c6635d87d5 100644 --- a/apps/ui-library/registry.json +++ b/apps/ui-library/registry.json @@ -71,6 +71,18 @@ { "path": "registry/default/blocks/password-based-auth-nextjs/components/update-password-form.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" } ] }, @@ -192,7 +204,12 @@ "title": "Dropzone (File Upload)", "description": "Displays a control for easier uploading of files directly to Supabase Storage.", "registryDependencies": ["button", "tooltip", "progress"], - "dependencies": ["react-dropzone", "lucide-react", "@supabase/ssr@latest"], + "dependencies": [ + "react-dropzone", + "lucide-react", + "@supabase/ssr@latest", + "@supabase/supabase-js@latest" + ], "files": [ { "path": "registry/default/blocks/dropzone/components/dropzone.tsx", @@ -312,7 +329,7 @@ "title": "Realtime Cursor", "description": "Component which renders realtime cursors from other users in a room.", "registryDependencies": [], - "dependencies": ["lucide-react", "@supabase/ssr@latest"], + "dependencies": ["lucide-react", "@supabase/ssr@latest", "@supabase/supabase-js@latest"], "files": [ { "path": "registry/default/blocks/realtime-cursor/components/cursor.tsx", @@ -400,7 +417,7 @@ "title": "Supabase Client for Tanstack Start", "description": "", "registryDependencies": [], - "dependencies": ["@supabase/ssr@latest"], + "dependencies": ["@supabase/ssr@latest", "@supabase/supabase-js@latest"], "files": [ { "path": "registry/default/clients/tanstack/lib/supabase/client.ts", diff --git a/apps/ui-library/registry/blocks.ts b/apps/ui-library/registry/blocks.ts index dce4bc3b8f..6e65db89fb 100644 --- a/apps/ui-library/registry/blocks.ts +++ b/apps/ui-library/registry/blocks.ts @@ -1,4 +1,4 @@ -import { type Registry } from 'shadcn/registry' +import { type Registry, type RegistryItem } from 'shadcn/registry' import { clients } from './clients' import dropzone from './default/blocks/dropzone/registry-item.json' assert { type: 'json' } import passwordBasedAuthNextjs from './default/blocks/password-based-auth-nextjs/registry-item.json' assert { type: 'json' } @@ -18,9 +18,11 @@ const combine = (component: Registry['items'][number]) => { }) } +const nextjsClient = clients.find((client) => client.name === 'supabase-client-nextjs') +const reactClient = clients.find((client) => client.name === 'supabase-client-react') export const blocks = [ - passwordBasedAuthNextjs, - passwordBasedAuthReact, - ...combine(dropzone as Registry['items'][number]), - ...combine(realtimeCursor as Registry['items'][number]), + registryItemAppend(passwordBasedAuthNextjs as RegistryItem, [nextjsClient!]), + registryItemAppend(passwordBasedAuthReact as RegistryItem, [reactClient!]), + ...combine(dropzone as RegistryItem), + ...combine(realtimeCursor as RegistryItem), ] as Registry['items'] diff --git a/apps/ui-library/registry/default/clients/react/lib/supabase/client.ts b/apps/ui-library/registry/default/clients/react/lib/supabase/client.ts index 1ca4c8ce35..44584de57d 100644 --- a/apps/ui-library/registry/default/clients/react/lib/supabase/client.ts +++ b/apps/ui-library/registry/default/clients/react/lib/supabase/client.ts @@ -2,7 +2,7 @@ import { createClient as createSupabaseClient } from '@supabase/supabase-js' export function createClient() { return createSupabaseClient( - process.env.NEXT_PUBLIC_SUPABASE_URL!, - process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY! + process.env.VITE_PUBLIC_SUPABASE_URL!, + process.env.VITE_PUBLIC_SUPABASE_ANON_KEY! ) } diff --git a/apps/ui-library/registry/default/clients/tanstack/registry-item.json b/apps/ui-library/registry/default/clients/tanstack/registry-item.json index 30e09ce823..5c86eee251 100644 --- a/apps/ui-library/registry/default/clients/tanstack/registry-item.json +++ b/apps/ui-library/registry/default/clients/tanstack/registry-item.json @@ -5,7 +5,7 @@ "title": "Supabase Client for Tanstack Start", "description": "", "registryDependencies": [], - "dependencies": ["@supabase/ssr@latest"], + "dependencies": ["@supabase/ssr@latest", "@supabase/supabase-js@latest"], "files": [ { "path": "registry/default/clients/tanstack/lib/supabase/client.ts",