-
+
diff --git a/apps/www/src/lib/registry/default/ui/accordion/AccordionItem.vue b/apps/www/src/lib/registry/default/ui/accordion/AccordionItem.vue
index c78bf5aa..9975c238 100644
--- a/apps/www/src/lib/registry/default/ui/accordion/AccordionItem.vue
+++ b/apps/www/src/lib/registry/default/ui/accordion/AccordionItem.vue
@@ -1,14 +1,23 @@
diff --git a/apps/www/src/lib/registry/default/ui/accordion/AccordionTrigger.vue b/apps/www/src/lib/registry/default/ui/accordion/AccordionTrigger.vue
index 512a8fdf..17c15ca2 100644
--- a/apps/www/src/lib/registry/default/ui/accordion/AccordionTrigger.vue
+++ b/apps/www/src/lib/registry/default/ui/accordion/AccordionTrigger.vue
@@ -1,4 +1,5 @@
-
+
-
+
+
+
diff --git a/apps/www/src/lib/registry/default/ui/alert-dialog/AlertDialogAction.vue b/apps/www/src/lib/registry/default/ui/alert-dialog/AlertDialogAction.vue
index 8ebf7157..cd87a927 100644
--- a/apps/www/src/lib/registry/default/ui/alert-dialog/AlertDialogAction.vue
+++ b/apps/www/src/lib/registry/default/ui/alert-dialog/AlertDialogAction.vue
@@ -1,13 +1,20 @@
-
+
diff --git a/apps/www/src/lib/registry/default/ui/alert-dialog/AlertDialogCancel.vue b/apps/www/src/lib/registry/default/ui/alert-dialog/AlertDialogCancel.vue
index fe3531b3..d42179c4 100644
--- a/apps/www/src/lib/registry/default/ui/alert-dialog/AlertDialogCancel.vue
+++ b/apps/www/src/lib/registry/default/ui/alert-dialog/AlertDialogCancel.vue
@@ -1,13 +1,20 @@
-
+
diff --git a/apps/www/src/lib/registry/default/ui/alert-dialog/AlertDialogContent.vue b/apps/www/src/lib/registry/default/ui/alert-dialog/AlertDialogContent.vue
index 8af818b9..9f09909e 100644
--- a/apps/www/src/lib/registry/default/ui/alert-dialog/AlertDialogContent.vue
+++ b/apps/www/src/lib/registry/default/ui/alert-dialog/AlertDialogContent.vue
@@ -1,30 +1,37 @@
+import { type HTMLAttributes, computed } from 'vue'
import {
AlertDialogDescription,
type AlertDialogDescriptionProps,
} from 'radix-vue'
import { cn } from '@/lib/utils'
-const props = defineProps()
+const props = defineProps()
+
+const delegatedProps = computed(() => {
+ const { class: _, ...delegated } = props
+
+ return delegated
+})
diff --git a/apps/www/src/lib/registry/default/ui/alert-dialog/AlertDialogFooter.vue b/apps/www/src/lib/registry/default/ui/alert-dialog/AlertDialogFooter.vue
index de4af93b..55d0a0eb 100644
--- a/apps/www/src/lib/registry/default/ui/alert-dialog/AlertDialogFooter.vue
+++ b/apps/www/src/lib/registry/default/ui/alert-dialog/AlertDialogFooter.vue
@@ -1,19 +1,17 @@
+import type { HTMLAttributes } from 'vue'
import { cn } from '@/lib/utils'
-const props = defineProps({
- class: {
- type: String,
- default: '',
- },
-})
+const props = defineProps<{
+ class?: HTMLAttributes['class']
+}>()
diff --git a/apps/www/src/lib/registry/default/ui/alert-dialog/AlertDialogTitle.vue b/apps/www/src/lib/registry/default/ui/alert-dialog/AlertDialogTitle.vue
index 9b6491f2..50c583d0 100644
--- a/apps/www/src/lib/registry/default/ui/alert-dialog/AlertDialogTitle.vue
+++ b/apps/www/src/lib/registry/default/ui/alert-dialog/AlertDialogTitle.vue
@@ -1,14 +1,21 @@
diff --git a/apps/www/src/lib/registry/default/ui/alert/Alert.vue b/apps/www/src/lib/registry/default/ui/alert/Alert.vue
index b95d5c89..b3502d52 100644
--- a/apps/www/src/lib/registry/default/ui/alert/Alert.vue
+++ b/apps/www/src/lib/registry/default/ui/alert/Alert.vue
@@ -1,17 +1,16 @@
-
+
diff --git a/apps/www/src/lib/registry/default/ui/alert/AlertDescription.vue b/apps/www/src/lib/registry/default/ui/alert/AlertDescription.vue
index a539b631..2971a877 100644
--- a/apps/www/src/lib/registry/default/ui/alert/AlertDescription.vue
+++ b/apps/www/src/lib/registry/default/ui/alert/AlertDescription.vue
@@ -1,9 +1,10 @@
diff --git a/apps/www/src/lib/registry/default/ui/alert/AlertTitle.vue b/apps/www/src/lib/registry/default/ui/alert/AlertTitle.vue
index c5dd22c2..e28dd37e 100644
--- a/apps/www/src/lib/registry/default/ui/alert/AlertTitle.vue
+++ b/apps/www/src/lib/registry/default/ui/alert/AlertTitle.vue
@@ -1,9 +1,14 @@
-
+
diff --git a/apps/www/src/lib/registry/default/ui/alert/index.ts b/apps/www/src/lib/registry/default/ui/alert/index.ts
index 5ca03a7f..765f704d 100644
--- a/apps/www/src/lib/registry/default/ui/alert/index.ts
+++ b/apps/www/src/lib/registry/default/ui/alert/index.ts
@@ -1,4 +1,4 @@
-import { cva } from 'class-variance-authority'
+import { type VariantProps, cva } from 'class-variance-authority'
export { default as Alert } from './Alert.vue'
export { default as AlertTitle } from './AlertTitle.vue'
@@ -19,3 +19,5 @@ export const alertVariants = cva(
},
},
)
+
+export type AlertVariants = VariantProps
diff --git a/apps/www/src/lib/registry/default/ui/avatar/Avatar.vue b/apps/www/src/lib/registry/default/ui/avatar/Avatar.vue
index 39f71b65..5b7b9fbf 100644
--- a/apps/www/src/lib/registry/default/ui/avatar/Avatar.vue
+++ b/apps/www/src/lib/registry/default/ui/avatar/Avatar.vue
@@ -1,15 +1,14 @@
-
+
diff --git a/apps/www/src/lib/registry/default/ui/badge/index.ts b/apps/www/src/lib/registry/default/ui/badge/index.ts
index 771c75f1..d90c2ef4 100644
--- a/apps/www/src/lib/registry/default/ui/badge/index.ts
+++ b/apps/www/src/lib/registry/default/ui/badge/index.ts
@@ -1,4 +1,4 @@
-import { cva } from 'class-variance-authority'
+import { type VariantProps, cva } from 'class-variance-authority'
export { default as Badge } from './Badge.vue'
@@ -21,3 +21,5 @@ export const badgeVariants = cva(
},
},
)
+
+export type BadgeVariants = VariantProps
diff --git a/apps/www/src/lib/registry/default/ui/button/Button.vue b/apps/www/src/lib/registry/default/ui/button/Button.vue
index 8bd71364..a7641026 100644
--- a/apps/www/src/lib/registry/default/ui/button/Button.vue
+++ b/apps/www/src/lib/registry/default/ui/button/Button.vue
@@ -1,20 +1,17 @@
@@ -23,7 +20,7 @@ withDefaults(defineProps(), {
diff --git a/apps/www/src/lib/registry/default/ui/button/index.ts b/apps/www/src/lib/registry/default/ui/button/index.ts
index 93a07008..e18f26bb 100644
--- a/apps/www/src/lib/registry/default/ui/button/index.ts
+++ b/apps/www/src/lib/registry/default/ui/button/index.ts
@@ -1,9 +1,9 @@
-import { cva } from 'class-variance-authority'
+import { type VariantProps, cva } from 'class-variance-authority'
export { default as Button } from './Button.vue'
export const buttonVariants = cva(
- 'inline-flex items-center justify-center rounded-md whitespace-nowrap 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',
+ 'inline-flex items-center justify-center whitespace-nowrap 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',
{
variants: {
variant: {
@@ -30,3 +30,5 @@ export const buttonVariants = cva(
},
},
)
+
+export type ButtonVariants = VariantProps
diff --git a/apps/www/src/lib/registry/default/ui/calendar/Calendar.vue b/apps/www/src/lib/registry/default/ui/calendar/Calendar.vue
index 9415ce64..e44796a1 100644
--- a/apps/www/src/lib/registry/default/ui/calendar/Calendar.vue
+++ b/apps/www/src/lib/registry/default/ui/calendar/Calendar.vue
@@ -1,11 +1,12 @@
@@ -79,18 +89,30 @@ onMounted(async () => {
+ >
+
+
+
+
+
+
+
+
+
+
+
+
-\n"
+ "content": "\n\n\n \n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n\n \n \n \n\n \n \n \n \n
\n \n\n\n"
},
{
"name": "index.ts",
- "content": "export { default as Calendar } from './Calendar.vue'\n"
+ "content": "export { default as Calendar } from './Calendar.vue'\nimport type { CalendarSlotName } from 'v-calendar/dist/types/src/components/Calendar/CalendarSlot.vue.d.ts'\n\nexport function isVCalendarSlot(slotName: string): slotName is CalendarSlotName {\n const validSlots: CalendarSlotName[] = [\n 'day-content',\n 'day-popover',\n 'dp-footer',\n 'footer',\n 'header-title-wrapper',\n 'header-title',\n 'header-prev-button',\n 'header-next-button',\n 'nav',\n 'nav-prev-button',\n 'nav-next-button',\n 'page',\n 'time-header',\n ]\n\n return validSlots.includes(slotName as CalendarSlotName)\n}\n"
}
],
"type": "components:ui"
diff --git a/apps/www/src/public/registry/styles/default/card.json b/apps/www/src/public/registry/styles/default/card.json
index b1c1ca0c..a9a8f43b 100644
--- a/apps/www/src/public/registry/styles/default/card.json
+++ b/apps/www/src/public/registry/styles/default/card.json
@@ -7,27 +7,27 @@
"files": [
{
"name": "Card.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "CardContent.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "CardDescription.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "CardFooter.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "CardHeader.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "CardTitle.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/default/carousel.json b/apps/www/src/public/registry/styles/default/carousel.json
index dfcd4e20..e687e55c 100644
--- a/apps/www/src/public/registry/styles/default/carousel.json
+++ b/apps/www/src/public/registry/styles/default/carousel.json
@@ -1,6 +1,7 @@
{
"name": "carousel",
"dependencies": [
+ "@vueuse/core",
"embla-carousel-vue",
"embla-carousel"
],
@@ -11,15 +12,15 @@
"files": [
{
"name": "Carousel.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "CarouselContent.vue",
- "content": "\n\n\n \n \n"
+ "content": "\n\n\n \n \n"
},
{
"name": "CarouselItem.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "CarouselNext.vue",
diff --git a/apps/www/src/public/registry/styles/default/checkbox.json b/apps/www/src/public/registry/styles/default/checkbox.json
index 80b1a66c..86d0a16e 100644
--- a/apps/www/src/public/registry/styles/default/checkbox.json
+++ b/apps/www/src/public/registry/styles/default/checkbox.json
@@ -7,7 +7,7 @@
"files": [
{
"name": "Checkbox.vue",
- "content": "\n\n\n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/default/collapsible.json b/apps/www/src/public/registry/styles/default/collapsible.json
index f2e586fd..39e79fca 100644
--- a/apps/www/src/public/registry/styles/default/collapsible.json
+++ b/apps/www/src/public/registry/styles/default/collapsible.json
@@ -5,7 +5,7 @@
"files": [
{
"name": "Collapsible.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "CollapsibleContent.vue",
diff --git a/apps/www/src/public/registry/styles/default/command.json b/apps/www/src/public/registry/styles/default/command.json
index d25e631c..a71b6fbd 100644
--- a/apps/www/src/public/registry/styles/default/command.json
+++ b/apps/www/src/public/registry/styles/default/command.json
@@ -8,39 +8,39 @@
"files": [
{
"name": "Command.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "CommandDialog.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n"
},
{
"name": "CommandEmpty.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "CommandGroup.vue",
- "content": "\n\n\n \n \n {{ heading }}\n \n \n \n \n"
+ "content": "\n\n\n \n \n {{ heading }}\n \n \n \n \n"
},
{
"name": "CommandInput.vue",
- "content": "\n\n\n\n\n \n \n \n
\n \n"
+ "content": "\n\n\n \n \n \n
\n \n"
},
{
"name": "CommandItem.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "CommandList.vue",
- "content": "\n\n\n \n \n \n
\n \n \n"
+ "content": "\n\n\n \n \n \n
\n \n \n"
},
{
"name": "CommandSeparator.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "CommandShortcut.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/default/context-menu.json b/apps/www/src/public/registry/styles/default/context-menu.json
index 0ed87d58..b77b8504 100644
--- a/apps/www/src/public/registry/styles/default/context-menu.json
+++ b/apps/www/src/public/registry/styles/default/context-menu.json
@@ -11,11 +11,11 @@
},
{
"name": "ContextMenuCheckboxItem.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n \n"
},
{
"name": "ContextMenuContent.vue",
- "content": "\n\n\n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n"
},
{
"name": "ContextMenuGroup.vue",
@@ -23,11 +23,11 @@
},
{
"name": "ContextMenuItem.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "ContextMenuLabel.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "ContextMenuPortal.vue",
@@ -39,15 +39,15 @@
},
{
"name": "ContextMenuRadioItem.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n \n"
},
{
"name": "ContextMenuSeparator.vue",
- "content": "\n\n\n \n \n"
+ "content": "\n\n\n \n \n"
},
{
"name": "ContextMenuShortcut.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "ContextMenuSub.vue",
@@ -55,15 +55,15 @@
},
{
"name": "ContextMenuSubContent.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "ContextMenuSubTrigger.vue",
- "content": "\n\n\n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n"
},
{
"name": "ContextMenuTrigger.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/default/data-table.json b/apps/www/src/public/registry/styles/default/data-table.json
index 6f15fbca..f1366992 100644
--- a/apps/www/src/public/registry/styles/default/data-table.json
+++ b/apps/www/src/public/registry/styles/default/data-table.json
@@ -7,7 +7,7 @@
"files": [
{
"name": "DataTable.vue",
- "content": "\n\n\n \n
\n
\n \n
\n
\n Reset \n \n \n
\n
\n \n \n \n View \n \n \n \n Toggle Columns \n \n \n !column.getCanHide())\"\n :key=\"column.id\"\n :checked=\"column.getIsVisible()\"\n @update:checked=\"toggleColumnVisibility(column)\"\n >\n {{ column.columnDef.header }} \n \n \n \n \n
\n\n \n \n \n \n \n \n
\n \n \n \n \n \n
\n \n \n
\n \n \n \n \n\n \n \n \n \n \n \n\n \n No data available.\n \n \n
\n\n \n
\n \n {{ table.getFilteredSelectedRowModel().rows.length }} of {{ \" \" }}\n {{ table.getFilteredRowModel().rows.length }} row(s) selected\n \n
\n
\n
\n
\n Rows per page:\n
\n
\n \n {{ table.getState().pagination.pageSize }}\n \n \n \n \n {{ pageSize }}\n \n \n \n \n
\n\n
\n Page {{ table.getState().pagination.pageIndex + 1 }} of\n {{ table.getPageCount() }}\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n \n"
+ "content": "\n\n\n \n
\n
\n \n
\n
\n Reset \n \n \n
\n
\n \n \n \n View \n \n \n \n Toggle Columns \n \n \n !column.getCanHide())\"\n :key=\"column.id\"\n :checked=\"column.getIsVisible()\"\n @update:checked=\"toggleColumnVisibility(column)\"\n >\n {{ column.columnDef.header }} \n \n \n \n \n
\n\n \n \n \n \n \n \n
\n \n \n \n \n \n
\n \n \n
\n \n \n \n \n\n \n \n \n \n \n \n\n \n No data available.\n \n \n
\n\n \n
\n \n {{ table.getFilteredSelectedRowModel().rows.length }} of {{ \" \" }}\n {{ table.getFilteredRowModel().rows.length }} row(s) selected\n \n
\n
\n
\n
\n Rows per page:\n
\n
\n \n {{ table.getState().pagination.pageSize }}\n \n \n \n \n {{ pageSize }}\n \n \n \n \n
\n\n
\n Page {{ table.getState().pagination.pageIndex + 1 }} of\n {{ table.getPageCount() }}\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n \n"
},
{
"name": "index.ts",
@@ -15,4 +15,4 @@
}
],
"type": "components:ui"
-}
\ No newline at end of file
+}
diff --git a/apps/www/src/public/registry/styles/default/dialog.json b/apps/www/src/public/registry/styles/default/dialog.json
index 87ca2836..4ba5f23e 100644
--- a/apps/www/src/public/registry/styles/default/dialog.json
+++ b/apps/www/src/public/registry/styles/default/dialog.json
@@ -15,19 +15,19 @@
},
{
"name": "DialogContent.vue",
- "content": "\n\n\n \n \n \n \n\n \n \n Close \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n\n \n \n Close \n \n \n \n \n"
},
{
"name": "DialogDescription.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "DialogFooter.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "DialogHeader.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "DialogScrollContent.vue",
@@ -35,7 +35,7 @@
},
{
"name": "DialogTitle.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "DialogTrigger.vue",
diff --git a/apps/www/src/public/registry/styles/default/dropdown-menu.json b/apps/www/src/public/registry/styles/default/dropdown-menu.json
index 01d3c940..5b4e9847 100644
--- a/apps/www/src/public/registry/styles/default/dropdown-menu.json
+++ b/apps/www/src/public/registry/styles/default/dropdown-menu.json
@@ -11,11 +11,11 @@
},
{
"name": "DropdownMenuCheckboxItem.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n \n"
},
{
"name": "DropdownMenuContent.vue",
- "content": "\n\n\n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n"
},
{
"name": "DropdownMenuGroup.vue",
@@ -23,27 +23,27 @@
},
{
"name": "DropdownMenuItem.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "DropdownMenuLabel.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "DropdownMenuRadioGroup.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "DropdownMenuRadioItem.vue",
- "content": "\n\n\n \n \n\n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n \n"
},
{
"name": "DropdownMenuSeparator.vue",
- "content": "\n\n\n \n \n"
+ "content": "\n\n\n \n \n"
},
{
"name": "DropdownMenuShortcut.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "DropdownMenuSub.vue",
@@ -51,15 +51,15 @@
},
{
"name": "DropdownMenuSubContent.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "DropdownMenuSubTrigger.vue",
- "content": "\n\n\n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n"
},
{
"name": "DropdownMenuTrigger.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/default/form.json b/apps/www/src/public/registry/styles/default/form.json
index 50d60bcb..5e61096e 100644
--- a/apps/www/src/public/registry/styles/default/form.json
+++ b/apps/www/src/public/registry/styles/default/form.json
@@ -6,7 +6,8 @@
"zod"
],
"registryDependencies": [
- "utils"
+ "utils",
+ "label"
],
"files": [
{
@@ -15,15 +16,15 @@
},
{
"name": "FormDescription.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "FormItem.vue",
- "content": "\n\n\n\n\n \n \n
\n \n"
+ "content": "\n\n\n\n\n \n \n
\n \n"
},
{
"name": "FormLabel.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "FormMessage.vue",
diff --git a/apps/www/src/public/registry/styles/default/hover-card.json b/apps/www/src/public/registry/styles/default/hover-card.json
index e178651c..bf4eb7dc 100644
--- a/apps/www/src/public/registry/styles/default/hover-card.json
+++ b/apps/www/src/public/registry/styles/default/hover-card.json
@@ -7,11 +7,11 @@
"files": [
{
"name": "HoverCard.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "HoverCardContent.vue",
- "content": "\n\n\n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n"
},
{
"name": "HoverCardTrigger.vue",
diff --git a/apps/www/src/public/registry/styles/default/input.json b/apps/www/src/public/registry/styles/default/input.json
index ae1e2ad9..7f500be6 100644
--- a/apps/www/src/public/registry/styles/default/input.json
+++ b/apps/www/src/public/registry/styles/default/input.json
@@ -9,7 +9,7 @@
"files": [
{
"name": "Input.vue",
- "content": "\n\n\n \n \n"
+ "content": "\n\n\n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/default/kbd.json b/apps/www/src/public/registry/styles/default/kbd.json
index db9ad268..2eeafdda 100644
--- a/apps/www/src/public/registry/styles/default/kbd.json
+++ b/apps/www/src/public/registry/styles/default/kbd.json
@@ -5,7 +5,7 @@
"files": [
{
"name": "Kbd.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
@@ -13,4 +13,4 @@
}
],
"type": "components:ui"
-}
\ No newline at end of file
+}
diff --git a/apps/www/src/public/registry/styles/default/label.json b/apps/www/src/public/registry/styles/default/label.json
index 1b1b058d..0cfedee1 100644
--- a/apps/www/src/public/registry/styles/default/label.json
+++ b/apps/www/src/public/registry/styles/default/label.json
@@ -7,7 +7,7 @@
"files": [
{
"name": "Label.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/default/menubar.json b/apps/www/src/public/registry/styles/default/menubar.json
index f3fbd6df..4e708ec7 100644
--- a/apps/www/src/public/registry/styles/default/menubar.json
+++ b/apps/www/src/public/registry/styles/default/menubar.json
@@ -7,15 +7,15 @@
"files": [
{
"name": "Menubar.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "MenubarCheckboxItem.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n \n"
},
{
"name": "MenubarContent.vue",
- "content": "\n\n\n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n"
},
{
"name": "MenubarGroup.vue",
@@ -23,11 +23,11 @@
},
{
"name": "MenubarItem.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "MenubarLabel.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "MenubarMenu.vue",
@@ -35,19 +35,19 @@
},
{
"name": "MenubarRadioGroup.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "MenubarRadioItem.vue",
- "content": "\n\n\n \n \n \n \n\n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n \n"
},
{
"name": "MenubarSeparator.vue",
- "content": "\n\n\n \n \n"
+ "content": "\n\n\n \n \n"
},
{
"name": "MenubarShortcut.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "MenubarSub.vue",
@@ -55,15 +55,15 @@
},
{
"name": "MenubarSubContent.vue",
- "content": "\n\n\n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n"
},
{
"name": "MenubarSubTrigger.vue",
- "content": "\n\n\n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n"
},
{
"name": "MenubarTrigger.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/default/navigation-menu.json b/apps/www/src/public/registry/styles/default/navigation-menu.json
index 6517995b..ecda26c9 100644
--- a/apps/www/src/public/registry/styles/default/navigation-menu.json
+++ b/apps/www/src/public/registry/styles/default/navigation-menu.json
@@ -7,15 +7,15 @@
"files": [
{
"name": "NavigationMenu.vue",
- "content": "\n\n\n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n"
},
{
"name": "NavigationMenuContent.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "NavigationMenuIndicator.vue",
- "content": "\n\n\n \n
\n \n \n"
+ "content": "\n\n\n \n
\n \n \n"
},
{
"name": "NavigationMenuItem.vue",
@@ -23,19 +23,19 @@
},
{
"name": "NavigationMenuLink.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "NavigationMenuList.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "NavigationMenuTrigger.vue",
- "content": "\n\n\n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n"
},
{
"name": "NavigationMenuViewport.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/default/pagination.json b/apps/www/src/public/registry/styles/default/pagination.json
index e3a3fea4..6d25fc6f 100644
--- a/apps/www/src/public/registry/styles/default/pagination.json
+++ b/apps/www/src/public/registry/styles/default/pagination.json
@@ -8,23 +8,23 @@
"files": [
{
"name": "PaginationEllipsis.vue",
- "content": "\n\n\n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n"
},
{
"name": "PaginationFirst.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n"
},
{
"name": "PaginationLast.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n"
},
{
"name": "PaginationNext.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n"
},
{
"name": "PaginationPrev.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/default/pin-input.json b/apps/www/src/public/registry/styles/default/pin-input.json
new file mode 100644
index 00000000..ee35d2bf
--- /dev/null
+++ b/apps/www/src/public/registry/styles/default/pin-input.json
@@ -0,0 +1,22 @@
+{
+ "name": "pin-input",
+ "dependencies": [],
+ "registryDependencies": [
+ "utils"
+ ],
+ "files": [
+ {
+ "name": "PinInput.vue",
+ "content": "\n\n\n \n \n \n \n"
+ },
+ {
+ "name": "PinInputInput.vue",
+ "content": "\n\n\n \n \n"
+ },
+ {
+ "name": "index.ts",
+ "content": "export { default as PinInput } from './PinInput.vue'\nexport { default as PinInputInput } from './PinInputInput.vue'\n"
+ }
+ ],
+ "type": "components:ui"
+}
\ No newline at end of file
diff --git a/apps/www/src/public/registry/styles/default/popover.json b/apps/www/src/public/registry/styles/default/popover.json
index e7e15493..916e0eab 100644
--- a/apps/www/src/public/registry/styles/default/popover.json
+++ b/apps/www/src/public/registry/styles/default/popover.json
@@ -11,7 +11,7 @@
},
{
"name": "PopoverContent.vue",
- "content": "\n\n\n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n"
},
{
"name": "PopoverTrigger.vue",
diff --git a/apps/www/src/public/registry/styles/default/progress.json b/apps/www/src/public/registry/styles/default/progress.json
index 20ab6d19..cd2edde9 100644
--- a/apps/www/src/public/registry/styles/default/progress.json
+++ b/apps/www/src/public/registry/styles/default/progress.json
@@ -7,7 +7,7 @@
"files": [
{
"name": "Progress.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/default/radio-group.json b/apps/www/src/public/registry/styles/default/radio-group.json
index 7d408e4e..beae81f5 100644
--- a/apps/www/src/public/registry/styles/default/radio-group.json
+++ b/apps/www/src/public/registry/styles/default/radio-group.json
@@ -7,11 +7,11 @@
"files": [
{
"name": "RadioGroup.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "RadioGroupItem.vue",
- "content": "\n\n\n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/default/scroll-area.json b/apps/www/src/public/registry/styles/default/scroll-area.json
index 494c05bd..4d7a79fa 100644
--- a/apps/www/src/public/registry/styles/default/scroll-area.json
+++ b/apps/www/src/public/registry/styles/default/scroll-area.json
@@ -7,11 +7,11 @@
"files": [
{
"name": "ScrollArea.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n"
},
{
"name": "ScrollBar.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/default/select.json b/apps/www/src/public/registry/styles/default/select.json
index 77a62ecb..0989daf9 100644
--- a/apps/www/src/public/registry/styles/default/select.json
+++ b/apps/www/src/public/registry/styles/default/select.json
@@ -11,15 +11,15 @@
},
{
"name": "SelectContent.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n \n \n"
},
{
"name": "SelectGroup.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "SelectItem.vue",
- "content": "\n\n\n \n \n \n \n \n \n\n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n\n \n \n \n \n \n"
},
{
"name": "SelectItemText.vue",
@@ -27,15 +27,23 @@
},
{
"name": "SelectLabel.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
+ },
+ {
+ "name": "SelectScrollDownButton.vue",
+ "content": "\n\n\n \n \n \n \n \n \n"
+ },
+ {
+ "name": "SelectScrollUpButton.vue",
+ "content": "\n\n\n \n \n \n \n \n \n"
},
{
"name": "SelectSeparator.vue",
- "content": "\n\n\n \n \n"
+ "content": "\n\n\n \n \n"
},
{
"name": "SelectTrigger.vue",
- "content": "\n\n\n span]:truncate [&>span]:min-w-0',\n props.class,\n ),\n props.invalid\n ? '!ring-destructive ring-2 placeholder:!text-destructive'\n : '',\n ]\"\n >\n \n \n \n \n \n \n"
+ "content": "\n\n\n span]:line-clamp-1',\n props.class,\n )\"\n >\n \n \n \n \n \n \n"
},
{
"name": "SelectValue.vue",
@@ -43,7 +51,7 @@
},
{
"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"
+ "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'\nexport { default as SelectScrollUpButton } from './SelectScrollUpButton.vue'\nexport { default as SelectScrollDownButton } from './SelectScrollDownButton.vue'\n"
}
],
"type": "components:ui"
diff --git a/apps/www/src/public/registry/styles/default/separator.json b/apps/www/src/public/registry/styles/default/separator.json
index b4a8cae3..da6dd655 100644
--- a/apps/www/src/public/registry/styles/default/separator.json
+++ b/apps/www/src/public/registry/styles/default/separator.json
@@ -7,7 +7,7 @@
"files": [
{
"name": "Separator.vue",
- "content": "\n\n\n \n \n"
+ "content": "\n\n\n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/default/sheet.json b/apps/www/src/public/registry/styles/default/sheet.json
index 161f4c42..33287e21 100644
--- a/apps/www/src/public/registry/styles/default/sheet.json
+++ b/apps/www/src/public/registry/styles/default/sheet.json
@@ -7,7 +7,7 @@
"files": [
{
"name": "Sheet.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "SheetClose.vue",
@@ -15,23 +15,23 @@
},
{
"name": "SheetContent.vue",
- "content": "\n\n\n \n \n \n \n\n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n\n \n \n \n \n \n \n"
},
{
"name": "SheetDescription.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "SheetFooter.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "SheetHeader.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "SheetTitle.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "SheetTrigger.vue",
@@ -39,7 +39,7 @@
},
{
"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"
+ "content": "import { type VariantProps, cva } from 'class-variance-authority'\n\nexport { 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\nexport const sheetVariants = cva(\n 'fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500',\n {\n variants: {\n side: {\n top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',\n bottom:\n 'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',\n left: 'inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',\n right:\n 'inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',\n },\n },\n defaultVariants: {\n side: 'right',\n },\n },\n)\n\nexport type SheetVariants = VariantProps\n"
}
],
"type": "components:ui"
diff --git a/apps/www/src/public/registry/styles/default/skeleton.json b/apps/www/src/public/registry/styles/default/skeleton.json
index 2c0fd3ef..13be9875 100644
--- a/apps/www/src/public/registry/styles/default/skeleton.json
+++ b/apps/www/src/public/registry/styles/default/skeleton.json
@@ -7,7 +7,7 @@
"files": [
{
"name": "Skeleton.vue",
- "content": "\n\n\n
\n \n"
+ "content": "\n\n\n
\n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/default/slider.json b/apps/www/src/public/registry/styles/default/slider.json
index f939b86d..bc124110 100644
--- a/apps/www/src/public/registry/styles/default/slider.json
+++ b/apps/www/src/public/registry/styles/default/slider.json
@@ -7,7 +7,7 @@
"files": [
{
"name": "Slider.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/default/sonner.json b/apps/www/src/public/registry/styles/default/sonner.json
new file mode 100644
index 00000000..3a7620a0
--- /dev/null
+++ b/apps/www/src/public/registry/styles/default/sonner.json
@@ -0,0 +1,18 @@
+{
+ "name": "sonner",
+ "dependencies": [
+ "vue-sonner"
+ ],
+ "registryDependencies": [],
+ "files": [
+ {
+ "name": "Sonner.vue",
+ "content": "\n\n\n \n \n"
+ },
+ {
+ "name": "index.ts",
+ "content": "export { default as Toaster } from './Sonner.vue'\n"
+ }
+ ],
+ "type": "components:ui"
+}
\ No newline at end of file
diff --git a/apps/www/src/public/registry/styles/default/switch.json b/apps/www/src/public/registry/styles/default/switch.json
index a59df47a..3b09a00e 100644
--- a/apps/www/src/public/registry/styles/default/switch.json
+++ b/apps/www/src/public/registry/styles/default/switch.json
@@ -7,7 +7,7 @@
"files": [
{
"name": "Switch.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/default/table.json b/apps/www/src/public/registry/styles/default/table.json
index fb0d4341..cd605e4f 100644
--- a/apps/www/src/public/registry/styles/default/table.json
+++ b/apps/www/src/public/registry/styles/default/table.json
@@ -7,39 +7,39 @@
"files": [
{
"name": "Table.vue",
- "content": "\n\n\n \n \n"
+ "content": "\n\n\n \n \n"
},
{
"name": "TableBody.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "TableCaption.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "TableCell.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "TableEmpty.vue",
- "content": "\n\n\n \n \n \n \n
\n \n \n \n"
+ "content": "\n\n\n \n \n \n \n
\n \n \n \n"
},
{
"name": "TableFooter.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n tr]:last:border-b-0', props.class)\">\n \n \n \n"
},
{
"name": "TableHead.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "TableHeader.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "TableRow.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/default/tabs.json b/apps/www/src/public/registry/styles/default/tabs.json
index c6d9a76e..cc0e099d 100644
--- a/apps/www/src/public/registry/styles/default/tabs.json
+++ b/apps/www/src/public/registry/styles/default/tabs.json
@@ -11,15 +11,15 @@
},
{
"name": "TabsContent.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "TabsList.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "TabsTrigger.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/default/textarea.json b/apps/www/src/public/registry/styles/default/textarea.json
index 78d5ea2f..4236a997 100644
--- a/apps/www/src/public/registry/styles/default/textarea.json
+++ b/apps/www/src/public/registry/styles/default/textarea.json
@@ -9,7 +9,7 @@
"files": [
{
"name": "Textarea.vue",
- "content": "\n\n\n \n \n"
+ "content": "\n\n\n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/default/toast.json b/apps/www/src/public/registry/styles/default/toast.json
index 353a9c03..bb16aada 100644
--- a/apps/www/src/public/registry/styles/default/toast.json
+++ b/apps/www/src/public/registry/styles/default/toast.json
@@ -7,19 +7,19 @@
"files": [
{
"name": "Toast.vue",
- "content": "\n\n\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "ToastAction.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "ToastClose.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "ToastDescription.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "ToastProvider.vue",
@@ -27,11 +27,11 @@
},
{
"name": "ToastTitle.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "ToastViewport.vue",
- "content": "\n\n\n \n \n"
+ "content": "\n\n\n \n \n"
},
{
"name": "Toaster.vue",
@@ -39,11 +39,11 @@
},
{
"name": "index.ts",
- "content": "export { default as Toaster } from './Toaster.vue'\nexport { default as Toast } from './Toast.vue'\nexport { default as ToastViewport } from './ToastViewport.vue'\nexport { default as ToastAction } from './ToastAction.vue'\nexport { default as ToastClose } from './ToastClose.vue'\nexport { default as ToastTitle } from './ToastTitle.vue'\nexport { default as ToastDescription } from './ToastDescription.vue'\nexport { default as ToastProvider } from './ToastProvider.vue'\nexport { toast, useToast } from './use-toast'\n\nimport { cva } from 'class-variance-authority'\n\nexport const toastVariants = cva(\n 'group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full',\n {\n variants: {\n variant: {\n default: 'border bg-background text-foreground',\n destructive:\n 'destructive group border-destructive bg-destructive text-destructive-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n)\n"
+ "content": "import type { ToastRootProps } from 'radix-vue'\nimport type { HTMLAttributes } from 'vue'\n\nexport { default as Toaster } from './Toaster.vue'\nexport { default as Toast } from './Toast.vue'\nexport { default as ToastViewport } from './ToastViewport.vue'\nexport { default as ToastAction } from './ToastAction.vue'\nexport { default as ToastClose } from './ToastClose.vue'\nexport { default as ToastTitle } from './ToastTitle.vue'\nexport { default as ToastDescription } from './ToastDescription.vue'\nexport { default as ToastProvider } from './ToastProvider.vue'\nexport { toast, useToast } from './use-toast'\n\nimport { type VariantProps, cva } from 'class-variance-authority'\n\nexport const toastVariants = cva(\n 'group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[--radix-toast-swipe-end-x] data-[swipe=move]:translate-x-[--radix-toast-swipe-move-x] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full',\n {\n variants: {\n variant: {\n default: 'border bg-background text-foreground',\n destructive:\n 'destructive group border-destructive bg-destructive text-destructive-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n)\n\ntype ToastVariants = VariantProps\n\nexport interface ToastProps extends ToastRootProps {\n class?: HTMLAttributes['class']\n variant?: ToastVariants['variant']\n 'onOpenChange'?: ((value: boolean) => void) | undefined\n}\n"
},
{
"name": "use-toast.ts",
- "content": "import { computed, ref } from 'vue'\nimport type { Component, VNode } from 'vue'\nimport type { ToastProps } from './Toast.vue'\n\nconst TOAST_LIMIT = 1\nconst TOAST_REMOVE_DELAY = 1000000\n\nexport type StringOrVNode =\n | string\n | VNode\n | (() => VNode)\n\ntype ToasterToast = ToastProps & {\n id: string\n title?: string\n description?: StringOrVNode\n action?: Component\n}\n\nconst actionTypes = {\n ADD_TOAST: 'ADD_TOAST',\n UPDATE_TOAST: 'UPDATE_TOAST',\n DISMISS_TOAST: 'DISMISS_TOAST',\n REMOVE_TOAST: 'REMOVE_TOAST',\n} as const\n\nlet count = 0\n\nfunction genId() {\n count = (count + 1) % Number.MAX_VALUE\n return count.toString()\n}\n\ntype ActionType = typeof actionTypes\n\ntype Action =\n | {\n type: ActionType['ADD_TOAST']\n toast: ToasterToast\n }\n | {\n type: ActionType['UPDATE_TOAST']\n toast: Partial\n }\n | {\n type: ActionType['DISMISS_TOAST']\n toastId?: ToasterToast['id']\n }\n | {\n type: ActionType['REMOVE_TOAST']\n toastId?: ToasterToast['id']\n }\n\ninterface State {\n toasts: ToasterToast[]\n}\n\nconst toastTimeouts = new Map>()\n\nfunction addToRemoveQueue(toastId: string) {\n if (toastTimeouts.has(toastId))\n return\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId)\n dispatch({\n type: actionTypes.REMOVE_TOAST,\n toastId,\n })\n }, TOAST_REMOVE_DELAY)\n\n toastTimeouts.set(toastId, timeout)\n}\n\nconst state = ref({\n toasts: [],\n})\n\nfunction dispatch(action: Action) {\n switch (action.type) {\n case actionTypes.ADD_TOAST:\n state.value.toasts = [action.toast, ...state.value.toasts].slice(0, TOAST_LIMIT)\n break\n\n case actionTypes.UPDATE_TOAST:\n state.value.toasts = state.value.toasts.map(t =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t,\n )\n break\n\n case actionTypes.DISMISS_TOAST: {\n const { toastId } = action\n\n if (toastId) {\n addToRemoveQueue(toastId)\n }\n else {\n state.value.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id)\n })\n }\n\n state.value.toasts = state.value.toasts.map(t =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t,\n )\n break\n }\n\n case actionTypes.REMOVE_TOAST:\n if (action.toastId === undefined)\n state.value.toasts = []\n else\n state.value.toasts = state.value.toasts.filter(t => t.id !== action.toastId)\n\n break\n }\n}\n\nfunction useToast() {\n return {\n toasts: computed(() => state.value.toasts),\n toast,\n dismiss: (toastId?: string) => dispatch({ type: actionTypes.DISMISS_TOAST, toastId }),\n }\n}\n\ntype Toast = Omit\n\nfunction toast(props: Toast) {\n const id = genId()\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: actionTypes.UPDATE_TOAST,\n toast: { ...props, id },\n })\n\n const dismiss = () => dispatch({ type: actionTypes.DISMISS_TOAST, toastId: id })\n\n dispatch({\n type: actionTypes.ADD_TOAST,\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open: boolean) => {\n if (!open)\n dismiss()\n },\n },\n })\n\n return {\n id,\n dismiss,\n update,\n }\n}\n\nexport { toast, useToast }\n"
+ "content": "import { computed, ref } from 'vue'\nimport type { Component, VNode } from 'vue'\nimport type { ToastProps } from '.'\n\nconst TOAST_LIMIT = 1\nconst TOAST_REMOVE_DELAY = 1000000\n\nexport type StringOrVNode =\n | string\n | VNode\n | (() => VNode)\n\ntype ToasterToast = ToastProps & {\n id: string\n title?: string\n description?: StringOrVNode\n action?: Component\n}\n\nconst actionTypes = {\n ADD_TOAST: 'ADD_TOAST',\n UPDATE_TOAST: 'UPDATE_TOAST',\n DISMISS_TOAST: 'DISMISS_TOAST',\n REMOVE_TOAST: 'REMOVE_TOAST',\n} as const\n\nlet count = 0\n\nfunction genId() {\n count = (count + 1) % Number.MAX_VALUE\n return count.toString()\n}\n\ntype ActionType = typeof actionTypes\n\ntype Action =\n | {\n type: ActionType['ADD_TOAST']\n toast: ToasterToast\n }\n | {\n type: ActionType['UPDATE_TOAST']\n toast: Partial\n }\n | {\n type: ActionType['DISMISS_TOAST']\n toastId?: ToasterToast['id']\n }\n | {\n type: ActionType['REMOVE_TOAST']\n toastId?: ToasterToast['id']\n }\n\ninterface State {\n toasts: ToasterToast[]\n}\n\nconst toastTimeouts = new Map>()\n\nfunction addToRemoveQueue(toastId: string) {\n if (toastTimeouts.has(toastId))\n return\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId)\n dispatch({\n type: actionTypes.REMOVE_TOAST,\n toastId,\n })\n }, TOAST_REMOVE_DELAY)\n\n toastTimeouts.set(toastId, timeout)\n}\n\nconst state = ref({\n toasts: [],\n})\n\nfunction dispatch(action: Action) {\n switch (action.type) {\n case actionTypes.ADD_TOAST:\n state.value.toasts = [action.toast, ...state.value.toasts].slice(0, TOAST_LIMIT)\n break\n\n case actionTypes.UPDATE_TOAST:\n state.value.toasts = state.value.toasts.map(t =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t,\n )\n break\n\n case actionTypes.DISMISS_TOAST: {\n const { toastId } = action\n\n if (toastId) {\n addToRemoveQueue(toastId)\n }\n else {\n state.value.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id)\n })\n }\n\n state.value.toasts = state.value.toasts.map(t =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t,\n )\n break\n }\n\n case actionTypes.REMOVE_TOAST:\n if (action.toastId === undefined)\n state.value.toasts = []\n else\n state.value.toasts = state.value.toasts.filter(t => t.id !== action.toastId)\n\n break\n }\n}\n\nfunction useToast() {\n return {\n toasts: computed(() => state.value.toasts),\n toast,\n dismiss: (toastId?: string) => dispatch({ type: actionTypes.DISMISS_TOAST, toastId }),\n }\n}\n\ntype Toast = Omit\n\nfunction toast(props: Toast) {\n const id = genId()\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: actionTypes.UPDATE_TOAST,\n toast: { ...props, id },\n })\n\n const dismiss = () => dispatch({ type: actionTypes.DISMISS_TOAST, toastId: id })\n\n dispatch({\n type: actionTypes.ADD_TOAST,\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open: boolean) => {\n if (!open)\n dismiss()\n },\n },\n })\n\n return {\n id,\n dismiss,\n update,\n }\n}\n\nexport { toast, useToast }\n"
}
],
"type": "components:ui"
diff --git a/apps/www/src/public/registry/styles/default/toggle-group.json b/apps/www/src/public/registry/styles/default/toggle-group.json
index 4cc43c6c..b0909535 100644
--- a/apps/www/src/public/registry/styles/default/toggle-group.json
+++ b/apps/www/src/public/registry/styles/default/toggle-group.json
@@ -8,11 +8,11 @@
"files": [
{
"name": "ToggleGroup.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "ToggleGroupItem.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/default/toggle.json b/apps/www/src/public/registry/styles/default/toggle.json
index a7d29b22..5ae5563a 100644
--- a/apps/www/src/public/registry/styles/default/toggle.json
+++ b/apps/www/src/public/registry/styles/default/toggle.json
@@ -7,11 +7,11 @@
"files": [
{
"name": "Toggle.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
- "content": "import { cva } from 'class-variance-authority'\n\nexport { default as Toggle } from './Toggle.vue'\n\nexport const toggleVariants = cva(\n 'inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground',\n {\n variants: {\n variant: {\n default: 'bg-transparent',\n outline:\n 'border border-input bg-transparent hover:bg-accent hover:text-accent-foreground',\n },\n size: {\n default: 'h-10 px-3',\n sm: 'h-9 px-2.5',\n lg: 'h-11 px-5',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n)\n"
+ "content": "import { type VariantProps, cva } from 'class-variance-authority'\n\nexport { default as Toggle } from './Toggle.vue'\n\nexport const toggleVariants = cva(\n 'inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground',\n {\n variants: {\n variant: {\n default: 'bg-transparent',\n outline:\n 'border border-input bg-transparent hover:bg-accent hover:text-accent-foreground',\n },\n size: {\n default: 'h-10 px-3',\n sm: 'h-9 px-2.5',\n lg: 'h-11 px-5',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n)\n\nexport type ToggleVariants = VariantProps\n"
}
],
"type": "components:ui"
diff --git a/apps/www/src/public/registry/styles/default/tooltip.json b/apps/www/src/public/registry/styles/default/tooltip.json
index 174df2e4..ab74ed0f 100644
--- a/apps/www/src/public/registry/styles/default/tooltip.json
+++ b/apps/www/src/public/registry/styles/default/tooltip.json
@@ -11,7 +11,7 @@
},
{
"name": "TooltipContent.vue",
- "content": "\n\n\n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n"
},
{
"name": "TooltipProvider.vue",
diff --git a/apps/www/src/public/registry/styles/new-york/accordion.json b/apps/www/src/public/registry/styles/new-york/accordion.json
index ecb5eb09..ecf40bab 100644
--- a/apps/www/src/public/registry/styles/new-york/accordion.json
+++ b/apps/www/src/public/registry/styles/new-york/accordion.json
@@ -7,19 +7,19 @@
"files": [
{
"name": "Accordion.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "AccordionContent.vue",
- "content": "\n\n\n \n \n \n
\n \n \n"
+ "content": "\n\n\n \n \n \n
\n \n \n"
},
{
"name": "AccordionItem.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "AccordionTrigger.vue",
- "content": "\n\n\n \n svg]:rotate-180',\n props.class,\n )\n \"\n >\n \n \n \n \n \n"
+ "content": "\n\n\n \n svg]:rotate-180',\n props.class,\n )\n \"\n >\n \n \n \n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/new-york/alert-dialog.json b/apps/www/src/public/registry/styles/new-york/alert-dialog.json
index 57a441a0..934099ea 100644
--- a/apps/www/src/public/registry/styles/new-york/alert-dialog.json
+++ b/apps/www/src/public/registry/styles/new-york/alert-dialog.json
@@ -12,31 +12,31 @@
},
{
"name": "AlertDialogAction.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "AlertDialogCancel.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "AlertDialogContent.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n"
},
{
"name": "AlertDialogDescription.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "AlertDialogFooter.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "AlertDialogHeader.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "AlertDialogTitle.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "AlertDialogTrigger.vue",
diff --git a/apps/www/src/public/registry/styles/new-york/alert.json b/apps/www/src/public/registry/styles/new-york/alert.json
index be7bdcc0..43eaad08 100644
--- a/apps/www/src/public/registry/styles/new-york/alert.json
+++ b/apps/www/src/public/registry/styles/new-york/alert.json
@@ -7,19 +7,19 @@
"files": [
{
"name": "Alert.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "AlertDescription.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "AlertTitle.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \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 px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7',\n {\n variants: {\n variant: {\n default: 'bg-background text-foreground',\n destructive:\n 'border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n)\n"
+ "content": "import { type VariantProps, 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 px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7',\n {\n variants: {\n variant: {\n default: 'bg-background text-foreground',\n destructive:\n 'border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n)\n\nexport type AlertVariants = VariantProps\n"
}
],
"type": "components:ui"
diff --git a/apps/www/src/public/registry/styles/new-york/avatar.json b/apps/www/src/public/registry/styles/new-york/avatar.json
index 47a50076..a3be030c 100644
--- a/apps/www/src/public/registry/styles/new-york/avatar.json
+++ b/apps/www/src/public/registry/styles/new-york/avatar.json
@@ -7,7 +7,7 @@
"files": [
{
"name": "Avatar.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "AvatarFallback.vue",
@@ -15,11 +15,11 @@
},
{
"name": "AvatarImage.vue",
- "content": "\n\n\n \n \n"
+ "content": "\n\n\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-foreground select-none shrink-0 bg-muted 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"
+ "content": "import { type VariantProps, 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-foreground 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\nexport type AvatarVariants = VariantProps\n"
}
],
"type": "components:ui"
diff --git a/apps/www/src/public/registry/styles/new-york/badge.json b/apps/www/src/public/registry/styles/new-york/badge.json
index 53f363b9..1057abff 100644
--- a/apps/www/src/public/registry/styles/new-york/badge.json
+++ b/apps/www/src/public/registry/styles/new-york/badge.json
@@ -7,11 +7,11 @@
"files": [
{
"name": "Badge.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \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-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n variants: {\n variant: {\n default:\n 'border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80',\n secondary:\n 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\n destructive:\n 'border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80',\n outline: 'text-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n)\n"
+ "content": "import { type VariantProps, cva } from 'class-variance-authority'\n\nexport { default as Badge } from './Badge.vue'\n\nexport const badgeVariants = cva(\n 'inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n variants: {\n variant: {\n default:\n 'border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80',\n secondary:\n 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\n destructive:\n 'border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80',\n outline: 'text-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n)\n\nexport type BadgeVariants = VariantProps\n"
}
],
"type": "components:ui"
diff --git a/apps/www/src/public/registry/styles/new-york/button.json b/apps/www/src/public/registry/styles/new-york/button.json
index 1856324a..28daef14 100644
--- a/apps/www/src/public/registry/styles/new-york/button.json
+++ b/apps/www/src/public/registry/styles/new-york/button.json
@@ -7,11 +7,11 @@
"files": [
{
"name": "Button.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \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 whitespace-nowrap text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n {\n variants: {\n variant: {\n default:\n 'bg-primary text-primary-foreground shadow hover:bg-primary/90',\n destructive:\n 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90',\n outline:\n 'border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground',\n secondary:\n 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n size: {\n default: 'h-9 px-4 py-2',\n sm: 'h-8 rounded-md px-3 text-xs',\n lg: 'h-10 rounded-md px-8',\n icon: 'h-9 w-9',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n)\n"
+ "content": "import { type VariantProps, 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 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground shadow hover:bg-primary/90',\n destructive:\n 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90',\n outline:\n 'border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground',\n secondary:\n 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n size: {\n default: 'h-9 px-4 py-2',\n sm: 'h-8 rounded-md px-3 text-xs',\n lg: 'h-10 rounded-md px-8',\n icon: 'h-9 w-9',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n)\n\nexport type ButtonVariants = VariantProps\n"
}
],
"type": "components:ui"
diff --git a/apps/www/src/public/registry/styles/new-york/calendar.json b/apps/www/src/public/registry/styles/new-york/calendar.json
index b83d724f..13324253 100644
--- a/apps/www/src/public/registry/styles/new-york/calendar.json
+++ b/apps/www/src/public/registry/styles/new-york/calendar.json
@@ -5,17 +5,17 @@
"v-calendar@next"
],
"registryDependencies": [
- "button",
- "utils"
+ "utils",
+ "button"
],
"files": [
{
"name": "Calendar.vue",
- "content": "\n\n\n \n
\n \n \n \n \n \n \n
\n\n
\n
\n \n\n\n"
+ "content": "\n\n\n \n
\n \n \n \n \n \n \n
\n\n
\n \n \n \n\n \n \n \n\n \n \n \n \n
\n \n\n\n"
},
{
"name": "index.ts",
- "content": "export { default as Calendar } from './Calendar.vue'\n"
+ "content": "export { default as Calendar } from './Calendar.vue'\nimport type { CalendarSlotName } from 'v-calendar/dist/types/src/components/Calendar/CalendarSlot.vue.d.ts'\n\nexport function isVCalendarSlot(slotName: string): slotName is CalendarSlotName {\n const validSlots: CalendarSlotName[] = [\n 'day-content',\n 'day-popover',\n 'dp-footer',\n 'footer',\n 'header-title-wrapper',\n 'header-title',\n 'header-prev-button',\n 'header-next-button',\n 'nav',\n 'nav-prev-button',\n 'nav-next-button',\n 'page',\n 'time-header',\n ]\n\n return validSlots.includes(slotName as CalendarSlotName)\n}\n"
}
],
"type": "components:ui"
diff --git a/apps/www/src/public/registry/styles/new-york/card.json b/apps/www/src/public/registry/styles/new-york/card.json
index ebf6a3c7..b2ccbb05 100644
--- a/apps/www/src/public/registry/styles/new-york/card.json
+++ b/apps/www/src/public/registry/styles/new-york/card.json
@@ -7,27 +7,27 @@
"files": [
{
"name": "Card.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "CardContent.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "CardDescription.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "CardFooter.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "CardHeader.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "CardTitle.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/new-york/carousel.json b/apps/www/src/public/registry/styles/new-york/carousel.json
index 749e2788..b668ed0d 100644
--- a/apps/www/src/public/registry/styles/new-york/carousel.json
+++ b/apps/www/src/public/registry/styles/new-york/carousel.json
@@ -1,6 +1,7 @@
{
"name": "carousel",
"dependencies": [
+ "@vueuse/core",
"embla-carousel-vue",
"embla-carousel"
],
@@ -11,7 +12,7 @@
"files": [
{
"name": "Carousel.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "CarouselContent.vue",
diff --git a/apps/www/src/public/registry/styles/new-york/checkbox.json b/apps/www/src/public/registry/styles/new-york/checkbox.json
index 0f59f148..35fa7f1d 100644
--- a/apps/www/src/public/registry/styles/new-york/checkbox.json
+++ b/apps/www/src/public/registry/styles/new-york/checkbox.json
@@ -7,7 +7,7 @@
"files": [
{
"name": "Checkbox.vue",
- "content": "\n\n\n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/new-york/collapsible.json b/apps/www/src/public/registry/styles/new-york/collapsible.json
index f2e586fd..39e79fca 100644
--- a/apps/www/src/public/registry/styles/new-york/collapsible.json
+++ b/apps/www/src/public/registry/styles/new-york/collapsible.json
@@ -5,7 +5,7 @@
"files": [
{
"name": "Collapsible.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "CollapsibleContent.vue",
diff --git a/apps/www/src/public/registry/styles/new-york/command.json b/apps/www/src/public/registry/styles/new-york/command.json
index cc68699a..160b4f63 100644
--- a/apps/www/src/public/registry/styles/new-york/command.json
+++ b/apps/www/src/public/registry/styles/new-york/command.json
@@ -8,39 +8,39 @@
"files": [
{
"name": "Command.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "CommandDialog.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n"
},
{
"name": "CommandEmpty.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "CommandGroup.vue",
- "content": "\n\n\n \n \n {{ heading }}\n \n \n \n \n"
+ "content": "\n\n\n \n \n {{ heading }}\n \n \n \n \n"
},
{
"name": "CommandInput.vue",
- "content": "\n\n\n\n\n \n \n \n
\n \n"
+ "content": "\n\n\n \n \n \n
\n \n"
},
{
"name": "CommandItem.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "CommandList.vue",
- "content": "\n\n\n \n \n \n
\n \n \n"
+ "content": "\n\n\n \n \n \n
\n \n \n"
},
{
"name": "CommandSeparator.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "CommandShortcut.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/new-york/context-menu.json b/apps/www/src/public/registry/styles/new-york/context-menu.json
index aef71c40..23f2273a 100644
--- a/apps/www/src/public/registry/styles/new-york/context-menu.json
+++ b/apps/www/src/public/registry/styles/new-york/context-menu.json
@@ -11,11 +11,11 @@
},
{
"name": "ContextMenuCheckboxItem.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n \n"
},
{
"name": "ContextMenuContent.vue",
- "content": "\n\n\n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n"
},
{
"name": "ContextMenuGroup.vue",
@@ -23,11 +23,11 @@
},
{
"name": "ContextMenuItem.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "ContextMenuLabel.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "ContextMenuPortal.vue",
@@ -39,15 +39,15 @@
},
{
"name": "ContextMenuRadioItem.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n \n"
},
{
"name": "ContextMenuSeparator.vue",
- "content": "\n\n\n \n \n"
+ "content": "\n\n\n \n \n"
},
{
"name": "ContextMenuShortcut.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "ContextMenuSub.vue",
@@ -55,15 +55,15 @@
},
{
"name": "ContextMenuSubContent.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "ContextMenuSubTrigger.vue",
- "content": "\n\n\n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n"
},
{
"name": "ContextMenuTrigger.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/new-york/dialog.json b/apps/www/src/public/registry/styles/new-york/dialog.json
index c269599e..b96d3554 100644
--- a/apps/www/src/public/registry/styles/new-york/dialog.json
+++ b/apps/www/src/public/registry/styles/new-york/dialog.json
@@ -15,19 +15,19 @@
},
{
"name": "DialogContent.vue",
- "content": "\n\n\n \n \n \n \n\n \n \n Close \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n\n \n \n Close \n \n \n \n \n"
},
{
"name": "DialogDescription.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "DialogFooter.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "DialogHeader.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "DialogScrollContent.vue",
@@ -35,7 +35,7 @@
},
{
"name": "DialogTitle.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "DialogTrigger.vue",
diff --git a/apps/www/src/public/registry/styles/new-york/dropdown-menu.json b/apps/www/src/public/registry/styles/new-york/dropdown-menu.json
index 60dc289a..7570c1b1 100644
--- a/apps/www/src/public/registry/styles/new-york/dropdown-menu.json
+++ b/apps/www/src/public/registry/styles/new-york/dropdown-menu.json
@@ -11,11 +11,11 @@
},
{
"name": "DropdownMenuCheckboxItem.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n \n"
},
{
"name": "DropdownMenuContent.vue",
- "content": "\n\n\n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n"
},
{
"name": "DropdownMenuGroup.vue",
@@ -23,27 +23,27 @@
},
{
"name": "DropdownMenuItem.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "DropdownMenuLabel.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "DropdownMenuRadioGroup.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "DropdownMenuRadioItem.vue",
- "content": "\n\n\n \n \n\n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n \n"
},
{
"name": "DropdownMenuSeparator.vue",
- "content": "\n\n\n \n \n"
+ "content": "\n\n\n \n \n"
},
{
"name": "DropdownMenuShortcut.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "DropdownMenuSub.vue",
@@ -51,15 +51,15 @@
},
{
"name": "DropdownMenuSubContent.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "DropdownMenuSubTrigger.vue",
- "content": "\n\n\n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n"
},
{
"name": "DropdownMenuTrigger.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/new-york/form.json b/apps/www/src/public/registry/styles/new-york/form.json
index db6c31fa..2c69a3a5 100644
--- a/apps/www/src/public/registry/styles/new-york/form.json
+++ b/apps/www/src/public/registry/styles/new-york/form.json
@@ -6,7 +6,8 @@
"zod"
],
"registryDependencies": [
- "utils"
+ "utils",
+ "label"
],
"files": [
{
@@ -15,15 +16,15 @@
},
{
"name": "FormDescription.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "FormItem.vue",
- "content": "\n\n\n\n\n \n \n
\n \n"
+ "content": "\n\n\n\n\n \n \n
\n \n"
},
{
"name": "FormLabel.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "FormMessage.vue",
diff --git a/apps/www/src/public/registry/styles/new-york/hover-card.json b/apps/www/src/public/registry/styles/new-york/hover-card.json
index e178651c..bf4eb7dc 100644
--- a/apps/www/src/public/registry/styles/new-york/hover-card.json
+++ b/apps/www/src/public/registry/styles/new-york/hover-card.json
@@ -7,11 +7,11 @@
"files": [
{
"name": "HoverCard.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "HoverCardContent.vue",
- "content": "\n\n\n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n"
},
{
"name": "HoverCardTrigger.vue",
diff --git a/apps/www/src/public/registry/styles/new-york/input.json b/apps/www/src/public/registry/styles/new-york/input.json
index fb565151..7b840496 100644
--- a/apps/www/src/public/registry/styles/new-york/input.json
+++ b/apps/www/src/public/registry/styles/new-york/input.json
@@ -9,7 +9,7 @@
"files": [
{
"name": "Input.vue",
- "content": "\n\n\n \n \n"
+ "content": "\n\n\n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/new-york/label.json b/apps/www/src/public/registry/styles/new-york/label.json
index 1b1b058d..0cfedee1 100644
--- a/apps/www/src/public/registry/styles/new-york/label.json
+++ b/apps/www/src/public/registry/styles/new-york/label.json
@@ -7,7 +7,7 @@
"files": [
{
"name": "Label.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/new-york/menubar.json b/apps/www/src/public/registry/styles/new-york/menubar.json
index 813c3234..9c5316fa 100644
--- a/apps/www/src/public/registry/styles/new-york/menubar.json
+++ b/apps/www/src/public/registry/styles/new-york/menubar.json
@@ -7,15 +7,15 @@
"files": [
{
"name": "Menubar.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "MenubarCheckboxItem.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n \n"
},
{
"name": "MenubarContent.vue",
- "content": "\n\n\n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n"
},
{
"name": "MenubarGroup.vue",
@@ -23,11 +23,11 @@
},
{
"name": "MenubarItem.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "MenubarLabel.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "MenubarMenu.vue",
@@ -35,19 +35,19 @@
},
{
"name": "MenubarRadioGroup.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "MenubarRadioItem.vue",
- "content": "\n\n\n \n \n \n \n\n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n \n"
},
{
"name": "MenubarSeparator.vue",
- "content": "\n\n\n \n \n"
+ "content": "\n\n\n \n \n"
},
{
"name": "MenubarShortcut.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "MenubarSub.vue",
@@ -55,15 +55,15 @@
},
{
"name": "MenubarSubContent.vue",
- "content": "\n\n\n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n"
},
{
"name": "MenubarSubTrigger.vue",
- "content": "\n\n\n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n"
},
{
"name": "MenubarTrigger.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/new-york/navigation-menu.json b/apps/www/src/public/registry/styles/new-york/navigation-menu.json
index 2fedbded..fa0996a5 100644
--- a/apps/www/src/public/registry/styles/new-york/navigation-menu.json
+++ b/apps/www/src/public/registry/styles/new-york/navigation-menu.json
@@ -7,15 +7,15 @@
"files": [
{
"name": "NavigationMenu.vue",
- "content": "\n\n\n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n"
},
{
"name": "NavigationMenuContent.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "NavigationMenuIndicator.vue",
- "content": "\n\n\n \n
\n \n \n"
+ "content": "\n\n\n \n
\n \n \n"
},
{
"name": "NavigationMenuItem.vue",
@@ -23,19 +23,19 @@
},
{
"name": "NavigationMenuLink.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "NavigationMenuList.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "NavigationMenuTrigger.vue",
- "content": "\n\n\n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n"
},
{
"name": "NavigationMenuViewport.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/new-york/pagination.json b/apps/www/src/public/registry/styles/new-york/pagination.json
index cf1cb0e3..e07f0b04 100644
--- a/apps/www/src/public/registry/styles/new-york/pagination.json
+++ b/apps/www/src/public/registry/styles/new-york/pagination.json
@@ -8,23 +8,23 @@
"files": [
{
"name": "PaginationEllipsis.vue",
- "content": "\n\n\n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n"
},
{
"name": "PaginationFirst.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n"
},
{
"name": "PaginationLast.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n"
},
{
"name": "PaginationNext.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n"
},
{
"name": "PaginationPrev.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/new-york/pin-input.json b/apps/www/src/public/registry/styles/new-york/pin-input.json
new file mode 100644
index 00000000..ee35d2bf
--- /dev/null
+++ b/apps/www/src/public/registry/styles/new-york/pin-input.json
@@ -0,0 +1,22 @@
+{
+ "name": "pin-input",
+ "dependencies": [],
+ "registryDependencies": [
+ "utils"
+ ],
+ "files": [
+ {
+ "name": "PinInput.vue",
+ "content": "\n\n\n \n \n \n \n"
+ },
+ {
+ "name": "PinInputInput.vue",
+ "content": "\n\n\n \n \n"
+ },
+ {
+ "name": "index.ts",
+ "content": "export { default as PinInput } from './PinInput.vue'\nexport { default as PinInputInput } from './PinInputInput.vue'\n"
+ }
+ ],
+ "type": "components:ui"
+}
\ No newline at end of file
diff --git a/apps/www/src/public/registry/styles/new-york/popover.json b/apps/www/src/public/registry/styles/new-york/popover.json
index 836490dc..034bb416 100644
--- a/apps/www/src/public/registry/styles/new-york/popover.json
+++ b/apps/www/src/public/registry/styles/new-york/popover.json
@@ -11,15 +11,15 @@
},
{
"name": "PopoverContent.vue",
- "content": "\n\n\n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n"
},
{
"name": "PopoverTrigger.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \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"
+ "content": "export { PopoverAnchor } from 'radix-vue'\nexport { default as Popover } from './Popover.vue'\nexport { default as PopoverTrigger } from './PopoverTrigger.vue'\nexport { default as PopoverContent } from './PopoverContent.vue'\n"
}
],
"type": "components:ui"
diff --git a/apps/www/src/public/registry/styles/new-york/progress.json b/apps/www/src/public/registry/styles/new-york/progress.json
index cec0555e..03f8fe71 100644
--- a/apps/www/src/public/registry/styles/new-york/progress.json
+++ b/apps/www/src/public/registry/styles/new-york/progress.json
@@ -7,7 +7,7 @@
"files": [
{
"name": "Progress.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/new-york/radio-group.json b/apps/www/src/public/registry/styles/new-york/radio-group.json
index 30c51702..1a38f59a 100644
--- a/apps/www/src/public/registry/styles/new-york/radio-group.json
+++ b/apps/www/src/public/registry/styles/new-york/radio-group.json
@@ -7,11 +7,11 @@
"files": [
{
"name": "RadioGroup.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "RadioGroupItem.vue",
- "content": "\n\n\n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/new-york/scroll-area.json b/apps/www/src/public/registry/styles/new-york/scroll-area.json
index 494c05bd..4d7a79fa 100644
--- a/apps/www/src/public/registry/styles/new-york/scroll-area.json
+++ b/apps/www/src/public/registry/styles/new-york/scroll-area.json
@@ -7,11 +7,11 @@
"files": [
{
"name": "ScrollArea.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n"
},
{
"name": "ScrollBar.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/new-york/select.json b/apps/www/src/public/registry/styles/new-york/select.json
index d3dad40a..64ce4070 100644
--- a/apps/www/src/public/registry/styles/new-york/select.json
+++ b/apps/www/src/public/registry/styles/new-york/select.json
@@ -11,15 +11,15 @@
},
{
"name": "SelectContent.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n \n \n \n"
},
{
"name": "SelectGroup.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "SelectItem.vue",
- "content": "\n\n\n \n \n \n \n \n \n\n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n\n \n \n \n \n \n"
},
{
"name": "SelectItemText.vue",
@@ -27,15 +27,23 @@
},
{
"name": "SelectLabel.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
+ },
+ {
+ "name": "SelectScrollDownButton.vue",
+ "content": "\n\n\n \n \n \n \n \n \n"
+ },
+ {
+ "name": "SelectScrollUpButton.vue",
+ "content": "\n\n\n \n \n \n \n \n \n"
},
{
"name": "SelectSeparator.vue",
- "content": "\n\n\n \n \n"
+ "content": "\n\n\n \n \n"
},
{
"name": "SelectTrigger.vue",
- "content": "\n\n\n span]:truncate [&>span]:min-w-0',\n props.class,\n ),\n props.invalid\n ? '!ring-destructive ring-2 placeholder:!text-destructive'\n : '',\n ]\"\n >\n \n \n \n \n \n \n"
+ "content": "\n\n\n span]:line-clamp-1',\n props.class,\n )\"\n >\n \n \n \n \n \n \n"
},
{
"name": "SelectValue.vue",
@@ -43,7 +51,7 @@
},
{
"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"
+ "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'\nexport { default as SelectScrollUpButton } from './SelectScrollUpButton.vue'\nexport { default as SelectScrollDownButton } from './SelectScrollDownButton.vue'\n"
}
],
"type": "components:ui"
diff --git a/apps/www/src/public/registry/styles/new-york/separator.json b/apps/www/src/public/registry/styles/new-york/separator.json
index b4a8cae3..da6dd655 100644
--- a/apps/www/src/public/registry/styles/new-york/separator.json
+++ b/apps/www/src/public/registry/styles/new-york/separator.json
@@ -7,7 +7,7 @@
"files": [
{
"name": "Separator.vue",
- "content": "\n\n\n \n \n"
+ "content": "\n\n\n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/new-york/sheet.json b/apps/www/src/public/registry/styles/new-york/sheet.json
index 8888b5fe..215d8f67 100644
--- a/apps/www/src/public/registry/styles/new-york/sheet.json
+++ b/apps/www/src/public/registry/styles/new-york/sheet.json
@@ -7,7 +7,7 @@
"files": [
{
"name": "Sheet.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "SheetClose.vue",
@@ -15,23 +15,23 @@
},
{
"name": "SheetContent.vue",
- "content": "\n\n\n \n \n \n \n\n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n\n \n \n \n \n \n \n"
},
{
"name": "SheetDescription.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "SheetFooter.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "SheetHeader.vue",
- "content": "\n\n\n \n \n
\n \n"
+ "content": "\n\n\n \n \n
\n \n"
},
{
"name": "SheetTitle.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "SheetTrigger.vue",
@@ -39,7 +39,7 @@
},
{
"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"
+ "content": "import { type VariantProps, cva } from 'class-variance-authority'\n\nexport { 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\nexport const sheetVariants = cva(\n 'fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500',\n {\n variants: {\n side: {\n top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',\n bottom:\n 'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',\n left: 'inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',\n right:\n 'inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',\n },\n },\n defaultVariants: {\n side: 'right',\n },\n },\n)\n\nexport type SheetVariants = VariantProps\n"
}
],
"type": "components:ui"
diff --git a/apps/www/src/public/registry/styles/new-york/skeleton.json b/apps/www/src/public/registry/styles/new-york/skeleton.json
index 2c0fd3ef..1487c9e2 100644
--- a/apps/www/src/public/registry/styles/new-york/skeleton.json
+++ b/apps/www/src/public/registry/styles/new-york/skeleton.json
@@ -7,7 +7,7 @@
"files": [
{
"name": "Skeleton.vue",
- "content": "\n\n\n
\n \n"
+ "content": "\n\n\n
\n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/new-york/slider.json b/apps/www/src/public/registry/styles/new-york/slider.json
index 3efa0554..0b6e4bc8 100644
--- a/apps/www/src/public/registry/styles/new-york/slider.json
+++ b/apps/www/src/public/registry/styles/new-york/slider.json
@@ -7,7 +7,7 @@
"files": [
{
"name": "Slider.vue",
- "content": "\n\n\n \n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/new-york/sonner.json b/apps/www/src/public/registry/styles/new-york/sonner.json
new file mode 100644
index 00000000..3a7620a0
--- /dev/null
+++ b/apps/www/src/public/registry/styles/new-york/sonner.json
@@ -0,0 +1,18 @@
+{
+ "name": "sonner",
+ "dependencies": [
+ "vue-sonner"
+ ],
+ "registryDependencies": [],
+ "files": [
+ {
+ "name": "Sonner.vue",
+ "content": "\n\n\n \n \n"
+ },
+ {
+ "name": "index.ts",
+ "content": "export { default as Toaster } from './Sonner.vue'\n"
+ }
+ ],
+ "type": "components:ui"
+}
\ No newline at end of file
diff --git a/apps/www/src/public/registry/styles/new-york/switch.json b/apps/www/src/public/registry/styles/new-york/switch.json
index e664dfa6..7cc55c5b 100644
--- a/apps/www/src/public/registry/styles/new-york/switch.json
+++ b/apps/www/src/public/registry/styles/new-york/switch.json
@@ -7,7 +7,7 @@
"files": [
{
"name": "Switch.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/new-york/table.json b/apps/www/src/public/registry/styles/new-york/table.json
index efaf66a6..27805556 100644
--- a/apps/www/src/public/registry/styles/new-york/table.json
+++ b/apps/www/src/public/registry/styles/new-york/table.json
@@ -7,39 +7,39 @@
"files": [
{
"name": "Table.vue",
- "content": "\n\n\n \n \n"
+ "content": "\n\n\n \n \n"
},
{
"name": "TableBody.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "TableCaption.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "TableCell.vue",
- "content": "\n\n\n [role=checkbox]]:translate-y-[2px]',\n props.class,\n )\n \"\n >\n \n \n \n"
+ "content": "\n\n\n [role=checkbox]]:translate-y-0.5',\n props.class,\n )\n \"\n >\n \n \n \n"
},
{
"name": "TableEmpty.vue",
- "content": "\n\n\n \n \n \n \n
\n \n \n \n"
+ "content": "\n\n\n \n \n \n \n
\n \n \n \n"
},
{
"name": "TableFooter.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n tr]:last:border-b-0', props.class)\">\n \n \n \n"
},
{
"name": "TableHead.vue",
- "content": "\n\n\n [role=checkbox]]:translate-y-[2px]', props.class)\">\n \n \n \n"
+ "content": "\n\n\n [role=checkbox]]:translate-y-0.5', props.class)\">\n \n \n \n"
},
{
"name": "TableHeader.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "TableRow.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/new-york/tabs.json b/apps/www/src/public/registry/styles/new-york/tabs.json
index 09817a44..f238ee00 100644
--- a/apps/www/src/public/registry/styles/new-york/tabs.json
+++ b/apps/www/src/public/registry/styles/new-york/tabs.json
@@ -11,15 +11,15 @@
},
{
"name": "TabsContent.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "TabsList.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "TabsTrigger.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/new-york/textarea.json b/apps/www/src/public/registry/styles/new-york/textarea.json
index 1f8441be..40b5b596 100644
--- a/apps/www/src/public/registry/styles/new-york/textarea.json
+++ b/apps/www/src/public/registry/styles/new-york/textarea.json
@@ -9,7 +9,7 @@
"files": [
{
"name": "Textarea.vue",
- "content": "\n\n\n \n \n"
+ "content": "\n\n\n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/new-york/toast.json b/apps/www/src/public/registry/styles/new-york/toast.json
index 063937ae..a0c0fee5 100644
--- a/apps/www/src/public/registry/styles/new-york/toast.json
+++ b/apps/www/src/public/registry/styles/new-york/toast.json
@@ -7,19 +7,19 @@
"files": [
{
"name": "Toast.vue",
- "content": "\n\n\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "ToastAction.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "ToastClose.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "ToastDescription.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "ToastProvider.vue",
@@ -27,11 +27,11 @@
},
{
"name": "ToastTitle.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "ToastViewport.vue",
- "content": "\n\n\n \n \n"
+ "content": "\n\n\n \n \n"
},
{
"name": "Toaster.vue",
@@ -39,11 +39,11 @@
},
{
"name": "index.ts",
- "content": "export { default as Toaster } from './Toaster.vue'\nexport { default as Toast } from './Toast.vue'\nexport { default as ToastViewport } from './ToastViewport.vue'\nexport { default as ToastAction } from './ToastAction.vue'\nexport { default as ToastClose } from './ToastClose.vue'\nexport { default as ToastTitle } from './ToastTitle.vue'\nexport { default as ToastDescription } from './ToastDescription.vue'\nexport { default as ToastProvider } from './ToastProvider.vue'\nexport { toast, useToast } from './use-toast'\n\nimport { cva } from 'class-variance-authority'\n\nexport const toastVariants = cva(\n 'group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full',\n {\n variants: {\n variant: {\n default: 'border bg-background text-foreground',\n destructive:\n 'destructive group border-destructive bg-destructive text-destructive-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n)\n"
+ "content": "import type { ToastRootProps } from 'radix-vue'\nimport type { HTMLAttributes } from 'vue'\n\nexport { default as Toaster } from './Toaster.vue'\nexport { default as Toast } from './Toast.vue'\nexport { default as ToastViewport } from './ToastViewport.vue'\nexport { default as ToastAction } from './ToastAction.vue'\nexport { default as ToastClose } from './ToastClose.vue'\nexport { default as ToastTitle } from './ToastTitle.vue'\nexport { default as ToastDescription } from './ToastDescription.vue'\nexport { default as ToastProvider } from './ToastProvider.vue'\nexport { toast, useToast } from './use-toast'\n\nimport { type VariantProps, cva } from 'class-variance-authority'\n\nexport const toastVariants = cva(\n 'group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full',\n {\n variants: {\n variant: {\n default: 'border bg-background text-foreground',\n destructive:\n 'destructive group border-destructive bg-destructive text-destructive-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n)\n\ntype ToastVariants = VariantProps\n\nexport interface ToastProps extends ToastRootProps {\n class?: HTMLAttributes['class']\n variant?: ToastVariants['variant']\n 'onOpenChange'?: ((value: boolean) => void) | undefined\n}\n"
},
{
"name": "use-toast.ts",
- "content": "import { computed, ref } from 'vue'\nimport type { Component, VNode } from 'vue'\nimport type { ToastProps } from './Toast.vue'\n\nconst TOAST_LIMIT = 1\nconst TOAST_REMOVE_DELAY = 1000000\n\nexport type StringOrVNode =\n | string\n | VNode\n | (() => VNode)\n\ntype ToasterToast = ToastProps & {\n id: string\n title?: string\n description?: StringOrVNode\n action?: Component\n}\n\nconst actionTypes = {\n ADD_TOAST: 'ADD_TOAST',\n UPDATE_TOAST: 'UPDATE_TOAST',\n DISMISS_TOAST: 'DISMISS_TOAST',\n REMOVE_TOAST: 'REMOVE_TOAST',\n} as const\n\nlet count = 0\n\nfunction genId() {\n count = (count + 1) % Number.MAX_VALUE\n return count.toString()\n}\n\ntype ActionType = typeof actionTypes\n\ntype Action =\n | {\n type: ActionType['ADD_TOAST']\n toast: ToasterToast\n }\n | {\n type: ActionType['UPDATE_TOAST']\n toast: Partial\n }\n | {\n type: ActionType['DISMISS_TOAST']\n toastId?: ToasterToast['id']\n }\n | {\n type: ActionType['REMOVE_TOAST']\n toastId?: ToasterToast['id']\n }\n\ninterface State {\n toasts: ToasterToast[]\n}\n\nconst toastTimeouts = new Map>()\n\nfunction addToRemoveQueue(toastId: string) {\n if (toastTimeouts.has(toastId))\n return\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId)\n dispatch({\n type: actionTypes.REMOVE_TOAST,\n toastId,\n })\n }, TOAST_REMOVE_DELAY)\n\n toastTimeouts.set(toastId, timeout)\n}\n\nconst state = ref({\n toasts: [],\n})\n\nfunction dispatch(action: Action) {\n switch (action.type) {\n case actionTypes.ADD_TOAST:\n state.value.toasts = [action.toast, ...state.value.toasts].slice(0, TOAST_LIMIT)\n break\n\n case actionTypes.UPDATE_TOAST:\n state.value.toasts = state.value.toasts.map(t =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t,\n )\n break\n\n case actionTypes.DISMISS_TOAST: {\n const { toastId } = action\n\n if (toastId) {\n addToRemoveQueue(toastId)\n }\n else {\n state.value.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id)\n })\n }\n\n state.value.toasts = state.value.toasts.map(t =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t,\n )\n break\n }\n\n case actionTypes.REMOVE_TOAST:\n if (action.toastId === undefined)\n state.value.toasts = []\n else\n state.value.toasts = state.value.toasts.filter(t => t.id !== action.toastId)\n\n break\n }\n}\n\nfunction useToast() {\n return {\n toasts: computed(() => state.value.toasts),\n toast,\n dismiss: (toastId?: string) => dispatch({ type: actionTypes.DISMISS_TOAST, toastId }),\n }\n}\n\ntype Toast = Omit\n\nfunction toast(props: Toast) {\n const id = genId()\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: actionTypes.UPDATE_TOAST,\n toast: { ...props, id },\n })\n\n const dismiss = () => dispatch({ type: actionTypes.DISMISS_TOAST, toastId: id })\n\n dispatch({\n type: actionTypes.ADD_TOAST,\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open: boolean) => {\n if (!open)\n dismiss()\n },\n },\n })\n\n return {\n id,\n dismiss,\n update,\n }\n}\n\nexport { toast, useToast }\n"
+ "content": "import { computed, ref } from 'vue'\nimport type { Component, VNode } from 'vue'\nimport type { ToastProps } from '.'\n\nconst TOAST_LIMIT = 1\nconst TOAST_REMOVE_DELAY = 1000000\n\nexport type StringOrVNode =\n | string\n | VNode\n | (() => VNode)\n\ntype ToasterToast = ToastProps & {\n id: string\n title?: string\n description?: StringOrVNode\n action?: Component\n}\n\nconst actionTypes = {\n ADD_TOAST: 'ADD_TOAST',\n UPDATE_TOAST: 'UPDATE_TOAST',\n DISMISS_TOAST: 'DISMISS_TOAST',\n REMOVE_TOAST: 'REMOVE_TOAST',\n} as const\n\nlet count = 0\n\nfunction genId() {\n count = (count + 1) % Number.MAX_VALUE\n return count.toString()\n}\n\ntype ActionType = typeof actionTypes\n\ntype Action =\n | {\n type: ActionType['ADD_TOAST']\n toast: ToasterToast\n }\n | {\n type: ActionType['UPDATE_TOAST']\n toast: Partial\n }\n | {\n type: ActionType['DISMISS_TOAST']\n toastId?: ToasterToast['id']\n }\n | {\n type: ActionType['REMOVE_TOAST']\n toastId?: ToasterToast['id']\n }\n\ninterface State {\n toasts: ToasterToast[]\n}\n\nconst toastTimeouts = new Map>()\n\nfunction addToRemoveQueue(toastId: string) {\n if (toastTimeouts.has(toastId))\n return\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId)\n dispatch({\n type: actionTypes.REMOVE_TOAST,\n toastId,\n })\n }, TOAST_REMOVE_DELAY)\n\n toastTimeouts.set(toastId, timeout)\n}\n\nconst state = ref({\n toasts: [],\n})\n\nfunction dispatch(action: Action) {\n switch (action.type) {\n case actionTypes.ADD_TOAST:\n state.value.toasts = [action.toast, ...state.value.toasts].slice(0, TOAST_LIMIT)\n break\n\n case actionTypes.UPDATE_TOAST:\n state.value.toasts = state.value.toasts.map(t =>\n t.id === action.toast.id ? { ...t, ...action.toast } : t,\n )\n break\n\n case actionTypes.DISMISS_TOAST: {\n const { toastId } = action\n\n if (toastId) {\n addToRemoveQueue(toastId)\n }\n else {\n state.value.toasts.forEach((toast) => {\n addToRemoveQueue(toast.id)\n })\n }\n\n state.value.toasts = state.value.toasts.map(t =>\n t.id === toastId || toastId === undefined\n ? {\n ...t,\n open: false,\n }\n : t,\n )\n break\n }\n\n case actionTypes.REMOVE_TOAST:\n if (action.toastId === undefined)\n state.value.toasts = []\n else\n state.value.toasts = state.value.toasts.filter(t => t.id !== action.toastId)\n\n break\n }\n}\n\nfunction useToast() {\n return {\n toasts: computed(() => state.value.toasts),\n toast,\n dismiss: (toastId?: string) => dispatch({ type: actionTypes.DISMISS_TOAST, toastId }),\n }\n}\n\ntype Toast = Omit\n\nfunction toast(props: Toast) {\n const id = genId()\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: actionTypes.UPDATE_TOAST,\n toast: { ...props, id },\n })\n\n const dismiss = () => dispatch({ type: actionTypes.DISMISS_TOAST, toastId: id })\n\n dispatch({\n type: actionTypes.ADD_TOAST,\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: (open: boolean) => {\n if (!open)\n dismiss()\n },\n },\n })\n\n return {\n id,\n dismiss,\n update,\n }\n}\n\nexport { toast, useToast }\n"
}
],
"type": "components:ui"
diff --git a/apps/www/src/public/registry/styles/new-york/toggle-group.json b/apps/www/src/public/registry/styles/new-york/toggle-group.json
index 37473576..c1e79760 100644
--- a/apps/www/src/public/registry/styles/new-york/toggle-group.json
+++ b/apps/www/src/public/registry/styles/new-york/toggle-group.json
@@ -8,11 +8,11 @@
"files": [
{
"name": "ToggleGroup.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "ToggleGroupItem.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/src/public/registry/styles/new-york/toggle.json b/apps/www/src/public/registry/styles/new-york/toggle.json
index 8098dc59..4ccde5ca 100644
--- a/apps/www/src/public/registry/styles/new-york/toggle.json
+++ b/apps/www/src/public/registry/styles/new-york/toggle.json
@@ -7,11 +7,11 @@
"files": [
{
"name": "Toggle.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
- "content": "import { cva } from 'class-variance-authority'\n\nexport { default as Toggle } from './Toggle.vue'\n\nexport const toggleVariants = cva(\n 'inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground',\n {\n variants: {\n variant: {\n default: 'bg-transparent',\n outline:\n 'border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground',\n },\n size: {\n default: 'h-9 px-3',\n sm: 'h-8 px-2',\n lg: 'h-10 px-3',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n)\n"
+ "content": "import { type VariantProps, cva } from 'class-variance-authority'\n\nexport { default as Toggle } from './Toggle.vue'\n\nexport const toggleVariants = cva(\n 'inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground',\n {\n variants: {\n variant: {\n default: 'bg-transparent',\n outline:\n 'border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground',\n },\n size: {\n default: 'h-9 px-3',\n sm: 'h-8 px-2',\n lg: 'h-10 px-3',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n)\n\nexport type ToggleVariants = VariantProps\n"
}
],
"type": "components:ui"
diff --git a/apps/www/src/public/registry/styles/new-york/tooltip.json b/apps/www/src/public/registry/styles/new-york/tooltip.json
index 317a169d..975435fe 100644
--- a/apps/www/src/public/registry/styles/new-york/tooltip.json
+++ b/apps/www/src/public/registry/styles/new-york/tooltip.json
@@ -11,7 +11,7 @@
},
{
"name": "TooltipContent.vue",
- "content": "\n\n\n \n \n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n \n \n"
},
{
"name": "TooltipProvider.vue",
@@ -19,7 +19,7 @@
},
{
"name": "TooltipTrigger.vue",
- "content": "\n\n\n \n \n \n \n"
+ "content": "\n\n\n \n \n \n \n"
},
{
"name": "index.ts",
diff --git a/apps/www/tailwind.config.js b/apps/www/tailwind.config.js
index b6fb15c1..d9fd9918 100644
--- a/apps/www/tailwind.config.js
+++ b/apps/www/tailwind.config.js
@@ -3,7 +3,7 @@ import tailwindcssAnimate from 'tailwindcss-animate'
/** @type {import('tailwindcss').Config} */
export default {
darkMode: 'class',
- content: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx,md}', './.vitepress/**/*.{vue,js,ts,jsx,tsx}'],
+ content: ['./src/**/*.{vue,js,ts,jsx,tsx,md}', './.vitepress/**/*.{vue,js,ts,jsx,tsx}'],
theme: {
container: {
center: true,
@@ -49,6 +49,7 @@ export default {
},
},
borderRadius: {
+ xl: 'calc(var(--radius) + 4px)',
lg: 'var(--radius)',
md: 'calc(var(--radius) - 2px)',
sm: 'calc(var(--radius) - 4px)',
diff --git a/package.json b/package.json
index 3d7704ba..e81ad08d 100644
--- a/package.json
+++ b/package.json
@@ -1,8 +1,8 @@
{
"name": "shadcn-vue",
- "version": "0.8.7",
+ "version": "0.9.0",
"private": true,
- "packageManager": "pnpm@8.10.2",
+ "packageManager": "pnpm@8.15.1",
"license": "MIT",
"repository": "radix-vue/shadcn-vue",
"workspaces": [
diff --git a/packages/cli/package.json b/packages/cli/package.json
index 59fcdc7b..837c6939 100644
--- a/packages/cli/package.json
+++ b/packages/cli/package.json
@@ -1,7 +1,7 @@
{
"name": "shadcn-vue",
"type": "module",
- "version": "0.8.7",
+ "version": "0.9.0",
"description": "Add components to your apps.",
"publishConfig": {
"access": "public"
@@ -63,7 +63,7 @@
"node-fetch": "^3.3.2",
"ora": "^7.0.1",
"prompts": "^2.4.2",
- "radix-vue": "^1.3.0",
+ "radix-vue": "^1.4.1",
"recast": "^0.23.4",
"rimraf": "^5.0.1",
"ts-morph": "^19.0.0",
diff --git a/packages/cli/src/commands/add.ts b/packages/cli/src/commands/add.ts
index 4abeaa74..279ae085 100644
--- a/packages/cli/src/commands/add.ts
+++ b/packages/cli/src/commands/add.ts
@@ -1,4 +1,4 @@
-import { existsSync, promises as fs } from 'node:fs'
+import { existsSync, promises as fs, rmSync } from 'node:fs'
import path from 'node:path'
import process from 'node:process'
import chalk from 'chalk'
@@ -159,28 +159,46 @@ export const add = new Command()
}
}
- for (const file of item.files) {
- const componentDir = path.resolve(targetDir, item.name)
- let filePath = path.resolve(
+ const componentDir = path.resolve(targetDir, item.name)
+ if (!existsSync(componentDir))
+ await fs.mkdir(componentDir, { recursive: true })
+
+ const files = item.files.map(file => ({
+ ...file,
+ path: path.resolve(
targetDir,
item.name,
file.name,
- )
+ ),
+ }))
- if (!config.typescript)
- filePath = filePath.replace(/\.ts$/, '.js')
-
- if (!existsSync(componentDir))
- await fs.mkdir(componentDir, { recursive: true })
+ // We need to write original files to disk if we're not using TypeScript.
+ // Rewrite or delete added files after transformed
+ if (!config.typescript) {
+ for (const file of files)
+ await fs.writeFile(file.path, file.content)
+ }
+ for (const file of files) {
// Run transformers.
const content = await transform({
- filename: file.name,
+ filename: file.path,
raw: file.content,
config,
baseColor,
})
+ let filePath = file.path
+
+ if (!config.typescript) {
+ // remove original .ts file if we're not using TypeScript.
+ if (file.path.endsWith('.ts')) {
+ if (existsSync(file.path))
+ rmSync(file.path)
+ }
+ filePath = file.path.replace(/\.ts$/, '.js')
+ }
+
await fs.writeFile(filePath, content)
}
diff --git a/packages/cli/src/utils/templates.ts b/packages/cli/src/utils/templates.ts
index 015ee5f8..677de92c 100644
--- a/packages/cli/src/utils/templates.ts
+++ b/packages/cli/src/utils/templates.ts
@@ -116,6 +116,7 @@ module.exports = {
},
},
borderRadius: {
+ xl: "calc(var(--radius) + 4px)",
lg: "var(--radius)",
md: "calc(var(--radius) - 2px)",
sm: "calc(var(--radius) - 4px)",
diff --git a/packages/cli/test/fixtures/nuxt/components/ui/alert-dialog/AlertDialogContent.vue b/packages/cli/test/fixtures/nuxt/components/ui/alert-dialog/AlertDialogContent.vue
index fde4167f..974f825a 100644
--- a/packages/cli/test/fixtures/nuxt/components/ui/alert-dialog/AlertDialogContent.vue
+++ b/packages/cli/test/fixtures/nuxt/components/ui/alert-dialog/AlertDialogContent.vue
@@ -24,7 +24,7 @@ const emitsAsProps = useEmitAsProps(emits)
v-bind="{ ...props, ...emitsAsProps }"
:class="
cn(
- 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border border-border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg md:w-full',
+ 'fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 border border-border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg md:w-full',
props.class,
)
"
diff --git a/packages/cli/test/fixtures/nuxt/package.json b/packages/cli/test/fixtures/nuxt/package.json
index 06c2c638..9b4ee1f9 100644
--- a/packages/cli/test/fixtures/nuxt/package.json
+++ b/packages/cli/test/fixtures/nuxt/package.json
@@ -13,7 +13,7 @@
"class-variance-authority": "^0.7.0",
"clsx": "^2.0.0",
"lucide-vue-next": "^0.276.0",
- "radix-vue": "^1.3.0",
+ "radix-vue": "^1.4.1",
"tailwind-merge": "^1.14.0",
"tailwindcss-animate": "^1.0.7"
},
diff --git a/packages/cli/test/utils/__snapshots__/transform-cjs-to-esm.test.ts.snap b/packages/cli/test/utils/__snapshots__/transform-cjs-to-esm.test.ts.snap
index e6927d8c..009aaf53 100644
--- a/packages/cli/test/utils/__snapshots__/transform-cjs-to-esm.test.ts.snap
+++ b/packages/cli/test/utils/__snapshots__/transform-cjs-to-esm.test.ts.snap
@@ -112,6 +112,7 @@ export default {
},
},
borderRadius: {
+ xl: \\"calc(var(--radius) + 4px)\\",
lg: \\"var(--radius)\\",
md: \\"calc(var(--radius) - 2px)\\",
sm: \\"calc(var(--radius) - 4px)\\",
diff --git a/packages/module/package.json b/packages/module/package.json
index 9085259d..1e527755 100644
--- a/packages/module/package.json
+++ b/packages/module/package.json
@@ -1,7 +1,7 @@
{
"name": "shadcn-nuxt",
"type": "module",
- "version": "0.8.7",
+ "version": "0.9.0",
"description": "Add shadcn-vue module to Nuxt",
"publishConfig": {
"access": "public"
diff --git a/packages/module/playground/components/ui/carousel/Carousel.vue b/packages/module/playground/components/ui/carousel/Carousel.vue
index c88d61ad..b6147c27 100644
--- a/packages/module/playground/components/ui/carousel/Carousel.vue
+++ b/packages/module/playground/components/ui/carousel/Carousel.vue
@@ -1,5 +1,4 @@