From 8e762393d1e8f056fba4d7fc99c11de7d1b4f3fb Mon Sep 17 00:00:00 2001 From: zernonia Date: Wed, 6 Sep 2023 09:55:07 +0800 Subject: [PATCH] feat: add auto registry, rename folder --- apps/www/__registry__/index.js | 385 ++++ apps/www/__registry__/index.ts | 2025 +++++++++++++++++ apps/www/package.json | 4 +- apps/www/scripts/build-registry.ts | 141 +- apps/www/src/lib/registry/index.ts | 4 + apps/www/src/lib/registry/registry.ts | 1011 ++------ apps/www/src/lib/registry/styles.ts | 8 +- apps/www/static/registry/colors/gray.json | 92 + apps/www/static/registry/colors/index.json | 1999 ++++++++++++++++ apps/www/static/registry/colors/lime.json | 92 + apps/www/static/registry/colors/neutral.json | 92 + apps/www/static/registry/colors/slate.json | 92 + apps/www/static/registry/colors/stone.json | 92 + apps/www/static/registry/colors/zinc.json | 92 + apps/www/static/registry/index.json | 611 +++++ .../registry/styles/default/accordion.json | 32 + .../registry/styles/default/alert-dialog.json | 53 + .../static/registry/styles/default/alert.json | 26 + .../registry/styles/default/aspect-ratio.json | 18 + .../registry/styles/default/avatar.json | 28 + .../static/registry/styles/default/badge.json | 18 + .../registry/styles/default/breadcrumb.json | 20 + .../registry/styles/default/button.json | 18 + .../registry/styles/default/calendar.json | 18 + .../static/registry/styles/default/card.json | 38 + .../registry/styles/default/checkbox.json | 20 + .../registry/styles/default/collapsible.json | 28 + .../registry/styles/default/context-menu.json | 76 + .../registry/styles/default/data-table.json | 16 + .../registry/styles/default/date-picker.json | 16 + .../registry/styles/default/dialog.json | 44 + .../styles/default/dropdown-menu.json | 72 + .../registry/styles/default/hover-card.json | 28 + .../static/registry/styles/default/input.json | 18 + .../static/registry/styles/default/kbd.json | 16 + .../static/registry/styles/default/label.json | 20 + .../registry/styles/default/menubar.json | 76 + .../styles/default/navigation-menu.json | 48 + .../registry/styles/default/popover.json | 28 + .../registry/styles/default/progress.json | 20 + .../registry/styles/default/radio-group.json | 24 + .../registry/styles/default/scroll-area.json | 24 + .../registry/styles/default/select.json | 52 + .../registry/styles/default/separator.json | 20 + .../static/registry/styles/default/sheet.json | 48 + .../registry/styles/default/skeleton.json | 18 + .../registry/styles/default/slider.json | 20 + .../registry/styles/default/switch.json | 20 + .../static/registry/styles/default/table.json | 50 + .../static/registry/styles/default/tabs.json | 32 + .../registry/styles/default/textarea.json | 18 + .../registry/styles/default/toggle.json | 20 + .../registry/styles/default/tooltip.json | 32 + apps/www/static/registry/styles/index.json | 6 + apps/www/static/registry/themes.css | 768 +++++++ apps/www/tsconfig.json | 1 + apps/www/tsconfig.scripts.json | 34 + pnpm-lock.yaml | 59 +- 58 files changed, 7828 insertions(+), 953 deletions(-) create mode 100644 apps/www/__registry__/index.js create mode 100644 apps/www/__registry__/index.ts create mode 100644 apps/www/src/lib/registry/index.ts create mode 100644 apps/www/static/registry/colors/gray.json create mode 100644 apps/www/static/registry/colors/index.json create mode 100644 apps/www/static/registry/colors/lime.json create mode 100644 apps/www/static/registry/colors/neutral.json create mode 100644 apps/www/static/registry/colors/slate.json create mode 100644 apps/www/static/registry/colors/stone.json create mode 100644 apps/www/static/registry/colors/zinc.json create mode 100644 apps/www/static/registry/index.json create mode 100644 apps/www/static/registry/styles/default/accordion.json create mode 100644 apps/www/static/registry/styles/default/alert-dialog.json create mode 100644 apps/www/static/registry/styles/default/alert.json create mode 100644 apps/www/static/registry/styles/default/aspect-ratio.json create mode 100644 apps/www/static/registry/styles/default/avatar.json create mode 100644 apps/www/static/registry/styles/default/badge.json create mode 100644 apps/www/static/registry/styles/default/breadcrumb.json create mode 100644 apps/www/static/registry/styles/default/button.json create mode 100644 apps/www/static/registry/styles/default/calendar.json create mode 100644 apps/www/static/registry/styles/default/card.json create mode 100644 apps/www/static/registry/styles/default/checkbox.json create mode 100644 apps/www/static/registry/styles/default/collapsible.json create mode 100644 apps/www/static/registry/styles/default/context-menu.json create mode 100644 apps/www/static/registry/styles/default/data-table.json create mode 100644 apps/www/static/registry/styles/default/date-picker.json create mode 100644 apps/www/static/registry/styles/default/dialog.json create mode 100644 apps/www/static/registry/styles/default/dropdown-menu.json create mode 100644 apps/www/static/registry/styles/default/hover-card.json create mode 100644 apps/www/static/registry/styles/default/input.json create mode 100644 apps/www/static/registry/styles/default/kbd.json create mode 100644 apps/www/static/registry/styles/default/label.json create mode 100644 apps/www/static/registry/styles/default/menubar.json create mode 100644 apps/www/static/registry/styles/default/navigation-menu.json create mode 100644 apps/www/static/registry/styles/default/popover.json create mode 100644 apps/www/static/registry/styles/default/progress.json create mode 100644 apps/www/static/registry/styles/default/radio-group.json create mode 100644 apps/www/static/registry/styles/default/scroll-area.json create mode 100644 apps/www/static/registry/styles/default/select.json create mode 100644 apps/www/static/registry/styles/default/separator.json create mode 100644 apps/www/static/registry/styles/default/sheet.json create mode 100644 apps/www/static/registry/styles/default/skeleton.json create mode 100644 apps/www/static/registry/styles/default/slider.json create mode 100644 apps/www/static/registry/styles/default/switch.json create mode 100644 apps/www/static/registry/styles/default/table.json create mode 100644 apps/www/static/registry/styles/default/tabs.json create mode 100644 apps/www/static/registry/styles/default/textarea.json create mode 100644 apps/www/static/registry/styles/default/toggle.json create mode 100644 apps/www/static/registry/styles/default/tooltip.json create mode 100644 apps/www/static/registry/styles/index.json create mode 100644 apps/www/static/registry/themes.css create mode 100644 apps/www/tsconfig.scripts.json diff --git a/apps/www/__registry__/index.js b/apps/www/__registry__/index.js new file mode 100644 index 00000000..799079b4 --- /dev/null +++ b/apps/www/__registry__/index.js @@ -0,0 +1,385 @@ + +// This file is autogenerated by scripts/build-registry.ts +// Do not edit this file directly. +export const Index = { + "default": { + "AccordionDemo": { + name: "AccordionDemo", + type: "components:example", + registryDependencies: ["accordion"], + component: () => import("../src/lib/registry/default/example/AccordionDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/AccordionDemo.vue"], + }, + "AlertDemo": { + name: "AlertDemo", + type: "components:example", + registryDependencies: ["alert"], + component: () => import("../src/lib/registry/default/example/AlertDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/AlertDemo.vue"], + }, + "AlertDialogDemo": { + name: "AlertDialogDemo", + type: "components:example", + registryDependencies: ["alert-dialog","button"], + component: () => import("../src/lib/registry/default/example/AlertDialogDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/AlertDialogDemo.vue"], + }, + "AspectRatioDemo": { + name: "AspectRatioDemo", + type: "components:example", + registryDependencies: ["aspect-ratio"], + component: () => import("../src/lib/registry/default/example/AspectRatioDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/AspectRatioDemo.vue"], + }, + "AvatarDemo": { + name: "AvatarDemo", + type: "components:example", + registryDependencies: ["avatar"], + component: () => import("../src/lib/registry/default/example/AvatarDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/AvatarDemo.vue"], + }, + "BadgeDemo": { + name: "BadgeDemo", + type: "components:example", + registryDependencies: ["badge"], + component: () => import("../src/lib/registry/default/example/BadgeDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/BadgeDemo.vue"], + }, + "ButtonDemo": { + name: "ButtonDemo", + type: "components:example", + registryDependencies: ["button"], + component: () => import("../src/lib/registry/default/example/ButtonDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/ButtonDemo.vue"], + }, + "CalendarDemo": { + name: "CalendarDemo", + type: "components:example", + registryDependencies: ["calendar"], + component: () => import("../src/lib/registry/default/example/CalendarDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/CalendarDemo.vue"], + }, + "CardDemo": { + name: "CardDemo", + type: "components:example", + registryDependencies: ["button","card","switch","utils"], + component: () => import("../src/lib/registry/default/example/CardDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/CardDemo.vue"], + }, + "CardWithForm": { + name: "CardWithForm", + type: "components:example", + registryDependencies: ["button","card","input","label","select"], + component: () => import("../src/lib/registry/default/example/CardWithForm.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/CardWithForm.vue"], + }, + "CheckboxDemo": { + name: "CheckboxDemo", + type: "components:example", + registryDependencies: ["checkbox"], + component: () => import("../src/lib/registry/default/example/CheckboxDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/CheckboxDemo.vue"], + }, + "CollapsibleDemo": { + name: "CollapsibleDemo", + type: "components:example", + registryDependencies: ["button","collapsible"], + component: () => import("../src/lib/registry/default/example/CollapsibleDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/CollapsibleDemo.vue"], + }, + "ContextMenuDemo": { + name: "ContextMenuDemo", + type: "components:example", + registryDependencies: ["context-menu"], + component: () => import("../src/lib/registry/default/example/ContextMenuDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/ContextMenuDemo.vue"], + }, + "DataTableDemo": { + name: "DataTableDemo", + type: "components:example", + registryDependencies: ["button","checkbox","dropdown-menu","input","table","utils"], + component: () => import("../src/lib/registry/default/example/DataTableDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/DataTableDemo.vue"], + }, + "DataTableDemoColumn": { + name: "DataTableDemoColumn", + type: "components:example", + registryDependencies: ["dropdown-menu","button"], + component: () => import("../src/lib/registry/default/example/DataTableDemoColumn.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/DataTableDemoColumn.vue"], + }, + "DatePickerDemo": { + name: "DatePickerDemo", + type: "components:example", + registryDependencies: ["utils","button","calendar","popover"], + component: () => import("../src/lib/registry/default/example/DatePickerDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/DatePickerDemo.vue"], + }, + "DatePickerWithRange": { + name: "DatePickerWithRange", + type: "components:example", + registryDependencies: ["utils","button","calendar","popover"], + component: () => import("../src/lib/registry/default/example/DatePickerWithRange.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/DatePickerWithRange.vue"], + }, + "DialogDemo": { + name: "DialogDemo", + type: "components:example", + registryDependencies: ["button","dialog","input","label"], + component: () => import("../src/lib/registry/default/example/DialogDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/DialogDemo.vue"], + }, + "DropdownMenuDemo": { + name: "DropdownMenuDemo", + type: "components:example", + registryDependencies: ["button","dropdown-menu"], + component: () => import("../src/lib/registry/default/example/DropdownMenuDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/DropdownMenuDemo.vue"], + }, + "HoverCardDemo": { + name: "HoverCardDemo", + type: "components:example", + registryDependencies: ["avatar","button","hover-card"], + component: () => import("../src/lib/registry/default/example/HoverCardDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/HoverCardDemo.vue"], + }, + "InputDemo": { + name: "InputDemo", + type: "components:example", + registryDependencies: ["input"], + component: () => import("../src/lib/registry/default/example/InputDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/InputDemo.vue"], + }, + "LabelDemo": { + name: "LabelDemo", + type: "components:example", + registryDependencies: ["checkbox","label"], + component: () => import("../src/lib/registry/default/example/LabelDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/LabelDemo.vue"], + }, + "MenubarDemo": { + name: "MenubarDemo", + type: "components:example", + registryDependencies: ["menubar"], + component: () => import("../src/lib/registry/default/example/MenubarDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/MenubarDemo.vue"], + }, + "NavigationMenuDemo": { + name: "NavigationMenuDemo", + type: "components:example", + registryDependencies: ["navigation-menu"], + component: () => import("../src/lib/registry/default/example/NavigationMenuDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/NavigationMenuDemo.vue"], + }, + "NavigationMenuDemoItem": { + name: "NavigationMenuDemoItem", + type: "components:example", + registryDependencies: ["utils","navigation-menu"], + component: () => import("../src/lib/registry/default/example/NavigationMenuDemoItem.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/NavigationMenuDemoItem.vue"], + }, + "PopoverDemo": { + name: "PopoverDemo", + type: "components:example", + registryDependencies: ["popover","button","label","input"], + component: () => import("../src/lib/registry/default/example/PopoverDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/PopoverDemo.vue"], + }, + "ProgressDemo": { + name: "ProgressDemo", + type: "components:example", + registryDependencies: ["progress"], + component: () => import("../src/lib/registry/default/example/ProgressDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/ProgressDemo.vue"], + }, + "RadioGroupDemo": { + name: "RadioGroupDemo", + type: "components:example", + registryDependencies: ["label","radio-group"], + component: () => import("../src/lib/registry/default/example/RadioGroupDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/RadioGroupDemo.vue"], + }, + "ScrollAreaDemo": { + name: "ScrollAreaDemo", + type: "components:example", + registryDependencies: ["scroll-area","separator"], + component: () => import("../src/lib/registry/default/example/ScrollAreaDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/ScrollAreaDemo.vue"], + }, + "SelectDemo": { + name: "SelectDemo", + type: "components:example", + registryDependencies: ["select"], + component: () => import("../src/lib/registry/default/example/SelectDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/SelectDemo.vue"], + }, + "SeparatorDemo": { + name: "SeparatorDemo", + type: "components:example", + registryDependencies: ["separator"], + component: () => import("../src/lib/registry/default/example/SeparatorDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/SeparatorDemo.vue"], + }, + "SheetDemo": { + name: "SheetDemo", + type: "components:example", + registryDependencies: ["button","input","label","sheet"], + component: () => import("../src/lib/registry/default/example/SheetDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/SheetDemo.vue"], + }, + "SkeletonDemo": { + name: "SkeletonDemo", + type: "components:example", + registryDependencies: ["skeleton"], + component: () => import("../src/lib/registry/default/example/SkeletonDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/SkeletonDemo.vue"], + }, + "SliderDemo": { + name: "SliderDemo", + type: "components:example", + registryDependencies: ["utils","slider"], + component: () => import("../src/lib/registry/default/example/SliderDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/SliderDemo.vue"], + }, + "SwitchDemo": { + name: "SwitchDemo", + type: "components:example", + registryDependencies: ["label","switch"], + component: () => import("../src/lib/registry/default/example/SwitchDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/SwitchDemo.vue"], + }, + "TableDemo": { + name: "TableDemo", + type: "components:example", + registryDependencies: ["table"], + component: () => import("../src/lib/registry/default/example/TableDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/TableDemo.vue"], + }, + "TabsDemo": { + name: "TabsDemo", + type: "components:example", + registryDependencies: ["button","card","input","label","tabs"], + component: () => import("../src/lib/registry/default/example/TabsDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/TabsDemo.vue"], + }, + "TextareaDemo": { + name: "TextareaDemo", + type: "components:example", + registryDependencies: ["textarea"], + component: () => import("../src/lib/registry/default/example/TextareaDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/TextareaDemo.vue"], + }, + "ToggleDemo": { + name: "ToggleDemo", + type: "components:example", + registryDependencies: ["toggle"], + component: () => import("../src/lib/registry/default/example/ToggleDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/ToggleDemo.vue"], + }, + "TooltipDemo": { + name: "TooltipDemo", + type: "components:example", + registryDependencies: ["button","tooltip"], + component: () => import("../src/lib/registry/default/example/TooltipDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/TooltipDemo.vue"], + }, + "TypographyBlockquote": { + name: "TypographyBlockquote", + type: "components:example", + registryDependencies: [], + component: () => import("../src/lib/registry/default/example/TypographyBlockquote.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/TypographyBlockquote.vue"], + }, + "TypographyDemo": { + name: "TypographyDemo", + type: "components:example", + registryDependencies: [], + component: () => import("../src/lib/registry/default/example/TypographyDemo.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/TypographyDemo.vue"], + }, + "TypographyH1": { + name: "TypographyH1", + type: "components:example", + registryDependencies: [], + component: () => import("../src/lib/registry/default/example/TypographyH1.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/TypographyH1.vue"], + }, + "TypographyH2": { + name: "TypographyH2", + type: "components:example", + registryDependencies: [], + component: () => import("../src/lib/registry/default/example/TypographyH2.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/TypographyH2.vue"], + }, + "TypographyH3": { + name: "TypographyH3", + type: "components:example", + registryDependencies: [], + component: () => import("../src/lib/registry/default/example/TypographyH3.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/TypographyH3.vue"], + }, + "TypographyH4": { + name: "TypographyH4", + type: "components:example", + registryDependencies: [], + component: () => import("../src/lib/registry/default/example/TypographyH4.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/TypographyH4.vue"], + }, + "TypographyInlineCode": { + name: "TypographyInlineCode", + type: "components:example", + registryDependencies: [], + component: () => import("../src/lib/registry/default/example/TypographyInlineCode.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/TypographyInlineCode.vue"], + }, + "TypographyLarge": { + name: "TypographyLarge", + type: "components:example", + registryDependencies: [], + component: () => import("../src/lib/registry/default/example/TypographyLarge.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/TypographyLarge.vue"], + }, + "TypographyLead": { + name: "TypographyLead", + type: "components:example", + registryDependencies: [], + component: () => import("../src/lib/registry/default/example/TypographyLead.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/TypographyLead.vue"], + }, + "TypographyList": { + name: "TypographyList", + type: "components:example", + registryDependencies: [], + component: () => import("../src/lib/registry/default/example/TypographyList.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/TypographyList.vue"], + }, + "TypographyMuted": { + name: "TypographyMuted", + type: "components:example", + registryDependencies: [], + component: () => import("../src/lib/registry/default/example/TypographyMuted.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/TypographyMuted.vue"], + }, + "TypographyP": { + name: "TypographyP", + type: "components:example", + registryDependencies: [], + component: () => import("../src/lib/registry/default/example/TypographyP.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/TypographyP.vue"], + }, + "TypographySmall": { + name: "TypographySmall", + type: "components:example", + registryDependencies: [], + component: () => import("../src/lib/registry/default/example/TypographySmall.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/TypographySmall.vue"], + }, + "TypographyTable": { + name: "TypographyTable", + type: "components:example", + registryDependencies: [], + component: () => import("../src/lib/registry/default/example/TypographyTable.vue").then((m) => m.default), + files: ["../src/lib/registry/default/example/TypographyTable.vue"], + }, + }, +} diff --git a/apps/www/__registry__/index.ts b/apps/www/__registry__/index.ts new file mode 100644 index 00000000..25aee1cd --- /dev/null +++ b/apps/www/__registry__/index.ts @@ -0,0 +1,2025 @@ +// @ts-nocheck +// This file is autogenerated by scripts/build-registry.ts +// Do not edit this file directly. + +export const Index: Record = { + "default": { + "accordion": { + name: "accordion", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/accordion")), + files: ["registry/default/ui/accordion.tsx"], + }, + "alert": { + name: "alert", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/alert")), + files: ["registry/default/ui/alert.tsx"], + }, + "alert-dialog": { + name: "alert-dialog", + type: "components:ui", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/default/ui/alert-dialog")), + files: ["registry/default/ui/alert-dialog.tsx"], + }, + "aspect-ratio": { + name: "aspect-ratio", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/aspect-ratio")), + files: ["registry/default/ui/aspect-ratio.tsx"], + }, + "avatar": { + name: "avatar", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/avatar")), + files: ["registry/default/ui/avatar.tsx"], + }, + "badge": { + name: "badge", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/badge")), + files: ["registry/default/ui/badge.tsx"], + }, + "button": { + name: "button", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/button")), + files: ["registry/default/ui/button.tsx"], + }, + "calendar": { + name: "calendar", + type: "components:ui", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/default/ui/calendar")), + files: ["registry/default/ui/calendar.tsx"], + }, + "card": { + name: "card", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/card")), + files: ["registry/default/ui/card.tsx"], + }, + "checkbox": { + name: "checkbox", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/checkbox")), + files: ["registry/default/ui/checkbox.tsx"], + }, + "collapsible": { + name: "collapsible", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/collapsible")), + files: ["registry/default/ui/collapsible.tsx"], + }, + "command": { + name: "command", + type: "components:ui", + registryDependencies: ["dialog"], + component: React.lazy(() => import("@/registry/default/ui/command")), + files: ["registry/default/ui/command.tsx"], + }, + "context-menu": { + name: "context-menu", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/context-menu")), + files: ["registry/default/ui/context-menu.tsx"], + }, + "dialog": { + name: "dialog", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/dialog")), + files: ["registry/default/ui/dialog.tsx"], + }, + "dropdown-menu": { + name: "dropdown-menu", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/dropdown-menu")), + files: ["registry/default/ui/dropdown-menu.tsx"], + }, + "form": { + name: "form", + type: "components:ui", + registryDependencies: ["button","label"], + component: React.lazy(() => import("@/registry/default/ui/form")), + files: ["registry/default/ui/form.tsx"], + }, + "hover-card": { + name: "hover-card", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/hover-card")), + files: ["registry/default/ui/hover-card.tsx"], + }, + "input": { + name: "input", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/input")), + files: ["registry/default/ui/input.tsx"], + }, + "label": { + name: "label", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/label")), + files: ["registry/default/ui/label.tsx"], + }, + "menubar": { + name: "menubar", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/menubar")), + files: ["registry/default/ui/menubar.tsx"], + }, + "navigation-menu": { + name: "navigation-menu", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/navigation-menu")), + files: ["registry/default/ui/navigation-menu.tsx"], + }, + "popover": { + name: "popover", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/popover")), + files: ["registry/default/ui/popover.tsx"], + }, + "progress": { + name: "progress", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/progress")), + files: ["registry/default/ui/progress.tsx"], + }, + "radio-group": { + name: "radio-group", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/radio-group")), + files: ["registry/default/ui/radio-group.tsx"], + }, + "scroll-area": { + name: "scroll-area", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/scroll-area")), + files: ["registry/default/ui/scroll-area.tsx"], + }, + "select": { + name: "select", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/select")), + files: ["registry/default/ui/select.tsx"], + }, + "separator": { + name: "separator", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/separator")), + files: ["registry/default/ui/separator.tsx"], + }, + "sheet": { + name: "sheet", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/sheet")), + files: ["registry/default/ui/sheet.tsx"], + }, + "skeleton": { + name: "skeleton", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/skeleton")), + files: ["registry/default/ui/skeleton.tsx"], + }, + "slider": { + name: "slider", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/slider")), + files: ["registry/default/ui/slider.tsx"], + }, + "switch": { + name: "switch", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/switch")), + files: ["registry/default/ui/switch.tsx"], + }, + "table": { + name: "table", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/table")), + files: ["registry/default/ui/table.tsx"], + }, + "tabs": { + name: "tabs", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/tabs")), + files: ["registry/default/ui/tabs.tsx"], + }, + "textarea": { + name: "textarea", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/textarea")), + files: ["registry/default/ui/textarea.tsx"], + }, + "toast": { + name: "toast", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/toast")), + files: ["registry/default/ui/toast.tsx","registry/default/ui/use-toast.ts","registry/default/ui/toaster.tsx"], + }, + "toggle": { + name: "toggle", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/toggle")), + files: ["registry/default/ui/toggle.tsx"], + }, + "tooltip": { + name: "tooltip", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/ui/tooltip")), + files: ["registry/default/ui/tooltip.tsx"], + }, + "accordion-demo": { + name: "accordion-demo", + type: "components:example", + registryDependencies: ["accordion"], + component: React.lazy(() => import("@/registry/default/example/accordion-demo")), + files: ["registry/default/example/accordion-demo.tsx"], + }, + "alert-demo": { + name: "alert-demo", + type: "components:example", + registryDependencies: ["alert"], + component: React.lazy(() => import("@/registry/default/example/alert-demo")), + files: ["registry/default/example/alert-demo.tsx"], + }, + "alert-destructive": { + name: "alert-destructive", + type: "components:example", + registryDependencies: ["alert"], + component: React.lazy(() => import("@/registry/default/example/alert-destructive")), + files: ["registry/default/example/alert-destructive.tsx"], + }, + "alert-dialog-demo": { + name: "alert-dialog-demo", + type: "components:example", + registryDependencies: ["alert-dialog","button"], + component: React.lazy(() => import("@/registry/default/example/alert-dialog-demo")), + files: ["registry/default/example/alert-dialog-demo.tsx"], + }, + "aspect-ratio-demo": { + name: "aspect-ratio-demo", + type: "components:example", + registryDependencies: ["aspect-ratio"], + component: React.lazy(() => import("@/registry/default/example/aspect-ratio-demo")), + files: ["registry/default/example/aspect-ratio-demo.tsx"], + }, + "avatar-demo": { + name: "avatar-demo", + type: "components:example", + registryDependencies: ["avatar"], + component: React.lazy(() => import("@/registry/default/example/avatar-demo")), + files: ["registry/default/example/avatar-demo.tsx"], + }, + "badge-demo": { + name: "badge-demo", + type: "components:example", + registryDependencies: ["badge"], + component: React.lazy(() => import("@/registry/default/example/badge-demo")), + files: ["registry/default/example/badge-demo.tsx"], + }, + "badge-destructive": { + name: "badge-destructive", + type: "components:example", + registryDependencies: ["badge"], + component: React.lazy(() => import("@/registry/default/example/badge-destructive")), + files: ["registry/default/example/badge-destructive.tsx"], + }, + "badge-outline": { + name: "badge-outline", + type: "components:example", + registryDependencies: ["badge"], + component: React.lazy(() => import("@/registry/default/example/badge-outline")), + files: ["registry/default/example/badge-outline.tsx"], + }, + "badge-secondary": { + name: "badge-secondary", + type: "components:example", + registryDependencies: ["badge"], + component: React.lazy(() => import("@/registry/default/example/badge-secondary")), + files: ["registry/default/example/badge-secondary.tsx"], + }, + "button-demo": { + name: "button-demo", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/default/example/button-demo")), + files: ["registry/default/example/button-demo.tsx"], + }, + "button-secondary": { + name: "button-secondary", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/default/example/button-secondary")), + files: ["registry/default/example/button-secondary.tsx"], + }, + "button-destructive": { + name: "button-destructive", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/default/example/button-destructive")), + files: ["registry/default/example/button-destructive.tsx"], + }, + "button-outline": { + name: "button-outline", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/default/example/button-outline")), + files: ["registry/default/example/button-outline.tsx"], + }, + "button-ghost": { + name: "button-ghost", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/default/example/button-ghost")), + files: ["registry/default/example/button-ghost.tsx"], + }, + "button-link": { + name: "button-link", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/default/example/button-link")), + files: ["registry/default/example/button-link.tsx"], + }, + "button-with-icon": { + name: "button-with-icon", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/default/example/button-with-icon")), + files: ["registry/default/example/button-with-icon.tsx"], + }, + "button-loading": { + name: "button-loading", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/default/example/button-loading")), + files: ["registry/default/example/button-loading.tsx"], + }, + "button-icon": { + name: "button-icon", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/default/example/button-icon")), + files: ["registry/default/example/button-icon.tsx"], + }, + "button-as-child": { + name: "button-as-child", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/default/example/button-as-child")), + files: ["registry/default/example/button-as-child.tsx"], + }, + "calendar-demo": { + name: "calendar-demo", + type: "components:example", + registryDependencies: ["calendar"], + component: React.lazy(() => import("@/registry/default/example/calendar-demo")), + files: ["registry/default/example/calendar-demo.tsx"], + }, + "calendar-form": { + name: "calendar-form", + type: "components:example", + registryDependencies: ["calendar","form","popover"], + component: React.lazy(() => import("@/registry/default/example/calendar-form")), + files: ["registry/default/example/calendar-form.tsx"], + }, + "card-demo": { + name: "card-demo", + type: "components:example", + registryDependencies: ["card","button","switch"], + component: React.lazy(() => import("@/registry/default/example/card-demo")), + files: ["registry/default/example/card-demo.tsx"], + }, + "card-with-form": { + name: "card-with-form", + type: "components:example", + registryDependencies: ["button","card","input","label","select"], + component: React.lazy(() => import("@/registry/default/example/card-with-form")), + files: ["registry/default/example/card-with-form.tsx"], + }, + "checkbox-demo": { + name: "checkbox-demo", + type: "components:example", + registryDependencies: ["checkbox"], + component: React.lazy(() => import("@/registry/default/example/checkbox-demo")), + files: ["registry/default/example/checkbox-demo.tsx"], + }, + "checkbox-disabled": { + name: "checkbox-disabled", + type: "components:example", + registryDependencies: ["checkbox"], + component: React.lazy(() => import("@/registry/default/example/checkbox-disabled")), + files: ["registry/default/example/checkbox-disabled.tsx"], + }, + "checkbox-form-multiple": { + name: "checkbox-form-multiple", + type: "components:example", + registryDependencies: ["checkbox","form"], + component: React.lazy(() => import("@/registry/default/example/checkbox-form-multiple")), + files: ["registry/default/example/checkbox-form-multiple.tsx"], + }, + "checkbox-form-single": { + name: "checkbox-form-single", + type: "components:example", + registryDependencies: ["checkbox","form"], + component: React.lazy(() => import("@/registry/default/example/checkbox-form-single")), + files: ["registry/default/example/checkbox-form-single.tsx"], + }, + "checkbox-with-text": { + name: "checkbox-with-text", + type: "components:example", + registryDependencies: ["checkbox"], + component: React.lazy(() => import("@/registry/default/example/checkbox-with-text")), + files: ["registry/default/example/checkbox-with-text.tsx"], + }, + "collapsible-demo": { + name: "collapsible-demo", + type: "components:example", + registryDependencies: ["collapsible"], + component: React.lazy(() => import("@/registry/default/example/collapsible-demo")), + files: ["registry/default/example/collapsible-demo.tsx"], + }, + "combobox-demo": { + name: "combobox-demo", + type: "components:example", + registryDependencies: ["command"], + component: React.lazy(() => import("@/registry/default/example/combobox-demo")), + files: ["registry/default/example/combobox-demo.tsx"], + }, + "combobox-dropdown-menu": { + name: "combobox-dropdown-menu", + type: "components:example", + registryDependencies: ["command","dropdown-menu","button"], + component: React.lazy(() => import("@/registry/default/example/combobox-dropdown-menu")), + files: ["registry/default/example/combobox-dropdown-menu.tsx"], + }, + "combobox-form": { + name: "combobox-form", + type: "components:example", + registryDependencies: ["command","form"], + component: React.lazy(() => import("@/registry/default/example/combobox-form")), + files: ["registry/default/example/combobox-form.tsx"], + }, + "combobox-popover": { + name: "combobox-popover", + type: "components:example", + registryDependencies: ["combobox","popover"], + component: React.lazy(() => import("@/registry/default/example/combobox-popover")), + files: ["registry/default/example/combobox-popover.tsx"], + }, + "command-demo": { + name: "command-demo", + type: "components:example", + registryDependencies: ["command"], + component: React.lazy(() => import("@/registry/default/example/command-demo")), + files: ["registry/default/example/command-demo.tsx"], + }, + "command-dialog": { + name: "command-dialog", + type: "components:example", + registryDependencies: ["command","dialog"], + component: React.lazy(() => import("@/registry/default/example/command-dialog")), + files: ["registry/default/example/command-dialog.tsx"], + }, + "context-menu-demo": { + name: "context-menu-demo", + type: "components:example", + registryDependencies: ["context-menu"], + component: React.lazy(() => import("@/registry/default/example/context-menu-demo")), + files: ["registry/default/example/context-menu-demo.tsx"], + }, + "data-table-demo": { + name: "data-table-demo", + type: "components:example", + registryDependencies: ["data-table"], + component: React.lazy(() => import("@/registry/default/example/data-table-demo")), + files: ["registry/default/example/data-table-demo.tsx"], + }, + "date-picker-demo": { + name: "date-picker-demo", + type: "components:example", + registryDependencies: ["button","calendar","popover"], + component: React.lazy(() => import("@/registry/default/example/date-picker-demo")), + files: ["registry/default/example/date-picker-demo.tsx"], + }, + "date-picker-form": { + name: "date-picker-form", + type: "components:example", + registryDependencies: ["button","calendar","form","popover"], + component: React.lazy(() => import("@/registry/default/example/date-picker-form")), + files: ["registry/default/example/date-picker-form.tsx"], + }, + "date-picker-with-presets": { + name: "date-picker-with-presets", + type: "components:example", + registryDependencies: ["button","calendar","popover","select"], + component: React.lazy(() => import("@/registry/default/example/date-picker-with-presets")), + files: ["registry/default/example/date-picker-with-presets.tsx"], + }, + "date-picker-with-range": { + name: "date-picker-with-range", + type: "components:example", + registryDependencies: ["button","calendar","popover"], + component: React.lazy(() => import("@/registry/default/example/date-picker-with-range")), + files: ["registry/default/example/date-picker-with-range.tsx"], + }, + "dialog-demo": { + name: "dialog-demo", + type: "components:example", + registryDependencies: ["dialog"], + component: React.lazy(() => import("@/registry/default/example/dialog-demo")), + files: ["registry/default/example/dialog-demo.tsx"], + }, + "dropdown-menu-demo": { + name: "dropdown-menu-demo", + type: "components:example", + registryDependencies: ["dropdown-menu"], + component: React.lazy(() => import("@/registry/default/example/dropdown-menu-demo")), + files: ["registry/default/example/dropdown-menu-demo.tsx"], + }, + "dropdown-menu-checkboxes": { + name: "dropdown-menu-checkboxes", + type: "components:example", + registryDependencies: ["dropdown-menu","checkbox"], + component: React.lazy(() => import("@/registry/default/example/dropdown-menu-checkboxes")), + files: ["registry/default/example/dropdown-menu-checkboxes.tsx"], + }, + "dropdown-menu-radio-group": { + name: "dropdown-menu-radio-group", + type: "components:example", + registryDependencies: ["dropdown-menu","radio-group"], + component: React.lazy(() => import("@/registry/default/example/dropdown-menu-radio-group")), + files: ["registry/default/example/dropdown-menu-radio-group.tsx"], + }, + "hover-card-demo": { + name: "hover-card-demo", + type: "components:example", + registryDependencies: ["hover-card"], + component: React.lazy(() => import("@/registry/default/example/hover-card-demo")), + files: ["registry/default/example/hover-card-demo.tsx"], + }, + "input-demo": { + name: "input-demo", + type: "components:example", + registryDependencies: ["input"], + component: React.lazy(() => import("@/registry/default/example/input-demo")), + files: ["registry/default/example/input-demo.tsx"], + }, + "input-disabled": { + name: "input-disabled", + type: "components:example", + registryDependencies: ["input"], + component: React.lazy(() => import("@/registry/default/example/input-disabled")), + files: ["registry/default/example/input-disabled.tsx"], + }, + "input-file": { + name: "input-file", + type: "components:example", + registryDependencies: ["input"], + component: React.lazy(() => import("@/registry/default/example/input-file")), + files: ["registry/default/example/input-file.tsx"], + }, + "input-form": { + name: "input-form", + type: "components:example", + registryDependencies: ["input","button","form"], + component: React.lazy(() => import("@/registry/default/example/input-form")), + files: ["registry/default/example/input-form.tsx"], + }, + "input-with-button": { + name: "input-with-button", + type: "components:example", + registryDependencies: ["input","button"], + component: React.lazy(() => import("@/registry/default/example/input-with-button")), + files: ["registry/default/example/input-with-button.tsx"], + }, + "input-with-label": { + name: "input-with-label", + type: "components:example", + registryDependencies: ["input","button","label"], + component: React.lazy(() => import("@/registry/default/example/input-with-label")), + files: ["registry/default/example/input-with-label.tsx"], + }, + "input-with-text": { + name: "input-with-text", + type: "components:example", + registryDependencies: ["input","button","label"], + component: React.lazy(() => import("@/registry/default/example/input-with-text")), + files: ["registry/default/example/input-with-text.tsx"], + }, + "label-demo": { + name: "label-demo", + type: "components:example", + registryDependencies: ["label"], + component: React.lazy(() => import("@/registry/default/example/label-demo")), + files: ["registry/default/example/label-demo.tsx"], + }, + "menubar-demo": { + name: "menubar-demo", + type: "components:example", + registryDependencies: ["menubar"], + component: React.lazy(() => import("@/registry/default/example/menubar-demo")), + files: ["registry/default/example/menubar-demo.tsx"], + }, + "navigation-menu-demo": { + name: "navigation-menu-demo", + type: "components:example", + registryDependencies: ["navigation-menu"], + component: React.lazy(() => import("@/registry/default/example/navigation-menu-demo")), + files: ["registry/default/example/navigation-menu-demo.tsx"], + }, + "popover-demo": { + name: "popover-demo", + type: "components:example", + registryDependencies: ["popover"], + component: React.lazy(() => import("@/registry/default/example/popover-demo")), + files: ["registry/default/example/popover-demo.tsx"], + }, + "progress-demo": { + name: "progress-demo", + type: "components:example", + registryDependencies: ["progress"], + component: React.lazy(() => import("@/registry/default/example/progress-demo")), + files: ["registry/default/example/progress-demo.tsx"], + }, + "radio-group-demo": { + name: "radio-group-demo", + type: "components:example", + registryDependencies: ["radio-group"], + component: React.lazy(() => import("@/registry/default/example/radio-group-demo")), + files: ["registry/default/example/radio-group-demo.tsx"], + }, + "radio-group-form": { + name: "radio-group-form", + type: "components:example", + registryDependencies: ["radio-group","form"], + component: React.lazy(() => import("@/registry/default/example/radio-group-form")), + files: ["registry/default/example/radio-group-form.tsx"], + }, + "scroll-area-demo": { + name: "scroll-area-demo", + type: "components:example", + registryDependencies: ["scroll-area"], + component: React.lazy(() => import("@/registry/default/example/scroll-area-demo")), + files: ["registry/default/example/scroll-area-demo.tsx"], + }, + "select-demo": { + name: "select-demo", + type: "components:example", + registryDependencies: ["select"], + component: React.lazy(() => import("@/registry/default/example/select-demo")), + files: ["registry/default/example/select-demo.tsx"], + }, + "select-form": { + name: "select-form", + type: "components:example", + registryDependencies: ["select"], + component: React.lazy(() => import("@/registry/default/example/select-form")), + files: ["registry/default/example/select-form.tsx"], + }, + "separator-demo": { + name: "separator-demo", + type: "components:example", + registryDependencies: ["separator"], + component: React.lazy(() => import("@/registry/default/example/separator-demo")), + files: ["registry/default/example/separator-demo.tsx"], + }, + "sheet-demo": { + name: "sheet-demo", + type: "components:example", + registryDependencies: ["sheet"], + component: React.lazy(() => import("@/registry/default/example/sheet-demo")), + files: ["registry/default/example/sheet-demo.tsx"], + }, + "sheet-side": { + name: "sheet-side", + type: "components:example", + registryDependencies: ["sheet"], + component: React.lazy(() => import("@/registry/default/example/sheet-side")), + files: ["registry/default/example/sheet-side.tsx"], + }, + "skeleton-demo": { + name: "skeleton-demo", + type: "components:example", + registryDependencies: ["skeleton"], + component: React.lazy(() => import("@/registry/default/example/skeleton-demo")), + files: ["registry/default/example/skeleton-demo.tsx"], + }, + "slider-demo": { + name: "slider-demo", + type: "components:example", + registryDependencies: ["slider"], + component: React.lazy(() => import("@/registry/default/example/slider-demo")), + files: ["registry/default/example/slider-demo.tsx"], + }, + "switch-demo": { + name: "switch-demo", + type: "components:example", + registryDependencies: ["switch"], + component: React.lazy(() => import("@/registry/default/example/switch-demo")), + files: ["registry/default/example/switch-demo.tsx"], + }, + "switch-form": { + name: "switch-form", + type: "components:example", + registryDependencies: ["switch","form"], + component: React.lazy(() => import("@/registry/default/example/switch-form")), + files: ["registry/default/example/switch-form.tsx"], + }, + "table-demo": { + name: "table-demo", + type: "components:example", + registryDependencies: ["table"], + component: React.lazy(() => import("@/registry/default/example/table-demo")), + files: ["registry/default/example/table-demo.tsx"], + }, + "tabs-demo": { + name: "tabs-demo", + type: "components:example", + registryDependencies: ["tabs"], + component: React.lazy(() => import("@/registry/default/example/tabs-demo")), + files: ["registry/default/example/tabs-demo.tsx"], + }, + "textarea-demo": { + name: "textarea-demo", + type: "components:example", + registryDependencies: ["textarea"], + component: React.lazy(() => import("@/registry/default/example/textarea-demo")), + files: ["registry/default/example/textarea-demo.tsx"], + }, + "textarea-disabled": { + name: "textarea-disabled", + type: "components:example", + registryDependencies: ["textarea"], + component: React.lazy(() => import("@/registry/default/example/textarea-disabled")), + files: ["registry/default/example/textarea-disabled.tsx"], + }, + "textarea-form": { + name: "textarea-form", + type: "components:example", + registryDependencies: ["textarea","form"], + component: React.lazy(() => import("@/registry/default/example/textarea-form")), + files: ["registry/default/example/textarea-form.tsx"], + }, + "textarea-with-button": { + name: "textarea-with-button", + type: "components:example", + registryDependencies: ["textarea","button"], + component: React.lazy(() => import("@/registry/default/example/textarea-with-button")), + files: ["registry/default/example/textarea-with-button.tsx"], + }, + "textarea-with-label": { + name: "textarea-with-label", + type: "components:example", + registryDependencies: ["textarea","label"], + component: React.lazy(() => import("@/registry/default/example/textarea-with-label")), + files: ["registry/default/example/textarea-with-label.tsx"], + }, + "textarea-with-text": { + name: "textarea-with-text", + type: "components:example", + registryDependencies: ["textarea","label"], + component: React.lazy(() => import("@/registry/default/example/textarea-with-text")), + files: ["registry/default/example/textarea-with-text.tsx"], + }, + "toast-demo": { + name: "toast-demo", + type: "components:example", + registryDependencies: ["toast"], + component: React.lazy(() => import("@/registry/default/example/toast-demo")), + files: ["registry/default/example/toast-demo.tsx"], + }, + "toast-destructive": { + name: "toast-destructive", + type: "components:example", + registryDependencies: ["toast"], + component: React.lazy(() => import("@/registry/default/example/toast-destructive")), + files: ["registry/default/example/toast-destructive.tsx"], + }, + "toast-simple": { + name: "toast-simple", + type: "components:example", + registryDependencies: ["toast"], + component: React.lazy(() => import("@/registry/default/example/toast-simple")), + files: ["registry/default/example/toast-simple.tsx"], + }, + "toast-with-action": { + name: "toast-with-action", + type: "components:example", + registryDependencies: ["toast"], + component: React.lazy(() => import("@/registry/default/example/toast-with-action")), + files: ["registry/default/example/toast-with-action.tsx"], + }, + "toast-with-title": { + name: "toast-with-title", + type: "components:example", + registryDependencies: ["toast"], + component: React.lazy(() => import("@/registry/default/example/toast-with-title")), + files: ["registry/default/example/toast-with-title.tsx"], + }, + "toggle-demo": { + name: "toggle-demo", + type: "components:example", + registryDependencies: ["toggle"], + component: React.lazy(() => import("@/registry/default/example/toggle-demo")), + files: ["registry/default/example/toggle-demo.tsx"], + }, + "toggle-disabled": { + name: "toggle-disabled", + type: "components:example", + registryDependencies: ["toggle"], + component: React.lazy(() => import("@/registry/default/example/toggle-disabled")), + files: ["registry/default/example/toggle-disabled.tsx"], + }, + "toggle-lg": { + name: "toggle-lg", + type: "components:example", + registryDependencies: ["toggle"], + component: React.lazy(() => import("@/registry/default/example/toggle-lg")), + files: ["registry/default/example/toggle-lg.tsx"], + }, + "toggle-outline": { + name: "toggle-outline", + type: "components:example", + registryDependencies: ["toggle"], + component: React.lazy(() => import("@/registry/default/example/toggle-outline")), + files: ["registry/default/example/toggle-outline.tsx"], + }, + "toggle-sm": { + name: "toggle-sm", + type: "components:example", + registryDependencies: ["toggle"], + component: React.lazy(() => import("@/registry/default/example/toggle-sm")), + files: ["registry/default/example/toggle-sm.tsx"], + }, + "toggle-with-text": { + name: "toggle-with-text", + type: "components:example", + registryDependencies: ["toggle"], + component: React.lazy(() => import("@/registry/default/example/toggle-with-text")), + files: ["registry/default/example/toggle-with-text.tsx"], + }, + "tooltip-demo": { + name: "tooltip-demo", + type: "components:example", + registryDependencies: ["tooltip"], + component: React.lazy(() => import("@/registry/default/example/tooltip-demo")), + files: ["registry/default/example/tooltip-demo.tsx"], + }, + "typography-blockquote": { + name: "typography-blockquote", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-blockquote")), + files: ["registry/default/example/typography-blockquote.tsx"], + }, + "typography-demo": { + name: "typography-demo", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-demo")), + files: ["registry/default/example/typography-demo.tsx"], + }, + "typography-h1": { + name: "typography-h1", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-h1")), + files: ["registry/default/example/typography-h1.tsx"], + }, + "typography-h2": { + name: "typography-h2", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-h2")), + files: ["registry/default/example/typography-h2.tsx"], + }, + "typography-h3": { + name: "typography-h3", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-h3")), + files: ["registry/default/example/typography-h3.tsx"], + }, + "typography-h4": { + name: "typography-h4", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-h4")), + files: ["registry/default/example/typography-h4.tsx"], + }, + "typography-inline-code": { + name: "typography-inline-code", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-inline-code")), + files: ["registry/default/example/typography-inline-code.tsx"], + }, + "typography-large": { + name: "typography-large", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-large")), + files: ["registry/default/example/typography-large.tsx"], + }, + "typography-lead": { + name: "typography-lead", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-lead")), + files: ["registry/default/example/typography-lead.tsx"], + }, + "typography-list": { + name: "typography-list", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-list")), + files: ["registry/default/example/typography-list.tsx"], + }, + "typography-muted": { + name: "typography-muted", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-muted")), + files: ["registry/default/example/typography-muted.tsx"], + }, + "typography-p": { + name: "typography-p", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-p")), + files: ["registry/default/example/typography-p.tsx"], + }, + "typography-small": { + name: "typography-small", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-small")), + files: ["registry/default/example/typography-small.tsx"], + }, + "typography-table": { + name: "typography-table", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/typography-table")), + files: ["registry/default/example/typography-table.tsx"], + }, + "mode-toggle": { + name: "mode-toggle", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/mode-toggle")), + files: ["registry/default/example/mode-toggle.tsx"], + }, + "cards": { + name: "cards", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/default/example/cards")), + files: ["registry/default/example/cards/cards.tsx"], + }, + }, "new-york": { + "accordion": { + name: "accordion", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/accordion")), + files: ["registry/new-york/ui/accordion.tsx"], + }, + "alert": { + name: "alert", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/alert")), + files: ["registry/new-york/ui/alert.tsx"], + }, + "alert-dialog": { + name: "alert-dialog", + type: "components:ui", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/new-york/ui/alert-dialog")), + files: ["registry/new-york/ui/alert-dialog.tsx"], + }, + "aspect-ratio": { + name: "aspect-ratio", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/aspect-ratio")), + files: ["registry/new-york/ui/aspect-ratio.tsx"], + }, + "avatar": { + name: "avatar", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/avatar")), + files: ["registry/new-york/ui/avatar.tsx"], + }, + "badge": { + name: "badge", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/badge")), + files: ["registry/new-york/ui/badge.tsx"], + }, + "button": { + name: "button", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/button")), + files: ["registry/new-york/ui/button.tsx"], + }, + "calendar": { + name: "calendar", + type: "components:ui", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/new-york/ui/calendar")), + files: ["registry/new-york/ui/calendar.tsx"], + }, + "card": { + name: "card", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/card")), + files: ["registry/new-york/ui/card.tsx"], + }, + "checkbox": { + name: "checkbox", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/checkbox")), + files: ["registry/new-york/ui/checkbox.tsx"], + }, + "collapsible": { + name: "collapsible", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/collapsible")), + files: ["registry/new-york/ui/collapsible.tsx"], + }, + "command": { + name: "command", + type: "components:ui", + registryDependencies: ["dialog"], + component: React.lazy(() => import("@/registry/new-york/ui/command")), + files: ["registry/new-york/ui/command.tsx"], + }, + "context-menu": { + name: "context-menu", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/context-menu")), + files: ["registry/new-york/ui/context-menu.tsx"], + }, + "dialog": { + name: "dialog", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/dialog")), + files: ["registry/new-york/ui/dialog.tsx"], + }, + "dropdown-menu": { + name: "dropdown-menu", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/dropdown-menu")), + files: ["registry/new-york/ui/dropdown-menu.tsx"], + }, + "form": { + name: "form", + type: "components:ui", + registryDependencies: ["button","label"], + component: React.lazy(() => import("@/registry/new-york/ui/form")), + files: ["registry/new-york/ui/form.tsx"], + }, + "hover-card": { + name: "hover-card", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/hover-card")), + files: ["registry/new-york/ui/hover-card.tsx"], + }, + "input": { + name: "input", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/input")), + files: ["registry/new-york/ui/input.tsx"], + }, + "label": { + name: "label", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/label")), + files: ["registry/new-york/ui/label.tsx"], + }, + "menubar": { + name: "menubar", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/menubar")), + files: ["registry/new-york/ui/menubar.tsx"], + }, + "navigation-menu": { + name: "navigation-menu", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/navigation-menu")), + files: ["registry/new-york/ui/navigation-menu.tsx"], + }, + "popover": { + name: "popover", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/popover")), + files: ["registry/new-york/ui/popover.tsx"], + }, + "progress": { + name: "progress", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/progress")), + files: ["registry/new-york/ui/progress.tsx"], + }, + "radio-group": { + name: "radio-group", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/radio-group")), + files: ["registry/new-york/ui/radio-group.tsx"], + }, + "scroll-area": { + name: "scroll-area", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/scroll-area")), + files: ["registry/new-york/ui/scroll-area.tsx"], + }, + "select": { + name: "select", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/select")), + files: ["registry/new-york/ui/select.tsx"], + }, + "separator": { + name: "separator", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/separator")), + files: ["registry/new-york/ui/separator.tsx"], + }, + "sheet": { + name: "sheet", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/sheet")), + files: ["registry/new-york/ui/sheet.tsx"], + }, + "skeleton": { + name: "skeleton", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/skeleton")), + files: ["registry/new-york/ui/skeleton.tsx"], + }, + "slider": { + name: "slider", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/slider")), + files: ["registry/new-york/ui/slider.tsx"], + }, + "switch": { + name: "switch", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/switch")), + files: ["registry/new-york/ui/switch.tsx"], + }, + "table": { + name: "table", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/table")), + files: ["registry/new-york/ui/table.tsx"], + }, + "tabs": { + name: "tabs", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/tabs")), + files: ["registry/new-york/ui/tabs.tsx"], + }, + "textarea": { + name: "textarea", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/textarea")), + files: ["registry/new-york/ui/textarea.tsx"], + }, + "toast": { + name: "toast", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/toast")), + files: ["registry/new-york/ui/toast.tsx","registry/new-york/ui/use-toast.ts","registry/new-york/ui/toaster.tsx"], + }, + "toggle": { + name: "toggle", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/toggle")), + files: ["registry/new-york/ui/toggle.tsx"], + }, + "tooltip": { + name: "tooltip", + type: "components:ui", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/ui/tooltip")), + files: ["registry/new-york/ui/tooltip.tsx"], + }, + "accordion-demo": { + name: "accordion-demo", + type: "components:example", + registryDependencies: ["accordion"], + component: React.lazy(() => import("@/registry/new-york/example/accordion-demo")), + files: ["registry/new-york/example/accordion-demo.tsx"], + }, + "alert-demo": { + name: "alert-demo", + type: "components:example", + registryDependencies: ["alert"], + component: React.lazy(() => import("@/registry/new-york/example/alert-demo")), + files: ["registry/new-york/example/alert-demo.tsx"], + }, + "alert-destructive": { + name: "alert-destructive", + type: "components:example", + registryDependencies: ["alert"], + component: React.lazy(() => import("@/registry/new-york/example/alert-destructive")), + files: ["registry/new-york/example/alert-destructive.tsx"], + }, + "alert-dialog-demo": { + name: "alert-dialog-demo", + type: "components:example", + registryDependencies: ["alert-dialog","button"], + component: React.lazy(() => import("@/registry/new-york/example/alert-dialog-demo")), + files: ["registry/new-york/example/alert-dialog-demo.tsx"], + }, + "aspect-ratio-demo": { + name: "aspect-ratio-demo", + type: "components:example", + registryDependencies: ["aspect-ratio"], + component: React.lazy(() => import("@/registry/new-york/example/aspect-ratio-demo")), + files: ["registry/new-york/example/aspect-ratio-demo.tsx"], + }, + "avatar-demo": { + name: "avatar-demo", + type: "components:example", + registryDependencies: ["avatar"], + component: React.lazy(() => import("@/registry/new-york/example/avatar-demo")), + files: ["registry/new-york/example/avatar-demo.tsx"], + }, + "badge-demo": { + name: "badge-demo", + type: "components:example", + registryDependencies: ["badge"], + component: React.lazy(() => import("@/registry/new-york/example/badge-demo")), + files: ["registry/new-york/example/badge-demo.tsx"], + }, + "badge-destructive": { + name: "badge-destructive", + type: "components:example", + registryDependencies: ["badge"], + component: React.lazy(() => import("@/registry/new-york/example/badge-destructive")), + files: ["registry/new-york/example/badge-destructive.tsx"], + }, + "badge-outline": { + name: "badge-outline", + type: "components:example", + registryDependencies: ["badge"], + component: React.lazy(() => import("@/registry/new-york/example/badge-outline")), + files: ["registry/new-york/example/badge-outline.tsx"], + }, + "badge-secondary": { + name: "badge-secondary", + type: "components:example", + registryDependencies: ["badge"], + component: React.lazy(() => import("@/registry/new-york/example/badge-secondary")), + files: ["registry/new-york/example/badge-secondary.tsx"], + }, + "button-demo": { + name: "button-demo", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/new-york/example/button-demo")), + files: ["registry/new-york/example/button-demo.tsx"], + }, + "button-secondary": { + name: "button-secondary", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/new-york/example/button-secondary")), + files: ["registry/new-york/example/button-secondary.tsx"], + }, + "button-destructive": { + name: "button-destructive", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/new-york/example/button-destructive")), + files: ["registry/new-york/example/button-destructive.tsx"], + }, + "button-outline": { + name: "button-outline", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/new-york/example/button-outline")), + files: ["registry/new-york/example/button-outline.tsx"], + }, + "button-ghost": { + name: "button-ghost", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/new-york/example/button-ghost")), + files: ["registry/new-york/example/button-ghost.tsx"], + }, + "button-link": { + name: "button-link", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/new-york/example/button-link")), + files: ["registry/new-york/example/button-link.tsx"], + }, + "button-with-icon": { + name: "button-with-icon", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/new-york/example/button-with-icon")), + files: ["registry/new-york/example/button-with-icon.tsx"], + }, + "button-loading": { + name: "button-loading", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/new-york/example/button-loading")), + files: ["registry/new-york/example/button-loading.tsx"], + }, + "button-icon": { + name: "button-icon", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/new-york/example/button-icon")), + files: ["registry/new-york/example/button-icon.tsx"], + }, + "button-as-child": { + name: "button-as-child", + type: "components:example", + registryDependencies: ["button"], + component: React.lazy(() => import("@/registry/new-york/example/button-as-child")), + files: ["registry/new-york/example/button-as-child.tsx"], + }, + "calendar-demo": { + name: "calendar-demo", + type: "components:example", + registryDependencies: ["calendar"], + component: React.lazy(() => import("@/registry/new-york/example/calendar-demo")), + files: ["registry/new-york/example/calendar-demo.tsx"], + }, + "calendar-form": { + name: "calendar-form", + type: "components:example", + registryDependencies: ["calendar","form","popover"], + component: React.lazy(() => import("@/registry/new-york/example/calendar-form")), + files: ["registry/new-york/example/calendar-form.tsx"], + }, + "card-demo": { + name: "card-demo", + type: "components:example", + registryDependencies: ["card","button","switch"], + component: React.lazy(() => import("@/registry/new-york/example/card-demo")), + files: ["registry/new-york/example/card-demo.tsx"], + }, + "card-with-form": { + name: "card-with-form", + type: "components:example", + registryDependencies: ["button","card","input","label","select"], + component: React.lazy(() => import("@/registry/new-york/example/card-with-form")), + files: ["registry/new-york/example/card-with-form.tsx"], + }, + "checkbox-demo": { + name: "checkbox-demo", + type: "components:example", + registryDependencies: ["checkbox"], + component: React.lazy(() => import("@/registry/new-york/example/checkbox-demo")), + files: ["registry/new-york/example/checkbox-demo.tsx"], + }, + "checkbox-disabled": { + name: "checkbox-disabled", + type: "components:example", + registryDependencies: ["checkbox"], + component: React.lazy(() => import("@/registry/new-york/example/checkbox-disabled")), + files: ["registry/new-york/example/checkbox-disabled.tsx"], + }, + "checkbox-form-multiple": { + name: "checkbox-form-multiple", + type: "components:example", + registryDependencies: ["checkbox","form"], + component: React.lazy(() => import("@/registry/new-york/example/checkbox-form-multiple")), + files: ["registry/new-york/example/checkbox-form-multiple.tsx"], + }, + "checkbox-form-single": { + name: "checkbox-form-single", + type: "components:example", + registryDependencies: ["checkbox","form"], + component: React.lazy(() => import("@/registry/new-york/example/checkbox-form-single")), + files: ["registry/new-york/example/checkbox-form-single.tsx"], + }, + "checkbox-with-text": { + name: "checkbox-with-text", + type: "components:example", + registryDependencies: ["checkbox"], + component: React.lazy(() => import("@/registry/new-york/example/checkbox-with-text")), + files: ["registry/new-york/example/checkbox-with-text.tsx"], + }, + "collapsible-demo": { + name: "collapsible-demo", + type: "components:example", + registryDependencies: ["collapsible"], + component: React.lazy(() => import("@/registry/new-york/example/collapsible-demo")), + files: ["registry/new-york/example/collapsible-demo.tsx"], + }, + "combobox-demo": { + name: "combobox-demo", + type: "components:example", + registryDependencies: ["command"], + component: React.lazy(() => import("@/registry/new-york/example/combobox-demo")), + files: ["registry/new-york/example/combobox-demo.tsx"], + }, + "combobox-dropdown-menu": { + name: "combobox-dropdown-menu", + type: "components:example", + registryDependencies: ["command","dropdown-menu","button"], + component: React.lazy(() => import("@/registry/new-york/example/combobox-dropdown-menu")), + files: ["registry/new-york/example/combobox-dropdown-menu.tsx"], + }, + "combobox-form": { + name: "combobox-form", + type: "components:example", + registryDependencies: ["command","form"], + component: React.lazy(() => import("@/registry/new-york/example/combobox-form")), + files: ["registry/new-york/example/combobox-form.tsx"], + }, + "combobox-popover": { + name: "combobox-popover", + type: "components:example", + registryDependencies: ["combobox","popover"], + component: React.lazy(() => import("@/registry/new-york/example/combobox-popover")), + files: ["registry/new-york/example/combobox-popover.tsx"], + }, + "command-demo": { + name: "command-demo", + type: "components:example", + registryDependencies: ["command"], + component: React.lazy(() => import("@/registry/new-york/example/command-demo")), + files: ["registry/new-york/example/command-demo.tsx"], + }, + "command-dialog": { + name: "command-dialog", + type: "components:example", + registryDependencies: ["command","dialog"], + component: React.lazy(() => import("@/registry/new-york/example/command-dialog")), + files: ["registry/new-york/example/command-dialog.tsx"], + }, + "context-menu-demo": { + name: "context-menu-demo", + type: "components:example", + registryDependencies: ["context-menu"], + component: React.lazy(() => import("@/registry/new-york/example/context-menu-demo")), + files: ["registry/new-york/example/context-menu-demo.tsx"], + }, + "data-table-demo": { + name: "data-table-demo", + type: "components:example", + registryDependencies: ["data-table"], + component: React.lazy(() => import("@/registry/new-york/example/data-table-demo")), + files: ["registry/new-york/example/data-table-demo.tsx"], + }, + "date-picker-demo": { + name: "date-picker-demo", + type: "components:example", + registryDependencies: ["button","calendar","popover"], + component: React.lazy(() => import("@/registry/new-york/example/date-picker-demo")), + files: ["registry/new-york/example/date-picker-demo.tsx"], + }, + "date-picker-form": { + name: "date-picker-form", + type: "components:example", + registryDependencies: ["button","calendar","form","popover"], + component: React.lazy(() => import("@/registry/new-york/example/date-picker-form")), + files: ["registry/new-york/example/date-picker-form.tsx"], + }, + "date-picker-with-presets": { + name: "date-picker-with-presets", + type: "components:example", + registryDependencies: ["button","calendar","popover","select"], + component: React.lazy(() => import("@/registry/new-york/example/date-picker-with-presets")), + files: ["registry/new-york/example/date-picker-with-presets.tsx"], + }, + "date-picker-with-range": { + name: "date-picker-with-range", + type: "components:example", + registryDependencies: ["button","calendar","popover"], + component: React.lazy(() => import("@/registry/new-york/example/date-picker-with-range")), + files: ["registry/new-york/example/date-picker-with-range.tsx"], + }, + "dialog-demo": { + name: "dialog-demo", + type: "components:example", + registryDependencies: ["dialog"], + component: React.lazy(() => import("@/registry/new-york/example/dialog-demo")), + files: ["registry/new-york/example/dialog-demo.tsx"], + }, + "dropdown-menu-demo": { + name: "dropdown-menu-demo", + type: "components:example", + registryDependencies: ["dropdown-menu"], + component: React.lazy(() => import("@/registry/new-york/example/dropdown-menu-demo")), + files: ["registry/new-york/example/dropdown-menu-demo.tsx"], + }, + "dropdown-menu-checkboxes": { + name: "dropdown-menu-checkboxes", + type: "components:example", + registryDependencies: ["dropdown-menu","checkbox"], + component: React.lazy(() => import("@/registry/new-york/example/dropdown-menu-checkboxes")), + files: ["registry/new-york/example/dropdown-menu-checkboxes.tsx"], + }, + "dropdown-menu-radio-group": { + name: "dropdown-menu-radio-group", + type: "components:example", + registryDependencies: ["dropdown-menu","radio-group"], + component: React.lazy(() => import("@/registry/new-york/example/dropdown-menu-radio-group")), + files: ["registry/new-york/example/dropdown-menu-radio-group.tsx"], + }, + "hover-card-demo": { + name: "hover-card-demo", + type: "components:example", + registryDependencies: ["hover-card"], + component: React.lazy(() => import("@/registry/new-york/example/hover-card-demo")), + files: ["registry/new-york/example/hover-card-demo.tsx"], + }, + "input-demo": { + name: "input-demo", + type: "components:example", + registryDependencies: ["input"], + component: React.lazy(() => import("@/registry/new-york/example/input-demo")), + files: ["registry/new-york/example/input-demo.tsx"], + }, + "input-disabled": { + name: "input-disabled", + type: "components:example", + registryDependencies: ["input"], + component: React.lazy(() => import("@/registry/new-york/example/input-disabled")), + files: ["registry/new-york/example/input-disabled.tsx"], + }, + "input-file": { + name: "input-file", + type: "components:example", + registryDependencies: ["input"], + component: React.lazy(() => import("@/registry/new-york/example/input-file")), + files: ["registry/new-york/example/input-file.tsx"], + }, + "input-form": { + name: "input-form", + type: "components:example", + registryDependencies: ["input","button","form"], + component: React.lazy(() => import("@/registry/new-york/example/input-form")), + files: ["registry/new-york/example/input-form.tsx"], + }, + "input-with-button": { + name: "input-with-button", + type: "components:example", + registryDependencies: ["input","button"], + component: React.lazy(() => import("@/registry/new-york/example/input-with-button")), + files: ["registry/new-york/example/input-with-button.tsx"], + }, + "input-with-label": { + name: "input-with-label", + type: "components:example", + registryDependencies: ["input","button","label"], + component: React.lazy(() => import("@/registry/new-york/example/input-with-label")), + files: ["registry/new-york/example/input-with-label.tsx"], + }, + "input-with-text": { + name: "input-with-text", + type: "components:example", + registryDependencies: ["input","button","label"], + component: React.lazy(() => import("@/registry/new-york/example/input-with-text")), + files: ["registry/new-york/example/input-with-text.tsx"], + }, + "label-demo": { + name: "label-demo", + type: "components:example", + registryDependencies: ["label"], + component: React.lazy(() => import("@/registry/new-york/example/label-demo")), + files: ["registry/new-york/example/label-demo.tsx"], + }, + "menubar-demo": { + name: "menubar-demo", + type: "components:example", + registryDependencies: ["menubar"], + component: React.lazy(() => import("@/registry/new-york/example/menubar-demo")), + files: ["registry/new-york/example/menubar-demo.tsx"], + }, + "navigation-menu-demo": { + name: "navigation-menu-demo", + type: "components:example", + registryDependencies: ["navigation-menu"], + component: React.lazy(() => import("@/registry/new-york/example/navigation-menu-demo")), + files: ["registry/new-york/example/navigation-menu-demo.tsx"], + }, + "popover-demo": { + name: "popover-demo", + type: "components:example", + registryDependencies: ["popover"], + component: React.lazy(() => import("@/registry/new-york/example/popover-demo")), + files: ["registry/new-york/example/popover-demo.tsx"], + }, + "progress-demo": { + name: "progress-demo", + type: "components:example", + registryDependencies: ["progress"], + component: React.lazy(() => import("@/registry/new-york/example/progress-demo")), + files: ["registry/new-york/example/progress-demo.tsx"], + }, + "radio-group-demo": { + name: "radio-group-demo", + type: "components:example", + registryDependencies: ["radio-group"], + component: React.lazy(() => import("@/registry/new-york/example/radio-group-demo")), + files: ["registry/new-york/example/radio-group-demo.tsx"], + }, + "radio-group-form": { + name: "radio-group-form", + type: "components:example", + registryDependencies: ["radio-group","form"], + component: React.lazy(() => import("@/registry/new-york/example/radio-group-form")), + files: ["registry/new-york/example/radio-group-form.tsx"], + }, + "scroll-area-demo": { + name: "scroll-area-demo", + type: "components:example", + registryDependencies: ["scroll-area"], + component: React.lazy(() => import("@/registry/new-york/example/scroll-area-demo")), + files: ["registry/new-york/example/scroll-area-demo.tsx"], + }, + "select-demo": { + name: "select-demo", + type: "components:example", + registryDependencies: ["select"], + component: React.lazy(() => import("@/registry/new-york/example/select-demo")), + files: ["registry/new-york/example/select-demo.tsx"], + }, + "select-form": { + name: "select-form", + type: "components:example", + registryDependencies: ["select"], + component: React.lazy(() => import("@/registry/new-york/example/select-form")), + files: ["registry/new-york/example/select-form.tsx"], + }, + "separator-demo": { + name: "separator-demo", + type: "components:example", + registryDependencies: ["separator"], + component: React.lazy(() => import("@/registry/new-york/example/separator-demo")), + files: ["registry/new-york/example/separator-demo.tsx"], + }, + "sheet-demo": { + name: "sheet-demo", + type: "components:example", + registryDependencies: ["sheet"], + component: React.lazy(() => import("@/registry/new-york/example/sheet-demo")), + files: ["registry/new-york/example/sheet-demo.tsx"], + }, + "sheet-side": { + name: "sheet-side", + type: "components:example", + registryDependencies: ["sheet"], + component: React.lazy(() => import("@/registry/new-york/example/sheet-side")), + files: ["registry/new-york/example/sheet-side.tsx"], + }, + "skeleton-demo": { + name: "skeleton-demo", + type: "components:example", + registryDependencies: ["skeleton"], + component: React.lazy(() => import("@/registry/new-york/example/skeleton-demo")), + files: ["registry/new-york/example/skeleton-demo.tsx"], + }, + "slider-demo": { + name: "slider-demo", + type: "components:example", + registryDependencies: ["slider"], + component: React.lazy(() => import("@/registry/new-york/example/slider-demo")), + files: ["registry/new-york/example/slider-demo.tsx"], + }, + "switch-demo": { + name: "switch-demo", + type: "components:example", + registryDependencies: ["switch"], + component: React.lazy(() => import("@/registry/new-york/example/switch-demo")), + files: ["registry/new-york/example/switch-demo.tsx"], + }, + "switch-form": { + name: "switch-form", + type: "components:example", + registryDependencies: ["switch","form"], + component: React.lazy(() => import("@/registry/new-york/example/switch-form")), + files: ["registry/new-york/example/switch-form.tsx"], + }, + "table-demo": { + name: "table-demo", + type: "components:example", + registryDependencies: ["table"], + component: React.lazy(() => import("@/registry/new-york/example/table-demo")), + files: ["registry/new-york/example/table-demo.tsx"], + }, + "tabs-demo": { + name: "tabs-demo", + type: "components:example", + registryDependencies: ["tabs"], + component: React.lazy(() => import("@/registry/new-york/example/tabs-demo")), + files: ["registry/new-york/example/tabs-demo.tsx"], + }, + "textarea-demo": { + name: "textarea-demo", + type: "components:example", + registryDependencies: ["textarea"], + component: React.lazy(() => import("@/registry/new-york/example/textarea-demo")), + files: ["registry/new-york/example/textarea-demo.tsx"], + }, + "textarea-disabled": { + name: "textarea-disabled", + type: "components:example", + registryDependencies: ["textarea"], + component: React.lazy(() => import("@/registry/new-york/example/textarea-disabled")), + files: ["registry/new-york/example/textarea-disabled.tsx"], + }, + "textarea-form": { + name: "textarea-form", + type: "components:example", + registryDependencies: ["textarea","form"], + component: React.lazy(() => import("@/registry/new-york/example/textarea-form")), + files: ["registry/new-york/example/textarea-form.tsx"], + }, + "textarea-with-button": { + name: "textarea-with-button", + type: "components:example", + registryDependencies: ["textarea","button"], + component: React.lazy(() => import("@/registry/new-york/example/textarea-with-button")), + files: ["registry/new-york/example/textarea-with-button.tsx"], + }, + "textarea-with-label": { + name: "textarea-with-label", + type: "components:example", + registryDependencies: ["textarea","label"], + component: React.lazy(() => import("@/registry/new-york/example/textarea-with-label")), + files: ["registry/new-york/example/textarea-with-label.tsx"], + }, + "textarea-with-text": { + name: "textarea-with-text", + type: "components:example", + registryDependencies: ["textarea","label"], + component: React.lazy(() => import("@/registry/new-york/example/textarea-with-text")), + files: ["registry/new-york/example/textarea-with-text.tsx"], + }, + "toast-demo": { + name: "toast-demo", + type: "components:example", + registryDependencies: ["toast"], + component: React.lazy(() => import("@/registry/new-york/example/toast-demo")), + files: ["registry/new-york/example/toast-demo.tsx"], + }, + "toast-destructive": { + name: "toast-destructive", + type: "components:example", + registryDependencies: ["toast"], + component: React.lazy(() => import("@/registry/new-york/example/toast-destructive")), + files: ["registry/new-york/example/toast-destructive.tsx"], + }, + "toast-simple": { + name: "toast-simple", + type: "components:example", + registryDependencies: ["toast"], + component: React.lazy(() => import("@/registry/new-york/example/toast-simple")), + files: ["registry/new-york/example/toast-simple.tsx"], + }, + "toast-with-action": { + name: "toast-with-action", + type: "components:example", + registryDependencies: ["toast"], + component: React.lazy(() => import("@/registry/new-york/example/toast-with-action")), + files: ["registry/new-york/example/toast-with-action.tsx"], + }, + "toast-with-title": { + name: "toast-with-title", + type: "components:example", + registryDependencies: ["toast"], + component: React.lazy(() => import("@/registry/new-york/example/toast-with-title")), + files: ["registry/new-york/example/toast-with-title.tsx"], + }, + "toggle-demo": { + name: "toggle-demo", + type: "components:example", + registryDependencies: ["toggle"], + component: React.lazy(() => import("@/registry/new-york/example/toggle-demo")), + files: ["registry/new-york/example/toggle-demo.tsx"], + }, + "toggle-disabled": { + name: "toggle-disabled", + type: "components:example", + registryDependencies: ["toggle"], + component: React.lazy(() => import("@/registry/new-york/example/toggle-disabled")), + files: ["registry/new-york/example/toggle-disabled.tsx"], + }, + "toggle-lg": { + name: "toggle-lg", + type: "components:example", + registryDependencies: ["toggle"], + component: React.lazy(() => import("@/registry/new-york/example/toggle-lg")), + files: ["registry/new-york/example/toggle-lg.tsx"], + }, + "toggle-outline": { + name: "toggle-outline", + type: "components:example", + registryDependencies: ["toggle"], + component: React.lazy(() => import("@/registry/new-york/example/toggle-outline")), + files: ["registry/new-york/example/toggle-outline.tsx"], + }, + "toggle-sm": { + name: "toggle-sm", + type: "components:example", + registryDependencies: ["toggle"], + component: React.lazy(() => import("@/registry/new-york/example/toggle-sm")), + files: ["registry/new-york/example/toggle-sm.tsx"], + }, + "toggle-with-text": { + name: "toggle-with-text", + type: "components:example", + registryDependencies: ["toggle"], + component: React.lazy(() => import("@/registry/new-york/example/toggle-with-text")), + files: ["registry/new-york/example/toggle-with-text.tsx"], + }, + "tooltip-demo": { + name: "tooltip-demo", + type: "components:example", + registryDependencies: ["tooltip"], + component: React.lazy(() => import("@/registry/new-york/example/tooltip-demo")), + files: ["registry/new-york/example/tooltip-demo.tsx"], + }, + "typography-blockquote": { + name: "typography-blockquote", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-blockquote")), + files: ["registry/new-york/example/typography-blockquote.tsx"], + }, + "typography-demo": { + name: "typography-demo", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-demo")), + files: ["registry/new-york/example/typography-demo.tsx"], + }, + "typography-h1": { + name: "typography-h1", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-h1")), + files: ["registry/new-york/example/typography-h1.tsx"], + }, + "typography-h2": { + name: "typography-h2", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-h2")), + files: ["registry/new-york/example/typography-h2.tsx"], + }, + "typography-h3": { + name: "typography-h3", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-h3")), + files: ["registry/new-york/example/typography-h3.tsx"], + }, + "typography-h4": { + name: "typography-h4", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-h4")), + files: ["registry/new-york/example/typography-h4.tsx"], + }, + "typography-inline-code": { + name: "typography-inline-code", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-inline-code")), + files: ["registry/new-york/example/typography-inline-code.tsx"], + }, + "typography-large": { + name: "typography-large", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-large")), + files: ["registry/new-york/example/typography-large.tsx"], + }, + "typography-lead": { + name: "typography-lead", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-lead")), + files: ["registry/new-york/example/typography-lead.tsx"], + }, + "typography-list": { + name: "typography-list", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-list")), + files: ["registry/new-york/example/typography-list.tsx"], + }, + "typography-muted": { + name: "typography-muted", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-muted")), + files: ["registry/new-york/example/typography-muted.tsx"], + }, + "typography-p": { + name: "typography-p", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-p")), + files: ["registry/new-york/example/typography-p.tsx"], + }, + "typography-small": { + name: "typography-small", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-small")), + files: ["registry/new-york/example/typography-small.tsx"], + }, + "typography-table": { + name: "typography-table", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/typography-table")), + files: ["registry/new-york/example/typography-table.tsx"], + }, + "mode-toggle": { + name: "mode-toggle", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/mode-toggle")), + files: ["registry/new-york/example/mode-toggle.tsx"], + }, + "cards": { + name: "cards", + type: "components:example", + registryDependencies: undefined, + component: React.lazy(() => import("@/registry/new-york/example/cards")), + files: ["registry/new-york/example/cards/cards.tsx"], + }, + }, +} diff --git a/apps/www/package.json b/apps/www/package.json index 351caeff..d1b400ce 100644 --- a/apps/www/package.json +++ b/apps/www/package.json @@ -9,7 +9,7 @@ "dev": "vitepress dev", "build": "vitepress build", "preview": "vitepress preview", - "build:registry": "ts-node --esm --project ./tsconfig.json ./scripts/build-registry.ts" + "build:registry": "ts-node --esm --project ./tsconfig.scripts.json ./scripts/build-registry.ts" }, "dependencies": { "@morev/vue-transitions": "^2.3.6", @@ -37,6 +37,7 @@ "@types/node": "^20.5.7", "@vitejs/plugin-vue": "^4.1.0", "@vue/compiler-core": "^3.3.4", + "@vue/compiler-dom": "^3.3.4", "autoprefixer": "^10.4.14", "lodash.template": "^4.5.0", "postcss": "^8.4.24", @@ -44,6 +45,7 @@ "rimraf": "^5.0.1", "tailwind-merge": "^1.14.0", "tailwindcss": "^3.3.3", + "ts-node": "^10.9.1", "typescript": "^5.0.2", "unplugin-icons": "^0.16.6", "vite": "^4.3.9", diff --git a/apps/www/scripts/build-registry.ts b/apps/www/scripts/build-registry.ts index 00dfaf74..c03e0852 100644 --- a/apps/www/scripts/build-registry.ts +++ b/apps/www/scripts/build-registry.ts @@ -4,29 +4,28 @@ import template from 'lodash.template' import { rimraf } from 'rimraf' import { colorMapping, colors } from '../src/lib/registry/colors' -import { registry } from '../src/lib/registry/registry' import { registrySchema } from '../src/lib/registry/schema' import { styles } from '../src/lib/registry/styles' import { themes } from '../src/lib/registry/themes' +import { buildRegistry } from '../src/lib/registry/registry' -const REGISTRY_PATH = path.join(process.cwd(), 'src/public/registry') +const REGISTRY_PATH = path.join(process.cwd(), 'static/registry') +const registry = await buildRegistry() const result = registrySchema.safeParse(registry) - + if (!result.success) { console.error(result.error) process.exit(1) } // ---------------------------------------------------------------------------- -// Build __registry__/index.tsx. +// Build __registry__/index.js. // ---------------------------------------------------------------------------- -let index = `// @ts-nocheck +let index = ` // This file is autogenerated by scripts/build-registry.ts // Do not edit this file directly. -import * as React from "react" - -export const Index: Record = { +export const Index = { ` for (const style of styles) { @@ -34,12 +33,11 @@ for (const style of styles) { // Build style index. for (const item of result.data) { - // if (item.type === "components:ui") { - // continue - // } + if (item.type === 'components:ui') + continue const resolveFiles = item.files.map( - file => `registry/${style.name}/${file}`, + file => `../src/lib/registry/${style.name}/${file}`, ) const type = item.type.split(':')[1] @@ -48,9 +46,9 @@ for (const style of styles) { name: "${item.name}", type: "${item.type}", registryDependencies: ${JSON.stringify(item.registryDependencies)}, - component: React.lazy(() => import("@/registry/${style.name}/${type}/${ - item.name - }")), + component: () => import("../src/lib/registry/${style.name}/${type}/${ + item.name + }.vue").then((m) => m.default), files: [${resolveFiles.map(file => `"${file}"`)}], },` } @@ -64,8 +62,8 @@ index += ` ` // Write style index. -rimraf.sync(path.join(process.cwd(), '__registry__/index.tsx')) -fs.writeFileSync(path.join(process.cwd(), '__registry__/index.tsx'), index) +rimraf.sync(path.join(process.cwd(), '__registry__/index.js')) +fs.writeFileSync(path.join(process.cwd(), '__registry__/index.js'), index) // ---------------------------------------------------------------------------- // Build registry/styles/[style]/[name].json. @@ -83,7 +81,7 @@ for (const style of styles) { const files = item.files?.map((file) => { const content = fs.readFileSync( - path.join(process.cwd(), 'registry', style.name, file), + path.join(process.cwd(), 'src/lib/registry', style.name, file), 'utf8', ) @@ -116,10 +114,15 @@ fs.writeFileSync( 'utf8', ) +const REGISTRY_IGNORE = ['super-form'] + // ---------------------------------------------------------------------------- // Build registry/index.json. // ---------------------------------------------------------------------------- -const names = result.data.filter(item => item.type === 'components:ui') +const names = result.data.filter( + item => + item.type === 'components:ui' && !REGISTRY_IGNORE.includes(item.name), +) const registryJson = JSON.stringify(names, null, 2) rimraf.sync(path.join(REGISTRY_PATH, 'index.json')) fs.writeFileSync(path.join(REGISTRY_PATH, 'index.json'), registryJson, 'utf8') @@ -142,7 +145,10 @@ for (const [color, value] of Object.entries(colors)) { if (Array.isArray(value)) { colorsData[color] = value.map(item => ({ ...item, - rgbChannel: item.rgb.replace(/^rgb\((\d+),(\d+),(\d+)\)$/, '$1 $2 $3'), + rgbChannel: item.rgb.replace( + /^rgb\((\d+),(\d+),(\d+)\)$/, + '$1 $2 $3', + ), hslChannel: item.hsl.replace( /^hsl\(([\d.]+),([\d.]+%),([\d.]+%)\)$/, '$1 $2 $3', @@ -154,7 +160,10 @@ for (const [color, value] of Object.entries(colors)) { if (typeof value === 'object') { colorsData[color] = { ...value, - rgbChannel: value.rgb.replace(/^rgb\((\d+),(\d+),(\d+)\)$/, '$1 $2 $3'), + rgbChannel: value.rgb.replace( + /^rgb\((\d+),(\d+),(\d+)\)$/, + '$1 $2 $3', + ), hslChannel: value.hsl.replace( /^hsl\(([\d.]+),([\d.]+%),([\d.]+%)\)$/, '$1 $2 $3', @@ -186,30 +195,31 @@ export const BASE_STYLES_WITH_VARIABLES = `@tailwind base; :root { --background: <%- colors.light["background"] %>; --foreground: <%- colors.light["foreground"] %>; - - --card: <%- colors.light["card"] %>; - --card-foreground: <%- colors.light["card-foreground"] %>; + + --muted: <%- colors.light["muted"] %>; + --muted-foreground: <%- colors.light["muted-foreground"] %>; --popover: <%- colors.light["popover"] %>; --popover-foreground: <%- colors.light["popover-foreground"] %>; + --card: <%- colors.light["card"] %>; + --card-foreground: <%- colors.light["card-foreground"] %>; + + --border: <%- colors.light["border"] %>; + --input: <%- colors.light["input"] %>; + --primary: <%- colors.light["primary"] %>; --primary-foreground: <%- colors.light["primary-foreground"] %>; --secondary: <%- colors.light["secondary"] %>; --secondary-foreground: <%- colors.light["secondary-foreground"] %>; - --muted: <%- colors.light["muted"] %>; - --muted-foreground: <%- colors.light["muted-foreground"] %>; - --accent: <%- colors.light["accent"] %>; --accent-foreground: <%- colors.light["accent-foreground"] %>; --destructive: <%- colors.light["destructive"] %>; --destructive-foreground: <%- colors.light["destructive-foreground"] %>; - - --border: <%- colors.light["border"] %>; - --input: <%- colors.light["input"] %>; + --ring: <%- colors.light["ring"] %>; --radius: 0.5rem; @@ -219,29 +229,30 @@ export const BASE_STYLES_WITH_VARIABLES = `@tailwind base; --background: <%- colors.dark["background"] %>; --foreground: <%- colors.dark["foreground"] %>; - --card: <%- colors.dark["card"] %>; - --card-foreground: <%- colors.dark["card-foreground"] %>; + --muted: <%- colors.dark["muted"] %>; + --muted-foreground: <%- colors.dark["muted-foreground"] %>; --popover: <%- colors.dark["popover"] %>; --popover-foreground: <%- colors.dark["popover-foreground"] %>; + --card: <%- colors.dark["card"] %>; + --card-foreground: <%- colors.dark["card-foreground"] %>; + + --border: <%- colors.dark["border"] %>; + --input: <%- colors.dark["input"] %>; + --primary: <%- colors.dark["primary"] %>; --primary-foreground: <%- colors.dark["primary-foreground"] %>; --secondary: <%- colors.dark["secondary"] %>; --secondary-foreground: <%- colors.dark["secondary-foreground"] %>; - --muted: <%- colors.dark["muted"] %>; - --muted-foreground: <%- colors.dark["muted-foreground"] %>; - --accent: <%- colors.dark["accent"] %>; --accent-foreground: <%- colors.dark["accent-foreground"] %>; --destructive: <%- colors.dark["destructive"] %>; --destructive-foreground: <%- colors.dark["destructive-foreground"] %>; - --border: <%- colors.dark["border"] %>; - --input: <%- colors.dark["input"] %>; --ring: <%- colors.dark["ring"] %>; } } @@ -255,7 +266,7 @@ export const BASE_STYLES_WITH_VARIABLES = `@tailwind base; } }` -for (const baseColor of ['slate', 'gray', 'zinc', 'neutral', 'stone']) { +for (const baseColor of ['slate', 'gray', 'zinc', 'neutral', 'stone', 'lime']) { const base: Record = { inlineColors: {}, cssVars: {}, @@ -265,14 +276,17 @@ for (const baseColor of ['slate', 'gray', 'zinc', 'neutral', 'stone']) { base.cssVars[mode] = {} for (const [key, value] of Object.entries(values)) { if (typeof value === 'string') { - const resolvedColor = value.replace(/{{base}}-/g, `${baseColor}-`) + const resolvedColor = value.replace( + /{{base}}-/g, + `${baseColor}-`, + ) base.inlineColors[mode][key] = resolvedColor const [resolvedBase, scale] = resolvedColor.split('-') const color = scale ? colorsData[resolvedBase].find( - item => item.scale === Number.parseInt(scale), - ) + (item: any) => item.scale === Number.parseInt(scale), + ) : colorsData[resolvedBase] if (color) base.cssVars[mode][key] = color.hslChannel @@ -327,7 +341,7 @@ export const THEME_STYLES_WITH_VARIABLES = ` --ring: <%- colors.light["ring"] %>; - --radius: <%- colors.light["radius"] %>; + --radius: 0.5rem; } .dark .theme-<%- theme %> { @@ -377,47 +391,4 @@ fs.writeFileSync( 'utf8', ) -// ---------------------------------------------------------------------------- -// Build registry/themes/[theme].json -// ---------------------------------------------------------------------------- -rimraf.sync(path.join(REGISTRY_PATH, 'themes')) -for (const baseColor of ['slate', 'gray', 'zinc', 'neutral', 'stone']) { - const payload = { - name: baseColor, - label: baseColor.charAt(0).toUpperCase() + baseColor.slice(1), - cssVars: {}, - } - - for (const [mode, values] of Object.entries(colorMapping)) { - payload.cssVars[mode] = {} - for (const [key, value] of Object.entries(values)) { - if (typeof value === 'string') { - const resolvedColor = value.replace(/{{base}}-/g, `${baseColor}-`) - payload.cssVars[mode][key] = resolvedColor - - const [resolvedBase, scale] = resolvedColor.split('-') - const color = scale - ? colorsData[resolvedBase].find( - item => item.scale === Number.parseInt(scale), - ) - : colorsData[resolvedBase] - if (color) - payload.cssVars[mode][key] = color.hslChannel - } - } - } - - const targetPath = path.join(REGISTRY_PATH, 'themes') - - // Create directory if it doesn't exist. - if (!fs.existsSync(targetPath)) - fs.mkdirSync(targetPath, { recursive: true }) - - fs.writeFileSync( - path.join(targetPath, `${payload.name}.json`), - JSON.stringify(payload, null, 2), - 'utf8', - ) -} - console.log('✅ Done!') diff --git a/apps/www/src/lib/registry/index.ts b/apps/www/src/lib/registry/index.ts new file mode 100644 index 00000000..a65aa9a2 --- /dev/null +++ b/apps/www/src/lib/registry/index.ts @@ -0,0 +1,4 @@ +export * from './colors' +export * from './themes' +export * from './schema' +export * from './styles' diff --git a/apps/www/src/lib/registry/registry.ts b/apps/www/src/lib/registry/registry.ts index 7710b257..ddc9a22b 100644 --- a/apps/www/src/lib/registry/registry.ts +++ b/apps/www/src/lib/registry/registry.ts @@ -1,864 +1,153 @@ -import type { Registry } from './schema' +import { readFile, readdir } from 'node:fs/promises' +import { join, resolve } from 'node:path' +import { compileScript, parse } from 'vue/compiler-sfc' -const ui: Registry = [ - { - name: 'accordion', - type: 'components:ui', - dependencies: ['@radix-ui/react-accordion'], - files: ['ui/accordion.tsx'], - }, - { - name: 'alert', - type: 'components:ui', - files: ['ui/alert.tsx'], - }, - { - name: 'alert-dialog', - type: 'components:ui', - dependencies: ['@radix-ui/react-alert-dialog'], - registryDependencies: ['button'], - files: ['ui/alert-dialog.tsx'], - }, - { - name: 'aspect-ratio', - type: 'components:ui', - dependencies: ['@radix-ui/react-aspect-ratio'], - files: ['ui/aspect-ratio.tsx'], - }, - { - name: 'avatar', - type: 'components:ui', - dependencies: ['@radix-ui/react-avatar'], - files: ['ui/avatar.tsx'], - }, - { - name: 'badge', - type: 'components:ui', - files: ['ui/badge.tsx'], - }, - { - name: 'button', - type: 'components:ui', - dependencies: ['@radix-ui/react-slot'], - files: ['ui/button.tsx'], - }, - { - name: 'calendar', - type: 'components:ui', - dependencies: ['react-day-picker', 'date-fns'], - registryDependencies: ['button'], - files: ['ui/calendar.tsx'], - }, - { - name: 'card', - type: 'components:ui', - files: ['ui/card.tsx'], - }, - { - name: 'checkbox', - type: 'components:ui', - dependencies: ['@radix-ui/react-checkbox'], - files: ['ui/checkbox.tsx'], - }, - { - name: 'collapsible', - type: 'components:ui', - dependencies: ['@radix-ui/react-collapsible'], - files: ['ui/collapsible.tsx'], - }, - { - name: 'command', - type: 'components:ui', - dependencies: ['cmdk'], - registryDependencies: ['dialog'], - files: ['ui/command.tsx'], - }, - { - name: 'context-menu', - type: 'components:ui', - dependencies: ['@radix-ui/react-context-menu'], - files: ['ui/context-menu.tsx'], - }, - { - name: 'dialog', - type: 'components:ui', - dependencies: ['@radix-ui/react-dialog'], - files: ['ui/dialog.tsx'], - }, - { - name: 'dropdown-menu', - type: 'components:ui', - dependencies: ['@radix-ui/react-dropdown-menu'], - files: ['ui/dropdown-menu.tsx'], - }, - { - name: 'form', - type: 'components:ui', - dependencies: [ - '@radix-ui/react-label', - '@radix-ui/react-slot', - '@hookform/resolvers', - 'zod', - 'react-hook-form', - ], - registryDependencies: ['button', 'label'], - files: ['ui/form.tsx'], - }, - { - name: 'hover-card', - type: 'components:ui', - dependencies: ['@radix-ui/react-hover-card'], - files: ['ui/hover-card.tsx'], - }, - { - name: 'input', - type: 'components:ui', - files: ['ui/input.tsx'], - }, - { - name: 'label', - type: 'components:ui', - dependencies: ['@radix-ui/react-label'], - files: ['ui/label.tsx'], - }, - { - name: 'menubar', - type: 'components:ui', - dependencies: ['@radix-ui/react-menubar'], - files: ['ui/menubar.tsx'], - }, - { - name: 'navigation-menu', - type: 'components:ui', - dependencies: ['@radix-ui/react-navigation-menu'], - files: ['ui/navigation-menu.tsx'], - }, - { - name: 'popover', - type: 'components:ui', - dependencies: ['@radix-ui/react-popover'], - files: ['ui/popover.tsx'], - }, - { - name: 'progress', - type: 'components:ui', - dependencies: ['@radix-ui/react-progress'], - files: ['ui/progress.tsx'], - }, - { - name: 'radio-group', - type: 'components:ui', - dependencies: ['@radix-ui/react-radio-group'], - files: ['ui/radio-group.tsx'], - }, - { - name: 'scroll-area', - type: 'components:ui', - dependencies: ['@radix-ui/react-scroll-area'], - files: ['ui/scroll-area.tsx'], - }, - { - name: 'select', - type: 'components:ui', - dependencies: ['@radix-ui/react-select'], - files: ['ui/select.tsx'], - }, - { - name: 'separator', - type: 'components:ui', - dependencies: ['@radix-ui/react-separator'], - files: ['ui/separator.tsx'], - }, - { - name: 'sheet', - type: 'components:ui', - dependencies: ['@radix-ui/react-dialog'], - files: ['ui/sheet.tsx'], - }, - { - name: 'skeleton', - type: 'components:ui', - files: ['ui/skeleton.tsx'], - }, - { - name: 'slider', - type: 'components:ui', - dependencies: ['@radix-ui/react-slider'], - files: ['ui/slider.tsx'], - }, - { - name: 'switch', - type: 'components:ui', - dependencies: ['@radix-ui/react-switch'], - files: ['ui/switch.tsx'], - }, - { - name: 'table', - type: 'components:ui', - files: ['ui/table.tsx'], - }, - { - name: 'tabs', - type: 'components:ui', - dependencies: ['@radix-ui/react-tabs'], - files: ['ui/tabs.tsx'], - }, - { - name: 'textarea', - type: 'components:ui', - files: ['ui/textarea.tsx'], - }, - { - name: 'toast', - type: 'components:ui', - dependencies: ['@radix-ui/react-toast'], - files: ['ui/toast.tsx', 'ui/use-toast.ts', 'ui/toaster.tsx'], - }, - { - name: 'toggle', - type: 'components:ui', - dependencies: ['@radix-ui/react-toggle'], - files: ['ui/toggle.tsx'], - }, - { - name: 'tooltip', - type: 'components:ui', - dependencies: ['@radix-ui/react-tooltip'], - files: ['ui/tooltip.tsx'], - }, -] +import type { Registry } from '../../lib/registry' -const example: Registry = [ - { - name: 'accordion-demo', - type: 'components:example', - registryDependencies: ['accordion'], - files: ['example/accordion-demo.tsx'], - }, - { - name: 'alert-demo', - type: 'components:example', - registryDependencies: ['alert'], - files: ['example/alert-demo.tsx'], - }, - { - name: 'alert-destructive', - type: 'components:example', - registryDependencies: ['alert'], - files: ['example/alert-destructive.tsx'], - }, - { - name: 'alert-dialog-demo', - type: 'components:example', - registryDependencies: ['alert-dialog', 'button'], - files: ['example/alert-dialog-demo.tsx'], - }, - { - name: 'aspect-ratio-demo', - type: 'components:example', - registryDependencies: ['aspect-ratio'], - files: ['example/aspect-ratio-demo.tsx'], - }, - { - name: 'avatar-demo', - type: 'components:example', - registryDependencies: ['avatar'], - files: ['example/avatar-demo.tsx'], - }, - { - name: 'badge-demo', - type: 'components:example', - registryDependencies: ['badge'], - files: ['example/badge-demo.tsx'], - }, - { - name: 'badge-destructive', - type: 'components:example', - registryDependencies: ['badge'], - files: ['example/badge-destructive.tsx'], - }, - { - name: 'badge-outline', - type: 'components:example', - registryDependencies: ['badge'], - files: ['example/badge-outline.tsx'], - }, - { - name: 'badge-secondary', - type: 'components:example', - registryDependencies: ['badge'], - files: ['example/badge-secondary.tsx'], - }, - { - name: 'button-demo', - type: 'components:example', - registryDependencies: ['button'], - files: ['example/button-demo.tsx'], - }, - { - name: 'button-secondary', - type: 'components:example', - registryDependencies: ['button'], - files: ['example/button-secondary.tsx'], - }, - { - name: 'button-destructive', - type: 'components:example', - registryDependencies: ['button'], - files: ['example/button-destructive.tsx'], - }, - { - name: 'button-outline', - type: 'components:example', - registryDependencies: ['button'], - files: ['example/button-outline.tsx'], - }, - { - name: 'button-ghost', - type: 'components:example', - registryDependencies: ['button'], - files: ['example/button-ghost.tsx'], - }, - { - name: 'button-link', - type: 'components:example', - registryDependencies: ['button'], - files: ['example/button-link.tsx'], - }, - { - name: 'button-with-icon', - type: 'components:example', - registryDependencies: ['button'], - files: ['example/button-with-icon.tsx'], - }, - { - name: 'button-loading', - type: 'components:example', - registryDependencies: ['button'], - files: ['example/button-loading.tsx'], - }, - { - name: 'button-icon', - type: 'components:example', - registryDependencies: ['button'], - files: ['example/button-icon.tsx'], - }, - { - name: 'button-as-child', - type: 'components:example', - registryDependencies: ['button'], - files: ['example/button-as-child.tsx'], - }, - { - name: 'calendar-demo', - type: 'components:example', - registryDependencies: ['calendar'], - files: ['example/calendar-demo.tsx'], - }, - { - name: 'calendar-form', - type: 'components:example', - registryDependencies: ['calendar', 'form', 'popover'], - files: ['example/calendar-form.tsx'], - }, - { - name: 'card-demo', - type: 'components:example', - registryDependencies: ['card', 'button', 'switch'], - files: ['example/card-demo.tsx'], - }, - { - name: 'card-with-form', - type: 'components:example', - registryDependencies: ['button', 'card', 'input', 'label', 'select'], - files: ['example/card-with-form.tsx'], - }, - { - name: 'checkbox-demo', - type: 'components:example', - registryDependencies: ['checkbox'], - files: ['example/checkbox-demo.tsx'], - }, - { - name: 'checkbox-disabled', - type: 'components:example', - registryDependencies: ['checkbox'], - files: ['example/checkbox-disabled.tsx'], - }, - { - name: 'checkbox-form-multiple', - type: 'components:example', - registryDependencies: ['checkbox', 'form'], - files: ['example/checkbox-form-multiple.tsx'], - }, - { - name: 'checkbox-form-single', - type: 'components:example', - registryDependencies: ['checkbox', 'form'], - files: ['example/checkbox-form-single.tsx'], - }, - { - name: 'checkbox-with-text', - type: 'components:example', - registryDependencies: ['checkbox'], - files: ['example/checkbox-with-text.tsx'], - }, - { - name: 'collapsible-demo', - type: 'components:example', - registryDependencies: ['collapsible'], - files: ['example/collapsible-demo.tsx'], - }, - { - name: 'combobox-demo', - type: 'components:example', - registryDependencies: ['command'], - files: ['example/combobox-demo.tsx'], - }, - { - name: 'combobox-dropdown-menu', - type: 'components:example', - registryDependencies: ['command', 'dropdown-menu', 'button'], - files: ['example/combobox-dropdown-menu.tsx'], - }, - { - name: 'combobox-form', - type: 'components:example', - registryDependencies: ['command', 'form'], - files: ['example/combobox-form.tsx'], - }, - { - name: 'combobox-popover', - type: 'components:example', - registryDependencies: ['combobox', 'popover'], - files: ['example/combobox-popover.tsx'], - }, - { - name: 'command-demo', - type: 'components:example', - registryDependencies: ['command'], - files: ['example/command-demo.tsx'], - }, - { - name: 'command-dialog', - type: 'components:example', - registryDependencies: ['command', 'dialog'], - files: ['example/command-dialog.tsx'], - }, - { - name: 'context-menu-demo', - type: 'components:example', - registryDependencies: ['context-menu'], - files: ['example/context-menu-demo.tsx'], - }, - { - name: 'data-table-demo', - type: 'components:example', - registryDependencies: ['data-table'], - files: ['example/data-table-demo.tsx'], - }, - { - name: 'date-picker-demo', - type: 'components:example', - registryDependencies: ['button', 'calendar', 'popover'], - files: ['example/date-picker-demo.tsx'], - dependencies: ['date-fns'], - }, - { - name: 'date-picker-form', - type: 'components:example', - registryDependencies: ['button', 'calendar', 'form', 'popover'], - files: ['example/date-picker-form.tsx'], - dependencies: ['date-fns'], - }, - { - name: 'date-picker-with-presets', - type: 'components:example', - registryDependencies: ['button', 'calendar', 'popover', 'select'], - files: ['example/date-picker-with-presets.tsx'], - dependencies: ['date-fns'], - }, - { - name: 'date-picker-with-range', - type: 'components:example', - registryDependencies: ['button', 'calendar', 'popover'], - files: ['example/date-picker-with-range.tsx'], - dependencies: ['date-fns'], - }, - { - name: 'dialog-demo', - type: 'components:example', - registryDependencies: ['dialog'], - files: ['example/dialog-demo.tsx'], - }, - { - name: 'dropdown-menu-demo', - type: 'components:example', - registryDependencies: ['dropdown-menu'], - files: ['example/dropdown-menu-demo.tsx'], - }, - { - name: 'dropdown-menu-checkboxes', - type: 'components:example', - registryDependencies: ['dropdown-menu', 'checkbox'], - files: ['example/dropdown-menu-checkboxes.tsx'], - }, - { - name: 'dropdown-menu-radio-group', - type: 'components:example', - registryDependencies: ['dropdown-menu', 'radio-group'], - files: ['example/dropdown-menu-radio-group.tsx'], - }, - { - name: 'hover-card-demo', - type: 'components:example', - registryDependencies: ['hover-card'], - files: ['example/hover-card-demo.tsx'], - }, - { - name: 'input-demo', - type: 'components:example', - registryDependencies: ['input'], - files: ['example/input-demo.tsx'], - }, - { - name: 'input-disabled', - type: 'components:example', - registryDependencies: ['input'], - files: ['example/input-disabled.tsx'], - }, - { - name: 'input-file', - type: 'components:example', - registryDependencies: ['input'], - files: ['example/input-file.tsx'], - }, - { - name: 'input-form', - type: 'components:example', - registryDependencies: ['input', 'button', 'form'], - files: ['example/input-form.tsx'], - }, - { - name: 'input-with-button', - type: 'components:example', - registryDependencies: ['input', 'button'], - files: ['example/input-with-button.tsx'], - }, - { - name: 'input-with-label', - type: 'components:example', - registryDependencies: ['input', 'button', 'label'], - files: ['example/input-with-label.tsx'], - }, - { - name: 'input-with-text', - type: 'components:example', - registryDependencies: ['input', 'button', 'label'], - files: ['example/input-with-text.tsx'], - }, - { - name: 'label-demo', - type: 'components:example', - registryDependencies: ['label'], - files: ['example/label-demo.tsx'], - }, - { - name: 'menubar-demo', - type: 'components:example', - registryDependencies: ['menubar'], - files: ['example/menubar-demo.tsx'], - }, - { - name: 'navigation-menu-demo', - type: 'components:example', - registryDependencies: ['navigation-menu'], - files: ['example/navigation-menu-demo.tsx'], - }, - { - name: 'popover-demo', - type: 'components:example', - registryDependencies: ['popover'], - files: ['example/popover-demo.tsx'], - }, - { - name: 'progress-demo', - type: 'components:example', - registryDependencies: ['progress'], - files: ['example/progress-demo.tsx'], - }, - { - name: 'radio-group-demo', - type: 'components:example', - registryDependencies: ['radio-group'], - files: ['example/radio-group-demo.tsx'], - }, - { - name: 'radio-group-form', - type: 'components:example', - registryDependencies: ['radio-group', 'form'], - files: ['example/radio-group-form.tsx'], - }, - { - name: 'scroll-area-demo', - type: 'components:example', - registryDependencies: ['scroll-area'], - files: ['example/scroll-area-demo.tsx'], - }, - { - name: 'select-demo', - type: 'components:example', - registryDependencies: ['select'], - files: ['example/select-demo.tsx'], - }, - { - name: 'select-form', - type: 'components:example', - registryDependencies: ['select'], - files: ['example/select-form.tsx'], - }, - { - name: 'separator-demo', - type: 'components:example', - registryDependencies: ['separator'], - files: ['example/separator-demo.tsx'], - }, - { - name: 'sheet-demo', - type: 'components:example', - registryDependencies: ['sheet'], - files: ['example/sheet-demo.tsx'], - }, - { - name: 'sheet-side', - type: 'components:example', - registryDependencies: ['sheet'], - files: ['example/sheet-side.tsx'], - }, - { - name: 'skeleton-demo', - type: 'components:example', - registryDependencies: ['skeleton'], - files: ['example/skeleton-demo.tsx'], - }, - { - name: 'slider-demo', - type: 'components:example', - registryDependencies: ['slider'], - files: ['example/slider-demo.tsx'], - }, - { - name: 'switch-demo', - type: 'components:example', - registryDependencies: ['switch'], - files: ['example/switch-demo.tsx'], - }, - { - name: 'switch-form', - type: 'components:example', - registryDependencies: ['switch', 'form'], - files: ['example/switch-form.tsx'], - }, - { - name: 'table-demo', - type: 'components:example', - registryDependencies: ['table'], - files: ['example/table-demo.tsx'], - }, - { - name: 'tabs-demo', - type: 'components:example', - registryDependencies: ['tabs'], - files: ['example/tabs-demo.tsx'], - }, - { - name: 'textarea-demo', - type: 'components:example', - registryDependencies: ['textarea'], - files: ['example/textarea-demo.tsx'], - }, - { - name: 'textarea-disabled', - type: 'components:example', - registryDependencies: ['textarea'], - files: ['example/textarea-disabled.tsx'], - }, - { - name: 'textarea-form', - type: 'components:example', - registryDependencies: ['textarea', 'form'], - files: ['example/textarea-form.tsx'], - }, - { - name: 'textarea-with-button', - type: 'components:example', - registryDependencies: ['textarea', 'button'], - files: ['example/textarea-with-button.tsx'], - }, - { - name: 'textarea-with-label', - type: 'components:example', - registryDependencies: ['textarea', 'label'], - files: ['example/textarea-with-label.tsx'], - }, - { - name: 'textarea-with-text', - type: 'components:example', - registryDependencies: ['textarea', 'label'], - files: ['example/textarea-with-text.tsx'], - }, - { - name: 'toast-demo', - type: 'components:example', - registryDependencies: ['toast'], - files: ['example/toast-demo.tsx'], - }, - { - name: 'toast-destructive', - type: 'components:example', - registryDependencies: ['toast'], - files: ['example/toast-destructive.tsx'], - }, - { - name: 'toast-simple', - type: 'components:example', - registryDependencies: ['toast'], - files: ['example/toast-simple.tsx'], - }, - { - name: 'toast-with-action', - type: 'components:example', - registryDependencies: ['toast'], - files: ['example/toast-with-action.tsx'], - }, - { - name: 'toast-with-title', - type: 'components:example', - registryDependencies: ['toast'], - files: ['example/toast-with-title.tsx'], - }, - { - name: 'toggle-demo', - type: 'components:example', - registryDependencies: ['toggle'], - files: ['example/toggle-demo.tsx'], - }, - { - name: 'toggle-disabled', - type: 'components:example', - registryDependencies: ['toggle'], - files: ['example/toggle-disabled.tsx'], - }, - { - name: 'toggle-lg', - type: 'components:example', - registryDependencies: ['toggle'], - files: ['example/toggle-lg.tsx'], - }, - { - name: 'toggle-outline', - type: 'components:example', - registryDependencies: ['toggle'], - files: ['example/toggle-outline.tsx'], - }, - { - name: 'toggle-sm', - type: 'components:example', - registryDependencies: ['toggle'], - files: ['example/toggle-sm.tsx'], - }, - { - name: 'toggle-with-text', - type: 'components:example', - registryDependencies: ['toggle'], - files: ['example/toggle-with-text.tsx'], - }, - { - name: 'tooltip-demo', - type: 'components:example', - registryDependencies: ['tooltip'], - files: ['example/tooltip-demo.tsx'], - }, - { - name: 'typography-blockquote', - type: 'components:example', - files: ['example/typography-blockquote.tsx'], - }, - { - name: 'typography-demo', - type: 'components:example', - files: ['example/typography-demo.tsx'], - }, - { - name: 'typography-h1', - type: 'components:example', - files: ['example/typography-h1.tsx'], - }, - { - name: 'typography-h2', - type: 'components:example', - files: ['example/typography-h2.tsx'], - }, - { - name: 'typography-h3', - type: 'components:example', - files: ['example/typography-h3.tsx'], - }, - { - name: 'typography-h4', - type: 'components:example', - files: ['example/typography-h4.tsx'], - }, - { - name: 'typography-inline-code', - type: 'components:example', - files: ['example/typography-inline-code.tsx'], - }, - { - name: 'typography-large', - type: 'components:example', - files: ['example/typography-large.tsx'], - }, - { - name: 'typography-lead', - type: 'components:example', - files: ['example/typography-lead.tsx'], - }, - { - name: 'typography-list', - type: 'components:example', - files: ['example/typography-list.tsx'], - }, - { - name: 'typography-muted', - type: 'components:example', - files: ['example/typography-muted.tsx'], - }, - { - name: 'typography-p', - type: 'components:example', - files: ['example/typography-p.tsx'], - }, - { - name: 'typography-small', - type: 'components:example', - files: ['example/typography-small.tsx'], - }, - { - name: 'typography-table', - type: 'components:example', - files: ['example/typography-table.tsx'], - }, - { - name: 'mode-toggle', - type: 'components:example', - files: ['example/mode-toggle.tsx'], - }, - { - name: 'cards', - type: 'components:example', - files: ['example/cards/cards.tsx'], - }, -] +const DEPENDENCIES = new Map([ + ['radix-vue', []], + ['formsnap', ['zod']], +]) +const REGISTRY_DEPENDENCY = '@/' -export const registry: Registry = [...ui, ...example] +type ArrayItem = T extends Array ? X : never +type RegistryItem = ArrayItem + +export async function buildRegistry() { + const ui_path = resolve('./src/lib/registry/default/ui') + const uiRegistry = await crawlUI(ui_path) + + const example_path = resolve('./src/lib/registry/default/examples') + const exampleRegistry = await crawlExample(example_path) + + return uiRegistry.concat(exampleRegistry) +} + +async function crawlUI(rootPath: string) { + const dir = await readdir(rootPath, { + recursive: true, + withFileTypes: true, + }) + + const uiRegistry: Registry = [] + + for (const dirent of dir) { + if (!dirent.isDirectory()) + continue + + const componentPath = resolve(rootPath, dirent.name) + + const ui = await buildUIRegistry(componentPath, dirent.name) + uiRegistry.push(ui) + } + + return uiRegistry +} + +async function crawlExample(rootPath: string) { + const type = 'components:example' + + const dir = await readdir(rootPath, { + recursive: true, + withFileTypes: true, + }) + + const exampleRegistry: Registry = [] + + for (const dirent of dir) { + if (dirent.name === 'index.ts') + continue + + if (dirent.isFile()) { + const [name] = dirent.name.split('.vue') + const file_path = join('example', dirent.name) + const { dependencies, registryDependencies } + = await getDependencies(join(rootPath, dirent.name)) + + exampleRegistry.push({ + name, + type, + files: [file_path], + registryDependencies: Array.from(registryDependencies), + dependencies: Array.from(dependencies), + }) + } + + // ignoring examples with directories for now... + + // if (dirent.isDirectory()) { + // const componentPath = resolve(rootPath, dirent.name); + // const ui = await buildUIRegistry(componentPath, dirent.name); + // exampleRegistry.push({ + // ...ui, + // type + // }); + // } + } + + return exampleRegistry +} + +async function buildUIRegistry(componentPath: string, componentName: string) { + const dir = await readdir(componentPath, { + withFileTypes: true, + }) + + const files: string[] = [] + const dependencies = new Set() + const registryDependencies = new Set() + const type = 'components:ui' + + for (const dirent of dir) { + if (!dirent.isFile()) + continue + + const file_path = join('ui', componentName, dirent.name) + files.push(file_path) + + // only grab deps from the vue files + if (dirent.name === 'index.ts') + continue + const deps = await getDependencies(join(componentPath, dirent.name)) + deps.dependencies.forEach(dep => dependencies.add(dep)) + deps.registryDependencies.forEach(dep => + registryDependencies.add(dep), + ) + } + + return { + name: componentName, + type, + files, + registryDependencies: Array.from(registryDependencies), + dependencies: Array.from(dependencies), + } satisfies RegistryItem +} + +async function getDependencies(filename: string) { + const code = await readFile(filename, { encoding: 'utf8' }) + const parsed = parse(code) + + const registryDependencies = new Set() + const dependencies = new Set() + + if (parsed.descriptor.script?.content || parsed.descriptor.scriptSetup?.content) { + const compiled = compileScript(parsed.descriptor, { id: '' }) + + Object.values(compiled.imports!).forEach((value) => { + const source = value.source + const peerDeps = DEPENDENCIES.get(source) + if (peerDeps !== undefined) { + dependencies.add(source) + peerDeps.forEach(dep => dependencies.add(dep)) + } + + if (source.startsWith(REGISTRY_DEPENDENCY)) { + const component = source.split('/').at(-1)! + registryDependencies.add(component) + } + }) + } + + return { registryDependencies, dependencies } +} diff --git a/apps/www/src/lib/registry/styles.ts b/apps/www/src/lib/registry/styles.ts index 4387500a..1d6cf4fb 100644 --- a/apps/www/src/lib/registry/styles.ts +++ b/apps/www/src/lib/registry/styles.ts @@ -3,10 +3,10 @@ export const styles = [ name: 'default', label: 'Default', }, - { - name: 'new-york', - label: 'New York', - }, + // { + // name: 'new-york', + // label: 'New York', + // }, ] as const export type Style = (typeof styles)[number] diff --git a/apps/www/static/registry/colors/gray.json b/apps/www/static/registry/colors/gray.json new file mode 100644 index 00000000..8a1d9438 --- /dev/null +++ b/apps/www/static/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 --muted: 220 14.3% 95.9%;\n --muted-foreground: 220 8.9% 46.1%;\n \n --popover: 0 0% 100%;\n --popover-foreground: 224 71.4% 4.1%;\n \n --card: 0 0% 100%;\n --card-foreground: 224 71.4% 4.1%;\n \n --border: 220 13% 91%;\n --input: 220 13% 91%;\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 --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 --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 --muted: 215 27.9% 16.9%;\n --muted-foreground: 217.9 10.6% 64.9%;\n \n --popover: 224 71.4% 4.1%;\n --popover-foreground: 210 20% 98%;\n \n --card: 224 71.4% 4.1%;\n --card-foreground: 210 20% 98%;\n \n --border: 215 27.9% 16.9%;\n --input: 215 27.9% 16.9%;\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 --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 --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/static/registry/colors/index.json b/apps/www/static/registry/colors/index.json new file mode 100644 index 00000000..c25158ef --- /dev/null +++ b/apps/www/static/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%" + } + ] +} \ No newline at end of file diff --git a/apps/www/static/registry/colors/lime.json b/apps/www/static/registry/colors/lime.json new file mode 100644 index 00000000..e36faf45 --- /dev/null +++ b/apps/www/static/registry/colors/lime.json @@ -0,0 +1,92 @@ +{ + "inlineColors": { + "light": { + "background": "white", + "foreground": "lime-950", + "card": "white", + "card-foreground": "lime-950", + "popover": "white", + "popover-foreground": "lime-950", + "primary": "lime-900", + "primary-foreground": "lime-50", + "secondary": "lime-100", + "secondary-foreground": "lime-900", + "muted": "lime-100", + "muted-foreground": "lime-500", + "accent": "lime-100", + "accent-foreground": "lime-900", + "destructive": "red-500", + "destructive-foreground": "lime-50", + "border": "lime-200", + "input": "lime-200", + "ring": "lime-950" + }, + "dark": { + "background": "lime-950", + "foreground": "lime-50", + "card": "lime-950", + "card-foreground": "lime-50", + "popover": "lime-950", + "popover-foreground": "lime-50", + "primary": "lime-50", + "primary-foreground": "lime-900", + "secondary": "lime-800", + "secondary-foreground": "lime-50", + "muted": "lime-800", + "muted-foreground": "lime-400", + "accent": "lime-800", + "accent-foreground": "lime-50", + "destructive": "red-900", + "destructive-foreground": "lime-50", + "border": "lime-800", + "input": "lime-800", + "ring": "lime-300" + } + }, + "cssVars": { + "light": { + "background": "0 0% 100%", + "foreground": "89.3 80.4% 10%", + "card": "0 0% 100%", + "card-foreground": "89.3 80.4% 10%", + "popover": "0 0% 100%", + "popover-foreground": "89.3 80.4% 10%", + "primary": "87.6 61.2% 20.2%", + "primary-foreground": "78.3 92% 95.1%", + "secondary": "79.6 89.1% 89.2%", + "secondary-foreground": "87.6 61.2% 20.2%", + "muted": "79.6 89.1% 89.2%", + "muted-foreground": "83.7 80.5% 44.3%", + "accent": "79.6 89.1% 89.2%", + "accent-foreground": "87.6 61.2% 20.2%", + "destructive": "0 84.2% 60.2%", + "destructive-foreground": "78.3 92% 95.1%", + "border": "80.9 88.5% 79.6%", + "input": "80.9 88.5% 79.6%", + "ring": "89.3 80.4% 10%" + }, + "dark": { + "background": "89.3 80.4% 10%", + "foreground": "78.3 92% 95.1%", + "card": "89.3 80.4% 10%", + "card-foreground": "78.3 92% 95.1%", + "popover": "89.3 80.4% 10%", + "popover-foreground": "78.3 92% 95.1%", + "primary": "78.3 92% 95.1%", + "primary-foreground": "87.6 61.2% 20.2%", + "secondary": "86.3 69% 22.7%", + "secondary-foreground": "78.3 92% 95.1%", + "muted": "86.3 69% 22.7%", + "muted-foreground": "82.7 78% 55.5%", + "accent": "86.3 69% 22.7%", + "accent-foreground": "78.3 92% 95.1%", + "destructive": "0 62.8% 30.6%", + "destructive-foreground": "78.3 92% 95.1%", + "border": "86.3 69% 22.7%", + "input": "86.3 69% 22.7%", + "ring": "82 84.5% 67.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: 89.3 80.4% 10%;\n \n --muted: 79.6 89.1% 89.2%;\n --muted-foreground: 83.7 80.5% 44.3%;\n \n --popover: 0 0% 100%;\n --popover-foreground: 89.3 80.4% 10%;\n \n --card: 0 0% 100%;\n --card-foreground: 89.3 80.4% 10%;\n \n --border: 80.9 88.5% 79.6%;\n --input: 80.9 88.5% 79.6%;\n \n --primary: 87.6 61.2% 20.2%;\n --primary-foreground: 78.3 92% 95.1%;\n \n --secondary: 79.6 89.1% 89.2%;\n --secondary-foreground: 87.6 61.2% 20.2%;\n \n --accent: 79.6 89.1% 89.2%;\n --accent-foreground: 87.6 61.2% 20.2%;\n \n --destructive: 0 84.2% 60.2%;\n --destructive-foreground: 78.3 92% 95.1%;\n \n --ring: 89.3 80.4% 10%;\n \n --radius: 0.5rem;\n }\n \n .dark {\n --background: 89.3 80.4% 10%;\n --foreground: 78.3 92% 95.1%;\n \n --muted: 86.3 69% 22.7%;\n --muted-foreground: 82.7 78% 55.5%;\n \n --popover: 89.3 80.4% 10%;\n --popover-foreground: 78.3 92% 95.1%;\n \n --card: 89.3 80.4% 10%;\n --card-foreground: 78.3 92% 95.1%;\n \n --border: 86.3 69% 22.7%;\n --input: 86.3 69% 22.7%;\n \n --primary: 78.3 92% 95.1%;\n --primary-foreground: 87.6 61.2% 20.2%;\n \n --secondary: 86.3 69% 22.7%;\n --secondary-foreground: 78.3 92% 95.1%;\n \n --accent: 86.3 69% 22.7%;\n --accent-foreground: 78.3 92% 95.1%;\n \n --destructive: 0 62.8% 30.6%;\n --destructive-foreground: 78.3 92% 95.1%;\n \n --ring: 82 84.5% 67.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/static/registry/colors/neutral.json b/apps/www/static/registry/colors/neutral.json new file mode 100644 index 00000000..3deb3deb --- /dev/null +++ b/apps/www/static/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 --muted: 0 0% 96.1%;\n --muted-foreground: 0 0% 45.1%;\n \n --popover: 0 0% 100%;\n --popover-foreground: 0 0% 3.9%;\n \n --card: 0 0% 100%;\n --card-foreground: 0 0% 3.9%;\n \n --border: 0 0% 89.8%;\n --input: 0 0% 89.8%;\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 --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 --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 --muted: 0 0% 14.9%;\n --muted-foreground: 0 0% 63.9%;\n \n --popover: 0 0% 3.9%;\n --popover-foreground: 0 0% 98%;\n \n --card: 0 0% 3.9%;\n --card-foreground: 0 0% 98%;\n \n --border: 0 0% 14.9%;\n --input: 0 0% 14.9%;\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 --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 --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/static/registry/colors/slate.json b/apps/www/static/registry/colors/slate.json new file mode 100644 index 00000000..19a86b72 --- /dev/null +++ b/apps/www/static/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 --muted: 210 40% 96.1%;\n --muted-foreground: 215.4 16.3% 46.9%;\n \n --popover: 0 0% 100%;\n --popover-foreground: 222.2 84% 4.9%;\n \n --card: 0 0% 100%;\n --card-foreground: 222.2 84% 4.9%;\n \n --border: 214.3 31.8% 91.4%;\n --input: 214.3 31.8% 91.4%;\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 --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 --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 --muted: 217.2 32.6% 17.5%;\n --muted-foreground: 215 20.2% 65.1%;\n \n --popover: 222.2 84% 4.9%;\n --popover-foreground: 210 40% 98%;\n \n --card: 222.2 84% 4.9%;\n --card-foreground: 210 40% 98%;\n \n --border: 217.2 32.6% 17.5%;\n --input: 217.2 32.6% 17.5%;\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 --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 --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}" +} \ No newline at end of file diff --git a/apps/www/static/registry/colors/stone.json b/apps/www/static/registry/colors/stone.json new file mode 100644 index 00000000..bd31d945 --- /dev/null +++ b/apps/www/static/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 --muted: 60 4.8% 95.9%;\n --muted-foreground: 25 5.3% 44.7%;\n \n --popover: 0 0% 100%;\n --popover-foreground: 20 14.3% 4.1%;\n \n --card: 0 0% 100%;\n --card-foreground: 20 14.3% 4.1%;\n \n --border: 20 5.9% 90%;\n --input: 20 5.9% 90%;\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 --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 --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 --muted: 12 6.5% 15.1%;\n --muted-foreground: 24 5.4% 63.9%;\n \n --popover: 20 14.3% 4.1%;\n --popover-foreground: 60 9.1% 97.8%;\n \n --card: 20 14.3% 4.1%;\n --card-foreground: 60 9.1% 97.8%;\n \n --border: 12 6.5% 15.1%;\n --input: 12 6.5% 15.1%;\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 --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 --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/static/registry/colors/zinc.json b/apps/www/static/registry/colors/zinc.json new file mode 100644 index 00000000..72484fec --- /dev/null +++ b/apps/www/static/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 --muted: 240 4.8% 95.9%;\n --muted-foreground: 240 3.8% 46.1%;\n \n --popover: 0 0% 100%;\n --popover-foreground: 240 10% 3.9%;\n \n --card: 0 0% 100%;\n --card-foreground: 240 10% 3.9%;\n \n --border: 240 5.9% 90%;\n --input: 240 5.9% 90%;\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 --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 --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 --muted: 240 3.7% 15.9%;\n --muted-foreground: 240 5% 64.9%;\n \n --popover: 240 10% 3.9%;\n --popover-foreground: 0 0% 98%;\n \n --card: 240 10% 3.9%;\n --card-foreground: 0 0% 98%;\n \n --border: 240 3.7% 15.9%;\n --input: 240 3.7% 15.9%;\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 --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 --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/static/registry/index.json b/apps/www/static/registry/index.json new file mode 100644 index 00000000..b15521b1 --- /dev/null +++ b/apps/www/static/registry/index.json @@ -0,0 +1,611 @@ +[ + { + "name": "accordion", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/accordion/Accordion.vue", + "ui/accordion/AccordionContent.vue", + "ui/accordion/AccordionItem.vue", + "ui/accordion/AccordionTrigger.vue", + "ui/accordion/index.ts" + ], + "type": "components:ui" + }, + { + "name": "alert", + "dependencies": [], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/alert/Alert.vue", + "ui/alert/AlertDescription.vue", + "ui/alert/AlertTitle.vue", + "ui/alert/index.ts" + ], + "type": "components:ui" + }, + { + "name": "alert-dialog", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils", + "button" + ], + "files": [ + "ui/alert-dialog/AlertDialog.vue", + "ui/alert-dialog/AlertDialogAction.vue", + "ui/alert-dialog/AlertDialogCancel.vue", + "ui/alert-dialog/AlertDialogContent.vue", + "ui/alert-dialog/AlertDialogDescription.vue", + "ui/alert-dialog/AlertDialogFooter.vue", + "ui/alert-dialog/AlertDialogHeader.vue", + "ui/alert-dialog/AlertDialogTitle.vue", + "ui/alert-dialog/AlertDialogTrigger.vue", + "ui/alert-dialog/index.ts" + ], + "type": "components:ui" + }, + { + "name": "aspect-ratio", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [], + "files": [ + "ui/aspect-ratio/AspectRatio.vue", + "ui/aspect-ratio/index.ts" + ], + "type": "components:ui" + }, + { + "name": "avatar", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/avatar/Avatar.vue", + "ui/avatar/AvatarFallback.vue", + "ui/avatar/AvatarImage.vue", + "ui/avatar/index.ts" + ], + "type": "components:ui" + }, + { + "name": "badge", + "dependencies": [], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/badge/Badge.vue", + "ui/badge/index.ts" + ], + "type": "components:ui" + }, + { + "name": "breadcrumb", + "dependencies": [], + "registryDependencies": [], + "files": [ + "ui/breadcrumb/BreadCrumb.vue", + "ui/breadcrumb/BreadCrumbItem.vue", + "ui/breadcrumb/index.ts" + ], + "type": "components:ui" + }, + { + "name": "button", + "dependencies": [], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/button/Button.vue", + "ui/button/index.ts" + ], + "type": "components:ui" + }, + { + "name": "calendar", + "dependencies": [], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/calendar/Calendar.vue", + "ui/calendar/index.ts" + ], + "type": "components:ui" + }, + { + "name": "card", + "dependencies": [], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/card/Card.vue", + "ui/card/CardContent.vue", + "ui/card/CardDescription.vue", + "ui/card/CardFooter.vue", + "ui/card/CardHeader.vue", + "ui/card/CardTitle.vue", + "ui/card/index.ts" + ], + "type": "components:ui" + }, + { + "name": "checkbox", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/checkbox/Checkbox.vue", + "ui/checkbox/index.ts" + ], + "type": "components:ui" + }, + { + "name": "collapsible", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/collapsible/Collapsible.vue", + "ui/collapsible/CollapsibleContent.vue", + "ui/collapsible/CollapsibleTrigger.vue", + "ui/collapsible/index.ts" + ], + "type": "components:ui" + }, + { + "name": "context-menu", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/context-menu/ContextMenu.vue", + "ui/context-menu/ContextMenuCheckboxItem.vue", + "ui/context-menu/ContextMenuContent.vue", + "ui/context-menu/ContextMenuGroup.vue", + "ui/context-menu/ContextMenuItem.vue", + "ui/context-menu/ContextMenuLabel.vue", + "ui/context-menu/ContextMenuPortal.vue", + "ui/context-menu/ContextMenuRadioGroup.vue", + "ui/context-menu/ContextMenuRadioItem.vue", + "ui/context-menu/ContextMenuSeparator.vue", + "ui/context-menu/ContextMenuShortcut.vue", + "ui/context-menu/ContextMenuSub.vue", + "ui/context-menu/ContextMenuSubContent.vue", + "ui/context-menu/ContextMenuSubTrigger.vue", + "ui/context-menu/ContextMenuTrigger.vue", + "ui/context-menu/index.ts" + ], + "type": "components:ui" + }, + { + "name": "data-table", + "dependencies": [], + "registryDependencies": [], + "files": [ + "ui/data-table/DataTable.vue", + "ui/data-table/index.ts" + ], + "type": "components:ui" + }, + { + "name": "date-picker", + "dependencies": [], + "registryDependencies": [], + "files": [ + "ui/date-picker/DatePicker.vue", + "ui/date-picker/index.ts" + ], + "type": "components:ui" + }, + { + "name": "dialog", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/dialog/Dialog.vue", + "ui/dialog/DialogContent.vue", + "ui/dialog/DialogDescription.vue", + "ui/dialog/DialogFooter.vue", + "ui/dialog/DialogHeader.vue", + "ui/dialog/DialogTitle.vue", + "ui/dialog/DialogTrigger.vue", + "ui/dialog/index.ts" + ], + "type": "components:ui" + }, + { + "name": "dropdown-menu", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/dropdown-menu/DropdownMenu.vue", + "ui/dropdown-menu/DropdownMenuCheckboxItem.vue", + "ui/dropdown-menu/DropdownMenuContent.vue", + "ui/dropdown-menu/DropdownMenuGroup.vue", + "ui/dropdown-menu/DropdownMenuItem.vue", + "ui/dropdown-menu/DropdownMenuLabel.vue", + "ui/dropdown-menu/DropdownMenuRadioGroup.vue", + "ui/dropdown-menu/DropdownMenuRadioItem.vue", + "ui/dropdown-menu/DropdownMenuSeparator.vue", + "ui/dropdown-menu/DropdownMenuShortcut.vue", + "ui/dropdown-menu/DropdownMenuSub.vue", + "ui/dropdown-menu/DropdownMenuSubContent.vue", + "ui/dropdown-menu/DropdownMenuSubTrigger.vue", + "ui/dropdown-menu/DropdownMenuTrigger.vue", + "ui/dropdown-menu/index.ts" + ], + "type": "components:ui" + }, + { + "name": "hover-card", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/hover-card/HoverCard.vue", + "ui/hover-card/HoverCardContent.vue", + "ui/hover-card/HoverCardTrigger.vue", + "ui/hover-card/index.ts" + ], + "type": "components:ui" + }, + { + "name": "input", + "dependencies": [], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/input/Input.vue", + "ui/input/index.ts" + ], + "type": "components:ui" + }, + { + "name": "kbd", + "dependencies": [], + "registryDependencies": [], + "files": [ + "ui/kbd/Kbd.vue", + "ui/kbd/index.ts" + ], + "type": "components:ui" + }, + { + "name": "label", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/label/Label.vue", + "ui/label/index.ts" + ], + "type": "components:ui" + }, + { + "name": "menubar", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/menubar/Menubar.vue", + "ui/menubar/MenubarCheckboxItem.vue", + "ui/menubar/MenubarContent.vue", + "ui/menubar/MenubarGroup.vue", + "ui/menubar/MenubarItem.vue", + "ui/menubar/MenubarLabel.vue", + "ui/menubar/MenubarMenu.vue", + "ui/menubar/MenubarRadioGroup.vue", + "ui/menubar/MenubarRadioItem.vue", + "ui/menubar/MenubarSeparator.vue", + "ui/menubar/MenubarShortcut.vue", + "ui/menubar/MenubarSub.vue", + "ui/menubar/MenubarSubContent.vue", + "ui/menubar/MenubarSubTrigger.vue", + "ui/menubar/MenubarTrigger.vue", + "ui/menubar/index.ts" + ], + "type": "components:ui" + }, + { + "name": "navigation-menu", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/navigation-menu/NavigationMenu.vue", + "ui/navigation-menu/NavigationMenuContent.vue", + "ui/navigation-menu/NavigationMenuIndicator.vue", + "ui/navigation-menu/NavigationMenuItem.vue", + "ui/navigation-menu/NavigationMenuLink.vue", + "ui/navigation-menu/NavigationMenuList.vue", + "ui/navigation-menu/NavigationMenuTrigger.vue", + "ui/navigation-menu/NavigationMenuViewport.vue", + "ui/navigation-menu/index.ts" + ], + "type": "components:ui" + }, + { + "name": "popover", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/popover/Popover.vue", + "ui/popover/PopoverContent.vue", + "ui/popover/PopoverTrigger.vue", + "ui/popover/index.ts" + ], + "type": "components:ui" + }, + { + "name": "progress", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/progress/Progress.vue", + "ui/progress/index.ts" + ], + "type": "components:ui" + }, + { + "name": "radio-group", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/radio-group/RadioGroup.vue", + "ui/radio-group/RadioGroupItem.vue", + "ui/radio-group/index.ts" + ], + "type": "components:ui" + }, + { + "name": "scroll-area", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/scroll-area/ScrollArea.vue", + "ui/scroll-area/ScrollBar.vue", + "ui/scroll-area/index.ts" + ], + "type": "components:ui" + }, + { + "name": "select", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/select/Select.vue", + "ui/select/SelectContent.vue", + "ui/select/SelectGroup.vue", + "ui/select/SelectItem.vue", + "ui/select/SelectItemText.vue", + "ui/select/SelectLabel.vue", + "ui/select/SelectSeparator.vue", + "ui/select/SelectTrigger.vue", + "ui/select/SelectValue.vue", + "ui/select/index.ts" + ], + "type": "components:ui" + }, + { + "name": "separator", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/separator/Separator.vue", + "ui/separator/index.ts" + ], + "type": "components:ui" + }, + { + "name": "sheet", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/sheet/Sheet.vue", + "ui/sheet/SheetClose.vue", + "ui/sheet/SheetContent.vue", + "ui/sheet/SheetDescription.vue", + "ui/sheet/SheetFooter.vue", + "ui/sheet/SheetHeader.vue", + "ui/sheet/SheetTitle.vue", + "ui/sheet/SheetTrigger.vue", + "ui/sheet/index.ts" + ], + "type": "components:ui" + }, + { + "name": "skeleton", + "dependencies": [], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/skeleton/Skeleton.vue", + "ui/skeleton/index.ts" + ], + "type": "components:ui" + }, + { + "name": "slider", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/slider/Slider.vue", + "ui/slider/index.ts" + ], + "type": "components:ui" + }, + { + "name": "switch", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/switch/Switch.vue", + "ui/switch/index.ts" + ], + "type": "components:ui" + }, + { + "name": "table", + "dependencies": [], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/table/Table.vue", + "ui/table/TableBody.vue", + "ui/table/TableCaption.vue", + "ui/table/TableCell.vue", + "ui/table/TableEmpty.vue", + "ui/table/TableFooter.vue", + "ui/table/TableHead.vue", + "ui/table/TableHeader.vue", + "ui/table/TableRow.vue", + "ui/table/index.ts" + ], + "type": "components:ui" + }, + { + "name": "tabs", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/tabs/Tabs.vue", + "ui/tabs/TabsContent.vue", + "ui/tabs/TabsList.vue", + "ui/tabs/TabsTrigger.vue", + "ui/tabs/index.ts" + ], + "type": "components:ui" + }, + { + "name": "textarea", + "dependencies": [], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/textarea/Textarea.vue", + "ui/textarea/index.ts" + ], + "type": "components:ui" + }, + { + "name": "toggle", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/toggle/Toggle.vue", + "ui/toggle/index.ts" + ], + "type": "components:ui" + }, + { + "name": "tooltip", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + "ui/tooltip/Tooltip.vue", + "ui/tooltip/TooltipContent.vue", + "ui/tooltip/TooltipProvider.vue", + "ui/tooltip/TooltipTrigger.vue", + "ui/tooltip/index.ts" + ], + "type": "components:ui" + } +] \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/accordion.json b/apps/www/static/registry/styles/default/accordion.json new file mode 100644 index 00000000..32b57e7b --- /dev/null +++ b/apps/www/static/registry/styles/default/accordion.json @@ -0,0 +1,32 @@ +{ + "name": "accordion", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "Accordion.vue", + "content": "\n\n\n" + }, + { + "name": "AccordionContent.vue", + "content": "\n\n\n" + }, + { + "name": "AccordionItem.vue", + "content": "\n\n\n" + }, + { + "name": "AccordionTrigger.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as Accordion } from './Accordion.vue'\nexport { default as AccordionContent } from './AccordionContent.vue'\nexport { default as AccordionItem } from './AccordionItem.vue'\nexport { default as AccordionTrigger } from './AccordionTrigger.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/alert-dialog.json b/apps/www/static/registry/styles/default/alert-dialog.json new file mode 100644 index 00000000..3910076a --- /dev/null +++ b/apps/www/static/registry/styles/default/alert-dialog.json @@ -0,0 +1,53 @@ +{ + "name": "alert-dialog", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils", + "button" + ], + "files": [ + { + "name": "AlertDialog.vue", + "content": "\n\n\n" + }, + { + "name": "AlertDialogAction.vue", + "content": "\n\n\n" + }, + { + "name": "AlertDialogCancel.vue", + "content": "\n\n\n" + }, + { + "name": "AlertDialogContent.vue", + "content": "\n\n\n" + }, + { + "name": "AlertDialogDescription.vue", + "content": "\n\n\n" + }, + { + "name": "AlertDialogFooter.vue", + "content": "\n\n\n" + }, + { + "name": "AlertDialogHeader.vue", + "content": "\n\n\n" + }, + { + "name": "AlertDialogTitle.vue", + "content": "\n\n\n" + }, + { + "name": "AlertDialogTrigger.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as AlertDialog } from './AlertDialog.vue'\nexport { default as AlertDialogTrigger } from './AlertDialogTrigger.vue'\nexport { default as AlertDialogContent } from './AlertDialogContent.vue'\nexport { default as AlertDialogHeader } from './AlertDialogHeader.vue'\nexport { default as AlertDialogTitle } from './AlertDialogTitle.vue'\nexport { default as AlertDialogDescription } from './AlertDialogDescription.vue'\nexport { default as AlertDialogFooter } from './AlertDialogFooter.vue'\nexport { default as AlertDialogAction } from './AlertDialogAction.vue'\nexport { default as AlertDialogCancel } from './AlertDialogCancel.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/alert.json b/apps/www/static/registry/styles/default/alert.json new file mode 100644 index 00000000..2155bad8 --- /dev/null +++ b/apps/www/static/registry/styles/default/alert.json @@ -0,0 +1,26 @@ +{ + "name": "alert", + "dependencies": [], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "Alert.vue", + "content": "\n\n\n" + }, + { + "name": "AlertDescription.vue", + "content": "\n\n\n" + }, + { + "name": "AlertTitle.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "import { cva } from 'class-variance-authority'\n\nexport { default as Alert } from './Alert.vue'\nexport { default as AlertTitle } from './AlertTitle.vue'\nexport { default as AlertDescription } from './AlertDescription.vue'\n\nexport const 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" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/aspect-ratio.json b/apps/www/static/registry/styles/default/aspect-ratio.json new file mode 100644 index 00000000..53980c68 --- /dev/null +++ b/apps/www/static/registry/styles/default/aspect-ratio.json @@ -0,0 +1,18 @@ +{ + "name": "aspect-ratio", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [], + "files": [ + { + "name": "AspectRatio.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as AspectRatio } from './AspectRatio.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/avatar.json b/apps/www/static/registry/styles/default/avatar.json new file mode 100644 index 00000000..6051b428 --- /dev/null +++ b/apps/www/static/registry/styles/default/avatar.json @@ -0,0 +1,28 @@ +{ + "name": "avatar", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "Avatar.vue", + "content": "\n\n\n" + }, + { + "name": "AvatarFallback.vue", + "content": "\n\n\n" + }, + { + "name": "AvatarImage.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "import { cva } from 'class-variance-authority'\n\nexport { default as Avatar } from './Avatar.vue'\nexport { default as AvatarImage } from './AvatarImage.vue'\nexport { default as AvatarFallback } from './AvatarFallback.vue'\n\nexport const avatarVariant = cva(\n 'inline-flex items-center justify-center font-normal text-foregorund select-none shrink-0 bg-secondary overflow-hidden',\n {\n variants: {\n size: {\n sm: 'h-10 w-10 text-xs',\n base: 'h-16 w-16 text-2xl',\n lg: 'h-32 w-32 text-5xl',\n },\n shape: {\n circle: 'rounded-full',\n square: 'rounded-md',\n },\n },\n },\n)\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/badge.json b/apps/www/static/registry/styles/default/badge.json new file mode 100644 index 00000000..d94584f2 --- /dev/null +++ b/apps/www/static/registry/styles/default/badge.json @@ -0,0 +1,18 @@ +{ + "name": "badge", + "dependencies": [], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "Badge.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "import { cva } from 'class-variance-authority'\n\nexport { default as Badge } from './Badge.vue'\n\nexport const 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" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/breadcrumb.json b/apps/www/static/registry/styles/default/breadcrumb.json new file mode 100644 index 00000000..b597e1d3 --- /dev/null +++ b/apps/www/static/registry/styles/default/breadcrumb.json @@ -0,0 +1,20 @@ +{ + "name": "breadcrumb", + "dependencies": [], + "registryDependencies": [], + "files": [ + { + "name": "BreadCrumb.vue", + "content": "\n" + }, + { + "name": "BreadCrumbItem.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as BreadCrumb } from './BreadCrumb.vue'\nexport { default as BreadCrumbItem } from './BreadCrumbItem.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/button.json b/apps/www/static/registry/styles/default/button.json new file mode 100644 index 00000000..de7618f5 --- /dev/null +++ b/apps/www/static/registry/styles/default/button.json @@ -0,0 +1,18 @@ +{ + "name": "button", + "dependencies": [], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "Button.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "import { cva } from 'class-variance-authority'\n\nexport { default as Button } from './Button.vue'\n\nexport const 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" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/calendar.json b/apps/www/static/registry/styles/default/calendar.json new file mode 100644 index 00000000..2303b0b5 --- /dev/null +++ b/apps/www/static/registry/styles/default/calendar.json @@ -0,0 +1,18 @@ +{ + "name": "calendar", + "dependencies": [], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "Calendar.vue", + "content": "\n\n\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as Calendar } from './Calendar.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/card.json b/apps/www/static/registry/styles/default/card.json new file mode 100644 index 00000000..b1c1ca0c --- /dev/null +++ b/apps/www/static/registry/styles/default/card.json @@ -0,0 +1,38 @@ +{ + "name": "card", + "dependencies": [], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "Card.vue", + "content": "\n\n\n" + }, + { + "name": "CardContent.vue", + "content": "\n\n\n" + }, + { + "name": "CardDescription.vue", + "content": "\n\n\n" + }, + { + "name": "CardFooter.vue", + "content": "\n\n\n" + }, + { + "name": "CardHeader.vue", + "content": "\n\n\n" + }, + { + "name": "CardTitle.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as Card } from './Card.vue'\nexport { default as CardHeader } from './CardHeader.vue'\nexport { default as CardTitle } from './CardTitle.vue'\nexport { default as CardDescription } from './CardDescription.vue'\nexport { default as CardContent } from './CardContent.vue'\nexport { default as CardFooter } from './CardFooter.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/checkbox.json b/apps/www/static/registry/styles/default/checkbox.json new file mode 100644 index 00000000..a6aa8254 --- /dev/null +++ b/apps/www/static/registry/styles/default/checkbox.json @@ -0,0 +1,20 @@ +{ + "name": "checkbox", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "Checkbox.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as Checkbox } from './Checkbox.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/collapsible.json b/apps/www/static/registry/styles/default/collapsible.json new file mode 100644 index 00000000..6cce817e --- /dev/null +++ b/apps/www/static/registry/styles/default/collapsible.json @@ -0,0 +1,28 @@ +{ + "name": "collapsible", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "Collapsible.vue", + "content": "\n\n\n" + }, + { + "name": "CollapsibleContent.vue", + "content": "\n\n\n" + }, + { + "name": "CollapsibleTrigger.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as Collapsible } from './Collapsible.vue'\nexport { default as CollapsibleTrigger } from './CollapsibleTrigger.vue'\nexport { default as CollapsibleContent } from './CollapsibleContent.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/context-menu.json b/apps/www/static/registry/styles/default/context-menu.json new file mode 100644 index 00000000..5d486263 --- /dev/null +++ b/apps/www/static/registry/styles/default/context-menu.json @@ -0,0 +1,76 @@ +{ + "name": "context-menu", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "ContextMenu.vue", + "content": "\n\n\n" + }, + { + "name": "ContextMenuCheckboxItem.vue", + "content": "\n\n\n" + }, + { + "name": "ContextMenuContent.vue", + "content": "\n\n\n" + }, + { + "name": "ContextMenuGroup.vue", + "content": "\n\n\n" + }, + { + "name": "ContextMenuItem.vue", + "content": "\n\n\n" + }, + { + "name": "ContextMenuLabel.vue", + "content": "\n\n\n" + }, + { + "name": "ContextMenuPortal.vue", + "content": "\n\n\n" + }, + { + "name": "ContextMenuRadioGroup.vue", + "content": "\n\n\n" + }, + { + "name": "ContextMenuRadioItem.vue", + "content": "\n\n\n" + }, + { + "name": "ContextMenuSeparator.vue", + "content": "\n\n\n" + }, + { + "name": "ContextMenuShortcut.vue", + "content": "\n\n\n" + }, + { + "name": "ContextMenuSub.vue", + "content": "\n\n\n" + }, + { + "name": "ContextMenuSubContent.vue", + "content": "\n\n\n" + }, + { + "name": "ContextMenuSubTrigger.vue", + "content": "\n\n\n" + }, + { + "name": "ContextMenuTrigger.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as ContextMenu } from './ContextMenu.vue'\nexport { default as ContextMenuTrigger } from './ContextMenuTrigger.vue'\nexport { default as ContextMenuContent } from './ContextMenuContent.vue'\nexport { default as ContextMenuGroup } from './ContextMenuGroup.vue'\nexport { default as ContextMenuRadioGroup } from './ContextMenuRadioGroup.vue'\nexport { default as ContextMenuItem } from './ContextMenuItem.vue'\nexport { default as ContextMenuCheckboxItem } from './ContextMenuCheckboxItem.vue'\nexport { default as ContextMenuRadioItem } from './ContextMenuRadioItem.vue'\nexport { default as ContextMenuShortcut } from './ContextMenuShortcut.vue'\nexport { default as ContextMenuSeparator } from './ContextMenuSeparator.vue'\nexport { default as ContextMenuLabel } from './ContextMenuLabel.vue'\nexport { default as ContextMenuSub } from './ContextMenuSub.vue'\nexport { default as ContextMenuSubTrigger } from './ContextMenuSubTrigger.vue'\nexport { default as ContextMenuSubContent } from './ContextMenuSubContent.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/data-table.json b/apps/www/static/registry/styles/default/data-table.json new file mode 100644 index 00000000..15c42af0 --- /dev/null +++ b/apps/www/static/registry/styles/default/data-table.json @@ -0,0 +1,16 @@ +{ + "name": "data-table", + "dependencies": [], + "registryDependencies": [], + "files": [ + { + "name": "DataTable.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as DataTable } from './DataTable.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/date-picker.json b/apps/www/static/registry/styles/default/date-picker.json new file mode 100644 index 00000000..ed4b86c5 --- /dev/null +++ b/apps/www/static/registry/styles/default/date-picker.json @@ -0,0 +1,16 @@ +{ + "name": "date-picker", + "dependencies": [], + "registryDependencies": [], + "files": [ + { + "name": "DatePicker.vue", + "content": "\n\n\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as DatePicker } from './DatePicker.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/dialog.json b/apps/www/static/registry/styles/default/dialog.json new file mode 100644 index 00000000..1601bae5 --- /dev/null +++ b/apps/www/static/registry/styles/default/dialog.json @@ -0,0 +1,44 @@ +{ + "name": "dialog", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "Dialog.vue", + "content": "\n\n\n" + }, + { + "name": "DialogContent.vue", + "content": "\n\n\n" + }, + { + "name": "DialogDescription.vue", + "content": "\n\n\n" + }, + { + "name": "DialogFooter.vue", + "content": "\n\n\n" + }, + { + "name": "DialogHeader.vue", + "content": "\n\n\n" + }, + { + "name": "DialogTitle.vue", + "content": "\n\n\n" + }, + { + "name": "DialogTrigger.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as Dialog } from './Dialog.vue'\nexport { default as DialogTrigger } from './DialogTrigger.vue'\nexport { default as DialogHeader } from './DialogHeader.vue'\nexport { default as DialogTitle } from './DialogTitle.vue'\nexport { default as DialogDescription } from './DialogDescription.vue'\nexport { default as DialogContent } from './DialogContent.vue'\nexport { default as DialogFooter } from './DialogFooter.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/dropdown-menu.json b/apps/www/static/registry/styles/default/dropdown-menu.json new file mode 100644 index 00000000..72ec6533 --- /dev/null +++ b/apps/www/static/registry/styles/default/dropdown-menu.json @@ -0,0 +1,72 @@ +{ + "name": "dropdown-menu", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "DropdownMenu.vue", + "content": "\n\n\n" + }, + { + "name": "DropdownMenuCheckboxItem.vue", + "content": "\n\n\n" + }, + { + "name": "DropdownMenuContent.vue", + "content": "\n\n\n" + }, + { + "name": "DropdownMenuGroup.vue", + "content": "\n\n\n" + }, + { + "name": "DropdownMenuItem.vue", + "content": "\n\n\n" + }, + { + "name": "DropdownMenuLabel.vue", + "content": "\n\n\n" + }, + { + "name": "DropdownMenuRadioGroup.vue", + "content": "\n\n\n" + }, + { + "name": "DropdownMenuRadioItem.vue", + "content": "\n\n\n" + }, + { + "name": "DropdownMenuSeparator.vue", + "content": "\n\n\n" + }, + { + "name": "DropdownMenuShortcut.vue", + "content": "\n\n\n" + }, + { + "name": "DropdownMenuSub.vue", + "content": "\n\n\n" + }, + { + "name": "DropdownMenuSubContent.vue", + "content": "\n\n\n" + }, + { + "name": "DropdownMenuSubTrigger.vue", + "content": "\n\n\n" + }, + { + "name": "DropdownMenuTrigger.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { DropdownMenuPortal } from 'radix-vue'\n\nexport { default as DropdownMenu } from './DropdownMenu.vue'\nexport { default as DropdownMenuTrigger } from './DropdownMenuTrigger.vue'\nexport { default as DropdownMenuContent } from './DropdownMenuContent.vue'\nexport { default as DropdownMenuGroup } from './DropdownMenuGroup.vue'\nexport { default as DropdownMenuRadioGroup } from './DropdownMenuRadioGroup.vue'\nexport { default as DropdownMenuItem } from './DropdownMenuItem.vue'\nexport { default as DropdownMenuCheckboxItem } from './DropdownMenuCheckboxItem.vue'\nexport { default as DropdownMenuRadioItem } from './DropdownMenuRadioItem.vue'\nexport { default as DropdownMenuShortcut } from './DropdownMenuShortcut.vue'\nexport { default as DropdownMenuSeparator } from './DropdownMenuSeparator.vue'\nexport { default as DropdownMenuLabel } from './DropdownMenuLabel.vue'\nexport { default as DropdownMenuSub } from './DropdownMenuSub.vue'\nexport { default as DropdownMenuSubTrigger } from './DropdownMenuSubTrigger.vue'\nexport { default as DropdownMenuSubContent } from './DropdownMenuSubContent.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/hover-card.json b/apps/www/static/registry/styles/default/hover-card.json new file mode 100644 index 00000000..c35bf896 --- /dev/null +++ b/apps/www/static/registry/styles/default/hover-card.json @@ -0,0 +1,28 @@ +{ + "name": "hover-card", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "HoverCard.vue", + "content": "\n\n\n" + }, + { + "name": "HoverCardContent.vue", + "content": "\n\n\n" + }, + { + "name": "HoverCardTrigger.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as HoverCard } from './HoverCard.vue'\nexport { default as HoverCardTrigger } from './HoverCardTrigger.vue'\nexport { default as HoverCardContent } from './HoverCardContent.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/input.json b/apps/www/static/registry/styles/default/input.json new file mode 100644 index 00000000..33cd20ea --- /dev/null +++ b/apps/www/static/registry/styles/default/input.json @@ -0,0 +1,18 @@ +{ + "name": "input", + "dependencies": [], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "Input.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as Input } from './Input.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/kbd.json b/apps/www/static/registry/styles/default/kbd.json new file mode 100644 index 00000000..db9ad268 --- /dev/null +++ b/apps/www/static/registry/styles/default/kbd.json @@ -0,0 +1,16 @@ +{ + "name": "kbd", + "dependencies": [], + "registryDependencies": [], + "files": [ + { + "name": "Kbd.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as Kbd } from './Kbd.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/label.json b/apps/www/static/registry/styles/default/label.json new file mode 100644 index 00000000..ce93da47 --- /dev/null +++ b/apps/www/static/registry/styles/default/label.json @@ -0,0 +1,20 @@ +{ + "name": "label", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "Label.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as Label } from './Label.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/menubar.json b/apps/www/static/registry/styles/default/menubar.json new file mode 100644 index 00000000..3a37f6ab --- /dev/null +++ b/apps/www/static/registry/styles/default/menubar.json @@ -0,0 +1,76 @@ +{ + "name": "menubar", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "Menubar.vue", + "content": "\n\n\n" + }, + { + "name": "MenubarCheckboxItem.vue", + "content": "\n\n\n" + }, + { + "name": "MenubarContent.vue", + "content": "\n\n\n" + }, + { + "name": "MenubarGroup.vue", + "content": "\n\n\n" + }, + { + "name": "MenubarItem.vue", + "content": "\n\n\n" + }, + { + "name": "MenubarLabel.vue", + "content": "\n\n\n" + }, + { + "name": "MenubarMenu.vue", + "content": "\n\n\n" + }, + { + "name": "MenubarRadioGroup.vue", + "content": "\n\n\n" + }, + { + "name": "MenubarRadioItem.vue", + "content": "\n\n\n" + }, + { + "name": "MenubarSeparator.vue", + "content": "\n\n\n" + }, + { + "name": "MenubarShortcut.vue", + "content": "\n\n\n" + }, + { + "name": "MenubarSub.vue", + "content": "\n\n\n" + }, + { + "name": "MenubarSubContent.vue", + "content": "\n\n\n" + }, + { + "name": "MenubarSubTrigger.vue", + "content": "\n\n\n" + }, + { + "name": "MenubarTrigger.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as Menubar } from './Menubar.vue'\nexport { default as MenubarItem } from './MenubarItem.vue'\nexport { default as MenubarContent } from './MenubarContent.vue'\nexport { default as MenubarGroup } from './MenubarGroup.vue'\nexport { default as MenubarMenu } from './MenubarMenu.vue'\nexport { default as MenubarRadioGroup } from './MenubarRadioGroup.vue'\nexport { default as MenubarRadioItem } from './MenubarRadioItem.vue'\nexport { default as MenubarCheckboxItem } from './MenubarCheckboxItem.vue'\nexport { default as MenubarSeparator } from './MenubarSeparator.vue'\nexport { default as MenubarSub } from './MenubarSub.vue'\nexport { default as MenubarSubContent } from './MenubarSubContent.vue'\nexport { default as MenubarSubTrigger } from './MenubarSubTrigger.vue'\nexport { default as MenubarTrigger } from './MenubarTrigger.vue'\nexport { default as MenubarShortcut } from './MenubarShortcut.vue'\nexport { default as MenubarLabel } from './MenubarLabel.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/navigation-menu.json b/apps/www/static/registry/styles/default/navigation-menu.json new file mode 100644 index 00000000..3aa97c8d --- /dev/null +++ b/apps/www/static/registry/styles/default/navigation-menu.json @@ -0,0 +1,48 @@ +{ + "name": "navigation-menu", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "NavigationMenu.vue", + "content": "\n\n\n" + }, + { + "name": "NavigationMenuContent.vue", + "content": "\n\n\n" + }, + { + "name": "NavigationMenuIndicator.vue", + "content": "\n\n\n" + }, + { + "name": "NavigationMenuItem.vue", + "content": "\n\n\n" + }, + { + "name": "NavigationMenuLink.vue", + "content": "\n\n\n" + }, + { + "name": "NavigationMenuList.vue", + "content": "\n\n\n" + }, + { + "name": "NavigationMenuTrigger.vue", + "content": "\n\n\n" + }, + { + "name": "NavigationMenuViewport.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "import { cva } from 'class-variance-authority'\n\nexport { default as NavigationMenu } from './NavigationMenu.vue'\nexport { default as NavigationMenuList } from './NavigationMenuList.vue'\nexport { default as NavigationMenuItem } from './NavigationMenuItem.vue'\nexport { default as NavigationMenuTrigger } from './NavigationMenuTrigger.vue'\nexport { default as NavigationMenuContent } from './NavigationMenuContent.vue'\nexport { default as NavigationMenuLink } from './NavigationMenuLink.vue'\n\nexport const 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" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/popover.json b/apps/www/static/registry/styles/default/popover.json new file mode 100644 index 00000000..a911d0a7 --- /dev/null +++ b/apps/www/static/registry/styles/default/popover.json @@ -0,0 +1,28 @@ +{ + "name": "popover", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "Popover.vue", + "content": "\n\n\n" + }, + { + "name": "PopoverContent.vue", + "content": "\n\n\n" + }, + { + "name": "PopoverTrigger.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as Popover } from './Popover.vue'\nexport { default as PopoverTrigger } from './PopoverTrigger.vue'\nexport { default as PopoverContent } from './PopoverContent.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/progress.json b/apps/www/static/registry/styles/default/progress.json new file mode 100644 index 00000000..29acceb5 --- /dev/null +++ b/apps/www/static/registry/styles/default/progress.json @@ -0,0 +1,20 @@ +{ + "name": "progress", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "Progress.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as Progress } from './Progress.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/radio-group.json b/apps/www/static/registry/styles/default/radio-group.json new file mode 100644 index 00000000..80dffba8 --- /dev/null +++ b/apps/www/static/registry/styles/default/radio-group.json @@ -0,0 +1,24 @@ +{ + "name": "radio-group", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "RadioGroup.vue", + "content": "\n\n\n" + }, + { + "name": "RadioGroupItem.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as RadioGroup } from './RadioGroup.vue'\nexport { default as RadioGroupItem } from './RadioGroupItem.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/scroll-area.json b/apps/www/static/registry/styles/default/scroll-area.json new file mode 100644 index 00000000..4b2efc5d --- /dev/null +++ b/apps/www/static/registry/styles/default/scroll-area.json @@ -0,0 +1,24 @@ +{ + "name": "scroll-area", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "ScrollArea.vue", + "content": "\n\n\n" + }, + { + "name": "ScrollBar.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as ScrollArea } from './ScrollArea.vue'\nexport { default as ScrollBar } from './ScrollBar.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/select.json b/apps/www/static/registry/styles/default/select.json new file mode 100644 index 00000000..285f7f16 --- /dev/null +++ b/apps/www/static/registry/styles/default/select.json @@ -0,0 +1,52 @@ +{ + "name": "select", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "Select.vue", + "content": "\n\n\n" + }, + { + "name": "SelectContent.vue", + "content": "\n\n\n" + }, + { + "name": "SelectGroup.vue", + "content": "\n\n\n" + }, + { + "name": "SelectItem.vue", + "content": "\n\n\n" + }, + { + "name": "SelectItemText.vue", + "content": "\n\n\n" + }, + { + "name": "SelectLabel.vue", + "content": "\n\n\n" + }, + { + "name": "SelectSeparator.vue", + "content": "\n\n\n" + }, + { + "name": "SelectTrigger.vue", + "content": "\n\n\n" + }, + { + "name": "SelectValue.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as Select } from './Select.vue'\nexport { default as SelectValue } from './SelectValue.vue'\nexport { default as SelectTrigger } from './SelectTrigger.vue'\nexport { default as SelectContent } from './SelectContent.vue'\nexport { default as SelectGroup } from './SelectGroup.vue'\nexport { default as SelectItem } from './SelectItem.vue'\nexport { default as SelectItemText } from './SelectItemText.vue'\nexport { default as SelectLabel } from './SelectLabel.vue'\nexport { default as SelectSeparator } from './SelectSeparator.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/separator.json b/apps/www/static/registry/styles/default/separator.json new file mode 100644 index 00000000..1c4cd911 --- /dev/null +++ b/apps/www/static/registry/styles/default/separator.json @@ -0,0 +1,20 @@ +{ + "name": "separator", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "Separator.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as Separator } from './Separator.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/sheet.json b/apps/www/static/registry/styles/default/sheet.json new file mode 100644 index 00000000..599eecb2 --- /dev/null +++ b/apps/www/static/registry/styles/default/sheet.json @@ -0,0 +1,48 @@ +{ + "name": "sheet", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "Sheet.vue", + "content": "\n\n\n" + }, + { + "name": "SheetClose.vue", + "content": "\n\n\n" + }, + { + "name": "SheetContent.vue", + "content": "\n\n\n" + }, + { + "name": "SheetDescription.vue", + "content": "\n\n\n" + }, + { + "name": "SheetFooter.vue", + "content": "\n\n\n" + }, + { + "name": "SheetHeader.vue", + "content": "\n\n\n" + }, + { + "name": "SheetTitle.vue", + "content": "\n\n\n" + }, + { + "name": "SheetTrigger.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as Sheet } from './Sheet.vue'\nexport { default as SheetTrigger } from './SheetTrigger.vue'\nexport { default as SheetClose } from './SheetClose.vue'\nexport { default as SheetContent } from './SheetContent.vue'\nexport { default as SheetHeader } from './SheetHeader.vue'\nexport { default as SheetTitle } from './SheetTitle.vue'\nexport { default as SheetDescription } from './SheetDescription.vue'\nexport { default as SheetFooter } from './SheetFooter.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/skeleton.json b/apps/www/static/registry/styles/default/skeleton.json new file mode 100644 index 00000000..2c0fd3ef --- /dev/null +++ b/apps/www/static/registry/styles/default/skeleton.json @@ -0,0 +1,18 @@ +{ + "name": "skeleton", + "dependencies": [], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "Skeleton.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as Skeleton } from './Skeleton.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/slider.json b/apps/www/static/registry/styles/default/slider.json new file mode 100644 index 00000000..6b489789 --- /dev/null +++ b/apps/www/static/registry/styles/default/slider.json @@ -0,0 +1,20 @@ +{ + "name": "slider", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "Slider.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as Slider } from './Slider.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/switch.json b/apps/www/static/registry/styles/default/switch.json new file mode 100644 index 00000000..8f5006b1 --- /dev/null +++ b/apps/www/static/registry/styles/default/switch.json @@ -0,0 +1,20 @@ +{ + "name": "switch", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "Switch.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as Switch } from './Switch.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/table.json b/apps/www/static/registry/styles/default/table.json new file mode 100644 index 00000000..fb0d4341 --- /dev/null +++ b/apps/www/static/registry/styles/default/table.json @@ -0,0 +1,50 @@ +{ + "name": "table", + "dependencies": [], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "Table.vue", + "content": "\n\n\n" + }, + { + "name": "TableBody.vue", + "content": "\n\n\n" + }, + { + "name": "TableCaption.vue", + "content": "\n\n\n" + }, + { + "name": "TableCell.vue", + "content": "\n\n\n" + }, + { + "name": "TableEmpty.vue", + "content": "\n\n\n" + }, + { + "name": "TableFooter.vue", + "content": "\n\n\n" + }, + { + "name": "TableHead.vue", + "content": "\n\n\n" + }, + { + "name": "TableHeader.vue", + "content": "\n\n\n" + }, + { + "name": "TableRow.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as Table } from './Table.vue'\nexport { default as TableBody } from './TableBody.vue'\nexport { default as TableCell } from './TableCell.vue'\nexport { default as TableHead } from './TableHead.vue'\nexport { default as TableHeader } from './TableHeader.vue'\nexport { default as TableRow } from './TableRow.vue'\nexport { default as TableCaption } from './TableCaption.vue'\nexport { default as TableEmpty } from './TableEmpty.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/tabs.json b/apps/www/static/registry/styles/default/tabs.json new file mode 100644 index 00000000..3f89a0b7 --- /dev/null +++ b/apps/www/static/registry/styles/default/tabs.json @@ -0,0 +1,32 @@ +{ + "name": "tabs", + "dependencies": [ + "radix-vue" + ], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "Tabs.vue", + "content": "\n\n\n" + }, + { + "name": "TabsContent.vue", + "content": "\n\n\n" + }, + { + "name": "TabsList.vue", + "content": "\n\n\n" + }, + { + "name": "TabsTrigger.vue", + "content": "\n\n\n" + }, + { + "name": "index.ts", + "content": "export { default as Tabs } from './Tabs.vue'\nexport { default as TabsTrigger } from './TabsTrigger.vue'\nexport { default as TabsList } from './TabsList.vue'\nexport { default as TabsContent } from './TabsContent.vue'\n" + } + ], + "type": "components:ui" +} \ No newline at end of file diff --git a/apps/www/static/registry/styles/default/textarea.json b/apps/www/static/registry/styles/default/textarea.json new file mode 100644 index 00000000..7ceaf393 --- /dev/null +++ b/apps/www/static/registry/styles/default/textarea.json @@ -0,0 +1,18 @@ +{ + "name": "textarea", + "dependencies": [], + "registryDependencies": [ + "utils" + ], + "files": [ + { + "name": "Textarea.vue", + "content": "\n\n