diff --git a/apps/www/.vitepress/config.mts b/apps/www/.vitepress/config.mts index b4920fbc..eea8be18 100644 --- a/apps/www/.vitepress/config.mts +++ b/apps/www/.vitepress/config.mts @@ -7,13 +7,16 @@ import ComponentPreviewPlugin from './theme/plugins/previewer' export default defineConfig({ title: 'shadcn-vue', description: 'A VitePress Site', - srcDir: path.resolve(__dirname, '../src/content'), + srcDir: path.resolve(__dirname, '../src'), markdown: { theme: 'css-variables', config(md) { md.use(ComponentPreviewPlugin) }, }, + rewrites: { + 'content/(.*)': '(.*)', + }, vite: { plugins: [ Icons({ compiler: 'vue3', autoInstall: true }) as any, diff --git a/apps/www/public/vite.svg b/apps/www/public/vite.svg deleted file mode 100644 index e7b8dfb1..00000000 --- a/apps/www/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/apps/www/src/public/android-chrome-192x192.png b/apps/www/src/public/android-chrome-192x192.png new file mode 100644 index 00000000..12cf161a Binary files /dev/null and b/apps/www/src/public/android-chrome-192x192.png differ diff --git a/apps/www/src/public/android-chrome-512x512.png b/apps/www/src/public/android-chrome-512x512.png new file mode 100644 index 00000000..5bafcab3 Binary files /dev/null and b/apps/www/src/public/android-chrome-512x512.png differ diff --git a/apps/www/src/public/apple-touch-icon.png b/apps/www/src/public/apple-touch-icon.png new file mode 100644 index 00000000..10279359 Binary files /dev/null and b/apps/www/src/public/apple-touch-icon.png differ diff --git a/apps/www/src/public/avatars/01.png b/apps/www/src/public/avatars/01.png new file mode 100644 index 00000000..c1901010 Binary files /dev/null and b/apps/www/src/public/avatars/01.png differ diff --git a/apps/www/src/public/avatars/02.png b/apps/www/src/public/avatars/02.png new file mode 100644 index 00000000..b2aae01d Binary files /dev/null and b/apps/www/src/public/avatars/02.png differ diff --git a/apps/www/src/public/avatars/03.png b/apps/www/src/public/avatars/03.png new file mode 100644 index 00000000..f04b6b0b Binary files /dev/null and b/apps/www/src/public/avatars/03.png differ diff --git a/apps/www/src/public/avatars/04.png b/apps/www/src/public/avatars/04.png new file mode 100644 index 00000000..1129539c Binary files /dev/null and b/apps/www/src/public/avatars/04.png differ diff --git a/apps/www/src/public/avatars/05.png b/apps/www/src/public/avatars/05.png new file mode 100644 index 00000000..e73aabf6 Binary files /dev/null and b/apps/www/src/public/avatars/05.png differ diff --git a/apps/www/src/public/examples/authentication-dark.png b/apps/www/src/public/examples/authentication-dark.png new file mode 100644 index 00000000..466a0876 Binary files /dev/null and b/apps/www/src/public/examples/authentication-dark.png differ diff --git a/apps/www/src/public/examples/authentication-light.png b/apps/www/src/public/examples/authentication-light.png new file mode 100644 index 00000000..e38a9e48 Binary files /dev/null and b/apps/www/src/public/examples/authentication-light.png differ diff --git a/apps/www/src/public/examples/cards-dark.png b/apps/www/src/public/examples/cards-dark.png new file mode 100644 index 00000000..47f183e7 Binary files /dev/null and b/apps/www/src/public/examples/cards-dark.png differ diff --git a/apps/www/src/public/examples/cards-light.png b/apps/www/src/public/examples/cards-light.png new file mode 100644 index 00000000..5dea3794 Binary files /dev/null and b/apps/www/src/public/examples/cards-light.png differ diff --git a/apps/www/src/public/examples/dashboard-dark.png b/apps/www/src/public/examples/dashboard-dark.png new file mode 100644 index 00000000..aeb6b702 Binary files /dev/null and b/apps/www/src/public/examples/dashboard-dark.png differ diff --git a/apps/www/src/public/examples/dashboard-light.png b/apps/www/src/public/examples/dashboard-light.png new file mode 100644 index 00000000..9631b985 Binary files /dev/null and b/apps/www/src/public/examples/dashboard-light.png differ diff --git a/apps/www/src/public/examples/forms-dark.png b/apps/www/src/public/examples/forms-dark.png new file mode 100644 index 00000000..52ae1fcb Binary files /dev/null and b/apps/www/src/public/examples/forms-dark.png differ diff --git a/apps/www/src/public/examples/forms-light.png b/apps/www/src/public/examples/forms-light.png new file mode 100644 index 00000000..15d76120 Binary files /dev/null and b/apps/www/src/public/examples/forms-light.png differ diff --git a/apps/www/src/public/examples/music-dark.png b/apps/www/src/public/examples/music-dark.png new file mode 100644 index 00000000..6cd70732 Binary files /dev/null and b/apps/www/src/public/examples/music-dark.png differ diff --git a/apps/www/src/public/examples/music-light.png b/apps/www/src/public/examples/music-light.png new file mode 100644 index 00000000..081c043d Binary files /dev/null and b/apps/www/src/public/examples/music-light.png differ diff --git a/apps/www/src/public/examples/playground-dark.png b/apps/www/src/public/examples/playground-dark.png new file mode 100644 index 00000000..bc221625 Binary files /dev/null and b/apps/www/src/public/examples/playground-dark.png differ diff --git a/apps/www/src/public/examples/playground-light.png b/apps/www/src/public/examples/playground-light.png new file mode 100644 index 00000000..4e3904ba Binary files /dev/null and b/apps/www/src/public/examples/playground-light.png differ diff --git a/apps/www/src/public/examples/tasks-dark.png b/apps/www/src/public/examples/tasks-dark.png new file mode 100644 index 00000000..697cad05 Binary files /dev/null and b/apps/www/src/public/examples/tasks-dark.png differ diff --git a/apps/www/src/public/examples/tasks-light.png b/apps/www/src/public/examples/tasks-light.png new file mode 100644 index 00000000..49069eda Binary files /dev/null and b/apps/www/src/public/examples/tasks-light.png differ diff --git a/apps/www/src/public/favicon-16x16.png b/apps/www/src/public/favicon-16x16.png new file mode 100644 index 00000000..0840dbf2 Binary files /dev/null and b/apps/www/src/public/favicon-16x16.png differ diff --git a/apps/www/src/public/favicon-32x32.png b/apps/www/src/public/favicon-32x32.png new file mode 100644 index 00000000..aeb876e7 Binary files /dev/null and b/apps/www/src/public/favicon-32x32.png differ diff --git a/apps/www/src/public/favicon.ico b/apps/www/src/public/favicon.ico new file mode 100644 index 00000000..2f96628d Binary files /dev/null and b/apps/www/src/public/favicon.ico differ diff --git a/apps/www/src/public/images/style-with-theming.jpg b/apps/www/src/public/images/style-with-theming.jpg new file mode 100644 index 00000000..2ebc67b1 Binary files /dev/null and b/apps/www/src/public/images/style-with-theming.jpg differ diff --git a/apps/www/src/public/images/style.jpg b/apps/www/src/public/images/style.jpg new file mode 100644 index 00000000..bfc0dae7 Binary files /dev/null and b/apps/www/src/public/images/style.jpg differ diff --git a/apps/www/src/public/og.jpg b/apps/www/src/public/og.jpg new file mode 100644 index 00000000..12a4d5ff Binary files /dev/null and b/apps/www/src/public/og.jpg differ diff --git a/apps/www/src/public/registry/colors/gray.json b/apps/www/src/public/registry/colors/gray.json new file mode 100644 index 00000000..6de69e6d --- /dev/null +++ b/apps/www/src/public/registry/colors/gray.json @@ -0,0 +1,92 @@ +{ + "inlineColors": { + "light": { + "background": "white", + "foreground": "gray-950", + "card": "white", + "card-foreground": "gray-950", + "popover": "white", + "popover-foreground": "gray-950", + "primary": "gray-900", + "primary-foreground": "gray-50", + "secondary": "gray-100", + "secondary-foreground": "gray-900", + "muted": "gray-100", + "muted-foreground": "gray-500", + "accent": "gray-100", + "accent-foreground": "gray-900", + "destructive": "red-500", + "destructive-foreground": "gray-50", + "border": "gray-200", + "input": "gray-200", + "ring": "gray-950" + }, + "dark": { + "background": "gray-950", + "foreground": "gray-50", + "card": "gray-950", + "card-foreground": "gray-50", + "popover": "gray-950", + "popover-foreground": "gray-50", + "primary": "gray-50", + "primary-foreground": "gray-900", + "secondary": "gray-800", + "secondary-foreground": "gray-50", + "muted": "gray-800", + "muted-foreground": "gray-400", + "accent": "gray-800", + "accent-foreground": "gray-50", + "destructive": "red-900", + "destructive-foreground": "gray-50", + "border": "gray-800", + "input": "gray-800", + "ring": "gray-300" + } + }, + "cssVars": { + "light": { + "background": "0 0% 100%", + "foreground": "224 71.4% 4.1%", + "card": "0 0% 100%", + "card-foreground": "224 71.4% 4.1%", + "popover": "0 0% 100%", + "popover-foreground": "224 71.4% 4.1%", + "primary": "220.9 39.3% 11%", + "primary-foreground": "210 20% 98%", + "secondary": "220 14.3% 95.9%", + "secondary-foreground": "220.9 39.3% 11%", + "muted": "220 14.3% 95.9%", + "muted-foreground": "220 8.9% 46.1%", + "accent": "220 14.3% 95.9%", + "accent-foreground": "220.9 39.3% 11%", + "destructive": "0 84.2% 60.2%", + "destructive-foreground": "210 20% 98%", + "border": "220 13% 91%", + "input": "220 13% 91%", + "ring": "224 71.4% 4.1%" + }, + "dark": { + "background": "224 71.4% 4.1%", + "foreground": "210 20% 98%", + "card": "224 71.4% 4.1%", + "card-foreground": "210 20% 98%", + "popover": "224 71.4% 4.1%", + "popover-foreground": "210 20% 98%", + "primary": "210 20% 98%", + "primary-foreground": "220.9 39.3% 11%", + "secondary": "215 27.9% 16.9%", + "secondary-foreground": "210 20% 98%", + "muted": "215 27.9% 16.9%", + "muted-foreground": "217.9 10.6% 64.9%", + "accent": "215 27.9% 16.9%", + "accent-foreground": "210 20% 98%", + "destructive": "0 62.8% 30.6%", + "destructive-foreground": "210 20% 98%", + "border": "215 27.9% 16.9%", + "input": "215 27.9% 16.9%", + "ring": "216 12.2% 83.9%" + } + }, + "inlineColorsTemplate": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n", + "cssVarsTemplate": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n \n@layer base {\n :root {\n --background: 0 0% 100%;\n --foreground: 224 71.4% 4.1%;\n\n --card: 0 0% 100%;\n --card-foreground: 224 71.4% 4.1%;\n \n --popover: 0 0% 100%;\n --popover-foreground: 224 71.4% 4.1%;\n \n --primary: 220.9 39.3% 11%;\n --primary-foreground: 210 20% 98%;\n \n --secondary: 220 14.3% 95.9%;\n --secondary-foreground: 220.9 39.3% 11%;\n \n --muted: 220 14.3% 95.9%;\n --muted-foreground: 220 8.9% 46.1%;\n \n --accent: 220 14.3% 95.9%;\n --accent-foreground: 220.9 39.3% 11%;\n \n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 210 20% 98%;\n\n --border: 220 13% 91%;\n --input: 220 13% 91%;\n --ring: 224 71.4% 4.1%;\n \n --radius: 0.5rem;\n }\n \n .dark {\n --background: 224 71.4% 4.1%;\n --foreground: 210 20% 98%;\n \n --card: 224 71.4% 4.1%;\n --card-foreground: 210 20% 98%;\n \n --popover: 224 71.4% 4.1%;\n --popover-foreground: 210 20% 98%;\n \n --primary: 210 20% 98%;\n --primary-foreground: 220.9 39.3% 11%;\n \n --secondary: 215 27.9% 16.9%;\n --secondary-foreground: 210 20% 98%;\n \n --muted: 215 27.9% 16.9%;\n --muted-foreground: 217.9 10.6% 64.9%;\n \n --accent: 215 27.9% 16.9%;\n --accent-foreground: 210 20% 98%;\n \n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 210 20% 98%;\n \n --border: 215 27.9% 16.9%;\n --input: 215 27.9% 16.9%;\n --ring: 216 12.2% 83.9%;\n }\n}\n \n@layer base {\n * {\n @apply border-border;\n }\n body {\n @apply bg-background text-foreground;\n }\n}" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/colors/index.json b/apps/www/src/public/registry/colors/index.json new file mode 100644 index 00000000..6b70773e --- /dev/null +++ b/apps/www/src/public/registry/colors/index.json @@ -0,0 +1,1999 @@ +{ + "inherit": "inherit", + "current": "currentColor", + "transparent": "transparent", + "black": { + "hex": "#000000", + "rgb": "rgb(0,0,0)", + "hsl": "hsl(0,0%,0%)", + "rgbChannel": "0 0 0", + "hslChannel": "0 0% 0%" + }, + "white": { + "hex": "#ffffff", + "rgb": "rgb(255,255,255)", + "hsl": "hsl(0,0%,100%)", + "rgbChannel": "255 255 255", + "hslChannel": "0 0% 100%" + }, + "slate": [ + { + "scale": 50, + "hex": "#f8fafc", + "rgb": "rgb(248,250,252)", + "hsl": "hsl(210,40%,98%)", + "rgbChannel": "248 250 252", + "hslChannel": "210 40% 98%" + }, + { + "scale": 100, + "hex": "#f1f5f9", + "rgb": "rgb(241,245,249)", + "hsl": "hsl(210,40%,96.1%)", + "rgbChannel": "241 245 249", + "hslChannel": "210 40% 96.1%" + }, + { + "scale": 200, + "hex": "#e2e8f0", + "rgb": "rgb(226,232,240)", + "hsl": "hsl(214.3,31.8%,91.4%)", + "rgbChannel": "226 232 240", + "hslChannel": "214.3 31.8% 91.4%" + }, + { + "scale": 300, + "hex": "#cbd5e1", + "rgb": "rgb(203,213,225)", + "hsl": "hsl(212.7,26.8%,83.9%)", + "rgbChannel": "203 213 225", + "hslChannel": "212.7 26.8% 83.9%" + }, + { + "scale": 400, + "hex": "#94a3b8", + "rgb": "rgb(148,163,184)", + "hsl": "hsl(215,20.2%,65.1%)", + "rgbChannel": "148 163 184", + "hslChannel": "215 20.2% 65.1%" + }, + { + "scale": 500, + "hex": "#64748b", + "rgb": "rgb(100,116,139)", + "hsl": "hsl(215.4,16.3%,46.9%)", + "rgbChannel": "100 116 139", + "hslChannel": "215.4 16.3% 46.9%" + }, + { + "scale": 600, + "hex": "#475569", + "rgb": "rgb(71,85,105)", + "hsl": "hsl(215.3,19.3%,34.5%)", + "rgbChannel": "71 85 105", + "hslChannel": "215.3 19.3% 34.5%" + }, + { + "scale": 700, + "hex": "#334155", + "rgb": "rgb(51,65,85)", + "hsl": "hsl(215.3,25%,26.7%)", + "rgbChannel": "51 65 85", + "hslChannel": "215.3 25% 26.7%" + }, + { + "scale": 800, + "hex": "#1e293b", + "rgb": "rgb(30,41,59)", + "hsl": "hsl(217.2,32.6%,17.5%)", + "rgbChannel": "30 41 59", + "hslChannel": "217.2 32.6% 17.5%" + }, + { + "scale": 900, + "hex": "#0f172a", + "rgb": "rgb(15,23,42)", + "hsl": "hsl(222.2,47.4%,11.2%)", + "rgbChannel": "15 23 42", + "hslChannel": "222.2 47.4% 11.2%" + }, + { + "scale": 950, + "hex": "#020617", + "rgb": "rgb(2,6,23)", + "hsl": "hsl(222.2,84%,4.9%)", + "rgbChannel": "2 6 23", + "hslChannel": "222.2 84% 4.9%" + } + ], + "gray": [ + { + "scale": 50, + "hex": "#f9fafb", + "rgb": "rgb(249,250,251)", + "hsl": "hsl(210,20%,98%)", + "rgbChannel": "249 250 251", + "hslChannel": "210 20% 98%" + }, + { + "scale": 100, + "hex": "#f3f4f6", + "rgb": "rgb(243,244,246)", + "hsl": "hsl(220,14.3%,95.9%)", + "rgbChannel": "243 244 246", + "hslChannel": "220 14.3% 95.9%" + }, + { + "scale": 200, + "hex": "#e5e7eb", + "rgb": "rgb(229,231,235)", + "hsl": "hsl(220,13%,91%)", + "rgbChannel": "229 231 235", + "hslChannel": "220 13% 91%" + }, + { + "scale": 300, + "hex": "#d1d5db", + "rgb": "rgb(209,213,219)", + "hsl": "hsl(216,12.2%,83.9%)", + "rgbChannel": "209 213 219", + "hslChannel": "216 12.2% 83.9%" + }, + { + "scale": 400, + "hex": "#9ca3af", + "rgb": "rgb(156,163,175)", + "hsl": "hsl(217.9,10.6%,64.9%)", + "rgbChannel": "156 163 175", + "hslChannel": "217.9 10.6% 64.9%" + }, + { + "scale": 500, + "hex": "#6b7280", + "rgb": "rgb(107,114,128)", + "hsl": "hsl(220,8.9%,46.1%)", + "rgbChannel": "107 114 128", + "hslChannel": "220 8.9% 46.1%" + }, + { + "scale": 600, + "hex": "#4b5563", + "rgb": "rgb(75,85,99)", + "hsl": "hsl(215,13.8%,34.1%)", + "rgbChannel": "75 85 99", + "hslChannel": "215 13.8% 34.1%" + }, + { + "scale": 700, + "hex": "#374151", + "rgb": "rgb(55,65,81)", + "hsl": "hsl(216.9,19.1%,26.7%)", + "rgbChannel": "55 65 81", + "hslChannel": "216.9 19.1% 26.7%" + }, + { + "scale": 800, + "hex": "#1f2937", + "rgb": "rgb(31,41,55)", + "hsl": "hsl(215,27.9%,16.9%)", + "rgbChannel": "31 41 55", + "hslChannel": "215 27.9% 16.9%" + }, + { + "scale": 900, + "hex": "#111827", + "rgb": "rgb(17,24,39)", + "hsl": "hsl(220.9,39.3%,11%)", + "rgbChannel": "17 24 39", + "hslChannel": "220.9 39.3% 11%" + }, + { + "scale": 950, + "hex": "#030712", + "rgb": "rgb(3,7,18)", + "hsl": "hsl(224,71.4%,4.1%)", + "rgbChannel": "3 7 18", + "hslChannel": "224 71.4% 4.1%" + } + ], + "zinc": [ + { + "scale": 50, + "hex": "#fafafa", + "rgb": "rgb(250,250,250)", + "hsl": "hsl(0,0%,98%)", + "rgbChannel": "250 250 250", + "hslChannel": "0 0% 98%" + }, + { + "scale": 100, + "hex": "#f4f4f5", + "rgb": "rgb(244,244,245)", + "hsl": "hsl(240,4.8%,95.9%)", + "rgbChannel": "244 244 245", + "hslChannel": "240 4.8% 95.9%" + }, + { + "scale": 200, + "hex": "#e4e4e7", + "rgb": "rgb(228,228,231)", + "hsl": "hsl(240,5.9%,90%)", + "rgbChannel": "228 228 231", + "hslChannel": "240 5.9% 90%" + }, + { + "scale": 300, + "hex": "#d4d4d8", + "rgb": "rgb(212,212,216)", + "hsl": "hsl(240,4.9%,83.9%)", + "rgbChannel": "212 212 216", + "hslChannel": "240 4.9% 83.9%" + }, + { + "scale": 400, + "hex": "#a1a1aa", + "rgb": "rgb(161,161,170)", + "hsl": "hsl(240,5%,64.9%)", + "rgbChannel": "161 161 170", + "hslChannel": "240 5% 64.9%" + }, + { + "scale": 500, + "hex": "#71717a", + "rgb": "rgb(113,113,122)", + "hsl": "hsl(240,3.8%,46.1%)", + "rgbChannel": "113 113 122", + "hslChannel": "240 3.8% 46.1%" + }, + { + "scale": 600, + "hex": "#52525b", + "rgb": "rgb(82,82,91)", + "hsl": "hsl(240,5.2%,33.9%)", + "rgbChannel": "82 82 91", + "hslChannel": "240 5.2% 33.9%" + }, + { + "scale": 700, + "hex": "#3f3f46", + "rgb": "rgb(63,63,70)", + "hsl": "hsl(240,5.3%,26.1%)", + "rgbChannel": "63 63 70", + "hslChannel": "240 5.3% 26.1%" + }, + { + "scale": 800, + "hex": "#27272a", + "rgb": "rgb(39,39,42)", + "hsl": "hsl(240,3.7%,15.9%)", + "rgbChannel": "39 39 42", + "hslChannel": "240 3.7% 15.9%" + }, + { + "scale": 900, + "hex": "#18181b", + "rgb": "rgb(24,24,27)", + "hsl": "hsl(240,5.9%,10%)", + "rgbChannel": "24 24 27", + "hslChannel": "240 5.9% 10%" + }, + { + "scale": 950, + "hex": "#09090b", + "rgb": "rgb(9,9,11)", + "hsl": "hsl(240,10%,3.9%)", + "rgbChannel": "9 9 11", + "hslChannel": "240 10% 3.9%" + } + ], + "neutral": [ + { + "scale": 50, + "hex": "#fafafa", + "rgb": "rgb(250,250,250)", + "hsl": "hsl(0,0%,98%)", + "rgbChannel": "250 250 250", + "hslChannel": "0 0% 98%" + }, + { + "scale": 100, + "hex": "#f5f5f5", + "rgb": "rgb(245,245,245)", + "hsl": "hsl(0,0%,96.1%)", + "rgbChannel": "245 245 245", + "hslChannel": "0 0% 96.1%" + }, + { + "scale": 200, + "hex": "#e5e5e5", + "rgb": "rgb(229,229,229)", + "hsl": "hsl(0,0%,89.8%)", + "rgbChannel": "229 229 229", + "hslChannel": "0 0% 89.8%" + }, + { + "scale": 300, + "hex": "#d4d4d4", + "rgb": "rgb(212,212,212)", + "hsl": "hsl(0,0%,83.1%)", + "rgbChannel": "212 212 212", + "hslChannel": "0 0% 83.1%" + }, + { + "scale": 400, + "hex": "#a3a3a3", + "rgb": "rgb(163,163,163)", + "hsl": "hsl(0,0%,63.9%)", + "rgbChannel": "163 163 163", + "hslChannel": "0 0% 63.9%" + }, + { + "scale": 500, + "hex": "#737373", + "rgb": "rgb(115,115,115)", + "hsl": "hsl(0,0%,45.1%)", + "rgbChannel": "115 115 115", + "hslChannel": "0 0% 45.1%" + }, + { + "scale": 600, + "hex": "#525252", + "rgb": "rgb(82,82,82)", + "hsl": "hsl(0,0%,32.2%)", + "rgbChannel": "82 82 82", + "hslChannel": "0 0% 32.2%" + }, + { + "scale": 700, + "hex": "#404040", + "rgb": "rgb(64,64,64)", + "hsl": "hsl(0,0%,25.1%)", + "rgbChannel": "64 64 64", + "hslChannel": "0 0% 25.1%" + }, + { + "scale": 800, + "hex": "#262626", + "rgb": "rgb(38,38,38)", + "hsl": "hsl(0,0%,14.9%)", + "rgbChannel": "38 38 38", + "hslChannel": "0 0% 14.9%" + }, + { + "scale": 900, + "hex": "#171717", + "rgb": "rgb(23,23,23)", + "hsl": "hsl(0,0%,9%)", + "rgbChannel": "23 23 23", + "hslChannel": "0 0% 9%" + }, + { + "scale": 950, + "hex": "#0a0a0a", + "rgb": "rgb(10,10,10)", + "hsl": "hsl(0,0%,3.9%)", + "rgbChannel": "10 10 10", + "hslChannel": "0 0% 3.9%" + } + ], + "stone": [ + { + "scale": 50, + "hex": "#fafaf9", + "rgb": "rgb(250,250,249)", + "hsl": "hsl(60,9.1%,97.8%)", + "rgbChannel": "250 250 249", + "hslChannel": "60 9.1% 97.8%" + }, + { + "scale": 100, + "hex": "#f5f5f4", + "rgb": "rgb(245,245,244)", + "hsl": "hsl(60,4.8%,95.9%)", + "rgbChannel": "245 245 244", + "hslChannel": "60 4.8% 95.9%" + }, + { + "scale": 200, + "hex": "#e7e5e4", + "rgb": "rgb(231,229,228)", + "hsl": "hsl(20,5.9%,90%)", + "rgbChannel": "231 229 228", + "hslChannel": "20 5.9% 90%" + }, + { + "scale": 300, + "hex": "#d6d3d1", + "rgb": "rgb(214,211,209)", + "hsl": "hsl(24,5.7%,82.9%)", + "rgbChannel": "214 211 209", + "hslChannel": "24 5.7% 82.9%" + }, + { + "scale": 400, + "hex": "#a8a29e", + "rgb": "rgb(168,162,158)", + "hsl": "hsl(24,5.4%,63.9%)", + "rgbChannel": "168 162 158", + "hslChannel": "24 5.4% 63.9%" + }, + { + "scale": 500, + "hex": "#78716c", + "rgb": "rgb(120,113,108)", + "hsl": "hsl(25,5.3%,44.7%)", + "rgbChannel": "120 113 108", + "hslChannel": "25 5.3% 44.7%" + }, + { + "scale": 600, + "hex": "#57534e", + "rgb": "rgb(87,83,78)", + "hsl": "hsl(33.3,5.5%,32.4%)", + "rgbChannel": "87 83 78", + "hslChannel": "33.3 5.5% 32.4%" + }, + { + "scale": 700, + "hex": "#44403c", + "rgb": "rgb(68,64,60)", + "hsl": "hsl(30,6.3%,25.1%)", + "rgbChannel": "68 64 60", + "hslChannel": "30 6.3% 25.1%" + }, + { + "scale": 800, + "hex": "#292524", + "rgb": "rgb(41,37,36)", + "hsl": "hsl(12,6.5%,15.1%)", + "rgbChannel": "41 37 36", + "hslChannel": "12 6.5% 15.1%" + }, + { + "scale": 900, + "hex": "#1c1917", + "rgb": "rgb(28,25,23)", + "hsl": "hsl(24,9.8%,10%)", + "rgbChannel": "28 25 23", + "hslChannel": "24 9.8% 10%" + }, + { + "scale": 950, + "hex": "#0c0a09", + "rgb": "rgb(12,10,9)", + "hsl": "hsl(20,14.3%,4.1%)", + "rgbChannel": "12 10 9", + "hslChannel": "20 14.3% 4.1%" + } + ], + "red": [ + { + "scale": 50, + "hex": "#fef2f2", + "rgb": "rgb(254,242,242)", + "hsl": "hsl(0,85.7%,97.3%)", + "rgbChannel": "254 242 242", + "hslChannel": "0 85.7% 97.3%" + }, + { + "scale": 100, + "hex": "#fee2e2", + "rgb": "rgb(254,226,226)", + "hsl": "hsl(0,93.3%,94.1%)", + "rgbChannel": "254 226 226", + "hslChannel": "0 93.3% 94.1%" + }, + { + "scale": 200, + "hex": "#fecaca", + "rgb": "rgb(254,202,202)", + "hsl": "hsl(0,96.3%,89.4%)", + "rgbChannel": "254 202 202", + "hslChannel": "0 96.3% 89.4%" + }, + { + "scale": 300, + "hex": "#fca5a5", + "rgb": "rgb(252,165,165)", + "hsl": "hsl(0,93.5%,81.8%)", + "rgbChannel": "252 165 165", + "hslChannel": "0 93.5% 81.8%" + }, + { + "scale": 400, + "hex": "#f87171", + "rgb": "rgb(248,113,113)", + "hsl": "hsl(0,90.6%,70.8%)", + "rgbChannel": "248 113 113", + "hslChannel": "0 90.6% 70.8%" + }, + { + "scale": 500, + "hex": "#ef4444", + "rgb": "rgb(239,68,68)", + "hsl": "hsl(0,84.2%,60.2%)", + "rgbChannel": "239 68 68", + "hslChannel": "0 84.2% 60.2%" + }, + { + "scale": 600, + "hex": "#dc2626", + "rgb": "rgb(220,38,38)", + "hsl": "hsl(0,72.2%,50.6%)", + "rgbChannel": "220 38 38", + "hslChannel": "0 72.2% 50.6%" + }, + { + "scale": 700, + "hex": "#b91c1c", + "rgb": "rgb(185,28,28)", + "hsl": "hsl(0,73.7%,41.8%)", + "rgbChannel": "185 28 28", + "hslChannel": "0 73.7% 41.8%" + }, + { + "scale": 800, + "hex": "#991b1b", + "rgb": "rgb(153,27,27)", + "hsl": "hsl(0,70%,35.3%)", + "rgbChannel": "153 27 27", + "hslChannel": "0 70% 35.3%" + }, + { + "scale": 900, + "hex": "#7f1d1d", + "rgb": "rgb(127,29,29)", + "hsl": "hsl(0,62.8%,30.6%)", + "rgbChannel": "127 29 29", + "hslChannel": "0 62.8% 30.6%" + }, + { + "scale": 950, + "hex": "#450a0a", + "rgb": "rgb(69,10,10)", + "hsl": "hsl(0,74.7%,15.5%)", + "rgbChannel": "69 10 10", + "hslChannel": "0 74.7% 15.5%" + } + ], + "orange": [ + { + "scale": 50, + "hex": "#fff7ed", + "rgb": "rgb(255,247,237)", + "hsl": "hsl(33.3,100%,96.5%)", + "rgbChannel": "255 247 237", + "hslChannel": "33.3 100% 96.5%" + }, + { + "scale": 100, + "hex": "#ffedd5", + "rgb": "rgb(255,237,213)", + "hsl": "hsl(34.3,100%,91.8%)", + "rgbChannel": "255 237 213", + "hslChannel": "34.3 100% 91.8%" + }, + { + "scale": 200, + "hex": "#fed7aa", + "rgb": "rgb(254,215,170)", + "hsl": "hsl(32.1,97.7%,83.1%)", + "rgbChannel": "254 215 170", + "hslChannel": "32.1 97.7% 83.1%" + }, + { + "scale": 300, + "hex": "#fdba74", + "rgb": "rgb(253,186,116)", + "hsl": "hsl(30.7,97.2%,72.4%)", + "rgbChannel": "253 186 116", + "hslChannel": "30.7 97.2% 72.4%" + }, + { + "scale": 400, + "hex": "#fb923c", + "rgb": "rgb(251,146,60)", + "hsl": "hsl(27,96%,61%)", + "rgbChannel": "251 146 60", + "hslChannel": "27 96% 61%" + }, + { + "scale": 500, + "hex": "#f97316", + "rgb": "rgb(249,115,22)", + "hsl": "hsl(24.6,95%,53.1%)", + "rgbChannel": "249 115 22", + "hslChannel": "24.6 95% 53.1%" + }, + { + "scale": 600, + "hex": "#ea580c", + "rgb": "rgb(234,88,12)", + "hsl": "hsl(20.5,90.2%,48.2%)", + "rgbChannel": "234 88 12", + "hslChannel": "20.5 90.2% 48.2%" + }, + { + "scale": 700, + "hex": "#c2410c", + "rgb": "rgb(194,65,12)", + "hsl": "hsl(17.5,88.3%,40.4%)", + "rgbChannel": "194 65 12", + "hslChannel": "17.5 88.3% 40.4%" + }, + { + "scale": 800, + "hex": "#9a3412", + "rgb": "rgb(154,52,18)", + "hsl": "hsl(15,79.1%,33.7%)", + "rgbChannel": "154 52 18", + "hslChannel": "15 79.1% 33.7%" + }, + { + "scale": 900, + "hex": "#7c2d12", + "rgb": "rgb(124,45,18)", + "hsl": "hsl(15.3,74.6%,27.8%)", + "rgbChannel": "124 45 18", + "hslChannel": "15.3 74.6% 27.8%" + }, + { + "scale": 950, + "hex": "#431407", + "rgb": "rgb(67,20,7)", + "hsl": "hsl(13,81.1%,14.5%)", + "rgbChannel": "67 20 7", + "hslChannel": "13 81.1% 14.5%" + } + ], + "amber": [ + { + "scale": 50, + "hex": "#fffbeb", + "rgb": "rgb(255,251,235)", + "hsl": "hsl(48,100%,96.1%)", + "rgbChannel": "255 251 235", + "hslChannel": "48 100% 96.1%" + }, + { + "scale": 100, + "hex": "#fef3c7", + "rgb": "rgb(254,243,199)", + "hsl": "hsl(48,96.5%,88.8%)", + "rgbChannel": "254 243 199", + "hslChannel": "48 96.5% 88.8%" + }, + { + "scale": 200, + "hex": "#fde68a", + "rgb": "rgb(253,230,138)", + "hsl": "hsl(48,96.6%,76.7%)", + "rgbChannel": "253 230 138", + "hslChannel": "48 96.6% 76.7%" + }, + { + "scale": 300, + "hex": "#fcd34d", + "rgb": "rgb(252,211,77)", + "hsl": "hsl(45.9,96.7%,64.5%)", + "rgbChannel": "252 211 77", + "hslChannel": "45.9 96.7% 64.5%" + }, + { + "scale": 400, + "hex": "#fbbf24", + "rgb": "rgb(251,191,36)", + "hsl": "hsl(43.3,96.4%,56.3%)", + "rgbChannel": "251 191 36", + "hslChannel": "43.3 96.4% 56.3%" + }, + { + "scale": 500, + "hex": "#f59e0b", + "rgb": "rgb(245,158,11)", + "hsl": "hsl(37.7,92.1%,50.2%)", + "rgbChannel": "245 158 11", + "hslChannel": "37.7 92.1% 50.2%" + }, + { + "scale": 600, + "hex": "#d97706", + "rgb": "rgb(217,119,6)", + "hsl": "hsl(32.1,94.6%,43.7%)", + "rgbChannel": "217 119 6", + "hslChannel": "32.1 94.6% 43.7%" + }, + { + "scale": 700, + "hex": "#b45309", + "rgb": "rgb(180,83,9)", + "hsl": "hsl(26,90.5%,37.1%)", + "rgbChannel": "180 83 9", + "hslChannel": "26 90.5% 37.1%" + }, + { + "scale": 800, + "hex": "#92400e", + "rgb": "rgb(146,64,14)", + "hsl": "hsl(22.7,82.5%,31.4%)", + "rgbChannel": "146 64 14", + "hslChannel": "22.7 82.5% 31.4%" + }, + { + "scale": 900, + "hex": "#78350f", + "rgb": "rgb(120,53,15)", + "hsl": "hsl(21.7,77.8%,26.5%)", + "rgbChannel": "120 53 15", + "hslChannel": "21.7 77.8% 26.5%" + }, + { + "scale": 950, + "hex": "#451a03", + "rgb": "rgb(69,26,3)", + "hsl": "hsl(20.9,91.7%,14.1%)", + "rgbChannel": "69 26 3", + "hslChannel": "20.9 91.7% 14.1%" + } + ], + "yellow": [ + { + "scale": 50, + "hex": "#fefce8", + "rgb": "rgb(254,252,232)", + "hsl": "hsl(54.5,91.7%,95.3%)", + "rgbChannel": "254 252 232", + "hslChannel": "54.5 91.7% 95.3%" + }, + { + "scale": 100, + "hex": "#fef9c3", + "rgb": "rgb(254,249,195)", + "hsl": "hsl(54.9,96.7%,88%)", + "rgbChannel": "254 249 195", + "hslChannel": "54.9 96.7% 88%" + }, + { + "scale": 200, + "hex": "#fef08a", + "rgb": "rgb(254,240,138)", + "hsl": "hsl(52.8,98.3%,76.9%)", + "rgbChannel": "254 240 138", + "hslChannel": "52.8 98.3% 76.9%" + }, + { + "scale": 300, + "hex": "#fde047", + "rgb": "rgb(253,224,71)", + "hsl": "hsl(50.4,97.8%,63.5%)", + "rgbChannel": "253 224 71", + "hslChannel": "50.4 97.8% 63.5%" + }, + { + "scale": 400, + "hex": "#facc15", + "rgb": "rgb(250,204,21)", + "hsl": "hsl(47.9,95.8%,53.1%)", + "rgbChannel": "250 204 21", + "hslChannel": "47.9 95.8% 53.1%" + }, + { + "scale": 500, + "hex": "#eab308", + "rgb": "rgb(234,179,8)", + "hsl": "hsl(45.4,93.4%,47.5%)", + "rgbChannel": "234 179 8", + "hslChannel": "45.4 93.4% 47.5%" + }, + { + "scale": 600, + "hex": "#ca8a04", + "rgb": "rgb(202,138,4)", + "hsl": "hsl(40.6,96.1%,40.4%)", + "rgbChannel": "202 138 4", + "hslChannel": "40.6 96.1% 40.4%" + }, + { + "scale": 700, + "hex": "#a16207", + "rgb": "rgb(161,98,7)", + "hsl": "hsl(35.5,91.7%,32.9%)", + "rgbChannel": "161 98 7", + "hslChannel": "35.5 91.7% 32.9%" + }, + { + "scale": 800, + "hex": "#854d0e", + "rgb": "rgb(133,77,14)", + "hsl": "hsl(31.8,81%,28.8%)", + "rgbChannel": "133 77 14", + "hslChannel": "31.8 81% 28.8%" + }, + { + "scale": 900, + "hex": "#713f12", + "rgb": "rgb(113,63,18)", + "hsl": "hsl(28.4,72.5%,25.7%)", + "rgbChannel": "113 63 18", + "hslChannel": "28.4 72.5% 25.7%" + }, + { + "scale": 950, + "hex": "#422006", + "rgb": "rgb(66,32,6)", + "hsl": "hsl(26,83.3%,14.1%)", + "rgbChannel": "66 32 6", + "hslChannel": "26 83.3% 14.1%" + } + ], + "lime": [ + { + "scale": 50, + "hex": "#f7fee7", + "rgb": "rgb(247,254,231)", + "hsl": "hsl(78.3,92%,95.1%)", + "rgbChannel": "247 254 231", + "hslChannel": "78.3 92% 95.1%" + }, + { + "scale": 100, + "hex": "#ecfccb", + "rgb": "rgb(236,252,203)", + "hsl": "hsl(79.6,89.1%,89.2%)", + "rgbChannel": "236 252 203", + "hslChannel": "79.6 89.1% 89.2%" + }, + { + "scale": 200, + "hex": "#d9f99d", + "rgb": "rgb(217,249,157)", + "hsl": "hsl(80.9,88.5%,79.6%)", + "rgbChannel": "217 249 157", + "hslChannel": "80.9 88.5% 79.6%" + }, + { + "scale": 300, + "hex": "#bef264", + "rgb": "rgb(190,242,100)", + "hsl": "hsl(82,84.5%,67.1%)", + "rgbChannel": "190 242 100", + "hslChannel": "82 84.5% 67.1%" + }, + { + "scale": 400, + "hex": "#a3e635", + "rgb": "rgb(163,230,53)", + "hsl": "hsl(82.7,78%,55.5%)", + "rgbChannel": "163 230 53", + "hslChannel": "82.7 78% 55.5%" + }, + { + "scale": 500, + "hex": "#84cc16", + "rgb": "rgb(132,204,22)", + "hsl": "hsl(83.7,80.5%,44.3%)", + "rgbChannel": "132 204 22", + "hslChannel": "83.7 80.5% 44.3%" + }, + { + "scale": 600, + "hex": "#65a30d", + "rgb": "rgb(101,163,13)", + "hsl": "hsl(84.8,85.2%,34.5%)", + "rgbChannel": "101 163 13", + "hslChannel": "84.8 85.2% 34.5%" + }, + { + "scale": 700, + "hex": "#4d7c0f", + "rgb": "rgb(77,124,15)", + "hsl": "hsl(85.9,78.4%,27.3%)", + "rgbChannel": "77 124 15", + "hslChannel": "85.9 78.4% 27.3%" + }, + { + "scale": 800, + "hex": "#3f6212", + "rgb": "rgb(63,98,18)", + "hsl": "hsl(86.3,69%,22.7%)", + "rgbChannel": "63 98 18", + "hslChannel": "86.3 69% 22.7%" + }, + { + "scale": 900, + "hex": "#365314", + "rgb": "rgb(54,83,20)", + "hsl": "hsl(87.6,61.2%,20.2%)", + "rgbChannel": "54 83 20", + "hslChannel": "87.6 61.2% 20.2%" + }, + { + "scale": 950, + "hex": "#1a2e05", + "rgb": "rgb(26,46,5)", + "hsl": "hsl(89.3,80.4%,10%)", + "rgbChannel": "26 46 5", + "hslChannel": "89.3 80.4% 10%" + } + ], + "green": [ + { + "scale": 50, + "hex": "#f0fdf4", + "rgb": "rgb(240,253,244)", + "hsl": "hsl(138.5,76.5%,96.7%)", + "rgbChannel": "240 253 244", + "hslChannel": "138.5 76.5% 96.7%" + }, + { + "scale": 100, + "hex": "#dcfce7", + "rgb": "rgb(220,252,231)", + "hsl": "hsl(140.6,84.2%,92.5%)", + "rgbChannel": "220 252 231", + "hslChannel": "140.6 84.2% 92.5%" + }, + { + "scale": 200, + "hex": "#bbf7d0", + "rgb": "rgb(187,247,208)", + "hsl": "hsl(141,78.9%,85.1%)", + "rgbChannel": "187 247 208", + "hslChannel": "141 78.9% 85.1%" + }, + { + "scale": 300, + "hex": "#86efac", + "rgb": "rgb(134,239,172)", + "hsl": "hsl(141.7,76.6%,73.1%)", + "rgbChannel": "134 239 172", + "hslChannel": "141.7 76.6% 73.1%" + }, + { + "scale": 400, + "hex": "#4ade80", + "rgb": "rgb(74,222,128)", + "hsl": "hsl(141.9,69.2%,58%)", + "rgbChannel": "74 222 128", + "hslChannel": "141.9 69.2% 58%" + }, + { + "scale": 500, + "hex": "#22c55e", + "rgb": "rgb(34,197,94)", + "hsl": "hsl(142.1,70.6%,45.3%)", + "rgbChannel": "34 197 94", + "hslChannel": "142.1 70.6% 45.3%" + }, + { + "scale": 600, + "hex": "#16a34a", + "rgb": "rgb(22,163,74)", + "hsl": "hsl(142.1,76.2%,36.3%)", + "rgbChannel": "22 163 74", + "hslChannel": "142.1 76.2% 36.3%" + }, + { + "scale": 700, + "hex": "#15803d", + "rgb": "rgb(21,128,61)", + "hsl": "hsl(142.4,71.8%,29.2%)", + "rgbChannel": "21 128 61", + "hslChannel": "142.4 71.8% 29.2%" + }, + { + "scale": 800, + "hex": "#166534", + "rgb": "rgb(22,101,52)", + "hsl": "hsl(142.8,64.2%,24.1%)", + "rgbChannel": "22 101 52", + "hslChannel": "142.8 64.2% 24.1%" + }, + { + "scale": 900, + "hex": "#14532d", + "rgb": "rgb(20,83,45)", + "hsl": "hsl(143.8,61.2%,20.2%)", + "rgbChannel": "20 83 45", + "hslChannel": "143.8 61.2% 20.2%" + }, + { + "scale": 950, + "hex": "#052e16", + "rgb": "rgb(5,46,22)", + "hsl": "hsl(144.9,80.4%,10%)", + "rgbChannel": "5 46 22", + "hslChannel": "144.9 80.4% 10%" + } + ], + "emerald": [ + { + "scale": 50, + "hex": "#ecfdf5", + "rgb": "rgb(236,253,245)", + "hsl": "hsl(151.8,81%,95.9%)", + "rgbChannel": "236 253 245", + "hslChannel": "151.8 81% 95.9%" + }, + { + "scale": 100, + "hex": "#d1fae5", + "rgb": "rgb(209,250,229)", + "hsl": "hsl(149.3,80.4%,90%)", + "rgbChannel": "209 250 229", + "hslChannel": "149.3 80.4% 90%" + }, + { + "scale": 200, + "hex": "#a7f3d0", + "rgb": "rgb(167,243,208)", + "hsl": "hsl(152.4,76%,80.4%)", + "rgbChannel": "167 243 208", + "hslChannel": "152.4 76% 80.4%" + }, + { + "scale": 300, + "hex": "#6ee7b7", + "rgb": "rgb(110,231,183)", + "hsl": "hsl(156.2,71.6%,66.9%)", + "rgbChannel": "110 231 183", + "hslChannel": "156.2 71.6% 66.9%" + }, + { + "scale": 400, + "hex": "#34d399", + "rgb": "rgb(52,211,153)", + "hsl": "hsl(158.1,64.4%,51.6%)", + "rgbChannel": "52 211 153", + "hslChannel": "158.1 64.4% 51.6%" + }, + { + "scale": 500, + "hex": "#10b981", + "rgb": "rgb(16,185,129)", + "hsl": "hsl(160.1,84.1%,39.4%)", + "rgbChannel": "16 185 129", + "hslChannel": "160.1 84.1% 39.4%" + }, + { + "scale": 600, + "hex": "#059669", + "rgb": "rgb(5,150,105)", + "hsl": "hsl(161.4,93.5%,30.4%)", + "rgbChannel": "5 150 105", + "hslChannel": "161.4 93.5% 30.4%" + }, + { + "scale": 700, + "hex": "#047857", + "rgb": "rgb(4,120,87)", + "hsl": "hsl(162.9,93.5%,24.3%)", + "rgbChannel": "4 120 87", + "hslChannel": "162.9 93.5% 24.3%" + }, + { + "scale": 800, + "hex": "#065f46", + "rgb": "rgb(6,95,70)", + "hsl": "hsl(163.1,88.1%,19.8%)", + "rgbChannel": "6 95 70", + "hslChannel": "163.1 88.1% 19.8%" + }, + { + "scale": 900, + "hex": "#064e3b", + "rgb": "rgb(6,78,59)", + "hsl": "hsl(164.2,85.7%,16.5%)", + "rgbChannel": "6 78 59", + "hslChannel": "164.2 85.7% 16.5%" + }, + { + "scale": 950, + "hex": "#022c22", + "rgb": "rgb(2,44,34)", + "hsl": "hsl(165.7,91.3%,9%)", + "rgbChannel": "2 44 34", + "hslChannel": "165.7 91.3% 9%" + } + ], + "teal": [ + { + "scale": 50, + "hex": "#f0fdfa", + "rgb": "rgb(240,253,250)", + "hsl": "hsl(166.2,76.5%,96.7%)", + "rgbChannel": "240 253 250", + "hslChannel": "166.2 76.5% 96.7%" + }, + { + "scale": 100, + "hex": "#ccfbf1", + "rgb": "rgb(204,251,241)", + "hsl": "hsl(167.2,85.5%,89.2%)", + "rgbChannel": "204 251 241", + "hslChannel": "167.2 85.5% 89.2%" + }, + { + "scale": 200, + "hex": "#99f6e4", + "rgb": "rgb(153,246,228)", + "hsl": "hsl(168.4,83.8%,78.2%)", + "rgbChannel": "153 246 228", + "hslChannel": "168.4 83.8% 78.2%" + }, + { + "scale": 300, + "hex": "#5eead4", + "rgb": "rgb(94,234,212)", + "hsl": "hsl(170.6,76.9%,64.3%)", + "rgbChannel": "94 234 212", + "hslChannel": "170.6 76.9% 64.3%" + }, + { + "scale": 400, + "hex": "#2dd4bf", + "rgb": "rgb(45,212,191)", + "hsl": "hsl(172.5,66%,50.4%)", + "rgbChannel": "45 212 191", + "hslChannel": "172.5 66% 50.4%" + }, + { + "scale": 500, + "hex": "#14b8a6", + "rgb": "rgb(20,184,166)", + "hsl": "hsl(173.4,80.4%,40%)", + "rgbChannel": "20 184 166", + "hslChannel": "173.4 80.4% 40%" + }, + { + "scale": 600, + "hex": "#0d9488", + "rgb": "rgb(13,148,136)", + "hsl": "hsl(174.7,83.9%,31.6%)", + "rgbChannel": "13 148 136", + "hslChannel": "174.7 83.9% 31.6%" + }, + { + "scale": 700, + "hex": "#0f766e", + "rgb": "rgb(15,118,110)", + "hsl": "hsl(175.3,77.4%,26.1%)", + "rgbChannel": "15 118 110", + "hslChannel": "175.3 77.4% 26.1%" + }, + { + "scale": 800, + "hex": "#115e59", + "rgb": "rgb(17,94,89)", + "hsl": "hsl(176.1,69.4%,21.8%)", + "rgbChannel": "17 94 89", + "hslChannel": "176.1 69.4% 21.8%" + }, + { + "scale": 900, + "hex": "#134e4a", + "rgb": "rgb(19,78,74)", + "hsl": "hsl(175.9,60.8%,19%)", + "rgbChannel": "19 78 74", + "hslChannel": "175.9 60.8% 19%" + }, + { + "scale": 950, + "hex": "#042f2e", + "rgb": "rgb(4,47,46)", + "hsl": "hsl(178.6,84.3%,10%)", + "rgbChannel": "4 47 46", + "hslChannel": "178.6 84.3% 10%" + } + ], + "cyan": [ + { + "scale": 50, + "hex": "#ecfeff", + "rgb": "rgb(236,254,255)", + "hsl": "hsl(183.2,100%,96.3%)", + "rgbChannel": "236 254 255", + "hslChannel": "183.2 100% 96.3%" + }, + { + "scale": 100, + "hex": "#cffafe", + "rgb": "rgb(207,250,254)", + "hsl": "hsl(185.1,95.9%,90.4%)", + "rgbChannel": "207 250 254", + "hslChannel": "185.1 95.9% 90.4%" + }, + { + "scale": 200, + "hex": "#a5f3fc", + "rgb": "rgb(165,243,252)", + "hsl": "hsl(186.2,93.5%,81.8%)", + "rgbChannel": "165 243 252", + "hslChannel": "186.2 93.5% 81.8%" + }, + { + "scale": 300, + "hex": "#67e8f9", + "rgb": "rgb(103,232,249)", + "hsl": "hsl(187,92.4%,69%)", + "rgbChannel": "103 232 249", + "hslChannel": "187 92.4% 69%" + }, + { + "scale": 400, + "hex": "#22d3ee", + "rgb": "rgb(34,211,238)", + "hsl": "hsl(187.9,85.7%,53.3%)", + "rgbChannel": "34 211 238", + "hslChannel": "187.9 85.7% 53.3%" + }, + { + "scale": 500, + "hex": "#06b6d4", + "rgb": "rgb(6,182,212)", + "hsl": "hsl(188.7,94.5%,42.7%)", + "rgbChannel": "6 182 212", + "hslChannel": "188.7 94.5% 42.7%" + }, + { + "scale": 600, + "hex": "#0891b2", + "rgb": "rgb(8,145,178)", + "hsl": "hsl(191.6,91.4%,36.5%)", + "rgbChannel": "8 145 178", + "hslChannel": "191.6 91.4% 36.5%" + }, + { + "scale": 700, + "hex": "#0e7490", + "rgb": "rgb(14,116,144)", + "hsl": "hsl(192.9,82.3%,31%)", + "rgbChannel": "14 116 144", + "hslChannel": "192.9 82.3% 31%" + }, + { + "scale": 800, + "hex": "#155e75", + "rgb": "rgb(21,94,117)", + "hsl": "hsl(194.4,69.6%,27.1%)", + "rgbChannel": "21 94 117", + "hslChannel": "194.4 69.6% 27.1%" + }, + { + "scale": 900, + "hex": "#164e63", + "rgb": "rgb(22,78,99)", + "hsl": "hsl(196.4,63.6%,23.7%)", + "rgbChannel": "22 78 99", + "hslChannel": "196.4 63.6% 23.7%" + }, + { + "scale": 950, + "hex": "#083344", + "rgb": "rgb(8,51,68)", + "hsl": "hsl(197,78.9%,14.9%)", + "rgbChannel": "8 51 68", + "hslChannel": "197 78.9% 14.9%" + } + ], + "sky": [ + { + "scale": 50, + "hex": "#f0f9ff", + "rgb": "rgb(240,249,255)", + "hsl": "hsl(204,100%,97.1%)", + "rgbChannel": "240 249 255", + "hslChannel": "204 100% 97.1%" + }, + { + "scale": 100, + "hex": "#e0f2fe", + "rgb": "rgb(224,242,254)", + "hsl": "hsl(204,93.8%,93.7%)", + "rgbChannel": "224 242 254", + "hslChannel": "204 93.8% 93.7%" + }, + { + "scale": 200, + "hex": "#bae6fd", + "rgb": "rgb(186,230,253)", + "hsl": "hsl(200.6,94.4%,86.1%)", + "rgbChannel": "186 230 253", + "hslChannel": "200.6 94.4% 86.1%" + }, + { + "scale": 300, + "hex": "#7dd3fc", + "rgb": "rgb(125,211,252)", + "hsl": "hsl(199.4,95.5%,73.9%)", + "rgbChannel": "125 211 252", + "hslChannel": "199.4 95.5% 73.9%" + }, + { + "scale": 400, + "hex": "#38bdf8", + "rgb": "rgb(56,189,248)", + "hsl": "hsl(198.4,93.2%,59.6%)", + "rgbChannel": "56 189 248", + "hslChannel": "198.4 93.2% 59.6%" + }, + { + "scale": 500, + "hex": "#0ea5e9", + "rgb": "rgb(14,165,233)", + "hsl": "hsl(198.6,88.7%,48.4%)", + "rgbChannel": "14 165 233", + "hslChannel": "198.6 88.7% 48.4%" + }, + { + "scale": 600, + "hex": "#0284c7", + "rgb": "rgb(2,132,199)", + "hsl": "hsl(200.4,98%,39.4%)", + "rgbChannel": "2 132 199", + "hslChannel": "200.4 98% 39.4%" + }, + { + "scale": 700, + "hex": "#0369a1", + "rgb": "rgb(3,105,161)", + "hsl": "hsl(201.3,96.3%,32.2%)", + "rgbChannel": "3 105 161", + "hslChannel": "201.3 96.3% 32.2%" + }, + { + "scale": 800, + "hex": "#075985", + "rgb": "rgb(7,89,133)", + "hsl": "hsl(201,90%,27.5%)", + "rgbChannel": "7 89 133", + "hslChannel": "201 90% 27.5%" + }, + { + "scale": 900, + "hex": "#0c4a6e", + "rgb": "rgb(12,74,110)", + "hsl": "hsl(202,80.3%,23.9%)", + "rgbChannel": "12 74 110", + "hslChannel": "202 80.3% 23.9%" + }, + { + "scale": 950, + "hex": "#082f49", + "rgb": "rgb(8,47,73)", + "hsl": "hsl(204,80.2%,15.9%)", + "rgbChannel": "8 47 73", + "hslChannel": "204 80.2% 15.9%" + } + ], + "blue": [ + { + "scale": 50, + "hex": "#eff6ff", + "rgb": "rgb(239,246,255)", + "hsl": "hsl(213.8,100%,96.9%)", + "rgbChannel": "239 246 255", + "hslChannel": "213.8 100% 96.9%" + }, + { + "scale": 100, + "hex": "#dbeafe", + "rgb": "rgb(219,234,254)", + "hsl": "hsl(214.3,94.6%,92.7%)", + "rgbChannel": "219 234 254", + "hslChannel": "214.3 94.6% 92.7%" + }, + { + "scale": 200, + "hex": "#bfdbfe", + "rgb": "rgb(191,219,254)", + "hsl": "hsl(213.3,96.9%,87.3%)", + "rgbChannel": "191 219 254", + "hslChannel": "213.3 96.9% 87.3%" + }, + { + "scale": 300, + "hex": "#93c5fd", + "rgb": "rgb(147,197,253)", + "hsl": "hsl(211.7,96.4%,78.4%)", + "rgbChannel": "147 197 253", + "hslChannel": "211.7 96.4% 78.4%" + }, + { + "scale": 400, + "hex": "#60a5fa", + "rgb": "rgb(96,165,250)", + "hsl": "hsl(213.1,93.9%,67.8%)", + "rgbChannel": "96 165 250", + "hslChannel": "213.1 93.9% 67.8%" + }, + { + "scale": 500, + "hex": "#3b82f6", + "rgb": "rgb(59,130,246)", + "hsl": "hsl(217.2,91.2%,59.8%)", + "rgbChannel": "59 130 246", + "hslChannel": "217.2 91.2% 59.8%" + }, + { + "scale": 600, + "hex": "#2563eb", + "rgb": "rgb(37,99,235)", + "hsl": "hsl(221.2,83.2%,53.3%)", + "rgbChannel": "37 99 235", + "hslChannel": "221.2 83.2% 53.3%" + }, + { + "scale": 700, + "hex": "#1d4ed8", + "rgb": "rgb(29,78,216)", + "hsl": "hsl(224.3,76.3%,48%)", + "rgbChannel": "29 78 216", + "hslChannel": "224.3 76.3% 48%" + }, + { + "scale": 800, + "hex": "#1e40af", + "rgb": "rgb(30,64,175)", + "hsl": "hsl(225.9,70.7%,40.2%)", + "rgbChannel": "30 64 175", + "hslChannel": "225.9 70.7% 40.2%" + }, + { + "scale": 900, + "hex": "#1e3a8a", + "rgb": "rgb(30,58,138)", + "hsl": "hsl(224.4,64.3%,32.9%)", + "rgbChannel": "30 58 138", + "hslChannel": "224.4 64.3% 32.9%" + }, + { + "scale": 950, + "hex": "#172554", + "rgb": "rgb(23,37,84)", + "hsl": "hsl(226.2,57%,21%)", + "rgbChannel": "23 37 84", + "hslChannel": "226.2 57% 21%" + } + ], + "indigo": [ + { + "scale": 50, + "hex": "#eef2ff", + "rgb": "rgb(238,242,255)", + "hsl": "hsl(225.9,100%,96.7%)", + "rgbChannel": "238 242 255", + "hslChannel": "225.9 100% 96.7%" + }, + { + "scale": 100, + "hex": "#e0e7ff", + "rgb": "rgb(224,231,255)", + "hsl": "hsl(226.5,100%,93.9%)", + "rgbChannel": "224 231 255", + "hslChannel": "226.5 100% 93.9%" + }, + { + "scale": 200, + "hex": "#c7d2fe", + "rgb": "rgb(199,210,254)", + "hsl": "hsl(228,96.5%,88.8%)", + "rgbChannel": "199 210 254", + "hslChannel": "228 96.5% 88.8%" + }, + { + "scale": 300, + "hex": "#a5b4fc", + "rgb": "rgb(165,180,252)", + "hsl": "hsl(229.7,93.5%,81.8%)", + "rgbChannel": "165 180 252", + "hslChannel": "229.7 93.5% 81.8%" + }, + { + "scale": 400, + "hex": "#818cf8", + "rgb": "rgb(129,140,248)", + "hsl": "hsl(234.5,89.5%,73.9%)", + "rgbChannel": "129 140 248", + "hslChannel": "234.5 89.5% 73.9%" + }, + { + "scale": 500, + "hex": "#6366f1", + "rgb": "rgb(99,102,241)", + "hsl": "hsl(238.7,83.5%,66.7%)", + "rgbChannel": "99 102 241", + "hslChannel": "238.7 83.5% 66.7%" + }, + { + "scale": 600, + "hex": "#4f46e5", + "rgb": "rgb(79,70,229)", + "hsl": "hsl(243.4,75.4%,58.6%)", + "rgbChannel": "79 70 229", + "hslChannel": "243.4 75.4% 58.6%" + }, + { + "scale": 700, + "hex": "#4338ca", + "rgb": "rgb(67,56,202)", + "hsl": "hsl(244.5,57.9%,50.6%)", + "rgbChannel": "67 56 202", + "hslChannel": "244.5 57.9% 50.6%" + }, + { + "scale": 800, + "hex": "#3730a3", + "rgb": "rgb(55,48,163)", + "hsl": "hsl(243.7,54.5%,41.4%)", + "rgbChannel": "55 48 163", + "hslChannel": "243.7 54.5% 41.4%" + }, + { + "scale": 900, + "hex": "#312e81", + "rgb": "rgb(49,46,129)", + "hsl": "hsl(242.2,47.4%,34.3%)", + "rgbChannel": "49 46 129", + "hslChannel": "242.2 47.4% 34.3%" + }, + { + "scale": 950, + "hex": "#1e1b4b", + "rgb": "rgb(30,27,75)", + "hsl": "hsl(243.8,47.1%,20%)", + "rgbChannel": "30 27 75", + "hslChannel": "243.8 47.1% 20%" + } + ], + "violet": [ + { + "scale": 50, + "hex": "#f5f3ff", + "rgb": "rgb(245,243,255)", + "hsl": "hsl(250,100%,97.6%)", + "rgbChannel": "245 243 255", + "hslChannel": "250 100% 97.6%" + }, + { + "scale": 100, + "hex": "#ede9fe", + "rgb": "rgb(237,233,254)", + "hsl": "hsl(251.4,91.3%,95.5%)", + "rgbChannel": "237 233 254", + "hslChannel": "251.4 91.3% 95.5%" + }, + { + "scale": 200, + "hex": "#ddd6fe", + "rgb": "rgb(221,214,254)", + "hsl": "hsl(250.5,95.2%,91.8%)", + "rgbChannel": "221 214 254", + "hslChannel": "250.5 95.2% 91.8%" + }, + { + "scale": 300, + "hex": "#c4b5fd", + "rgb": "rgb(196,181,253)", + "hsl": "hsl(252.5,94.7%,85.1%)", + "rgbChannel": "196 181 253", + "hslChannel": "252.5 94.7% 85.1%" + }, + { + "scale": 400, + "hex": "#a78bfa", + "rgb": "rgb(167,139,250)", + "hsl": "hsl(255.1,91.7%,76.3%)", + "rgbChannel": "167 139 250", + "hslChannel": "255.1 91.7% 76.3%" + }, + { + "scale": 500, + "hex": "#8b5cf6", + "rgb": "rgb(139,92,246)", + "hsl": "hsl(258.3,89.5%,66.3%)", + "rgbChannel": "139 92 246", + "hslChannel": "258.3 89.5% 66.3%" + }, + { + "scale": 600, + "hex": "#7c3aed", + "rgb": "rgb(124,58,237)", + "hsl": "hsl(262.1,83.3%,57.8%)", + "rgbChannel": "124 58 237", + "hslChannel": "262.1 83.3% 57.8%" + }, + { + "scale": 700, + "hex": "#6d28d9", + "rgb": "rgb(109,40,217)", + "hsl": "hsl(263.4,70%,50.4%)", + "rgbChannel": "109 40 217", + "hslChannel": "263.4 70% 50.4%" + }, + { + "scale": 800, + "hex": "#5b21b6", + "rgb": "rgb(91,33,182)", + "hsl": "hsl(263.4,69.3%,42.2%)", + "rgbChannel": "91 33 182", + "hslChannel": "263.4 69.3% 42.2%" + }, + { + "scale": 900, + "hex": "#4c1d95", + "rgb": "rgb(76,29,149)", + "hsl": "hsl(263.5,67.4%,34.9%)", + "rgbChannel": "76 29 149", + "hslChannel": "263.5 67.4% 34.9%" + }, + { + "scale": 950, + "hex": "#1e1b4b", + "rgb": "rgb(46,16,101)", + "hsl": "hsl(261.2,72.6%,22.9%)", + "rgbChannel": "46 16 101", + "hslChannel": "261.2 72.6% 22.9%" + } + ], + "purple": [ + { + "scale": 50, + "hex": "#faf5ff", + "rgb": "rgb(250,245,255)", + "hsl": "hsl(270,100%,98%)", + "rgbChannel": "250 245 255", + "hslChannel": "270 100% 98%" + }, + { + "scale": 100, + "hex": "#f3e8ff", + "rgb": "rgb(243,232,255)", + "hsl": "hsl(268.7,100%,95.5%)", + "rgbChannel": "243 232 255", + "hslChannel": "268.7 100% 95.5%" + }, + { + "scale": 200, + "hex": "#e9d5ff", + "rgb": "rgb(233,213,255)", + "hsl": "hsl(268.6,100%,91.8%)", + "rgbChannel": "233 213 255", + "hslChannel": "268.6 100% 91.8%" + }, + { + "scale": 300, + "hex": "#d8b4fe", + "rgb": "rgb(216,180,254)", + "hsl": "hsl(269.2,97.4%,85.1%)", + "rgbChannel": "216 180 254", + "hslChannel": "269.2 97.4% 85.1%" + }, + { + "scale": 400, + "hex": "#c084fc", + "rgb": "rgb(192,132,252)", + "hsl": "hsl(270,95.2%,75.3%)", + "rgbChannel": "192 132 252", + "hslChannel": "270 95.2% 75.3%" + }, + { + "scale": 500, + "hex": "#a855f7", + "rgb": "rgb(168,85,247)", + "hsl": "hsl(270.7,91%,65.1%)", + "rgbChannel": "168 85 247", + "hslChannel": "270.7 91% 65.1%" + }, + { + "scale": 600, + "hex": "#9333ea", + "rgb": "rgb(147,51,234)", + "hsl": "hsl(271.5,81.3%,55.9%)", + "rgbChannel": "147 51 234", + "hslChannel": "271.5 81.3% 55.9%" + }, + { + "scale": 700, + "hex": "#7e22ce", + "rgb": "rgb(126,34,206)", + "hsl": "hsl(272.1,71.7%,47.1%)", + "rgbChannel": "126 34 206", + "hslChannel": "272.1 71.7% 47.1%" + }, + { + "scale": 800, + "hex": "#6b21a8", + "rgb": "rgb(107,33,168)", + "hsl": "hsl(272.9,67.2%,39.4%)", + "rgbChannel": "107 33 168", + "hslChannel": "272.9 67.2% 39.4%" + }, + { + "scale": 900, + "hex": "#581c87", + "rgb": "rgb(88,28,135)", + "hsl": "hsl(273.6,65.6%,32%)", + "rgbChannel": "88 28 135", + "hslChannel": "273.6 65.6% 32%" + }, + { + "scale": 950, + "hex": "#3b0764", + "rgb": "rgb(59,7,100)", + "hsl": "hsl(273.5,86.9%,21%)", + "rgbChannel": "59 7 100", + "hslChannel": "273.5 86.9% 21%" + } + ], + "fuchsia": [ + { + "scale": 50, + "hex": "#fdf4ff", + "rgb": "rgb(253,244,255)", + "hsl": "hsl(289.1,100%,97.8%)", + "rgbChannel": "253 244 255", + "hslChannel": "289.1 100% 97.8%" + }, + { + "scale": 100, + "hex": "#fae8ff", + "rgb": "rgb(250,232,255)", + "hsl": "hsl(287,100%,95.5%)", + "rgbChannel": "250 232 255", + "hslChannel": "287 100% 95.5%" + }, + { + "scale": 200, + "hex": "#f5d0fe", + "rgb": "rgb(245,208,254)", + "hsl": "hsl(288.3,95.8%,90.6%)", + "rgbChannel": "245 208 254", + "hslChannel": "288.3 95.8% 90.6%" + }, + { + "scale": 300, + "hex": "#f0abfc", + "rgb": "rgb(240,171,252)", + "hsl": "hsl(291.1,93.1%,82.9%)", + "rgbChannel": "240 171 252", + "hslChannel": "291.1 93.1% 82.9%" + }, + { + "scale": 400, + "hex": "#e879f9", + "rgb": "rgb(232,121,249)", + "hsl": "hsl(292,91.4%,72.5%)", + "rgbChannel": "232 121 249", + "hslChannel": "292 91.4% 72.5%" + }, + { + "scale": 500, + "hex": "#d946ef", + "rgb": "rgb(217,70,239)", + "hsl": "hsl(292.2,84.1%,60.6%)", + "rgbChannel": "217 70 239", + "hslChannel": "292.2 84.1% 60.6%" + }, + { + "scale": 600, + "hex": "#c026d3", + "rgb": "rgb(192,38,211)", + "hsl": "hsl(293.4,69.5%,48.8%)", + "rgbChannel": "192 38 211", + "hslChannel": "293.4 69.5% 48.8%" + }, + { + "scale": 700, + "hex": "#a21caf", + "rgb": "rgb(162,28,175)", + "hsl": "hsl(294.7,72.4%,39.8%)", + "rgbChannel": "162 28 175", + "hslChannel": "294.7 72.4% 39.8%" + }, + { + "scale": 800, + "hex": "#86198f", + "rgb": "rgb(134,25,143)", + "hsl": "hsl(295.4,70.2%,32.9%)", + "rgbChannel": "134 25 143", + "hslChannel": "295.4 70.2% 32.9%" + }, + { + "scale": 900, + "hex": "#701a75", + "rgb": "rgb(112,26,117)", + "hsl": "hsl(296.7,63.6%,28%)", + "rgbChannel": "112 26 117", + "hslChannel": "296.7 63.6% 28%" + }, + { + "scale": 950, + "hex": "#4a044e", + "rgb": "rgb(74,4,78)", + "hsl": "hsl(296.8,90.2%,16.1%)", + "rgbChannel": "74 4 78", + "hslChannel": "296.8 90.2% 16.1%" + } + ], + "pink": [ + { + "scale": 50, + "hex": "#fdf2f8", + "rgb": "rgb(253,242,248)", + "hsl": "hsl(327.3,73.3%,97.1%)", + "rgbChannel": "253 242 248", + "hslChannel": "327.3 73.3% 97.1%" + }, + { + "scale": 100, + "hex": "#fce7f3", + "rgb": "rgb(252,231,243)", + "hsl": "hsl(325.7,77.8%,94.7%)", + "rgbChannel": "252 231 243", + "hslChannel": "325.7 77.8% 94.7%" + }, + { + "scale": 200, + "hex": "#fbcfe8", + "rgb": "rgb(251,207,232)", + "hsl": "hsl(325.9,84.6%,89.8%)", + "rgbChannel": "251 207 232", + "hslChannel": "325.9 84.6% 89.8%" + }, + { + "scale": 300, + "hex": "#f9a8d4", + "rgb": "rgb(249,168,212)", + "hsl": "hsl(327.4,87.1%,81.8%)", + "rgbChannel": "249 168 212", + "hslChannel": "327.4 87.1% 81.8%" + }, + { + "scale": 400, + "hex": "#f472b6", + "rgb": "rgb(244,114,182)", + "hsl": "hsl(328.6,85.5%,70.2%)", + "rgbChannel": "244 114 182", + "hslChannel": "328.6 85.5% 70.2%" + }, + { + "scale": 500, + "hex": "#ec4899", + "rgb": "rgb(236,72,153)", + "hsl": "hsl(330.4,81.2%,60.4%)", + "rgbChannel": "236 72 153", + "hslChannel": "330.4 81.2% 60.4%" + }, + { + "scale": 600, + "hex": "#db2777", + "rgb": "rgb(219,39,119)", + "hsl": "hsl(333.3,71.4%,50.6%)", + "rgbChannel": "219 39 119", + "hslChannel": "333.3 71.4% 50.6%" + }, + { + "scale": 700, + "hex": "#be185d", + "rgb": "rgb(190,24,93)", + "hsl": "hsl(335.1,77.6%,42%)", + "rgbChannel": "190 24 93", + "hslChannel": "335.1 77.6% 42%" + }, + { + "scale": 800, + "hex": "#9d174d", + "rgb": "rgb(157,23,77)", + "hsl": "hsl(335.8,74.4%,35.3%)", + "rgbChannel": "157 23 77", + "hslChannel": "335.8 74.4% 35.3%" + }, + { + "scale": 900, + "hex": "#831843", + "rgb": "rgb(131,24,67)", + "hsl": "hsl(335.9,69%,30.4%)", + "rgbChannel": "131 24 67", + "hslChannel": "335.9 69% 30.4%" + }, + { + "scale": 950, + "hex": "#500724", + "rgb": "rgb(80,7,36)", + "hsl": "hsl(336.2,83.9%,17.1%)", + "rgbChannel": "80 7 36", + "hslChannel": "336.2 83.9% 17.1%" + } + ], + "rose": [ + { + "scale": 50, + "hex": "#fff1f2", + "rgb": "rgb(255,241,242)", + "hsl": "hsl(355.7,100%,97.3%)", + "rgbChannel": "255 241 242", + "hslChannel": "355.7 100% 97.3%" + }, + { + "scale": 100, + "hex": "#ffe4e6", + "rgb": "rgb(255,228,230)", + "hsl": "hsl(355.6,100%,94.7%)", + "rgbChannel": "255 228 230", + "hslChannel": "355.6 100% 94.7%" + }, + { + "scale": 200, + "hex": "#fecdd3", + "rgb": "rgb(254,205,211)", + "hsl": "hsl(352.7,96.1%,90%)", + "rgbChannel": "254 205 211", + "hslChannel": "352.7 96.1% 90%" + }, + { + "scale": 300, + "hex": "#fda4af", + "rgb": "rgb(253,164,175)", + "hsl": "hsl(352.6,95.7%,81.8%)", + "rgbChannel": "253 164 175", + "hslChannel": "352.6 95.7% 81.8%" + }, + { + "scale": 400, + "hex": "#fb7185", + "rgb": "rgb(251,113,133)", + "hsl": "hsl(351.3,94.5%,71.4%)", + "rgbChannel": "251 113 133", + "hslChannel": "351.3 94.5% 71.4%" + }, + { + "scale": 500, + "hex": "#f43f5e", + "rgb": "rgb(244,63,94)", + "hsl": "hsl(349.7,89.2%,60.2%)", + "rgbChannel": "244 63 94", + "hslChannel": "349.7 89.2% 60.2%" + }, + { + "scale": 600, + "hex": "#e11d48", + "rgb": "rgb(225,29,72)", + "hsl": "hsl(346.8,77.2%,49.8%)", + "rgbChannel": "225 29 72", + "hslChannel": "346.8 77.2% 49.8%" + }, + { + "scale": 700, + "hex": "#be123c", + "rgb": "rgb(190,18,60)", + "hsl": "hsl(345.3,82.7%,40.8%)", + "rgbChannel": "190 18 60", + "hslChannel": "345.3 82.7% 40.8%" + }, + { + "scale": 800, + "hex": "#9f1239", + "rgb": "rgb(159,18,57)", + "hsl": "hsl(343.4,79.7%,34.7%)", + "rgbChannel": "159 18 57", + "hslChannel": "343.4 79.7% 34.7%" + }, + { + "scale": 900, + "hex": "#881337", + "rgb": "rgb(136,19,55)", + "hsl": "hsl(341.5,75.5%,30.4%)", + "rgbChannel": "136 19 55", + "hslChannel": "341.5 75.5% 30.4%" + }, + { + "scale": 950, + "hex": "#4c0519", + "rgb": "rgb(76,5,25)", + "hsl": "hsl(343.1,87.7%,15.9%)", + "rgbChannel": "76 5 25", + "hslChannel": "343.1 87.7% 15.9%" + } + ] +} diff --git a/apps/www/src/public/registry/colors/neutral.json b/apps/www/src/public/registry/colors/neutral.json new file mode 100644 index 00000000..2f29127b --- /dev/null +++ b/apps/www/src/public/registry/colors/neutral.json @@ -0,0 +1,92 @@ +{ + "inlineColors": { + "light": { + "background": "white", + "foreground": "neutral-950", + "card": "white", + "card-foreground": "neutral-950", + "popover": "white", + "popover-foreground": "neutral-950", + "primary": "neutral-900", + "primary-foreground": "neutral-50", + "secondary": "neutral-100", + "secondary-foreground": "neutral-900", + "muted": "neutral-100", + "muted-foreground": "neutral-500", + "accent": "neutral-100", + "accent-foreground": "neutral-900", + "destructive": "red-500", + "destructive-foreground": "neutral-50", + "border": "neutral-200", + "input": "neutral-200", + "ring": "neutral-950" + }, + "dark": { + "background": "neutral-950", + "foreground": "neutral-50", + "card": "neutral-950", + "card-foreground": "neutral-50", + "popover": "neutral-950", + "popover-foreground": "neutral-50", + "primary": "neutral-50", + "primary-foreground": "neutral-900", + "secondary": "neutral-800", + "secondary-foreground": "neutral-50", + "muted": "neutral-800", + "muted-foreground": "neutral-400", + "accent": "neutral-800", + "accent-foreground": "neutral-50", + "destructive": "red-900", + "destructive-foreground": "neutral-50", + "border": "neutral-800", + "input": "neutral-800", + "ring": "neutral-300" + } + }, + "cssVars": { + "light": { + "background": "0 0% 100%", + "foreground": "0 0% 3.9%", + "card": "0 0% 100%", + "card-foreground": "0 0% 3.9%", + "popover": "0 0% 100%", + "popover-foreground": "0 0% 3.9%", + "primary": "0 0% 9%", + "primary-foreground": "0 0% 98%", + "secondary": "0 0% 96.1%", + "secondary-foreground": "0 0% 9%", + "muted": "0 0% 96.1%", + "muted-foreground": "0 0% 45.1%", + "accent": "0 0% 96.1%", + "accent-foreground": "0 0% 9%", + "destructive": "0 84.2% 60.2%", + "destructive-foreground": "0 0% 98%", + "border": "0 0% 89.8%", + "input": "0 0% 89.8%", + "ring": "0 0% 3.9%" + }, + "dark": { + "background": "0 0% 3.9%", + "foreground": "0 0% 98%", + "card": "0 0% 3.9%", + "card-foreground": "0 0% 98%", + "popover": "0 0% 3.9%", + "popover-foreground": "0 0% 98%", + "primary": "0 0% 98%", + "primary-foreground": "0 0% 9%", + "secondary": "0 0% 14.9%", + "secondary-foreground": "0 0% 98%", + "muted": "0 0% 14.9%", + "muted-foreground": "0 0% 63.9%", + "accent": "0 0% 14.9%", + "accent-foreground": "0 0% 98%", + "destructive": "0 62.8% 30.6%", + "destructive-foreground": "0 0% 98%", + "border": "0 0% 14.9%", + "input": "0 0% 14.9%", + "ring": "0 0% 83.1%" + } + }, + "inlineColorsTemplate": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n", + "cssVarsTemplate": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n \n@layer base {\n :root {\n --background: 0 0% 100%;\n --foreground: 0 0% 3.9%;\n\n --card: 0 0% 100%;\n --card-foreground: 0 0% 3.9%;\n \n --popover: 0 0% 100%;\n --popover-foreground: 0 0% 3.9%;\n \n --primary: 0 0% 9%;\n --primary-foreground: 0 0% 98%;\n \n --secondary: 0 0% 96.1%;\n --secondary-foreground: 0 0% 9%;\n \n --muted: 0 0% 96.1%;\n --muted-foreground: 0 0% 45.1%;\n \n --accent: 0 0% 96.1%;\n --accent-foreground: 0 0% 9%;\n \n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 0 0% 98%;\n\n --border: 0 0% 89.8%;\n --input: 0 0% 89.8%;\n --ring: 0 0% 3.9%;\n \n --radius: 0.5rem;\n }\n \n .dark {\n --background: 0 0% 3.9%;\n --foreground: 0 0% 98%;\n \n --card: 0 0% 3.9%;\n --card-foreground: 0 0% 98%;\n \n --popover: 0 0% 3.9%;\n --popover-foreground: 0 0% 98%;\n \n --primary: 0 0% 98%;\n --primary-foreground: 0 0% 9%;\n \n --secondary: 0 0% 14.9%;\n --secondary-foreground: 0 0% 98%;\n \n --muted: 0 0% 14.9%;\n --muted-foreground: 0 0% 63.9%;\n \n --accent: 0 0% 14.9%;\n --accent-foreground: 0 0% 98%;\n \n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 0 0% 98%;\n \n --border: 0 0% 14.9%;\n --input: 0 0% 14.9%;\n --ring: 0 0% 83.1%;\n }\n}\n \n@layer base {\n * {\n @apply border-border;\n }\n body {\n @apply bg-background text-foreground;\n }\n}" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/colors/slate.json b/apps/www/src/public/registry/colors/slate.json new file mode 100644 index 00000000..5db830be --- /dev/null +++ b/apps/www/src/public/registry/colors/slate.json @@ -0,0 +1,92 @@ +{ + "inlineColors": { + "light": { + "background": "white", + "foreground": "slate-950", + "card": "white", + "card-foreground": "slate-950", + "popover": "white", + "popover-foreground": "slate-950", + "primary": "slate-900", + "primary-foreground": "slate-50", + "secondary": "slate-100", + "secondary-foreground": "slate-900", + "muted": "slate-100", + "muted-foreground": "slate-500", + "accent": "slate-100", + "accent-foreground": "slate-900", + "destructive": "red-500", + "destructive-foreground": "slate-50", + "border": "slate-200", + "input": "slate-200", + "ring": "slate-950" + }, + "dark": { + "background": "slate-950", + "foreground": "slate-50", + "card": "slate-950", + "card-foreground": "slate-50", + "popover": "slate-950", + "popover-foreground": "slate-50", + "primary": "slate-50", + "primary-foreground": "slate-900", + "secondary": "slate-800", + "secondary-foreground": "slate-50", + "muted": "slate-800", + "muted-foreground": "slate-400", + "accent": "slate-800", + "accent-foreground": "slate-50", + "destructive": "red-900", + "destructive-foreground": "slate-50", + "border": "slate-800", + "input": "slate-800", + "ring": "slate-300" + } + }, + "cssVars": { + "light": { + "background": "0 0% 100%", + "foreground": "222.2 84% 4.9%", + "card": "0 0% 100%", + "card-foreground": "222.2 84% 4.9%", + "popover": "0 0% 100%", + "popover-foreground": "222.2 84% 4.9%", + "primary": "222.2 47.4% 11.2%", + "primary-foreground": "210 40% 98%", + "secondary": "210 40% 96.1%", + "secondary-foreground": "222.2 47.4% 11.2%", + "muted": "210 40% 96.1%", + "muted-foreground": "215.4 16.3% 46.9%", + "accent": "210 40% 96.1%", + "accent-foreground": "222.2 47.4% 11.2%", + "destructive": "0 84.2% 60.2%", + "destructive-foreground": "210 40% 98%", + "border": "214.3 31.8% 91.4%", + "input": "214.3 31.8% 91.4%", + "ring": "222.2 84% 4.9%" + }, + "dark": { + "background": "222.2 84% 4.9%", + "foreground": "210 40% 98%", + "card": "222.2 84% 4.9%", + "card-foreground": "210 40% 98%", + "popover": "222.2 84% 4.9%", + "popover-foreground": "210 40% 98%", + "primary": "210 40% 98%", + "primary-foreground": "222.2 47.4% 11.2%", + "secondary": "217.2 32.6% 17.5%", + "secondary-foreground": "210 40% 98%", + "muted": "217.2 32.6% 17.5%", + "muted-foreground": "215 20.2% 65.1%", + "accent": "217.2 32.6% 17.5%", + "accent-foreground": "210 40% 98%", + "destructive": "0 62.8% 30.6%", + "destructive-foreground": "210 40% 98%", + "border": "217.2 32.6% 17.5%", + "input": "217.2 32.6% 17.5%", + "ring": "212.7 26.8% 83.9%" + } + }, + "inlineColorsTemplate": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n", + "cssVarsTemplate": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n \n@layer base {\n :root {\n --background: 0 0% 100%;\n --foreground: 222.2 84% 4.9%;\n\n --card: 0 0% 100%;\n --card-foreground: 222.2 84% 4.9%;\n \n --popover: 0 0% 100%;\n --popover-foreground: 222.2 84% 4.9%;\n \n --primary: 222.2 47.4% 11.2%;\n --primary-foreground: 210 40% 98%;\n \n --secondary: 210 40% 96.1%;\n --secondary-foreground: 222.2 47.4% 11.2%;\n \n --muted: 210 40% 96.1%;\n --muted-foreground: 215.4 16.3% 46.9%;\n \n --accent: 210 40% 96.1%;\n --accent-foreground: 222.2 47.4% 11.2%;\n \n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 210 40% 98%;\n\n --border: 214.3 31.8% 91.4%;\n --input: 214.3 31.8% 91.4%;\n --ring: 222.2 84% 4.9%;\n \n --radius: 0.5rem;\n }\n \n .dark {\n --background: 222.2 84% 4.9%;\n --foreground: 210 40% 98%;\n \n --card: 222.2 84% 4.9%;\n --card-foreground: 210 40% 98%;\n \n --popover: 222.2 84% 4.9%;\n --popover-foreground: 210 40% 98%;\n \n --primary: 210 40% 98%;\n --primary-foreground: 222.2 47.4% 11.2%;\n \n --secondary: 217.2 32.6% 17.5%;\n --secondary-foreground: 210 40% 98%;\n \n --muted: 217.2 32.6% 17.5%;\n --muted-foreground: 215 20.2% 65.1%;\n \n --accent: 217.2 32.6% 17.5%;\n --accent-foreground: 210 40% 98%;\n \n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 210 40% 98%;\n \n --border: 217.2 32.6% 17.5%;\n --input: 217.2 32.6% 17.5%;\n --ring: 212.7 26.8% 83.9%;\n }\n}\n \n@layer base {\n * {\n @apply border-border;\n }\n body {\n @apply bg-background text-foreground;\n }\n}" +} diff --git a/apps/www/src/public/registry/colors/stone.json b/apps/www/src/public/registry/colors/stone.json new file mode 100644 index 00000000..e06a1346 --- /dev/null +++ b/apps/www/src/public/registry/colors/stone.json @@ -0,0 +1,92 @@ +{ + "inlineColors": { + "light": { + "background": "white", + "foreground": "stone-950", + "card": "white", + "card-foreground": "stone-950", + "popover": "white", + "popover-foreground": "stone-950", + "primary": "stone-900", + "primary-foreground": "stone-50", + "secondary": "stone-100", + "secondary-foreground": "stone-900", + "muted": "stone-100", + "muted-foreground": "stone-500", + "accent": "stone-100", + "accent-foreground": "stone-900", + "destructive": "red-500", + "destructive-foreground": "stone-50", + "border": "stone-200", + "input": "stone-200", + "ring": "stone-950" + }, + "dark": { + "background": "stone-950", + "foreground": "stone-50", + "card": "stone-950", + "card-foreground": "stone-50", + "popover": "stone-950", + "popover-foreground": "stone-50", + "primary": "stone-50", + "primary-foreground": "stone-900", + "secondary": "stone-800", + "secondary-foreground": "stone-50", + "muted": "stone-800", + "muted-foreground": "stone-400", + "accent": "stone-800", + "accent-foreground": "stone-50", + "destructive": "red-900", + "destructive-foreground": "stone-50", + "border": "stone-800", + "input": "stone-800", + "ring": "stone-300" + } + }, + "cssVars": { + "light": { + "background": "0 0% 100%", + "foreground": "20 14.3% 4.1%", + "card": "0 0% 100%", + "card-foreground": "20 14.3% 4.1%", + "popover": "0 0% 100%", + "popover-foreground": "20 14.3% 4.1%", + "primary": "24 9.8% 10%", + "primary-foreground": "60 9.1% 97.8%", + "secondary": "60 4.8% 95.9%", + "secondary-foreground": "24 9.8% 10%", + "muted": "60 4.8% 95.9%", + "muted-foreground": "25 5.3% 44.7%", + "accent": "60 4.8% 95.9%", + "accent-foreground": "24 9.8% 10%", + "destructive": "0 84.2% 60.2%", + "destructive-foreground": "60 9.1% 97.8%", + "border": "20 5.9% 90%", + "input": "20 5.9% 90%", + "ring": "20 14.3% 4.1%" + }, + "dark": { + "background": "20 14.3% 4.1%", + "foreground": "60 9.1% 97.8%", + "card": "20 14.3% 4.1%", + "card-foreground": "60 9.1% 97.8%", + "popover": "20 14.3% 4.1%", + "popover-foreground": "60 9.1% 97.8%", + "primary": "60 9.1% 97.8%", + "primary-foreground": "24 9.8% 10%", + "secondary": "12 6.5% 15.1%", + "secondary-foreground": "60 9.1% 97.8%", + "muted": "12 6.5% 15.1%", + "muted-foreground": "24 5.4% 63.9%", + "accent": "12 6.5% 15.1%", + "accent-foreground": "60 9.1% 97.8%", + "destructive": "0 62.8% 30.6%", + "destructive-foreground": "60 9.1% 97.8%", + "border": "12 6.5% 15.1%", + "input": "12 6.5% 15.1%", + "ring": "24 5.7% 82.9%" + } + }, + "inlineColorsTemplate": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n", + "cssVarsTemplate": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n \n@layer base {\n :root {\n --background: 0 0% 100%;\n --foreground: 20 14.3% 4.1%;\n\n --card: 0 0% 100%;\n --card-foreground: 20 14.3% 4.1%;\n \n --popover: 0 0% 100%;\n --popover-foreground: 20 14.3% 4.1%;\n \n --primary: 24 9.8% 10%;\n --primary-foreground: 60 9.1% 97.8%;\n \n --secondary: 60 4.8% 95.9%;\n --secondary-foreground: 24 9.8% 10%;\n \n --muted: 60 4.8% 95.9%;\n --muted-foreground: 25 5.3% 44.7%;\n \n --accent: 60 4.8% 95.9%;\n --accent-foreground: 24 9.8% 10%;\n \n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 60 9.1% 97.8%;\n\n --border: 20 5.9% 90%;\n --input: 20 5.9% 90%;\n --ring: 20 14.3% 4.1%;\n \n --radius: 0.5rem;\n }\n \n .dark {\n --background: 20 14.3% 4.1%;\n --foreground: 60 9.1% 97.8%;\n \n --card: 20 14.3% 4.1%;\n --card-foreground: 60 9.1% 97.8%;\n \n --popover: 20 14.3% 4.1%;\n --popover-foreground: 60 9.1% 97.8%;\n \n --primary: 60 9.1% 97.8%;\n --primary-foreground: 24 9.8% 10%;\n \n --secondary: 12 6.5% 15.1%;\n --secondary-foreground: 60 9.1% 97.8%;\n \n --muted: 12 6.5% 15.1%;\n --muted-foreground: 24 5.4% 63.9%;\n \n --accent: 12 6.5% 15.1%;\n --accent-foreground: 60 9.1% 97.8%;\n \n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 60 9.1% 97.8%;\n \n --border: 12 6.5% 15.1%;\n --input: 12 6.5% 15.1%;\n --ring: 24 5.7% 82.9%;\n }\n}\n \n@layer base {\n * {\n @apply border-border;\n }\n body {\n @apply bg-background text-foreground;\n }\n}" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/colors/zinc.json b/apps/www/src/public/registry/colors/zinc.json new file mode 100644 index 00000000..b13b9e6c --- /dev/null +++ b/apps/www/src/public/registry/colors/zinc.json @@ -0,0 +1,92 @@ +{ + "inlineColors": { + "light": { + "background": "white", + "foreground": "zinc-950", + "card": "white", + "card-foreground": "zinc-950", + "popover": "white", + "popover-foreground": "zinc-950", + "primary": "zinc-900", + "primary-foreground": "zinc-50", + "secondary": "zinc-100", + "secondary-foreground": "zinc-900", + "muted": "zinc-100", + "muted-foreground": "zinc-500", + "accent": "zinc-100", + "accent-foreground": "zinc-900", + "destructive": "red-500", + "destructive-foreground": "zinc-50", + "border": "zinc-200", + "input": "zinc-200", + "ring": "zinc-950" + }, + "dark": { + "background": "zinc-950", + "foreground": "zinc-50", + "card": "zinc-950", + "card-foreground": "zinc-50", + "popover": "zinc-950", + "popover-foreground": "zinc-50", + "primary": "zinc-50", + "primary-foreground": "zinc-900", + "secondary": "zinc-800", + "secondary-foreground": "zinc-50", + "muted": "zinc-800", + "muted-foreground": "zinc-400", + "accent": "zinc-800", + "accent-foreground": "zinc-50", + "destructive": "red-900", + "destructive-foreground": "zinc-50", + "border": "zinc-800", + "input": "zinc-800", + "ring": "zinc-300" + } + }, + "cssVars": { + "light": { + "background": "0 0% 100%", + "foreground": "240 10% 3.9%", + "card": "0 0% 100%", + "card-foreground": "240 10% 3.9%", + "popover": "0 0% 100%", + "popover-foreground": "240 10% 3.9%", + "primary": "240 5.9% 10%", + "primary-foreground": "0 0% 98%", + "secondary": "240 4.8% 95.9%", + "secondary-foreground": "240 5.9% 10%", + "muted": "240 4.8% 95.9%", + "muted-foreground": "240 3.8% 46.1%", + "accent": "240 4.8% 95.9%", + "accent-foreground": "240 5.9% 10%", + "destructive": "0 84.2% 60.2%", + "destructive-foreground": "0 0% 98%", + "border": "240 5.9% 90%", + "input": "240 5.9% 90%", + "ring": "240 10% 3.9%" + }, + "dark": { + "background": "240 10% 3.9%", + "foreground": "0 0% 98%", + "card": "240 10% 3.9%", + "card-foreground": "0 0% 98%", + "popover": "240 10% 3.9%", + "popover-foreground": "0 0% 98%", + "primary": "0 0% 98%", + "primary-foreground": "240 5.9% 10%", + "secondary": "240 3.7% 15.9%", + "secondary-foreground": "0 0% 98%", + "muted": "240 3.7% 15.9%", + "muted-foreground": "240 5% 64.9%", + "accent": "240 3.7% 15.9%", + "accent-foreground": "0 0% 98%", + "destructive": "0 62.8% 30.6%", + "destructive-foreground": "0 0% 98%", + "border": "240 3.7% 15.9%", + "input": "240 3.7% 15.9%", + "ring": "240 4.9% 83.9%" + } + }, + "inlineColorsTemplate": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n", + "cssVarsTemplate": "@tailwind base;\n@tailwind components;\n@tailwind utilities;\n \n@layer base {\n :root {\n --background: 0 0% 100%;\n --foreground: 240 10% 3.9%;\n\n --card: 0 0% 100%;\n --card-foreground: 240 10% 3.9%;\n \n --popover: 0 0% 100%;\n --popover-foreground: 240 10% 3.9%;\n \n --primary: 240 5.9% 10%;\n --primary-foreground: 0 0% 98%;\n \n --secondary: 240 4.8% 95.9%;\n --secondary-foreground: 240 5.9% 10%;\n \n --muted: 240 4.8% 95.9%;\n --muted-foreground: 240 3.8% 46.1%;\n \n --accent: 240 4.8% 95.9%;\n --accent-foreground: 240 5.9% 10%;\n \n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 0 0% 98%;\n\n --border: 240 5.9% 90%;\n --input: 240 5.9% 90%;\n --ring: 240 10% 3.9%;\n \n --radius: 0.5rem;\n }\n \n .dark {\n --background: 240 10% 3.9%;\n --foreground: 0 0% 98%;\n \n --card: 240 10% 3.9%;\n --card-foreground: 0 0% 98%;\n \n --popover: 240 10% 3.9%;\n --popover-foreground: 0 0% 98%;\n \n --primary: 0 0% 98%;\n --primary-foreground: 240 5.9% 10%;\n \n --secondary: 240 3.7% 15.9%;\n --secondary-foreground: 0 0% 98%;\n \n --muted: 240 3.7% 15.9%;\n --muted-foreground: 240 5% 64.9%;\n \n --accent: 240 3.7% 15.9%;\n --accent-foreground: 0 0% 98%;\n \n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 0 0% 98%;\n \n --border: 240 3.7% 15.9%;\n --input: 240 3.7% 15.9%;\n --ring: 240 4.9% 83.9%;\n }\n}\n \n@layer base {\n * {\n @apply border-border;\n }\n body {\n @apply bg-background text-foreground;\n }\n}" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/index.json b/apps/www/src/public/registry/index.json new file mode 100644 index 00000000..78d8c905 --- /dev/null +++ b/apps/www/src/public/registry/index.json @@ -0,0 +1,371 @@ +[ + { + "name": "accordion", + "dependencies": [ + "@radix-ui/react-accordion" + ], + "files": [ + "ui/accordion.tsx" + ], + "type": "components:ui" + }, + { + "name": "alert", + "files": [ + "ui/alert.tsx" + ], + "type": "components:ui" + }, + { + "name": "alert-dialog", + "dependencies": [ + "@radix-ui/react-alert-dialog" + ], + "registryDependencies": [ + "button" + ], + "files": [ + "ui/alert-dialog.tsx" + ], + "type": "components:ui" + }, + { + "name": "aspect-ratio", + "dependencies": [ + "@radix-ui/react-aspect-ratio" + ], + "files": [ + "ui/aspect-ratio.tsx" + ], + "type": "components:ui" + }, + { + "name": "avatar", + "dependencies": [ + "@radix-ui/react-avatar" + ], + "files": [ + "ui/avatar.tsx" + ], + "type": "components:ui" + }, + { + "name": "badge", + "files": [ + "ui/badge.tsx" + ], + "type": "components:ui" + }, + { + "name": "button", + "dependencies": [ + "@radix-ui/react-slot" + ], + "files": [ + "ui/button.tsx" + ], + "type": "components:ui" + }, + { + "name": "calendar", + "dependencies": [ + "react-day-picker", + "date-fns" + ], + "registryDependencies": [ + "button" + ], + "files": [ + "ui/calendar.tsx" + ], + "type": "components:ui" + }, + { + "name": "card", + "files": [ + "ui/card.tsx" + ], + "type": "components:ui" + }, + { + "name": "checkbox", + "dependencies": [ + "@radix-ui/react-checkbox" + ], + "files": [ + "ui/checkbox.tsx" + ], + "type": "components:ui" + }, + { + "name": "collapsible", + "dependencies": [ + "@radix-ui/react-collapsible" + ], + "files": [ + "ui/collapsible.tsx" + ], + "type": "components:ui" + }, + { + "name": "command", + "dependencies": [ + "cmdk" + ], + "registryDependencies": [ + "dialog" + ], + "files": [ + "ui/command.tsx" + ], + "type": "components:ui" + }, + { + "name": "context-menu", + "dependencies": [ + "@radix-ui/react-context-menu" + ], + "files": [ + "ui/context-menu.tsx" + ], + "type": "components:ui" + }, + { + "name": "dialog", + "dependencies": [ + "@radix-ui/react-dialog" + ], + "files": [ + "ui/dialog.tsx" + ], + "type": "components:ui" + }, + { + "name": "dropdown-menu", + "dependencies": [ + "@radix-ui/react-dropdown-menu" + ], + "files": [ + "ui/dropdown-menu.tsx" + ], + "type": "components:ui" + }, + { + "name": "form", + "dependencies": [ + "@radix-ui/react-label", + "@radix-ui/react-slot", + "@hookform/resolvers", + "zod", + "react-hook-form" + ], + "registryDependencies": [ + "button", + "label" + ], + "files": [ + "ui/form.tsx" + ], + "type": "components:ui" + }, + { + "name": "hover-card", + "dependencies": [ + "@radix-ui/react-hover-card" + ], + "files": [ + "ui/hover-card.tsx" + ], + "type": "components:ui" + }, + { + "name": "input", + "files": [ + "ui/input.tsx" + ], + "type": "components:ui" + }, + { + "name": "label", + "dependencies": [ + "@radix-ui/react-label" + ], + "files": [ + "ui/label.tsx" + ], + "type": "components:ui" + }, + { + "name": "menubar", + "dependencies": [ + "@radix-ui/react-menubar" + ], + "files": [ + "ui/menubar.tsx" + ], + "type": "components:ui" + }, + { + "name": "navigation-menu", + "dependencies": [ + "@radix-ui/react-navigation-menu" + ], + "files": [ + "ui/navigation-menu.tsx" + ], + "type": "components:ui" + }, + { + "name": "popover", + "dependencies": [ + "@radix-ui/react-popover" + ], + "files": [ + "ui/popover.tsx" + ], + "type": "components:ui" + }, + { + "name": "progress", + "dependencies": [ + "@radix-ui/react-progress" + ], + "files": [ + "ui/progress.tsx" + ], + "type": "components:ui" + }, + { + "name": "radio-group", + "dependencies": [ + "@radix-ui/react-radio-group" + ], + "files": [ + "ui/radio-group.tsx" + ], + "type": "components:ui" + }, + { + "name": "scroll-area", + "dependencies": [ + "@radix-ui/react-scroll-area" + ], + "files": [ + "ui/scroll-area.tsx" + ], + "type": "components:ui" + }, + { + "name": "select", + "dependencies": [ + "@radix-ui/react-select" + ], + "files": [ + "ui/select.tsx" + ], + "type": "components:ui" + }, + { + "name": "separator", + "dependencies": [ + "@radix-ui/react-separator" + ], + "files": [ + "ui/separator.tsx" + ], + "type": "components:ui" + }, + { + "name": "sheet", + "dependencies": [ + "@radix-ui/react-dialog" + ], + "files": [ + "ui/sheet.tsx" + ], + "type": "components:ui" + }, + { + "name": "skeleton", + "files": [ + "ui/skeleton.tsx" + ], + "type": "components:ui" + }, + { + "name": "slider", + "dependencies": [ + "@radix-ui/react-slider" + ], + "files": [ + "ui/slider.tsx" + ], + "type": "components:ui" + }, + { + "name": "switch", + "dependencies": [ + "@radix-ui/react-switch" + ], + "files": [ + "ui/switch.tsx" + ], + "type": "components:ui" + }, + { + "name": "table", + "files": [ + "ui/table.tsx" + ], + "type": "components:ui" + }, + { + "name": "tabs", + "dependencies": [ + "@radix-ui/react-tabs" + ], + "files": [ + "ui/tabs.tsx" + ], + "type": "components:ui" + }, + { + "name": "textarea", + "files": [ + "ui/textarea.tsx" + ], + "type": "components:ui" + }, + { + "name": "toast", + "dependencies": [ + "@radix-ui/react-toast" + ], + "files": [ + "ui/toast.tsx", + "ui/use-toast.ts", + "ui/toaster.tsx" + ], + "type": "components:ui" + }, + { + "name": "toggle", + "dependencies": [ + "@radix-ui/react-toggle" + ], + "files": [ + "ui/toggle.tsx" + ], + "type": "components:ui" + }, + { + "name": "tooltip", + "dependencies": [ + "@radix-ui/react-tooltip" + ], + "files": [ + "ui/tooltip.tsx" + ], + "type": "components:ui" + } +] \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/accordion.json b/apps/www/src/public/registry/styles/default/accordion.json new file mode 100644 index 00000000..4ed833ab --- /dev/null +++ b/apps/www/src/public/registry/styles/default/accordion.json @@ -0,0 +1,13 @@ +{ + "name": "accordion", + "dependencies": [ + "@radix-ui/react-accordion" + ], + "files": [ + { + "name": "accordion.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\nimport { ChevronDown } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Accordion = AccordionPrimitive.Root\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nAccordionItem.displayName = \"AccordionItem\"\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n \n \n \n))\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n
{children}
\n \n))\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/alert-dialog.json b/apps/www/src/public/registry/styles/default/alert-dialog.json new file mode 100644 index 00000000..d39d893d --- /dev/null +++ b/apps/www/src/public/registry/styles/default/alert-dialog.json @@ -0,0 +1,16 @@ +{ + "name": "alert-dialog", + "dependencies": [ + "@radix-ui/react-alert-dialog" + ], + "registryDependencies": [ + "button" + ], + "files": [ + { + "name": "alert-dialog.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants } from \"@/registry/default/ui/button\"\n\nconst AlertDialog = AlertDialogPrimitive.Root\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger\n\nconst AlertDialogPortal = ({\n className,\n ...props\n}: AlertDialogPrimitive.AlertDialogPortalProps) => (\n \n)\nAlertDialogPortal.displayName = AlertDialogPrimitive.Portal.displayName\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n))\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n \n))\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName\n\nconst AlertDialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes) => (\n \n)\nAlertDialogHeader.displayName = \"AlertDialogHeader\"\n\nconst AlertDialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes) => (\n \n)\nAlertDialogFooter.displayName = \"AlertDialogFooter\"\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nAlertDialogDescription.displayName =\n AlertDialogPrimitive.Description.displayName\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName\n\nexport {\n AlertDialog,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n}\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/alert.json b/apps/www/src/public/registry/styles/default/alert.json new file mode 100644 index 00000000..e1bc8d0f --- /dev/null +++ b/apps/www/src/public/registry/styles/default/alert.json @@ -0,0 +1,10 @@ +{ + "name": "alert", + "files": [ + { + "name": "alert.tsx", + "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes & VariantProps\n>(({ className, variant, ...props }, ref) => (\n \n))\nAlert.displayName = \"Alert\"\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nAlertTitle.displayName = \"AlertTitle\"\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nAlertDescription.displayName = \"AlertDescription\"\n\nexport { Alert, AlertTitle, AlertDescription }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/aspect-ratio.json b/apps/www/src/public/registry/styles/default/aspect-ratio.json new file mode 100644 index 00000000..bf7ada61 --- /dev/null +++ b/apps/www/src/public/registry/styles/default/aspect-ratio.json @@ -0,0 +1,13 @@ +{ + "name": "aspect-ratio", + "dependencies": [ + "@radix-ui/react-aspect-ratio" + ], + "files": [ + { + "name": "aspect-ratio.tsx", + "content": "\"use client\"\n\nimport * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\"\n\nconst AspectRatio = AspectRatioPrimitive.Root\n\nexport { AspectRatio }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/avatar.json b/apps/www/src/public/registry/styles/default/avatar.json new file mode 100644 index 00000000..2fa35c3e --- /dev/null +++ b/apps/www/src/public/registry/styles/default/avatar.json @@ -0,0 +1,13 @@ +{ + "name": "avatar", + "dependencies": [ + "@radix-ui/react-avatar" + ], + "files": [ + { + "name": "avatar.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Avatar = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nAvatar.displayName = AvatarPrimitive.Root.displayName\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nAvatarImage.displayName = AvatarPrimitive.Image.displayName\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\n\nexport { Avatar, AvatarImage, AvatarFallback }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/badge.json b/apps/www/src/public/registry/styles/default/badge.json new file mode 100644 index 00000000..ef710481 --- /dev/null +++ b/apps/www/src/public/registry/styles/default/badge.json @@ -0,0 +1,10 @@ +{ + "name": "badge", + "files": [ + { + "name": "badge.tsx", + "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes,\n VariantProps {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n
\n )\n}\n\nexport { Badge, badgeVariants }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/button.json b/apps/www/src/public/registry/styles/default/button.json new file mode 100644 index 00000000..73861d96 --- /dev/null +++ b/apps/www/src/public/registry/styles/default/button.json @@ -0,0 +1,13 @@ +{ + "name": "button", + "dependencies": [ + "@radix-ui/react-slot" + ], + "files": [ + { + "name": "button.tsx", + "content": "import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes,\n VariantProps {\n asChild?: boolean\n}\n\nconst Button = React.forwardRef(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n \n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/calendar.json b/apps/www/src/public/registry/styles/default/calendar.json new file mode 100644 index 00000000..aac65b09 --- /dev/null +++ b/apps/www/src/public/registry/styles/default/calendar.json @@ -0,0 +1,17 @@ +{ + "name": "calendar", + "dependencies": [ + "react-day-picker", + "date-fns" + ], + "registryDependencies": [ + "button" + ], + "files": [ + { + "name": "calendar.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ChevronLeft, ChevronRight } from \"lucide-react\"\nimport { DayPicker } from \"react-day-picker\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants } from \"@/registry/default/ui/button\"\n\nexport type CalendarProps = React.ComponentProps\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: CalendarProps) {\n return (\n ,\n IconRight: ({ ...props }) => ,\n }}\n {...props}\n />\n )\n}\nCalendar.displayName = \"Calendar\"\n\nexport { Calendar }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/card.json b/apps/www/src/public/registry/styles/default/card.json new file mode 100644 index 00000000..ef31d3a6 --- /dev/null +++ b/apps/www/src/public/registry/styles/default/card.json @@ -0,0 +1,10 @@ +{ + "name": "card", + "files": [ + { + "name": "card.tsx", + "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n
\n))\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/checkbox.json b/apps/www/src/public/registry/styles/default/checkbox.json new file mode 100644 index 00000000..2a31260e --- /dev/null +++ b/apps/www/src/public/registry/styles/default/checkbox.json @@ -0,0 +1,13 @@ +{ + "name": "checkbox", + "dependencies": [ + "@radix-ui/react-checkbox" + ], + "files": [ + { + "name": "checkbox.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { Check } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Checkbox = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n \n \n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/collapsible.json b/apps/www/src/public/registry/styles/default/collapsible.json new file mode 100644 index 00000000..99a398a9 --- /dev/null +++ b/apps/www/src/public/registry/styles/default/collapsible.json @@ -0,0 +1,13 @@ +{ + "name": "collapsible", + "dependencies": [ + "@radix-ui/react-collapsible" + ], + "files": [ + { + "name": "collapsible.tsx", + "content": "\"use client\"\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\n\nconst Collapsible = CollapsiblePrimitive.Root\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/command.json b/apps/www/src/public/registry/styles/default/command.json new file mode 100644 index 00000000..9f99ae0d --- /dev/null +++ b/apps/www/src/public/registry/styles/default/command.json @@ -0,0 +1,16 @@ +{ + "name": "command", + "dependencies": [ + "cmdk" + ], + "registryDependencies": [ + "dialog" + ], + "files": [ + { + "name": "command.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { DialogProps } from \"@radix-ui/react-dialog\"\nimport { Command as CommandPrimitive } from \"cmdk\"\nimport { Search } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Dialog, DialogContent } from \"@/registry/default/ui/dialog\"\n\nconst Command = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nCommand.displayName = CommandPrimitive.displayName\n\ninterface CommandDialogProps extends DialogProps {}\n\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\n return (\n \n \n \n {children}\n \n \n \n )\n}\n\nconst CommandInput = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n
\n \n \n
\n))\n\nCommandInput.displayName = CommandPrimitive.Input.displayName\n\nconst CommandList = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\n\nCommandList.displayName = CommandPrimitive.List.displayName\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>((props, ref) => (\n \n))\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\n\nconst CommandItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\n\nCommandItem.displayName = CommandPrimitive.Item.displayName\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes) => {\n return (\n \n )\n}\nCommandShortcut.displayName = \"CommandShortcut\"\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/context-menu.json b/apps/www/src/public/registry/styles/default/context-menu.json new file mode 100644 index 00000000..2eb10035 --- /dev/null +++ b/apps/www/src/public/registry/styles/default/context-menu.json @@ -0,0 +1,13 @@ +{ + "name": "context-menu", + "dependencies": [ + "@radix-ui/react-context-menu" + ], + "files": [ + { + "name": "context-menu.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst ContextMenu = ContextMenuPrimitive.Root\n\nconst ContextMenuTrigger = ContextMenuPrimitive.Trigger\n\nconst ContextMenuGroup = ContextMenuPrimitive.Group\n\nconst ContextMenuPortal = ContextMenuPrimitive.Portal\n\nconst ContextMenuSub = ContextMenuPrimitive.Sub\n\nconst ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup\n\nconst ContextMenuSubTrigger = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n \n {children}\n \n \n))\nContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName\n\nconst ContextMenuSubContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName\n\nconst ContextMenuContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n))\nContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName\n\nconst ContextMenuItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n \n))\nContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName\n\nconst ContextMenuCheckboxItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, checked, ...props }, ref) => (\n \n \n \n \n \n \n {children}\n \n))\nContextMenuCheckboxItem.displayName =\n ContextMenuPrimitive.CheckboxItem.displayName\n\nconst ContextMenuRadioItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n \n \n \n \n \n {children}\n \n))\nContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName\n\nconst ContextMenuLabel = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n \n))\nContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName\n\nconst ContextMenuSeparator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName\n\nconst ContextMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes) => {\n return (\n \n )\n}\nContextMenuShortcut.displayName = \"ContextMenuShortcut\"\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n}\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/dialog.json b/apps/www/src/public/registry/styles/default/dialog.json new file mode 100644 index 00000000..ed0ad45d --- /dev/null +++ b/apps/www/src/public/registry/styles/default/dialog.json @@ -0,0 +1,13 @@ +{ + "name": "dialog", + "dependencies": [ + "@radix-ui/react-dialog" + ], + "files": [ + { + "name": "dialog.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = ({\n className,\n ...props\n}: DialogPrimitive.DialogPortalProps) => (\n \n)\nDialogPortal.displayName = DialogPrimitive.Portal.displayName\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n \n \n {children}\n \n \n Close\n \n \n \n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes) => (\n \n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes) => (\n \n)\nDialogFooter.displayName = \"DialogFooter\"\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n Dialog,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n}\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/dropdown-menu.json b/apps/www/src/public/registry/styles/default/dropdown-menu.json new file mode 100644 index 00000000..f9e2288f --- /dev/null +++ b/apps/www/src/public/registry/styles/default/dropdown-menu.json @@ -0,0 +1,13 @@ +{ + "name": "dropdown-menu", + "dependencies": [ + "@radix-ui/react-dropdown-menu" + ], + "files": [ + { + "name": "dropdown-menu.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n \n {children}\n \n \n))\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, sideOffset = 4, ...props }, ref) => (\n \n \n \n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n \n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, checked, ...props }, ref) => (\n \n \n \n \n \n \n {children}\n \n))\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n \n \n \n \n \n {children}\n \n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n \n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes) => {\n return (\n \n )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n}\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/form.json b/apps/www/src/public/registry/styles/default/form.json new file mode 100644 index 00000000..497c4945 --- /dev/null +++ b/apps/www/src/public/registry/styles/default/form.json @@ -0,0 +1,21 @@ +{ + "name": "form", + "dependencies": [ + "@radix-ui/react-label", + "@radix-ui/react-slot", + "@hookform/resolvers", + "zod", + "react-hook-form" + ], + "registryDependencies": [ + "button", + "label" + ], + "files": [ + { + "name": "form.tsx", + "content": "import * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport {\n Controller,\n ControllerProps,\n FieldPath,\n FieldValues,\n FormProvider,\n useFormContext,\n} from \"react-hook-form\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Label } from \"@/registry/default/ui/label\"\n\nconst Form = FormProvider\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath = FieldPath\n> = {\n name: TName\n}\n\nconst FormFieldContext = React.createContext(\n {} as FormFieldContextValue\n)\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath = FieldPath\n>({\n ...props\n}: ControllerProps) => {\n return (\n \n \n \n )\n}\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext)\n const itemContext = React.useContext(FormItemContext)\n const { getFieldState, formState } = useFormContext()\n\n const fieldState = getFieldState(fieldContext.name, formState)\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within \")\n }\n\n const { id } = itemContext\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n }\n}\n\ntype FormItemContextValue = {\n id: string\n}\n\nconst FormItemContext = React.createContext(\n {} as FormItemContextValue\n)\n\nconst FormItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => {\n const id = React.useId()\n\n return (\n \n
\n \n )\n})\nFormItem.displayName = \"FormItem\"\n\nconst FormLabel = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField()\n\n return (\n \n )\n})\nFormLabel.displayName = \"FormLabel\"\n\nconst FormControl = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n return (\n \n )\n})\nFormControl.displayName = \"FormControl\"\n\nconst FormDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField()\n\n return (\n \n )\n})\nFormDescription.displayName = \"FormDescription\"\n\nconst FormMessage = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField()\n const body = error ? String(error?.message) : children\n\n if (!body) {\n return null\n }\n\n return (\n \n {body}\n

\n )\n})\nFormMessage.displayName = \"FormMessage\"\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n}\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/hover-card.json b/apps/www/src/public/registry/styles/default/hover-card.json new file mode 100644 index 00000000..db69042a --- /dev/null +++ b/apps/www/src/public/registry/styles/default/hover-card.json @@ -0,0 +1,13 @@ +{ + "name": "hover-card", + "dependencies": [ + "@radix-ui/react-hover-card" + ], + "files": [ + { + "name": "hover-card.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst HoverCard = HoverCardPrimitive.Root\n\nconst HoverCardTrigger = HoverCardPrimitive.Trigger\n\nconst HoverCardContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n \n))\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/input.json b/apps/www/src/public/registry/styles/default/input.json new file mode 100644 index 00000000..762ccf00 --- /dev/null +++ b/apps/www/src/public/registry/styles/default/input.json @@ -0,0 +1,10 @@ +{ + "name": "input", + "files": [ + { + "name": "input.tsx", + "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nexport interface InputProps\n extends React.InputHTMLAttributes {}\n\nconst Input = React.forwardRef(\n ({ className, type, ...props }, ref) => {\n return (\n \n )\n }\n)\nInput.displayName = \"Input\"\n\nexport { Input }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/label.json b/apps/www/src/public/registry/styles/default/label.json new file mode 100644 index 00000000..81d3efd2 --- /dev/null +++ b/apps/www/src/public/registry/styles/default/label.json @@ -0,0 +1,13 @@ +{ + "name": "label", + "dependencies": [ + "@radix-ui/react-label" + ], + "files": [ + { + "name": "label.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n)\n\nconst Label = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef &\n VariantProps\n>(({ className, ...props }, ref) => (\n \n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/menubar.json b/apps/www/src/public/registry/styles/default/menubar.json new file mode 100644 index 00000000..4d99795c --- /dev/null +++ b/apps/www/src/public/registry/styles/default/menubar.json @@ -0,0 +1,13 @@ +{ + "name": "menubar", + "dependencies": [ + "@radix-ui/react-menubar" + ], + "files": [ + { + "name": "menubar.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst MenubarMenu = MenubarPrimitive.Menu\n\nconst MenubarGroup = MenubarPrimitive.Group\n\nconst MenubarPortal = MenubarPrimitive.Portal\n\nconst MenubarSub = MenubarPrimitive.Sub\n\nconst MenubarRadioGroup = MenubarPrimitive.RadioGroup\n\nconst Menubar = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nMenubar.displayName = MenubarPrimitive.Root.displayName\n\nconst MenubarTrigger = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nMenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName\n\nconst MenubarSubTrigger = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n \n {children}\n \n \n))\nMenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName\n\nconst MenubarSubContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nMenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName\n\nconst MenubarContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(\n (\n { className, align = \"start\", alignOffset = -4, sideOffset = 8, ...props },\n ref\n ) => (\n \n \n \n )\n)\nMenubarContent.displayName = MenubarPrimitive.Content.displayName\n\nconst MenubarItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n \n))\nMenubarItem.displayName = MenubarPrimitive.Item.displayName\n\nconst MenubarCheckboxItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, checked, ...props }, ref) => (\n \n \n \n \n \n \n {children}\n \n))\nMenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName\n\nconst MenubarRadioItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n \n \n \n \n \n {children}\n \n))\nMenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName\n\nconst MenubarLabel = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n \n))\nMenubarLabel.displayName = MenubarPrimitive.Label.displayName\n\nconst MenubarSeparator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nMenubarSeparator.displayName = MenubarPrimitive.Separator.displayName\n\nconst MenubarShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes) => {\n return (\n \n )\n}\nMenubarShortcut.displayname = \"MenubarShortcut\"\n\nexport {\n Menubar,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarItem,\n MenubarSeparator,\n MenubarLabel,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarPortal,\n MenubarSubContent,\n MenubarSubTrigger,\n MenubarGroup,\n MenubarSub,\n MenubarShortcut,\n}\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/navigation-menu.json b/apps/www/src/public/registry/styles/default/navigation-menu.json new file mode 100644 index 00000000..a7efd542 --- /dev/null +++ b/apps/www/src/public/registry/styles/default/navigation-menu.json @@ -0,0 +1,13 @@ +{ + "name": "navigation-menu", + "dependencies": [ + "@radix-ui/react-navigation-menu" + ], + "files": [ + { + "name": "navigation-menu.tsx", + "content": "import * as React from \"react\"\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\"\nimport { cva } from \"class-variance-authority\"\nimport { ChevronDown } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst NavigationMenu = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n {children}\n \n \n))\nNavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName\n\nconst NavigationMenuList = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName\n\nconst NavigationMenuItem = NavigationMenuPrimitive.Item\n\nconst navigationMenuTriggerStyle = cva(\n \"group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50\"\n)\n\nconst NavigationMenuTrigger = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n {children}{\" \"}\n \n \n))\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName\n\nconst NavigationMenuContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName\n\nconst NavigationMenuLink = NavigationMenuPrimitive.Link\n\nconst NavigationMenuViewport = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n
\n \n
\n))\nNavigationMenuViewport.displayName =\n NavigationMenuPrimitive.Viewport.displayName\n\nconst NavigationMenuIndicator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n
\n \n))\nNavigationMenuIndicator.displayName =\n NavigationMenuPrimitive.Indicator.displayName\n\nexport {\n navigationMenuTriggerStyle,\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n}\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/popover.json b/apps/www/src/public/registry/styles/default/popover.json new file mode 100644 index 00000000..28ffef3d --- /dev/null +++ b/apps/www/src/public/registry/styles/default/popover.json @@ -0,0 +1,13 @@ +{ + "name": "popover", + "dependencies": [ + "@radix-ui/react-popover" + ], + "files": [ + { + "name": "popover.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n \n \n \n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/progress.json b/apps/www/src/public/registry/styles/default/progress.json new file mode 100644 index 00000000..16dd5136 --- /dev/null +++ b/apps/www/src/public/registry/styles/default/progress.json @@ -0,0 +1,13 @@ +{ + "name": "progress", + "dependencies": [ + "@radix-ui/react-progress" + ], + "files": [ + { + "name": "progress.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Progress = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, value, ...props }, ref) => (\n \n \n \n))\nProgress.displayName = ProgressPrimitive.Root.displayName\n\nexport { Progress }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/radio-group.json b/apps/www/src/public/registry/styles/default/radio-group.json new file mode 100644 index 00000000..cff19eba --- /dev/null +++ b/apps/www/src/public/registry/styles/default/radio-group.json @@ -0,0 +1,13 @@ +{ + "name": "radio-group", + "dependencies": [ + "@radix-ui/react-radio-group" + ], + "files": [ + { + "name": "radio-group.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { Circle } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => {\n return (\n \n )\n})\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => {\n return (\n \n \n \n \n \n )\n})\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n\nexport { RadioGroup, RadioGroupItem }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/scroll-area.json b/apps/www/src/public/registry/styles/default/scroll-area.json new file mode 100644 index 00000000..ee9db739 --- /dev/null +++ b/apps/www/src/public/registry/styles/default/scroll-area.json @@ -0,0 +1,13 @@ +{ + "name": "scroll-area", + "dependencies": [ + "@radix-ui/react-scroll-area" + ], + "files": [ + { + "name": "scroll-area.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n \n {children}\n \n \n \n \n))\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n \n \n \n))\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName\n\nexport { ScrollArea, ScrollBar }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/select.json b/apps/www/src/public/registry/styles/default/select.json new file mode 100644 index 00000000..514f6708 --- /dev/null +++ b/apps/www/src/public/registry/styles/default/select.json @@ -0,0 +1,13 @@ +{ + "name": "select", + "dependencies": [ + "@radix-ui/react-select" + ], + "files": [ + { + "name": "select.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Select = SelectPrimitive.Root\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n {children}\n \n \n \n \n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n \n \n \n {children}\n \n \n \n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nconst SelectItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n \n \n \n \n \n\n {children}\n \n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n}\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/separator.json b/apps/www/src/public/registry/styles/default/separator.json new file mode 100644 index 00000000..fc49fac7 --- /dev/null +++ b/apps/www/src/public/registry/styles/default/separator.json @@ -0,0 +1,13 @@ +{ + "name": "separator", + "dependencies": [ + "@radix-ui/react-separator" + ], + "files": [ + { + "name": "separator.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Separator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n \n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/sheet.json b/apps/www/src/public/registry/styles/default/sheet.json new file mode 100644 index 00000000..f755a087 --- /dev/null +++ b/apps/www/src/public/registry/styles/default/sheet.json @@ -0,0 +1,13 @@ +{ + "name": "sheet", + "dependencies": [ + "@radix-ui/react-dialog" + ], + "files": [ + { + "name": "sheet.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Sheet = SheetPrimitive.Root\n\nconst SheetTrigger = SheetPrimitive.Trigger\n\nconst SheetClose = SheetPrimitive.Close\n\nconst SheetPortal = ({\n className,\n ...props\n}: SheetPrimitive.DialogPortalProps) => (\n \n)\nSheetPortal.displayName = SheetPrimitive.Portal.displayName\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n \"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n {\n variants: {\n side: {\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n bottom:\n \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n right:\n \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n },\n },\n defaultVariants: {\n side: \"right\",\n },\n }\n)\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef,\n VariantProps {}\n\nconst SheetContent = React.forwardRef<\n React.ElementRef,\n SheetContentProps\n>(({ side = \"right\", className, children, ...props }, ref) => (\n \n \n \n {children}\n \n \n Close\n \n \n \n))\nSheetContent.displayName = SheetPrimitive.Content.displayName\n\nconst SheetHeader = ({\n className,\n ...props\n}: React.HTMLAttributes) => (\n \n)\nSheetHeader.displayName = \"SheetHeader\"\n\nconst SheetFooter = ({\n className,\n ...props\n}: React.HTMLAttributes) => (\n \n)\nSheetFooter.displayName = \"SheetFooter\"\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nSheetTitle.displayName = SheetPrimitive.Title.displayName\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nSheetDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/skeleton.json b/apps/www/src/public/registry/styles/default/skeleton.json new file mode 100644 index 00000000..71d6d85f --- /dev/null +++ b/apps/www/src/public/registry/styles/default/skeleton.json @@ -0,0 +1,10 @@ +{ + "name": "skeleton", + "files": [ + { + "name": "skeleton.tsx", + "content": "import { cn } from \"@/lib/utils\"\n\nfunction Skeleton({\n className,\n ...props\n}: React.HTMLAttributes) {\n return (\n \n )\n}\n\nexport { Skeleton }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/slider.json b/apps/www/src/public/registry/styles/default/slider.json new file mode 100644 index 00000000..662c5c2b --- /dev/null +++ b/apps/www/src/public/registry/styles/default/slider.json @@ -0,0 +1,13 @@ +{ + "name": "slider", + "dependencies": [ + "@radix-ui/react-slider" + ], + "files": [ + { + "name": "slider.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Slider = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n \n \n \n))\nSlider.displayName = SliderPrimitive.Root.displayName\n\nexport { Slider }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/switch.json b/apps/www/src/public/registry/styles/default/switch.json new file mode 100644 index 00000000..ac4dac95 --- /dev/null +++ b/apps/www/src/public/registry/styles/default/switch.json @@ -0,0 +1,13 @@ +{ + "name": "switch", + "dependencies": [ + "@radix-ui/react-switch" + ], + "files": [ + { + "name": "switch.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Switch = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n))\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nexport { Switch }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/table.json b/apps/www/src/public/registry/styles/default/table.json new file mode 100644 index 00000000..5f61c81b --- /dev/null +++ b/apps/www/src/public/registry/styles/default/table.json @@ -0,0 +1,10 @@ +{ + "name": "table", + "files": [ + { + "name": "table.tsx", + "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n
\n \n
\n))\nTable.displayName = \"Table\"\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nTableHeader.displayName = \"TableHeader\"\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nTableBody.displayName = \"TableBody\"\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nTableFooter.displayName = \"TableFooter\"\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nTableRow.displayName = \"TableRow\"\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nTableHead.displayName = \"TableHead\"\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nTableCell.displayName = \"TableCell\"\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nTableCaption.displayName = \"TableCaption\"\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/tabs.json b/apps/www/src/public/registry/styles/default/tabs.json new file mode 100644 index 00000000..045928cd --- /dev/null +++ b/apps/www/src/public/registry/styles/default/tabs.json @@ -0,0 +1,13 @@ +{ + "name": "tabs", + "dependencies": [ + "@radix-ui/react-tabs" + ], + "files": [ + { + "name": "tabs.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Tabs = TabsPrimitive.Root\n\nconst TabsList = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/textarea.json b/apps/www/src/public/registry/styles/default/textarea.json new file mode 100644 index 00000000..1b94cf21 --- /dev/null +++ b/apps/www/src/public/registry/styles/default/textarea.json @@ -0,0 +1,10 @@ +{ + "name": "textarea", + "files": [ + { + "name": "textarea.tsx", + "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes {}\n\nconst Textarea = React.forwardRef(\n ({ className, ...props }, ref) => {\n return (\n \n )\n }\n)\nTextarea.displayName = \"Textarea\"\n\nexport { Textarea }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/toast.json b/apps/www/src/public/registry/styles/default/toast.json new file mode 100644 index 00000000..6c4f7be1 --- /dev/null +++ b/apps/www/src/public/registry/styles/default/toast.json @@ -0,0 +1,21 @@ +{ + "name": "toast", + "dependencies": [ + "@radix-ui/react-toast" + ], + "files": [ + { + "name": "toast.tsx", + "content": "import * as React from \"react\"\nimport * as ToastPrimitives from \"@radix-ui/react-toast\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst ToastProvider = ToastPrimitives.Provider\n\nconst ToastViewport = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nToastViewport.displayName = ToastPrimitives.Viewport.displayName\n\nconst toastVariants = cva(\n \"group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\",\n {\n variants: {\n variant: {\n default: \"border bg-background text-foreground\",\n destructive:\n \"destructive group border-destructive bg-destructive text-destructive-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst Toast = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef &\n VariantProps\n>(({ className, variant, ...props }, ref) => {\n return (\n \n )\n})\nToast.displayName = ToastPrimitives.Root.displayName\n\nconst ToastAction = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nToastAction.displayName = ToastPrimitives.Action.displayName\n\nconst ToastClose = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n))\nToastClose.displayName = ToastPrimitives.Close.displayName\n\nconst ToastTitle = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nToastTitle.displayName = ToastPrimitives.Title.displayName\n\nconst ToastDescription = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nToastDescription.displayName = ToastPrimitives.Description.displayName\n\ntype ToastProps = React.ComponentPropsWithoutRef\n\ntype ToastActionElement = React.ReactElement\n\nexport {\n type ToastProps,\n type ToastActionElement,\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastClose,\n ToastAction,\n}\n" + }, + { + "name": "use-toast.ts", + "content": "// Inspired by react-hot-toast library\nimport * as React from \"react\"\n\nimport type {\n ToastActionElement,\n ToastProps,\n} from \"@/registry/default/ui/toast\"\n\nconst TOAST_LIMIT = 1\nconst TOAST_REMOVE_DELAY = 1000000\n\ntype ToasterToast = ToastProps & {\n id: string\n title?: React.ReactNode\n description?: React.ReactNode\n action?: ToastActionElement\n}\n\nconst actionTypes = {\n ADD_TOAST: \"ADD_TOAST\",\n UPDATE_TOAST: \"UPDATE_TOAST\",\n DISMISS_TOAST: \"DISMISS_TOAST\",\n REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const\n\nlet count = 0\n\nfunction genId() {\n count = (count + 1) % Number.MAX_VALUE\n return count.toString()\n}\n\ntype ActionType = typeof actionTypes\n\ntype Action =\n | {\n type: ActionType[\"ADD_TOAST\"]\n toast: ToasterToast\n }\n | {\n type: ActionType[\"UPDATE_TOAST\"]\n toast: Partial\n }\n | {\n type: ActionType[\"DISMISS_TOAST\"]\n toastId?: ToasterToast[\"id\"]\n }\n | {\n type: ActionType[\"REMOVE_TOAST\"]\n toastId?: ToasterToast[\"id\"]\n }\n\ninterface State {\n toasts: ToasterToast[]\n}\n\nconst toastTimeouts = new Map>()\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId)\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n })\n }, TOAST_REMOVE_DELAY)\n\n toastTimeouts.set(toastId, timeout)\n}\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n }\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n }\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId)\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id)\n })\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t\n ),\n }\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n }\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n }\n }\n}\n\nconst listeners: Array<(state: State) => void> = []\n\nlet memoryState: State = { toasts: [] }\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action)\n listeners.forEach((listener) => {\n listener(memoryState)\n })\n}\n\ntype Toast = Omit\n\nfunction toast({ ...props }: Toast) {\n const id = genId()\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n })\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id })\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss()\n },\n },\n })\n\n return {\n id: id,\n dismiss,\n update,\n }\n}\n\nfunction useToast() {\n const [state, setState] = React.useState(memoryState)\n\n React.useEffect(() => {\n listeners.push(setState)\n return () => {\n const index = listeners.indexOf(setState)\n if (index > -1) {\n listeners.splice(index, 1)\n }\n }\n }, [state])\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n }\n}\n\nexport { useToast, toast }\n" + }, + { + "name": "toaster.tsx", + "content": "\"use client\"\n\nimport {\n Toast,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n} from \"@/registry/default/ui/toast\"\nimport { useToast } from \"@/registry/default/ui/use-toast\"\n\nexport function Toaster() {\n const { toasts } = useToast()\n\n return (\n \n {toasts.map(function ({ id, title, description, action, ...props }) {\n return (\n \n
\n {title && {title}}\n {description && (\n {description}\n )}\n
\n {action}\n \n
\n )\n })}\n \n
\n )\n}\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/toggle.json b/apps/www/src/public/registry/styles/default/toggle.json new file mode 100644 index 00000000..3bb19f63 --- /dev/null +++ b/apps/www/src/public/registry/styles/default/toggle.json @@ -0,0 +1,13 @@ +{ + "name": "toggle", + "dependencies": [ + "@radix-ui/react-toggle" + ], + "files": [ + { + "name": "toggle.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-10 px-3\",\n sm: \"h-9 px-2.5\",\n lg: \"h-11 px-5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst Toggle = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef &\n VariantProps\n>(({ className, variant, size, ...props }, ref) => (\n \n))\n\nToggle.displayName = TogglePrimitive.Root.displayName\n\nexport { Toggle, toggleVariants }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/default/tooltip.json b/apps/www/src/public/registry/styles/default/tooltip.json new file mode 100644 index 00000000..6d5046ca --- /dev/null +++ b/apps/www/src/public/registry/styles/default/tooltip.json @@ -0,0 +1,13 @@ +{ + "name": "tooltip", + "dependencies": [ + "@radix-ui/react-tooltip" + ], + "files": [ + { + "name": "tooltip.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, sideOffset = 4, ...props }, ref) => (\n \n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/index.json b/apps/www/src/public/registry/styles/index.json new file mode 100644 index 00000000..bbefdacf --- /dev/null +++ b/apps/www/src/public/registry/styles/index.json @@ -0,0 +1,10 @@ +[ + { + "name": "default", + "label": "Default" + }, + { + "name": "new-york", + "label": "New York" + } +] \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/accordion.json b/apps/www/src/public/registry/styles/new-york/accordion.json new file mode 100644 index 00000000..49a913fb --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/accordion.json @@ -0,0 +1,13 @@ +{ + "name": "accordion", + "dependencies": [ + "@radix-ui/react-accordion" + ], + "files": [ + { + "name": "accordion.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\nimport { ChevronDownIcon } from \"@radix-ui/react-icons\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Accordion = AccordionPrimitive.Root\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nAccordionItem.displayName = \"AccordionItem\"\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n \n \n \n))\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n
{children}
\n \n))\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/alert-dialog.json b/apps/www/src/public/registry/styles/new-york/alert-dialog.json new file mode 100644 index 00000000..6ec296e5 --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/alert-dialog.json @@ -0,0 +1,16 @@ +{ + "name": "alert-dialog", + "dependencies": [ + "@radix-ui/react-alert-dialog" + ], + "registryDependencies": [ + "button" + ], + "files": [ + { + "name": "alert-dialog.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants } from \"@/registry/new-york/ui/button\"\n\nconst AlertDialog = AlertDialogPrimitive.Root\n\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger\n\nconst AlertDialogPortal = ({\n className,\n ...props\n}: AlertDialogPrimitive.AlertDialogPortalProps) => (\n \n)\nAlertDialogPortal.displayName = AlertDialogPrimitive.Portal.displayName\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nAlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n \n))\nAlertDialogContent.displayName = AlertDialogPrimitive.Content.displayName\n\nconst AlertDialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes) => (\n \n)\nAlertDialogHeader.displayName = \"AlertDialogHeader\"\n\nconst AlertDialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes) => (\n \n)\nAlertDialogFooter.displayName = \"AlertDialogFooter\"\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nAlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nAlertDialogDescription.displayName =\n AlertDialogPrimitive.Description.displayName\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nAlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nAlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName\n\nexport {\n AlertDialog,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n}\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/alert.json b/apps/www/src/public/registry/styles/new-york/alert.json new file mode 100644 index 00000000..221afd4e --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/alert.json @@ -0,0 +1,10 @@ +{ + "name": "alert", + "files": [ + { + "name": "alert.tsx", + "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes & VariantProps\n>(({ className, variant, ...props }, ref) => (\n \n))\nAlert.displayName = \"Alert\"\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nAlertTitle.displayName = \"AlertTitle\"\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nAlertDescription.displayName = \"AlertDescription\"\n\nexport { Alert, AlertTitle, AlertDescription }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/aspect-ratio.json b/apps/www/src/public/registry/styles/new-york/aspect-ratio.json new file mode 100644 index 00000000..bf7ada61 --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/aspect-ratio.json @@ -0,0 +1,13 @@ +{ + "name": "aspect-ratio", + "dependencies": [ + "@radix-ui/react-aspect-ratio" + ], + "files": [ + { + "name": "aspect-ratio.tsx", + "content": "\"use client\"\n\nimport * as AspectRatioPrimitive from \"@radix-ui/react-aspect-ratio\"\n\nconst AspectRatio = AspectRatioPrimitive.Root\n\nexport { AspectRatio }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/avatar.json b/apps/www/src/public/registry/styles/new-york/avatar.json new file mode 100644 index 00000000..2fa35c3e --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/avatar.json @@ -0,0 +1,13 @@ +{ + "name": "avatar", + "dependencies": [ + "@radix-ui/react-avatar" + ], + "files": [ + { + "name": "avatar.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Avatar = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nAvatar.displayName = AvatarPrimitive.Root.displayName\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nAvatarImage.displayName = AvatarPrimitive.Image.displayName\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\n\nexport { Avatar, AvatarImage, AvatarFallback }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/badge.json b/apps/www/src/public/registry/styles/new-york/badge.json new file mode 100644 index 00000000..416ca781 --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/badge.json @@ -0,0 +1,10 @@ +{ + "name": "badge", + "files": [ + { + "name": "badge.tsx", + "content": "import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes,\n VariantProps {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n
\n )\n}\n\nexport { Badge, badgeVariants }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/button.json b/apps/www/src/public/registry/styles/new-york/button.json new file mode 100644 index 00000000..7f667747 --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/button.json @@ -0,0 +1,13 @@ +{ + "name": "button", + "dependencies": [ + "@radix-ui/react-slot" + ], + "files": [ + { + "name": "button.tsx", + "content": "import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n outline:\n \"border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2\",\n sm: \"h-8 rounded-md px-3 text-xs\",\n lg: \"h-10 rounded-md px-8\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes,\n VariantProps {\n asChild?: boolean\n}\n\nconst Button = React.forwardRef(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n \n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/calendar.json b/apps/www/src/public/registry/styles/new-york/calendar.json new file mode 100644 index 00000000..0998cfa9 --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/calendar.json @@ -0,0 +1,17 @@ +{ + "name": "calendar", + "dependencies": [ + "react-day-picker", + "date-fns" + ], + "registryDependencies": [ + "button" + ], + "files": [ + { + "name": "calendar.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { ChevronLeftIcon, ChevronRightIcon } from \"@radix-ui/react-icons\"\nimport { DayPicker } from \"react-day-picker\"\n\nimport { cn } from \"@/lib/utils\"\nimport { buttonVariants } from \"@/registry/default/ui/button\"\n\nexport type CalendarProps = React.ComponentProps\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: CalendarProps) {\n return (\n .day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md\"\n : \"[&:has([aria-selected])]:rounded-md\"\n ),\n day: cn(\n buttonVariants({ variant: \"ghost\" }),\n \"h-8 w-8 p-0 font-normal aria-selected:opacity-100\"\n ),\n day_range_start: \"day-range-start\",\n day_range_end: \"day-range-end\",\n day_selected:\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\n day_today: \"bg-accent text-accent-foreground\",\n day_outside: \"text-muted-foreground opacity-50\",\n day_disabled: \"text-muted-foreground opacity-50\",\n day_range_middle:\n \"aria-selected:bg-accent aria-selected:text-accent-foreground\",\n day_hidden: \"invisible\",\n ...classNames,\n }}\n components={{\n IconLeft: ({ ...props }) => ,\n IconRight: ({ ...props }) => ,\n }}\n {...props}\n />\n )\n}\nCalendar.displayName = \"Calendar\"\n\nexport { Calendar }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/card.json b/apps/www/src/public/registry/styles/new-york/card.json new file mode 100644 index 00000000..af7ee0e1 --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/card.json @@ -0,0 +1,10 @@ +{ + "name": "card", + "files": [ + { + "name": "card.tsx", + "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n
\n))\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/checkbox.json b/apps/www/src/public/registry/styles/new-york/checkbox.json new file mode 100644 index 00000000..0bb3bf86 --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/checkbox.json @@ -0,0 +1,13 @@ +{ + "name": "checkbox", + "dependencies": [ + "@radix-ui/react-checkbox" + ], + "files": [ + { + "name": "checkbox.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { CheckIcon } from \"@radix-ui/react-icons\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Checkbox = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n \n \n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/collapsible.json b/apps/www/src/public/registry/styles/new-york/collapsible.json new file mode 100644 index 00000000..99a398a9 --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/collapsible.json @@ -0,0 +1,13 @@ +{ + "name": "collapsible", + "dependencies": [ + "@radix-ui/react-collapsible" + ], + "files": [ + { + "name": "collapsible.tsx", + "content": "\"use client\"\n\nimport * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\n\nconst Collapsible = CollapsiblePrimitive.Root\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/command.json b/apps/www/src/public/registry/styles/new-york/command.json new file mode 100644 index 00000000..e54eb15b --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/command.json @@ -0,0 +1,16 @@ +{ + "name": "command", + "dependencies": [ + "cmdk" + ], + "registryDependencies": [ + "dialog" + ], + "files": [ + { + "name": "command.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { DialogProps } from \"@radix-ui/react-dialog\"\nimport { MagnifyingGlassIcon } from \"@radix-ui/react-icons\"\nimport { Command as CommandPrimitive } from \"cmdk\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Dialog, DialogContent } from \"@/registry/new-york/ui/dialog\"\n\nconst Command = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nCommand.displayName = CommandPrimitive.displayName\n\ninterface CommandDialogProps extends DialogProps {}\n\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\n return (\n \n \n \n {children}\n \n \n \n )\n}\n\nconst CommandInput = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n
\n \n \n
\n))\n\nCommandInput.displayName = CommandPrimitive.Input.displayName\n\nconst CommandList = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\n\nCommandList.displayName = CommandPrimitive.List.displayName\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>((props, ref) => (\n \n))\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\n\nconst CommandItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\n\nCommandItem.displayName = CommandPrimitive.Item.displayName\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes) => {\n return (\n \n )\n}\nCommandShortcut.displayName = \"CommandShortcut\"\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/context-menu.json b/apps/www/src/public/registry/styles/new-york/context-menu.json new file mode 100644 index 00000000..0de036bc --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/context-menu.json @@ -0,0 +1,13 @@ +{ + "name": "context-menu", + "dependencies": [ + "@radix-ui/react-context-menu" + ], + "files": [ + { + "name": "context-menu.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\"\nimport {\n CheckIcon,\n ChevronRightIcon,\n DotFilledIcon,\n} from \"@radix-ui/react-icons\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst ContextMenu = ContextMenuPrimitive.Root\n\nconst ContextMenuTrigger = ContextMenuPrimitive.Trigger\n\nconst ContextMenuGroup = ContextMenuPrimitive.Group\n\nconst ContextMenuPortal = ContextMenuPrimitive.Portal\n\nconst ContextMenuSub = ContextMenuPrimitive.Sub\n\nconst ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup\n\nconst ContextMenuSubTrigger = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n \n {children}\n \n \n))\nContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName\n\nconst ContextMenuSubContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName\n\nconst ContextMenuContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n))\nContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName\n\nconst ContextMenuItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n \n))\nContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName\n\nconst ContextMenuCheckboxItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, checked, ...props }, ref) => (\n \n \n \n \n \n \n {children}\n \n))\nContextMenuCheckboxItem.displayName =\n ContextMenuPrimitive.CheckboxItem.displayName\n\nconst ContextMenuRadioItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n \n \n \n \n \n {children}\n \n))\nContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName\n\nconst ContextMenuLabel = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n \n))\nContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName\n\nconst ContextMenuSeparator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName\n\nconst ContextMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes) => {\n return (\n \n )\n}\nContextMenuShortcut.displayName = \"ContextMenuShortcut\"\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n}\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/dialog.json b/apps/www/src/public/registry/styles/new-york/dialog.json new file mode 100644 index 00000000..9683a3ef --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/dialog.json @@ -0,0 +1,13 @@ +{ + "name": "dialog", + "dependencies": [ + "@radix-ui/react-dialog" + ], + "files": [ + { + "name": "dialog.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { Cross2Icon } from \"@radix-ui/react-icons\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = ({\n className,\n ...props\n}: DialogPrimitive.DialogPortalProps) => (\n \n)\nDialogPortal.displayName = DialogPrimitive.Portal.displayName\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n \n \n {children}\n \n \n Close\n \n \n \n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes) => (\n \n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes) => (\n \n)\nDialogFooter.displayName = \"DialogFooter\"\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n Dialog,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n}\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/dropdown-menu.json b/apps/www/src/public/registry/styles/new-york/dropdown-menu.json new file mode 100644 index 00000000..98b9819a --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/dropdown-menu.json @@ -0,0 +1,13 @@ +{ + "name": "dropdown-menu", + "dependencies": [ + "@radix-ui/react-dropdown-menu" + ], + "files": [ + { + "name": "dropdown-menu.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport {\n CheckIcon,\n ChevronRightIcon,\n DotFilledIcon,\n} from \"@radix-ui/react-icons\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n \n {children}\n \n \n))\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, sideOffset = 4, ...props }, ref) => (\n \n \n \n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n \n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, checked, ...props }, ref) => (\n \n \n \n \n \n \n {children}\n \n))\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n \n \n \n \n \n {children}\n \n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n \n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes) => {\n return (\n \n )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n}\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/form.json b/apps/www/src/public/registry/styles/new-york/form.json new file mode 100644 index 00000000..212c282e --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/form.json @@ -0,0 +1,21 @@ +{ + "name": "form", + "dependencies": [ + "@radix-ui/react-label", + "@radix-ui/react-slot", + "@hookform/resolvers", + "zod", + "react-hook-form" + ], + "registryDependencies": [ + "button", + "label" + ], + "files": [ + { + "name": "form.tsx", + "content": "import * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport {\n Controller,\n ControllerProps,\n FieldPath,\n FieldValues,\n FormProvider,\n useFormContext,\n} from \"react-hook-form\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Label } from \"@/registry/new-york/ui/label\"\n\nconst Form = FormProvider\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath = FieldPath\n> = {\n name: TName\n}\n\nconst FormFieldContext = React.createContext(\n {} as FormFieldContextValue\n)\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath = FieldPath\n>({\n ...props\n}: ControllerProps) => {\n return (\n \n \n \n )\n}\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext)\n const itemContext = React.useContext(FormItemContext)\n const { getFieldState, formState } = useFormContext()\n\n const fieldState = getFieldState(fieldContext.name, formState)\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within \")\n }\n\n const { id } = itemContext\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n }\n}\n\ntype FormItemContextValue = {\n id: string\n}\n\nconst FormItemContext = React.createContext(\n {} as FormItemContextValue\n)\n\nconst FormItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => {\n const id = React.useId()\n\n return (\n \n
\n \n )\n})\nFormItem.displayName = \"FormItem\"\n\nconst FormLabel = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField()\n\n return (\n \n )\n})\nFormLabel.displayName = \"FormLabel\"\n\nconst FormControl = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n return (\n \n )\n})\nFormControl.displayName = \"FormControl\"\n\nconst FormDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField()\n\n return (\n \n )\n})\nFormDescription.displayName = \"FormDescription\"\n\nconst FormMessage = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField()\n const body = error ? String(error?.message) : children\n\n if (!body) {\n return null\n }\n\n return (\n \n {body}\n

\n )\n})\nFormMessage.displayName = \"FormMessage\"\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n}\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/hover-card.json b/apps/www/src/public/registry/styles/new-york/hover-card.json new file mode 100644 index 00000000..db69042a --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/hover-card.json @@ -0,0 +1,13 @@ +{ + "name": "hover-card", + "dependencies": [ + "@radix-ui/react-hover-card" + ], + "files": [ + { + "name": "hover-card.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst HoverCard = HoverCardPrimitive.Root\n\nconst HoverCardTrigger = HoverCardPrimitive.Trigger\n\nconst HoverCardContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n \n))\nHoverCardContent.displayName = HoverCardPrimitive.Content.displayName\n\nexport { HoverCard, HoverCardTrigger, HoverCardContent }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/input.json b/apps/www/src/public/registry/styles/new-york/input.json new file mode 100644 index 00000000..937dea44 --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/input.json @@ -0,0 +1,10 @@ +{ + "name": "input", + "files": [ + { + "name": "input.tsx", + "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nexport interface InputProps\n extends React.InputHTMLAttributes {}\n\nconst Input = React.forwardRef(\n ({ className, type, ...props }, ref) => {\n return (\n \n )\n }\n)\nInput.displayName = \"Input\"\n\nexport { Input }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/label.json b/apps/www/src/public/registry/styles/new-york/label.json new file mode 100644 index 00000000..81d3efd2 --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/label.json @@ -0,0 +1,13 @@ +{ + "name": "label", + "dependencies": [ + "@radix-ui/react-label" + ], + "files": [ + { + "name": "label.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n)\n\nconst Label = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef &\n VariantProps\n>(({ className, ...props }, ref) => (\n \n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/menubar.json b/apps/www/src/public/registry/styles/new-york/menubar.json new file mode 100644 index 00000000..e291c072 --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/menubar.json @@ -0,0 +1,13 @@ +{ + "name": "menubar", + "dependencies": [ + "@radix-ui/react-menubar" + ], + "files": [ + { + "name": "menubar.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport {\n CheckIcon,\n ChevronRightIcon,\n DotFilledIcon,\n} from \"@radix-ui/react-icons\"\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst MenubarMenu = MenubarPrimitive.Menu\n\nconst MenubarGroup = MenubarPrimitive.Group\n\nconst MenubarPortal = MenubarPrimitive.Portal\n\nconst MenubarSub = MenubarPrimitive.Sub\n\nconst MenubarRadioGroup = MenubarPrimitive.RadioGroup\n\nconst Menubar = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nMenubar.displayName = MenubarPrimitive.Root.displayName\n\nconst MenubarTrigger = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nMenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName\n\nconst MenubarSubTrigger = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n \n {children}\n \n \n))\nMenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName\n\nconst MenubarSubContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nMenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName\n\nconst MenubarContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(\n (\n { className, align = \"start\", alignOffset = -4, sideOffset = 8, ...props },\n ref\n ) => (\n \n \n \n )\n)\nMenubarContent.displayName = MenubarPrimitive.Content.displayName\n\nconst MenubarItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n \n))\nMenubarItem.displayName = MenubarPrimitive.Item.displayName\n\nconst MenubarCheckboxItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, checked, ...props }, ref) => (\n \n \n \n \n \n \n {children}\n \n))\nMenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName\n\nconst MenubarRadioItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n \n \n \n \n \n {children}\n \n))\nMenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName\n\nconst MenubarLabel = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n \n))\nMenubarLabel.displayName = MenubarPrimitive.Label.displayName\n\nconst MenubarSeparator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nMenubarSeparator.displayName = MenubarPrimitive.Separator.displayName\n\nconst MenubarShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes) => {\n return (\n \n )\n}\nMenubarShortcut.displayname = \"MenubarShortcut\"\n\nexport {\n Menubar,\n MenubarMenu,\n MenubarTrigger,\n MenubarContent,\n MenubarItem,\n MenubarSeparator,\n MenubarLabel,\n MenubarCheckboxItem,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarPortal,\n MenubarSubContent,\n MenubarSubTrigger,\n MenubarGroup,\n MenubarSub,\n MenubarShortcut,\n}\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/navigation-menu.json b/apps/www/src/public/registry/styles/new-york/navigation-menu.json new file mode 100644 index 00000000..5fb09d18 --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/navigation-menu.json @@ -0,0 +1,13 @@ +{ + "name": "navigation-menu", + "dependencies": [ + "@radix-ui/react-navigation-menu" + ], + "files": [ + { + "name": "navigation-menu.tsx", + "content": "import * as React from \"react\"\nimport { ChevronDownIcon } from \"@radix-ui/react-icons\"\nimport * as NavigationMenuPrimitive from \"@radix-ui/react-navigation-menu\"\nimport { cva } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst NavigationMenu = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n {children}\n \n \n))\nNavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName\n\nconst NavigationMenuList = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName\n\nconst NavigationMenuItem = NavigationMenuPrimitive.Item\n\nconst navigationMenuTriggerStyle = cva(\n \"group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50\"\n)\n\nconst NavigationMenuTrigger = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n {children}{\" \"}\n \n \n))\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName\n\nconst NavigationMenuContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName\n\nconst NavigationMenuLink = NavigationMenuPrimitive.Link\n\nconst NavigationMenuViewport = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n
\n \n
\n))\nNavigationMenuViewport.displayName =\n NavigationMenuPrimitive.Viewport.displayName\n\nconst NavigationMenuIndicator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n
\n \n))\nNavigationMenuIndicator.displayName =\n NavigationMenuPrimitive.Indicator.displayName\n\nexport {\n navigationMenuTriggerStyle,\n NavigationMenu,\n NavigationMenuList,\n NavigationMenuItem,\n NavigationMenuContent,\n NavigationMenuTrigger,\n NavigationMenuLink,\n NavigationMenuIndicator,\n NavigationMenuViewport,\n}\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/popover.json b/apps/www/src/public/registry/styles/new-york/popover.json new file mode 100644 index 00000000..28ffef3d --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/popover.json @@ -0,0 +1,13 @@ +{ + "name": "popover", + "dependencies": [ + "@radix-ui/react-popover" + ], + "files": [ + { + "name": "popover.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n \n \n \n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/progress.json b/apps/www/src/public/registry/styles/new-york/progress.json new file mode 100644 index 00000000..ec72e397 --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/progress.json @@ -0,0 +1,13 @@ +{ + "name": "progress", + "dependencies": [ + "@radix-ui/react-progress" + ], + "files": [ + { + "name": "progress.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Progress = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, value, ...props }, ref) => (\n \n \n \n))\nProgress.displayName = ProgressPrimitive.Root.displayName\n\nexport { Progress }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/radio-group.json b/apps/www/src/public/registry/styles/new-york/radio-group.json new file mode 100644 index 00000000..e7dfeb3f --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/radio-group.json @@ -0,0 +1,13 @@ +{ + "name": "radio-group", + "dependencies": [ + "@radix-ui/react-radio-group" + ], + "files": [ + { + "name": "radio-group.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon } from \"@radix-ui/react-icons\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => {\n return (\n \n )\n})\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => {\n return (\n \n \n \n \n \n )\n})\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n\nexport { RadioGroup, RadioGroupItem }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/scroll-area.json b/apps/www/src/public/registry/styles/new-york/scroll-area.json new file mode 100644 index 00000000..ee9db739 --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/scroll-area.json @@ -0,0 +1,13 @@ +{ + "name": "scroll-area", + "dependencies": [ + "@radix-ui/react-scroll-area" + ], + "files": [ + { + "name": "scroll-area.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n \n {children}\n \n \n \n \n))\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n \n \n \n))\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName\n\nexport { ScrollArea, ScrollBar }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/select.json b/apps/www/src/public/registry/styles/new-york/select.json new file mode 100644 index 00000000..afff5c44 --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/select.json @@ -0,0 +1,13 @@ +{ + "name": "select", + "dependencies": [ + "@radix-ui/react-select" + ], + "files": [ + { + "name": "select.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport { CaretSortIcon, CheckIcon } from \"@radix-ui/react-icons\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Select = SelectPrimitive.Root\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n {children}\n \n \n \n \n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n \n \n \n {children}\n \n \n \n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nconst SelectItem = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, children, ...props }, ref) => (\n \n \n \n \n \n \n {children}\n \n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n}\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/separator.json b/apps/www/src/public/registry/styles/new-york/separator.json new file mode 100644 index 00000000..fc49fac7 --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/separator.json @@ -0,0 +1,13 @@ +{ + "name": "separator", + "dependencies": [ + "@radix-ui/react-separator" + ], + "files": [ + { + "name": "separator.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Separator = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n \n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/sheet.json b/apps/www/src/public/registry/styles/new-york/sheet.json new file mode 100644 index 00000000..04fde8c5 --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/sheet.json @@ -0,0 +1,13 @@ +{ + "name": "sheet", + "dependencies": [ + "@radix-ui/react-dialog" + ], + "files": [ + { + "name": "sheet.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { Cross2Icon } from \"@radix-ui/react-icons\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Sheet = SheetPrimitive.Root\n\nconst SheetTrigger = SheetPrimitive.Trigger\n\nconst SheetClose = SheetPrimitive.Close\n\nconst SheetPortal = ({\n className,\n ...props\n}: SheetPrimitive.DialogPortalProps) => (\n \n)\nSheetPortal.displayName = SheetPrimitive.Portal.displayName\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n \"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500\",\n {\n variants: {\n side: {\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n bottom:\n \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n right:\n \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n },\n },\n defaultVariants: {\n side: \"right\",\n },\n }\n)\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef,\n VariantProps {}\n\nconst SheetContent = React.forwardRef<\n React.ElementRef,\n SheetContentProps\n>(({ side = \"right\", className, children, ...props }, ref) => (\n \n \n \n {children}\n \n \n Close\n \n \n \n))\nSheetContent.displayName = SheetPrimitive.Content.displayName\n\nconst SheetHeader = ({\n className,\n ...props\n}: React.HTMLAttributes) => (\n \n)\nSheetHeader.displayName = \"SheetHeader\"\n\nconst SheetFooter = ({\n className,\n ...props\n}: React.HTMLAttributes) => (\n \n)\nSheetFooter.displayName = \"SheetFooter\"\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nSheetTitle.displayName = SheetPrimitive.Title.displayName\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nSheetDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n Sheet,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/skeleton.json b/apps/www/src/public/registry/styles/new-york/skeleton.json new file mode 100644 index 00000000..1dfd060a --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/skeleton.json @@ -0,0 +1,10 @@ +{ + "name": "skeleton", + "files": [ + { + "name": "skeleton.tsx", + "content": "import { cn } from \"@/lib/utils\"\n\nfunction Skeleton({\n className,\n ...props\n}: React.HTMLAttributes) {\n return (\n \n )\n}\n\nexport { Skeleton }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/slider.json b/apps/www/src/public/registry/styles/new-york/slider.json new file mode 100644 index 00000000..1256e82d --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/slider.json @@ -0,0 +1,13 @@ +{ + "name": "slider", + "dependencies": [ + "@radix-ui/react-slider" + ], + "files": [ + { + "name": "slider.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Slider = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n \n \n \n))\nSlider.displayName = SliderPrimitive.Root.displayName\n\nexport { Slider }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/switch.json b/apps/www/src/public/registry/styles/new-york/switch.json new file mode 100644 index 00000000..c3e0b9ee --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/switch.json @@ -0,0 +1,13 @@ +{ + "name": "switch", + "dependencies": [ + "@radix-ui/react-switch" + ], + "files": [ + { + "name": "switch.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Switch = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n))\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nexport { Switch }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/table.json b/apps/www/src/public/registry/styles/new-york/table.json new file mode 100644 index 00000000..66e3077e --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/table.json @@ -0,0 +1,10 @@ +{ + "name": "table", + "files": [ + { + "name": "table.tsx", + "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n
\n \n
\n))\nTable.displayName = \"Table\"\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nTableHeader.displayName = \"TableHeader\"\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nTableBody.displayName = \"TableBody\"\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nTableFooter.displayName = \"TableFooter\"\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nTableRow.displayName = \"TableRow\"\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes\n>(({ className, ...props }, ref) => (\n [role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n))\nTableHead.displayName = \"TableHead\"\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes\n>(({ className, ...props }, ref) => (\n [role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n))\nTableCell.displayName = \"TableCell\"\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes\n>(({ className, ...props }, ref) => (\n \n))\nTableCaption.displayName = \"TableCaption\"\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/tabs.json b/apps/www/src/public/registry/styles/new-york/tabs.json new file mode 100644 index 00000000..82058ae9 --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/tabs.json @@ -0,0 +1,13 @@ +{ + "name": "tabs", + "dependencies": [ + "@radix-ui/react-tabs" + ], + "files": [ + { + "name": "tabs.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Tabs = TabsPrimitive.Root\n\nconst TabsList = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/textarea.json b/apps/www/src/public/registry/styles/new-york/textarea.json new file mode 100644 index 00000000..5cf8aecd --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/textarea.json @@ -0,0 +1,10 @@ +{ + "name": "textarea", + "files": [ + { + "name": "textarea.tsx", + "content": "import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes {}\n\nconst Textarea = React.forwardRef(\n ({ className, ...props }, ref) => {\n return (\n \n )\n }\n)\nTextarea.displayName = \"Textarea\"\n\nexport { Textarea }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/toast.json b/apps/www/src/public/registry/styles/new-york/toast.json new file mode 100644 index 00000000..69935b01 --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/toast.json @@ -0,0 +1,21 @@ +{ + "name": "toast", + "dependencies": [ + "@radix-ui/react-toast" + ], + "files": [ + { + "name": "toast.tsx", + "content": "import * as React from \"react\"\nimport { Cross2Icon } from \"@radix-ui/react-icons\"\nimport * as ToastPrimitives from \"@radix-ui/react-toast\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst ToastProvider = ToastPrimitives.Provider\n\nconst ToastViewport = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nToastViewport.displayName = ToastPrimitives.Viewport.displayName\n\nconst toastVariants = cva(\n \"group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full\",\n {\n variants: {\n variant: {\n default: \"border bg-background text-foreground\",\n destructive:\n \"destructive group border-destructive bg-destructive text-destructive-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst Toast = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef &\n VariantProps\n>(({ className, variant, ...props }, ref) => {\n return (\n \n )\n})\nToast.displayName = ToastPrimitives.Root.displayName\n\nconst ToastAction = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nToastAction.displayName = ToastPrimitives.Action.displayName\n\nconst ToastClose = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n \n \n))\nToastClose.displayName = ToastPrimitives.Close.displayName\n\nconst ToastTitle = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nToastTitle.displayName = ToastPrimitives.Title.displayName\n\nconst ToastDescription = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, ...props }, ref) => (\n \n))\nToastDescription.displayName = ToastPrimitives.Description.displayName\n\ntype ToastProps = React.ComponentPropsWithoutRef\n\ntype ToastActionElement = React.ReactElement\n\nexport {\n type ToastProps,\n type ToastActionElement,\n ToastProvider,\n ToastViewport,\n Toast,\n ToastTitle,\n ToastDescription,\n ToastClose,\n ToastAction,\n}\n" + }, + { + "name": "use-toast.ts", + "content": "// Inspired by react-hot-toast library\nimport * as React from \"react\"\n\nimport type {\n ToastActionElement,\n ToastProps,\n} from \"@/registry/default/ui/toast\"\n\nconst TOAST_LIMIT = 1\nconst TOAST_REMOVE_DELAY = 1000000\n\ntype ToasterToast = ToastProps & {\n id: string\n title?: React.ReactNode\n description?: React.ReactNode\n action?: ToastActionElement\n}\n\nconst actionTypes = {\n ADD_TOAST: \"ADD_TOAST\",\n UPDATE_TOAST: \"UPDATE_TOAST\",\n DISMISS_TOAST: \"DISMISS_TOAST\",\n REMOVE_TOAST: \"REMOVE_TOAST\",\n} as const\n\nlet count = 0\n\nfunction genId() {\n count = (count + 1) % Number.MAX_VALUE\n return count.toString()\n}\n\ntype ActionType = typeof actionTypes\n\ntype Action =\n | {\n type: ActionType[\"ADD_TOAST\"]\n toast: ToasterToast\n }\n | {\n type: ActionType[\"UPDATE_TOAST\"]\n toast: Partial\n }\n | {\n type: ActionType[\"DISMISS_TOAST\"]\n toastId?: ToasterToast[\"id\"]\n }\n | {\n type: ActionType[\"REMOVE_TOAST\"]\n toastId?: ToasterToast[\"id\"]\n }\n\ninterface State {\n toasts: ToasterToast[]\n}\n\nconst toastTimeouts = new Map>()\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId)\n dispatch({\n type: \"REMOVE_TOAST\",\n toastId: toastId,\n })\n }, TOAST_REMOVE_DELAY)\n\n toastTimeouts.set(toastId, timeout)\n}\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"ADD_TOAST\":\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT),\n }\n\n case \"UPDATE_TOAST\":\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t\n ),\n }\n\n case \"DISMISS_TOAST\": {\n const { toastId } = action\n\n // ! Side effects ! - This could be extracted into a dismissToast() action,\n // but I'll keep it here for simplicity\n if (toastId) {\n addToRemoveQueue(toastId)\n } else {\n state.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id)\n })\n }\n\n return {\n ...state,\n toasts: state.toasts.map((t) =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t\n ),\n }\n }\n case \"REMOVE_TOAST\":\n if (action.toastId === undefined) {\n return {\n ...state,\n toasts: [],\n }\n }\n return {\n ...state,\n toasts: state.toasts.filter((t) => t.id !== action.toastId),\n }\n }\n}\n\nconst listeners: Array<(state: State) => void> = []\n\nlet memoryState: State = { toasts: [] }\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action)\n listeners.forEach((listener) => {\n listener(memoryState)\n })\n}\n\ntype Toast = Omit\n\nfunction toast({ ...props }: Toast) {\n const id = genId()\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: \"UPDATE_TOAST\",\n toast: { ...props, id },\n })\n const dismiss = () => dispatch({ type: \"DISMISS_TOAST\", toastId: id })\n\n dispatch({\n type: \"ADD_TOAST\",\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open) => {\n if (!open) dismiss()\n },\n },\n })\n\n return {\n id: id,\n dismiss,\n update,\n }\n}\n\nfunction useToast() {\n const [state, setState] = React.useState(memoryState)\n\n React.useEffect(() => {\n listeners.push(setState)\n return () => {\n const index = listeners.indexOf(setState)\n if (index > -1) {\n listeners.splice(index, 1)\n }\n }\n }, [state])\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: \"DISMISS_TOAST\", toastId }),\n }\n}\n\nexport { useToast, toast }\n" + }, + { + "name": "toaster.tsx", + "content": "\"use client\"\n\nimport {\n Toast,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n} from \"@/registry/new-york/ui/toast\"\nimport { useToast } from \"@/registry/new-york/ui/use-toast\"\n\nexport function Toaster() {\n const { toasts } = useToast()\n\n return (\n \n {toasts.map(function ({ id, title, description, action, ...props }) {\n return (\n \n
\n {title && {title}}\n {description && (\n {description}\n )}\n
\n {action}\n \n
\n )\n })}\n \n
\n )\n}\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/toggle.json b/apps/www/src/public/registry/styles/new-york/toggle.json new file mode 100644 index 00000000..c51417ad --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/toggle.json @@ -0,0 +1,13 @@ +{ + "name": "toggle", + "dependencies": [ + "@radix-ui/react-toggle" + ], + "files": [ + { + "name": "toggle.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst toggleVariants = cva(\n \"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline:\n \"border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground\",\n },\n size: {\n default: \"h-9 px-3\",\n sm: \"h-8 px-2\",\n lg: \"h-10 px-3\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst Toggle = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef &\n VariantProps\n>(({ className, variant, size, ...props }, ref) => (\n \n))\n\nToggle.displayName = TogglePrimitive.Root.displayName\n\nexport { Toggle, toggleVariants }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/styles/new-york/tooltip.json b/apps/www/src/public/registry/styles/new-york/tooltip.json new file mode 100644 index 00000000..6ddc3201 --- /dev/null +++ b/apps/www/src/public/registry/styles/new-york/tooltip.json @@ -0,0 +1,13 @@ +{ + "name": "tooltip", + "dependencies": [ + "@radix-ui/react-tooltip" + ], + "files": [ + { + "name": "tooltip.tsx", + "content": "\"use client\"\n\nimport * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef,\n React.ComponentPropsWithoutRef\n>(({ className, sideOffset = 4, ...props }, ref) => (\n \n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/src/public/registry/themes.css b/apps/www/src/public/registry/themes.css new file mode 100644 index 00000000..e6a22720 --- /dev/null +++ b/apps/www/src/public/registry/themes.css @@ -0,0 +1,768 @@ + + .theme-zinc { + --background: 0 0% 100%; + --foreground: 240 10% 3.9%; + + --muted: 240 4.8% 95.9%; + --muted-foreground: 240 3.8% 46.1%; + + --popover: 0 0% 100%; + --popover-foreground: 240 10% 3.9%; + + --card: 0 0% 100%; + --card-foreground: 240 10% 3.9%; + + --border: 240 5.9% 90%; + --input: 240 5.9% 90%; + + --primary: 240 5.9% 10%; + --primary-foreground: 0 0% 98%; + + --secondary: 240 4.8% 95.9%; + --secondary-foreground: 240 5.9% 10%; + + --accent: 240 4.8% 95.9%; + --accent-foreground: 240 5.9% 10%; + + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; + + --ring: 240 5.9% 10%; + + --radius: 0.5rem; + } + + .dark .theme-zinc { + --background: 240 10% 3.9%; + --foreground: 0 0% 98%; + + --muted: 240 3.7% 15.9%; + --muted-foreground: 240 5% 64.9%; + + --popover: 240 10% 3.9%; + --popover-foreground: 0 0% 98%; + + --card: 240 10% 3.9%; + --card-foreground: 0 0% 98%; + + --border: 240 3.7% 15.9%; + --input: 240 3.7% 15.9%; + + --primary: 0 0% 98%; + --primary-foreground: 240 5.9% 10%; + + --secondary: 240 3.7% 15.9%; + --secondary-foreground: 0 0% 98%; + + --accent: 240 3.7% 15.9%; + --accent-foreground: 0 0% 98%; + + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 0% 98%; + + --ring: 240 4.9% 83.9%; + } + + .theme-slate { + --background: 0 0% 100%; + --foreground: 222.2 84% 4.9%; + + --muted: 210 40% 96.1%; + --muted-foreground: 215.4 16.3% 46.9%; + + --popover: 0 0% 100%; + --popover-foreground: 222.2 84% 4.9%; + + --card: 0 0% 100%; + --card-foreground: 222.2 84% 4.9%; + + --border: 214.3 31.8% 91.4%; + --input: 214.3 31.8% 91.4%; + + --primary: 222.2 47.4% 11.2%; + --primary-foreground: 210 40% 98%; + + --secondary: 210 40% 96.1%; + --secondary-foreground: 222.2 47.4% 11.2%; + + --accent: 210 40% 96.1%; + --accent-foreground: 222.2 47.4% 11.2%; + + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 210 40% 98%; + + --ring: 222.2 84% 4.9%; + + --radius: 0.5rem; + } + + .dark .theme-slate { + --background: 222.2 84% 4.9%; + --foreground: 210 40% 98%; + + --muted: 217.2 32.6% 17.5%; + --muted-foreground: 215 20.2% 65.1%; + + --popover: 222.2 84% 4.9%; + --popover-foreground: 210 40% 98%; + + --card: 222.2 84% 4.9%; + --card-foreground: 210 40% 98%; + + --border: 217.2 32.6% 17.5%; + --input: 217.2 32.6% 17.5%; + + --primary: 210 40% 98%; + --primary-foreground: 222.2 47.4% 11.2%; + + --secondary: 217.2 32.6% 17.5%; + --secondary-foreground: 210 40% 98%; + + --accent: 217.2 32.6% 17.5%; + --accent-foreground: 210 40% 98%; + + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 210 40% 98%; + + --ring: 212.7 26.8% 83.9; + } + + .theme-stone { + --background: 0 0% 100%; + --foreground: 20 14.3% 4.1%; + + --muted: 60 4.8% 95.9%; + --muted-foreground: 25 5.3% 44.7%; + + --popover: 0 0% 100%; + --popover-foreground: 20 14.3% 4.1%; + + --card: 0 0% 100%; + --card-foreground: 20 14.3% 4.1%; + + --border: 20 5.9% 90%; + --input: 20 5.9% 90%; + + --primary: 24 9.8% 10%; + --primary-foreground: 60 9.1% 97.8%; + + --secondary: 60 4.8% 95.9%; + --secondary-foreground: 24 9.8% 10%; + + --accent: 60 4.8% 95.9%; + --accent-foreground: 24 9.8% 10%; + + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 60 9.1% 97.8%; + + --ring: 20 14.3% 4.1%; + + --radius: 0.95rem; + } + + .dark .theme-stone { + --background: 20 14.3% 4.1%; + --foreground: 60 9.1% 97.8%; + + --muted: 12 6.5% 15.1%; + --muted-foreground: 24 5.4% 63.9%; + + --popover: 20 14.3% 4.1%; + --popover-foreground: 60 9.1% 97.8%; + + --card: 20 14.3% 4.1%; + --card-foreground: 60 9.1% 97.8%; + + --border: 12 6.5% 15.1%; + --input: 12 6.5% 15.1%; + + --primary: 60 9.1% 97.8%; + --primary-foreground: 24 9.8% 10%; + + --secondary: 12 6.5% 15.1%; + --secondary-foreground: 60 9.1% 97.8%; + + --accent: 12 6.5% 15.1%; + --accent-foreground: 60 9.1% 97.8%; + + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 60 9.1% 97.8%; + + --ring: 24 5.7% 82.9%; + } + + .theme-gray { + --background: 0 0% 100%; + --foreground: 224 71.4% 4.1%; + + --muted: 220 14.3% 95.9%; + --muted-foreground: 220 8.9% 46.1%; + + --popover: 0 0% 100%; + --popover-foreground: 224 71.4% 4.1%; + + --card: 0 0% 100%; + --card-foreground: 224 71.4% 4.1%; + + --border: 220 13% 91%; + --input: 220 13% 91%; + + --primary: 220.9 39.3% 11%; + --primary-foreground: 210 20% 98%; + + --secondary: 220 14.3% 95.9%; + --secondary-foreground: 220.9 39.3% 11%; + + --accent: 220 14.3% 95.9%; + --accent-foreground: 220.9 39.3% 11%; + + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 210 20% 98%; + + --ring: 224 71.4% 4.1%; + + --radius: 0.35rem; + } + + .dark .theme-gray { + --background: 224 71.4% 4.1%; + --foreground: 210 20% 98%; + + --muted: 215 27.9% 16.9%; + --muted-foreground: 217.9 10.6% 64.9%; + + --popover: 224 71.4% 4.1%; + --popover-foreground: 210 20% 98%; + + --card: 224 71.4% 4.1%; + --card-foreground: 210 20% 98%; + + --border: 215 27.9% 16.9%; + --input: 215 27.9% 16.9%; + + --primary: 210 20% 98%; + --primary-foreground: 220.9 39.3% 11%; + + --secondary: 215 27.9% 16.9%; + --secondary-foreground: 210 20% 98%; + + --accent: 215 27.9% 16.9%; + --accent-foreground: 210 20% 98%; + + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 210 20% 98%; + + --ring: 216 12.2% 83.9%; + } + + .theme-neutral { + --background: 0 0% 100%; + --foreground: 0 0% 3.9%; + + --muted: 0 0% 96.1%; + --muted-foreground: 0 0% 45.1%; + + --popover: 0 0% 100%; + --popover-foreground: 0 0% 3.9%; + + --card: 0 0% 100%; + --card-foreground: 0 0% 3.9%; + + --border: 0 0% 89.8%; + --input: 0 0% 89.8%; + + --primary: 0 0% 9%; + --primary-foreground: 0 0% 98%; + + --secondary: 0 0% 96.1%; + --secondary-foreground: 0 0% 9%; + + --accent: 0 0% 96.1%; + --accent-foreground: 0 0% 9%; + + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; + + --ring: 0 0% 3.9%; + + --radius: ; + } + + .dark .theme-neutral { + --background: 0 0% 3.9%; + --foreground: 0 0% 98%; + + --muted: 0 0% 14.9%; + --muted-foreground: 0 0% 63.9%; + + --popover: 0 0% 3.9%; + --popover-foreground: 0 0% 98%; + + --card: 0 0% 3.9%; + --card-foreground: 0 0% 98%; + + --border: 0 0% 14.9%; + --input: 0 0% 14.9%; + + --primary: 0 0% 98%; + --primary-foreground: 0 0% 9%; + + --secondary: 0 0% 14.9%; + --secondary-foreground: 0 0% 98%; + + --accent: 0 0% 14.9%; + --accent-foreground: 0 0% 98%; + + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 0% 98%; + + --ring: 0 0% 83.1%; + } + + .theme-red { + --background: 0 0% 100%; + --foreground: 0 0% 3.9%; + + --muted: 0 0% 96.1%; + --muted-foreground: 0 0% 45.1%; + + --popover: 0 0% 100%; + --popover-foreground: 0 0% 3.9%; + + --card: 0 0% 100%; + --card-foreground: 0 0% 3.9%; + + --border: 0 0% 89.8%; + --input: 0 0% 89.8%; + + --primary: 0 72.2% 50.6%; + --primary-foreground: 0 85.7% 97.3%; + + --secondary: 0 0% 96.1%; + --secondary-foreground: 0 0% 9%; + + --accent: 0 0% 96.1%; + --accent-foreground: 0 0% 9%; + + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; + + --ring: 0 72.2% 50.6%; + + --radius: 0.4rem; + } + + .dark .theme-red { + --background: 0 0% 3.9%; + --foreground: 0 0% 98%; + + --muted: 0 0% 14.9%; + --muted-foreground: 0 0% 63.9%; + + --popover: 0 0% 3.9%; + --popover-foreground: 0 0% 98%; + + --card: 0 0% 3.9%; + --card-foreground: 0 0% 98%; + + --border: 0 0% 14.9%; + --input: 0 0% 14.9%; + + --primary: 0 72.2% 50.6%; + --primary-foreground: 0 85.7% 97.3%; + + --secondary: 0 0% 14.9%; + --secondary-foreground: 0 0% 98%; + + --accent: 0 0% 14.9%; + --accent-foreground: 0 0% 98%; + + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 0% 98%; + + --ring: 0 72.2% 50.6%; + } + + .theme-rose { + --background: 0 0% 100%; + --foreground: 240 10% 3.9%; + + --muted: 240 4.8% 95.9%; + --muted-foreground: 240 3.8% 46.1%; + + --popover: 0 0% 100%; + --popover-foreground: 240 10% 3.9%; + + --card: 0 0% 100%; + --card-foreground: 240 10% 3.9%; + + --border: 240 5.9% 90%; + --input: 240 5.9% 90%; + + --primary: 346.8 77.2% 49.8%; + --primary-foreground: 355.7 100% 97.3%; + + --secondary: 240 4.8% 95.9%; + --secondary-foreground: 240 5.9% 10%; + + --accent: 240 4.8% 95.9%; + --accent-foreground: 240 5.9% 10%; + + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; + + --ring: 346.8 77.2% 49.8%; + + --radius: 0.5rem; + } + + .dark .theme-rose { + --background: 20 14.3% 4.1%; + --foreground: 0 0% 95%; + + --muted: 0 0% 15%; + --muted-foreground: 240 5% 64.9%; + + --popover: 0 0% 9%; + --popover-foreground: 0 0% 95%; + + --card: 24 9.8% 10%; + --card-foreground: 0 0% 95%; + + --border: 240 3.7% 15.9%; + --input: 240 3.7% 15.9%; + + --primary: 346.8 77.2% 49.8%; + --primary-foreground: 355.7 100% 97.3%; + + --secondary: 240 3.7% 15.9%; + --secondary-foreground: 0 0% 98%; + + --accent: 12 6.5% 15.1%; + --accent-foreground: 0 0% 98%; + + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 85.7% 97.3%; + + --ring: 346.8 77.2% 49.8%; + } + + .theme-orange { + --background: 0 0% 100%; + --foreground: 20 14.3% 4.1%; + + --muted: 60 4.8% 95.9%; + --muted-foreground: 25 5.3% 44.7%; + + --popover: 0 0% 100%; + --popover-foreground: 20 14.3% 4.1%; + + --card: 0 0% 100%; + --card-foreground: 20 14.3% 4.1%; + + --border: 20 5.9% 90%; + --input: 20 5.9% 90%; + + --primary: 24.6 95% 53.1%; + --primary-foreground: 60 9.1% 97.8%; + + --secondary: 60 4.8% 95.9%; + --secondary-foreground: 24 9.8% 10%; + + --accent: 60 4.8% 95.9%; + --accent-foreground: 24 9.8% 10%; + + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 60 9.1% 97.8%; + + --ring: 24.6 95% 53.1%; + + --radius: 0.95rem; + } + + .dark .theme-orange { + --background: 20 14.3% 4.1%; + --foreground: 60 9.1% 97.8%; + + --muted: 12 6.5% 15.1%; + --muted-foreground: 24 5.4% 63.9%; + + --popover: 20 14.3% 4.1%; + --popover-foreground: 60 9.1% 97.8%; + + --card: 20 14.3% 4.1%; + --card-foreground: 60 9.1% 97.8%; + + --border: 12 6.5% 15.1%; + --input: 12 6.5% 15.1%; + + --primary: 20.5 90.2% 48.2%; + --primary-foreground: 60 9.1% 97.8%; + + --secondary: 12 6.5% 15.1%; + --secondary-foreground: 60 9.1% 97.8%; + + --accent: 12 6.5% 15.1%; + --accent-foreground: 60 9.1% 97.8%; + + --destructive: 0 72.2% 50.6%; + --destructive-foreground: 60 9.1% 97.8%; + + --ring: 20.5 90.2% 48.2%; + } + + .theme-green { + --background: 0 0% 100%; + --foreground: 240 10% 3.9%; + + --muted: 240 4.8% 95.9%; + --muted-foreground: 240 3.8% 46.1%; + + --popover: 0 0% 100%; + --popover-foreground: 240 10% 3.9%; + + --card: 0 0% 100%; + --card-foreground: 240 10% 3.9%; + + --border: 240 5.9% 90%; + --input: 240 5.9% 90%; + + --primary: 142.1 76.2% 36.3%; + --primary-foreground: 355.7 100% 97.3%; + + --secondary: 240 4.8% 95.9%; + --secondary-foreground: 240 5.9% 10%; + + --accent: 240 4.8% 95.9%; + --accent-foreground: 240 5.9% 10%; + + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; + + --ring: 142.1 76.2% 36.3%; + + --radius: ; + } + + .dark .theme-green { + --background: 20 14.3% 4.1%; + --foreground: 0 0% 95%; + + --muted: 0 0% 15%; + --muted-foreground: 240 5% 64.9%; + + --popover: 0 0% 9%; + --popover-foreground: 0 0% 95%; + + --card: 24 9.8% 10%; + --card-foreground: 0 0% 95%; + + --border: 240 3.7% 15.9%; + --input: 240 3.7% 15.9%; + + --primary: 142.1 70.6% 45.3%; + --primary-foreground: 144.9 80.4% 10%; + + --secondary: 240 3.7% 15.9%; + --secondary-foreground: 0 0% 98%; + + --accent: 12 6.5% 15.1%; + --accent-foreground: 0 0% 98%; + + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 85.7% 97.3%; + + --ring: 142.4 71.8% 29.2%; + } + + .theme-blue { + --background: 0 0% 100%; + --foreground: 222.2 84% 4.9%; + + --muted: 210 40% 96.1%; + --muted-foreground: 215.4 16.3% 46.9%; + + --popover: 0 0% 100%; + --popover-foreground: 222.2 84% 4.9%; + + --card: 0 0% 100%; + --card-foreground: 222.2 84% 4.9%; + + --border: 214.3 31.8% 91.4%; + --input: 214.3 31.8% 91.4%; + + --primary: 221.2 83.2% 53.3%; + --primary-foreground: 210 40% 98%; + + --secondary: 210 40% 96.1%; + --secondary-foreground: 222.2 47.4% 11.2%; + + --accent: 210 40% 96.1%; + --accent-foreground: 222.2 47.4% 11.2%; + + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 210 40% 98%; + + --ring: 221.2 83.2% 53.3%; + + --radius: ; + } + + .dark .theme-blue { + --background: 222.2 84% 4.9%; + --foreground: 210 40% 98%; + + --muted: 217.2 32.6% 17.5%; + --muted-foreground: 215 20.2% 65.1%; + + --popover: 222.2 84% 4.9%; + --popover-foreground: 210 40% 98%; + + --card: 222.2 84% 4.9%; + --card-foreground: 210 40% 98%; + + --border: 217.2 32.6% 17.5%; + --input: 217.2 32.6% 17.5%; + + --primary: 217.2 91.2% 59.8%; + --primary-foreground: 222.2 47.4% 11.2%; + + --secondary: 217.2 32.6% 17.5%; + --secondary-foreground: 210 40% 98%; + + --accent: 217.2 32.6% 17.5%; + --accent-foreground: 210 40% 98%; + + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 210 40% 98%; + + --ring: 224.3 76.3% 48%; + } + + .theme-yellow { + --background: 0 0% 100%; + --foreground: 20 14.3% 4.1%; + + --muted: 60 4.8% 95.9%; + --muted-foreground: 25 5.3% 44.7%; + + --popover: 0 0% 100%; + --popover-foreground: 20 14.3% 4.1%; + + --card: 0 0% 100%; + --card-foreground: 20 14.3% 4.1%; + + --border: 20 5.9% 90%; + --input: 20 5.9% 90%; + + --primary: 47.9 95.8% 53.1%; + --primary-foreground: 26 83.3% 14.1%; + + --secondary: 60 4.8% 95.9%; + --secondary-foreground: 24 9.8% 10%; + + --accent: 60 4.8% 95.9%; + --accent-foreground: 24 9.8% 10%; + + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 60 9.1% 97.8%; + + --ring: 20 14.3% 4.1%; + + --radius: 0.95rem; + } + + .dark .theme-yellow { + --background: 20 14.3% 4.1%; + --foreground: 60 9.1% 97.8%; + + --muted: 12 6.5% 15.1%; + --muted-foreground: 24 5.4% 63.9%; + + --popover: 20 14.3% 4.1%; + --popover-foreground: 60 9.1% 97.8%; + + --card: 20 14.3% 4.1%; + --card-foreground: 60 9.1% 97.8%; + + --border: 12 6.5% 15.1%; + --input: 12 6.5% 15.1%; + + --primary: 47.9 95.8% 53.1%; + --primary-foreground: 26 83.3% 14.1%; + + --secondary: 12 6.5% 15.1%; + --secondary-foreground: 60 9.1% 97.8%; + + --accent: 12 6.5% 15.1%; + --accent-foreground: 60 9.1% 97.8%; + + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 60 9.1% 97.8%; + + --ring: 35.5 91.7% 32.9%; + } + + .theme-violet { + --background: 0 0% 100%; + --foreground: 224 71.4% 4.1%; + + --muted: 220 14.3% 95.9%; + --muted-foreground: 220 8.9% 46.1%; + + --popover: 0 0% 100%; + --popover-foreground: 224 71.4% 4.1%; + + --card: 0 0% 100%; + --card-foreground: 224 71.4% 4.1%; + + --border: 220 13% 91%; + --input: 220 13% 91%; + + --primary: 262.1 83.3% 57.8%; + --primary-foreground: 210 20% 98%; + + --secondary: 220 14.3% 95.9%; + --secondary-foreground: 220.9 39.3% 11%; + + --accent: 220 14.3% 95.9%; + --accent-foreground: 220.9 39.3% 11%; + + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 210 20% 98%; + + --ring: 262.1 83.3% 57.8%; + + --radius: ; + } + + .dark .theme-violet { + --background: 224 71.4% 4.1%; + --foreground: 210 20% 98%; + + --muted: 215 27.9% 16.9%; + --muted-foreground: 217.9 10.6% 64.9%; + + --popover: 224 71.4% 4.1%; + --popover-foreground: 210 20% 98%; + + --card: 224 71.4% 4.1%; + --card-foreground: 210 20% 98%; + + --border: 215 27.9% 16.9%; + --input: 215 27.9% 16.9%; + + --primary: 263.4 70% 50.4%; + --primary-foreground: 210 20% 98%; + + --secondary: 215 27.9% 16.9%; + --secondary-foreground: 210 20% 98%; + + --accent: 215 27.9% 16.9%; + --accent-foreground: 210 20% 98%; + + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 210 20% 98%; + + --ring: 263.4 70% 50.4%; + } \ No newline at end of file diff --git a/apps/www/src/public/registry/themes/gray.json b/apps/www/src/public/registry/themes/gray.json new file mode 100644 index 00000000..81742502 --- /dev/null +++ b/apps/www/src/public/registry/themes/gray.json @@ -0,0 +1,48 @@ +{ + "name": "gray", + "label": "Gray", + "cssVars": { + "light": { + "background": "0 0% 100%", + "foreground": "224 71.4% 4.1%", + "card": "0 0% 100%", + "card-foreground": "224 71.4% 4.1%", + "popover": "0 0% 100%", + "popover-foreground": "224 71.4% 4.1%", + "primary": "220.9 39.3% 11%", + "primary-foreground": "210 20% 98%", + "secondary": "220 14.3% 95.9%", + "secondary-foreground": "220.9 39.3% 11%", + "muted": "220 14.3% 95.9%", + "muted-foreground": "220 8.9% 46.1%", + "accent": "220 14.3% 95.9%", + "accent-foreground": "220.9 39.3% 11%", + "destructive": "0 84.2% 60.2%", + "destructive-foreground": "210 20% 98%", + "border": "220 13% 91%", + "input": "220 13% 91%", + "ring": "224 71.4% 4.1%" + }, + "dark": { + "background": "224 71.4% 4.1%", + "foreground": "210 20% 98%", + "card": "224 71.4% 4.1%", + "card-foreground": "210 20% 98%", + "popover": "224 71.4% 4.1%", + "popover-foreground": "210 20% 98%", + "primary": "210 20% 98%", + "primary-foreground": "220.9 39.3% 11%", + "secondary": "215 27.9% 16.9%", + "secondary-foreground": "210 20% 98%", + "muted": "215 27.9% 16.9%", + "muted-foreground": "217.9 10.6% 64.9%", + "accent": "215 27.9% 16.9%", + "accent-foreground": "210 20% 98%", + "destructive": "0 62.8% 30.6%", + "destructive-foreground": "210 20% 98%", + "border": "215 27.9% 16.9%", + "input": "215 27.9% 16.9%", + "ring": "216 12.2% 83.9%" + } + } +} \ No newline at end of file diff --git a/apps/www/src/public/registry/themes/neutral.json b/apps/www/src/public/registry/themes/neutral.json new file mode 100644 index 00000000..e00dec7f --- /dev/null +++ b/apps/www/src/public/registry/themes/neutral.json @@ -0,0 +1,48 @@ +{ + "name": "neutral", + "label": "Neutral", + "cssVars": { + "light": { + "background": "0 0% 100%", + "foreground": "0 0% 3.9%", + "card": "0 0% 100%", + "card-foreground": "0 0% 3.9%", + "popover": "0 0% 100%", + "popover-foreground": "0 0% 3.9%", + "primary": "0 0% 9%", + "primary-foreground": "0 0% 98%", + "secondary": "0 0% 96.1%", + "secondary-foreground": "0 0% 9%", + "muted": "0 0% 96.1%", + "muted-foreground": "0 0% 45.1%", + "accent": "0 0% 96.1%", + "accent-foreground": "0 0% 9%", + "destructive": "0 84.2% 60.2%", + "destructive-foreground": "0 0% 98%", + "border": "0 0% 89.8%", + "input": "0 0% 89.8%", + "ring": "0 0% 3.9%" + }, + "dark": { + "background": "0 0% 3.9%", + "foreground": "0 0% 98%", + "card": "0 0% 3.9%", + "card-foreground": "0 0% 98%", + "popover": "0 0% 3.9%", + "popover-foreground": "0 0% 98%", + "primary": "0 0% 98%", + "primary-foreground": "0 0% 9%", + "secondary": "0 0% 14.9%", + "secondary-foreground": "0 0% 98%", + "muted": "0 0% 14.9%", + "muted-foreground": "0 0% 63.9%", + "accent": "0 0% 14.9%", + "accent-foreground": "0 0% 98%", + "destructive": "0 62.8% 30.6%", + "destructive-foreground": "0 0% 98%", + "border": "0 0% 14.9%", + "input": "0 0% 14.9%", + "ring": "0 0% 83.1%" + } + } +} \ No newline at end of file diff --git a/apps/www/src/public/registry/themes/slate.json b/apps/www/src/public/registry/themes/slate.json new file mode 100644 index 00000000..2cd8397f --- /dev/null +++ b/apps/www/src/public/registry/themes/slate.json @@ -0,0 +1,48 @@ +{ + "name": "slate", + "label": "Slate", + "cssVars": { + "light": { + "background": "0 0% 100%", + "foreground": "222.2 84% 4.9%", + "card": "0 0% 100%", + "card-foreground": "222.2 84% 4.9%", + "popover": "0 0% 100%", + "popover-foreground": "222.2 84% 4.9%", + "primary": "222.2 47.4% 11.2%", + "primary-foreground": "210 40% 98%", + "secondary": "210 40% 96.1%", + "secondary-foreground": "222.2 47.4% 11.2%", + "muted": "210 40% 96.1%", + "muted-foreground": "215.4 16.3% 46.9%", + "accent": "210 40% 96.1%", + "accent-foreground": "222.2 47.4% 11.2%", + "destructive": "0 84.2% 60.2%", + "destructive-foreground": "210 40% 98%", + "border": "214.3 31.8% 91.4%", + "input": "214.3 31.8% 91.4%", + "ring": "222.2 84% 4.9%" + }, + "dark": { + "background": "222.2 84% 4.9%", + "foreground": "210 40% 98%", + "card": "222.2 84% 4.9%", + "card-foreground": "210 40% 98%", + "popover": "222.2 84% 4.9%", + "popover-foreground": "210 40% 98%", + "primary": "210 40% 98%", + "primary-foreground": "222.2 47.4% 11.2%", + "secondary": "217.2 32.6% 17.5%", + "secondary-foreground": "210 40% 98%", + "muted": "217.2 32.6% 17.5%", + "muted-foreground": "215 20.2% 65.1%", + "accent": "217.2 32.6% 17.5%", + "accent-foreground": "210 40% 98%", + "destructive": "0 62.8% 30.6%", + "destructive-foreground": "210 40% 98%", + "border": "217.2 32.6% 17.5%", + "input": "217.2 32.6% 17.5%", + "ring": "212.7 26.8 83.9%" + } + } +} diff --git a/apps/www/src/public/registry/themes/stone.json b/apps/www/src/public/registry/themes/stone.json new file mode 100644 index 00000000..8ff9ab5c --- /dev/null +++ b/apps/www/src/public/registry/themes/stone.json @@ -0,0 +1,48 @@ +{ + "name": "stone", + "label": "Stone", + "cssVars": { + "light": { + "background": "0 0% 100%", + "foreground": "20 14.3% 4.1%", + "card": "0 0% 100%", + "card-foreground": "20 14.3% 4.1%", + "popover": "0 0% 100%", + "popover-foreground": "20 14.3% 4.1%", + "primary": "24 9.8% 10%", + "primary-foreground": "60 9.1% 97.8%", + "secondary": "60 4.8% 95.9%", + "secondary-foreground": "24 9.8% 10%", + "muted": "60 4.8% 95.9%", + "muted-foreground": "25 5.3% 44.7%", + "accent": "60 4.8% 95.9%", + "accent-foreground": "24 9.8% 10%", + "destructive": "0 84.2% 60.2%", + "destructive-foreground": "60 9.1% 97.8%", + "border": "20 5.9% 90%", + "input": "20 5.9% 90%", + "ring": "20 14.3% 4.1%" + }, + "dark": { + "background": "20 14.3% 4.1%", + "foreground": "60 9.1% 97.8%", + "card": "20 14.3% 4.1%", + "card-foreground": "60 9.1% 97.8%", + "popover": "20 14.3% 4.1%", + "popover-foreground": "60 9.1% 97.8%", + "primary": "60 9.1% 97.8%", + "primary-foreground": "24 9.8% 10%", + "secondary": "12 6.5% 15.1%", + "secondary-foreground": "60 9.1% 97.8%", + "muted": "12 6.5% 15.1%", + "muted-foreground": "24 5.4% 63.9%", + "accent": "12 6.5% 15.1%", + "accent-foreground": "60 9.1% 97.8%", + "destructive": "0 62.8% 30.6%", + "destructive-foreground": "60 9.1% 97.8%", + "border": "12 6.5% 15.1%", + "input": "12 6.5% 15.1%", + "ring": "24 5.7% 82.9%" + } + } +} \ No newline at end of file diff --git a/apps/www/src/public/registry/themes/zinc.json b/apps/www/src/public/registry/themes/zinc.json new file mode 100644 index 00000000..b69bd362 --- /dev/null +++ b/apps/www/src/public/registry/themes/zinc.json @@ -0,0 +1,48 @@ +{ + "name": "zinc", + "label": "Zinc", + "cssVars": { + "light": { + "background": "0 0% 100%", + "foreground": "240 10% 3.9%", + "card": "0 0% 100%", + "card-foreground": "240 10% 3.9%", + "popover": "0 0% 100%", + "popover-foreground": "240 10% 3.9%", + "primary": "240 5.9% 10%", + "primary-foreground": "0 0% 98%", + "secondary": "240 4.8% 95.9%", + "secondary-foreground": "240 5.9% 10%", + "muted": "240 4.8% 95.9%", + "muted-foreground": "240 3.8% 46.1%", + "accent": "240 4.8% 95.9%", + "accent-foreground": "240 5.9% 10%", + "destructive": "0 84.2% 60.2%", + "destructive-foreground": "0 0% 98%", + "border": "240 5.9% 90%", + "input": "240 5.9% 90%", + "ring": "240 10% 3.9%" + }, + "dark": { + "background": "240 10% 3.9%", + "foreground": "0 0% 98%", + "card": "240 10% 3.9%", + "card-foreground": "0 0% 98%", + "popover": "240 10% 3.9%", + "popover-foreground": "0 0% 98%", + "primary": "0 0% 98%", + "primary-foreground": "240 5.9% 10%", + "secondary": "240 3.7% 15.9%", + "secondary-foreground": "0 0% 98%", + "muted": "240 3.7% 15.9%", + "muted-foreground": "240 5% 64.9%", + "accent": "240 3.7% 15.9%", + "accent-foreground": "0 0% 98%", + "destructive": "0 62.8% 30.6%", + "destructive-foreground": "0 0% 98%", + "border": "240 3.7% 15.9%", + "input": "240 3.7% 15.9%", + "ring": "240 4.9% 83.9%" + } + } +} \ No newline at end of file diff --git a/apps/www/src/public/schema.json b/apps/www/src/public/schema.json new file mode 100644 index 00000000..14c922a8 --- /dev/null +++ b/apps/www/src/public/schema.json @@ -0,0 +1,47 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "style": { + "type": "string", + "enum": ["default", "new-york"] + }, + "tailwind": { + "type": "object", + "properties": { + "config": { + "type": "string" + }, + "css": { + "type": "string" + }, + "baseColor": { + "type": "string" + }, + "cssVariables": { + "type": "boolean" + } + }, + "required": ["config", "css", "baseColor", "cssVariables"] + }, + "rsc": { + "type": "boolean" + }, + "tsx": { + "type": "boolean" + }, + "aliases": { + "type": "object", + "properties": { + "utils": { + "type": "string" + }, + "components": { + "type": "string" + } + }, + "required": ["utils", "components"] + } + }, + "required": ["style", "tailwind", "rsc", "aliases"] +} diff --git a/apps/www/src/public/site.webmanifest b/apps/www/src/public/site.webmanifest new file mode 100644 index 00000000..fa99de77 --- /dev/null +++ b/apps/www/src/public/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/package.json b/package.json index c7de0ba7..b580fe44 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,9 @@ "preview": "pnpm --filter www preview", "prepare": "pnpm simple-git-hooks", "lint": "eslint . --ignore-path .gitignore", - "lint:fix": "eslint . --fix --ignore-path .gitignore" + "lint:fix": "eslint . --fix --ignore-path .gitignore", + "dev:cli": "pnpm --filter shadcn-vue dev", + "build:cli": "pnpm --filter shadcn-vue build" }, "devDependencies": { "@antfu/eslint-config": "^0.39.7", diff --git a/packages/cli/package.json b/packages/cli/package.json index eb01b897..e07bcdf9 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "name": "shadcn-vue", "type": "module", - "version": "0.1.0", + "version": "0.0.1", "description": "Add components to your apps.", "publishConfig": { "access": "public" diff --git a/packages/cli/src/utils/get-config.ts b/packages/cli/src/utils/get-config.ts index c2c5a63c..1b49b685 100644 --- a/packages/cli/src/utils/get-config.ts +++ b/packages/cli/src/utils/get-config.ts @@ -1,8 +1,8 @@ -import path from "path" -import { resolveImport } from "@/src/utils/resolve-import" +import path from 'node:path' import { cosmiconfig } from 'cosmiconfig' import { loadConfig } from 'tsconfig-paths' import * as z from 'zod' +import { resolveImport } from '@/src/utils/resolve-import' export const DEFAULT_STYLE = 'default' export const DEFAULT_COMPONENTS = '@/components' @@ -33,21 +33,21 @@ export const rawConfigSchema = z aliases: z.object({ components: z.string(), utils: z.string(), - }) + }), }) .strict() export type RawConfig = z.infer export const configSchema = rawConfigSchema -.extend({ - resolvedPaths: z.object({ - tailwindConfig: z.string(), - tailwindCss: z.string(), - utils: z.string(), - components: z.string(), - }), -}) + .extend({ + resolvedPaths: z.object({ + tailwindConfig: z.string(), + tailwindCss: z.string(), + utils: z.string(), + components: z.string(), + }), + }) export type Config = z.infer diff --git a/packages/cli/src/utils/handle-error.ts b/packages/cli/src/utils/handle-error.ts index b3804170..8ca00d66 100644 --- a/packages/cli/src/utils/handle-error.ts +++ b/packages/cli/src/utils/handle-error.ts @@ -1,17 +1,16 @@ -// import { logger } from '@/src/utils/logger' -import {consola} from 'consola' +import { logger } from './logger' export function handleError(error: unknown) { if (typeof error === 'string') { - consola.error(error) + logger.error(error) process.exit(1) } if (error instanceof Error) { - consola.error(error.message) + logger.error(error.message) process.exit(1) } - consola.error('Something went wrong. Please try again.') + logger.error('Something went wrong. Please try again.') process.exit(1) } diff --git a/packages/cli/src/utils/logger.ts b/packages/cli/src/utils/logger.ts index a18b7b5d..161973a3 100644 --- a/packages/cli/src/utils/logger.ts +++ b/packages/cli/src/utils/logger.ts @@ -1,4 +1,4 @@ -import chalk from "chalk" +import chalk from 'chalk' export const logger = { error(...args: unknown[]) { @@ -14,6 +14,6 @@ export const logger = { console.log(chalk.green(...args)) }, break() { - console.log("") + console.log('') }, } diff --git a/packages/cli/src/utils/registry/index.ts b/packages/cli/src/utils/registry/index.ts index 7ca23376..62ebb891 100644 --- a/packages/cli/src/utils/registry/index.ts +++ b/packages/cli/src/utils/registry/index.ts @@ -11,7 +11,7 @@ import { import type { registryItemWithContentSchema } from '@/src/utils/registry/schema' import type { Config } from '@/src/utils/get-config' -const baseUrl = process.env.COMPONENTS_REGISTRY_URL ?? 'https://ui.shadcn.com' +const baseUrl = process.env.COMPONENTS_REGISTRY_URL ?? 'https://www.shadcn-vue.com' const agent = process.env.https_proxy ? new HttpsProxyAgent(process.env.https_proxy) : undefined diff --git a/packages/cli/src/utils/resolve-import.ts b/packages/cli/src/utils/resolve-import.ts index cc52b646..76ddd9e9 100644 --- a/packages/cli/src/utils/resolve-import.ts +++ b/packages/cli/src/utils/resolve-import.ts @@ -8,6 +8,6 @@ export function resolveImport( importPath, undefined, () => true, - ['.ts', '.tsx'], + ['.ts', '.tsx', '.vue'], ) } diff --git a/packages/cli/src/utils/transformers/transform-import.ts b/packages/cli/src/utils/transformers/transform-import.ts index 7b274450..ac8b78d3 100644 --- a/packages/cli/src/utils/transformers/transform-import.ts +++ b/packages/cli/src/utils/transformers/transform-import.ts @@ -17,7 +17,7 @@ export const transformImport: Transformer = async ({ sourceFile, config }) => { } // Replace `import { cn } from "@/lib/utils"` - if (moduleSpecifier == '@/lib/utils') { + if (moduleSpecifier === '@/lib/utils') { const namedImports = importDeclaration.getNamedImports() const cnImport = namedImports.find(i => i.getName() === 'cn') if (cnImport) {