@reinvented/design 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/components/alert-dialog.md +32 -0
- package/docs/components/avatar.md +14 -0
- package/docs/components/badge.md +24 -0
- package/docs/components/button.md +69 -0
- package/docs/components/card.md +49 -0
- package/docs/components/dialog.md +46 -0
- package/docs/components/dropdown-menu.md +32 -0
- package/docs/components/index.md +69 -50
- package/docs/components/input.md +34 -0
- package/docs/components/remaining-components.md +253 -0
- package/docs/components/scroll-area.md +17 -0
- package/docs/components/select.md +31 -0
- package/docs/components/separator.md +14 -0
- package/docs/components/sheet.md +32 -0
- package/docs/components/skeleton.md +20 -0
- package/docs/components/table.md +33 -0
- package/docs/components/tabs.md +23 -0
- package/docs/layouts/dashboard.md +70 -0
- package/docs/layouts/detail-page.md +83 -0
- package/docs/layouts/index.md +37 -24
- package/docs/layouts/list-page.md +107 -0
- package/docs/layouts/settings-page.md +79 -0
- package/docs/layouts/step-wizard.md +73 -0
- package/package.json +1 -1
- package/src/components/ui/accordion/Accordion.vue +13 -0
- package/src/components/ui/accordion/AccordionContent.vue +20 -0
- package/src/components/ui/accordion/AccordionItem.vue +15 -0
- package/src/components/ui/accordion/AccordionTrigger.vue +25 -0
- package/src/components/ui/accordion/index.ts +4 -0
- package/src/components/ui/alert/Alert.vue +38 -0
- package/src/components/ui/alert/AlertDescription.vue +12 -0
- package/src/components/ui/alert/AlertTitle.vue +12 -0
- package/src/components/ui/alert/index.ts +3 -0
- package/src/components/ui/alert-dialog/AlertDialog.vue +13 -0
- package/src/components/ui/alert-dialog/AlertDialogAction.vue +21 -0
- package/src/components/ui/alert-dialog/AlertDialogCancel.vue +21 -0
- package/src/components/ui/alert-dialog/AlertDialogContent.vue +39 -0
- package/src/components/ui/alert-dialog/AlertDialogDescription.vue +15 -0
- package/src/components/ui/alert-dialog/AlertDialogFooter.vue +12 -0
- package/src/components/ui/alert-dialog/AlertDialogHeader.vue +12 -0
- package/src/components/ui/alert-dialog/AlertDialogTitle.vue +15 -0
- package/src/components/ui/alert-dialog/AlertDialogTrigger.vue +11 -0
- package/src/components/ui/alert-dialog/index.ts +9 -0
- package/src/components/ui/breadcrumb/Breadcrumb.vue +6 -0
- package/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue +12 -0
- package/src/components/ui/breadcrumb/BreadcrumbItem.vue +6 -0
- package/src/components/ui/breadcrumb/BreadcrumbLink.vue +20 -0
- package/src/components/ui/breadcrumb/BreadcrumbList.vue +6 -0
- package/src/components/ui/breadcrumb/BreadcrumbPage.vue +6 -0
- package/src/components/ui/breadcrumb/BreadcrumbSeparator.vue +11 -0
- package/src/components/ui/breadcrumb/index.ts +7 -0
- package/src/components/ui/button/Button.vue +0 -1
- package/src/components/ui/checkbox/Checkbox.vue +25 -0
- package/src/components/ui/checkbox/index.ts +1 -0
- package/src/components/ui/collapsible/Collapsible.vue +13 -0
- package/src/components/ui/collapsible/index.ts +2 -0
- package/src/components/ui/command/Command.vue +16 -0
- package/src/components/ui/command/CommandEmpty.vue +5 -0
- package/src/components/ui/command/CommandGroup.vue +22 -0
- package/src/components/ui/command/CommandInput.vue +21 -0
- package/src/components/ui/command/CommandItem.vue +22 -0
- package/src/components/ui/command/CommandList.vue +17 -0
- package/src/components/ui/command/CommandSeparator.vue +5 -0
- package/src/components/ui/command/index.ts +7 -0
- package/src/components/ui/context-menu/ContextMenuContent.vue +24 -0
- package/src/components/ui/context-menu/ContextMenuItem.vue +16 -0
- package/src/components/ui/context-menu/ContextMenuLabel.vue +9 -0
- package/src/components/ui/context-menu/ContextMenuSeparator.vue +9 -0
- package/src/components/ui/context-menu/ContextMenuSubContent.vue +14 -0
- package/src/components/ui/context-menu/index.ts +9 -0
- package/src/components/ui/dialog/Dialog.vue +14 -0
- package/src/components/ui/dialog/DialogClose.vue +12 -0
- package/src/components/ui/dialog/DialogContent.vue +48 -0
- package/src/components/ui/dialog/DialogDescription.vue +23 -0
- package/src/components/ui/dialog/DialogFooter.vue +12 -0
- package/src/components/ui/dialog/DialogHeader.vue +12 -0
- package/src/components/ui/dialog/DialogScrollContent.vue +47 -0
- package/src/components/ui/dialog/DialogTitle.vue +23 -0
- package/src/components/ui/dialog/DialogTrigger.vue +12 -0
- package/src/components/ui/dialog/index.ts +9 -0
- package/src/components/ui/dropdown-menu/DropdownMenu.vue +13 -0
- package/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +28 -0
- package/src/components/ui/dropdown-menu/DropdownMenuContent.vue +33 -0
- package/src/components/ui/dropdown-menu/DropdownMenuGroup.vue +11 -0
- package/src/components/ui/dropdown-menu/DropdownMenuItem.vue +27 -0
- package/src/components/ui/dropdown-menu/DropdownMenuLabel.vue +23 -0
- package/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +13 -0
- package/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +27 -0
- package/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue +13 -0
- package/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue +12 -0
- package/src/components/ui/dropdown-menu/DropdownMenuSub.vue +13 -0
- package/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue +27 -0
- package/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +23 -0
- package/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue +11 -0
- package/src/components/ui/dropdown-menu/index.ts +14 -0
- package/src/components/ui/form/FormControl.vue +3 -0
- package/src/components/ui/form/FormDescription.vue +6 -0
- package/src/components/ui/form/FormItem.vue +6 -0
- package/src/components/ui/form/FormLabel.vue +10 -0
- package/src/components/ui/form/FormMessage.vue +10 -0
- package/src/components/ui/form/index.ts +9 -0
- package/src/components/ui/hover-card/HoverCard.vue +13 -0
- package/src/components/ui/hover-card/HoverCardContent.vue +26 -0
- package/src/components/ui/hover-card/HoverCardTrigger.vue +11 -0
- package/src/components/ui/hover-card/index.ts +3 -0
- package/src/components/ui/label/Label.vue +18 -0
- package/src/components/ui/label/index.ts +1 -0
- package/src/components/ui/menubar/MenubarContent.vue +15 -0
- package/src/components/ui/menubar/MenubarItem.vue +13 -0
- package/src/components/ui/menubar/MenubarTrigger.vue +13 -0
- package/src/components/ui/menubar/index.ts +5 -0
- package/src/components/ui/navigation-menu/NavigationMenuContent.vue +14 -0
- package/src/components/ui/navigation-menu/NavigationMenuTrigger.vue +15 -0
- package/src/components/ui/navigation-menu/index.ts +4 -0
- package/src/components/ui/pagination/PaginationContent.vue +13 -0
- package/src/components/ui/pagination/PaginationEllipsis.vue +12 -0
- package/src/components/ui/pagination/PaginationNext.vue +14 -0
- package/src/components/ui/pagination/PaginationPrev.vue +14 -0
- package/src/components/ui/pagination/index.ts +6 -0
- package/src/components/ui/popover/Popover.vue +13 -0
- package/src/components/ui/popover/PopoverContent.vue +27 -0
- package/src/components/ui/popover/PopoverTrigger.vue +11 -0
- package/src/components/ui/popover/index.ts +3 -0
- package/src/components/ui/progress/Progress.vue +21 -0
- package/src/components/ui/progress/index.ts +1 -0
- package/src/components/ui/radio-group/RadioGroup.vue +16 -0
- package/src/components/ui/radio-group/RadioGroupItem.vue +24 -0
- package/src/components/ui/radio-group/index.ts +2 -0
- package/src/components/ui/select/Select.vue +13 -0
- package/src/components/ui/select/SelectContent.vue +40 -0
- package/src/components/ui/select/SelectGroup.vue +15 -0
- package/src/components/ui/select/SelectItem.vue +30 -0
- package/src/components/ui/select/SelectLabel.vue +15 -0
- package/src/components/ui/select/SelectSeparator.vue +13 -0
- package/src/components/ui/select/SelectTrigger.vue +23 -0
- package/src/components/ui/select/SelectValue.vue +11 -0
- package/src/components/ui/select/index.ts +8 -0
- package/src/components/ui/sheet/Sheet.vue +13 -0
- package/src/components/ui/sheet/SheetClose.vue +11 -0
- package/src/components/ui/sheet/SheetContent.vue +65 -0
- package/src/components/ui/sheet/SheetDescription.vue +15 -0
- package/src/components/ui/sheet/SheetFooter.vue +12 -0
- package/src/components/ui/sheet/SheetHeader.vue +12 -0
- package/src/components/ui/sheet/SheetTitle.vue +15 -0
- package/src/components/ui/sheet/SheetTrigger.vue +11 -0
- package/src/components/ui/sheet/index.ts +8 -0
- package/src/components/ui/slider/Slider.vue +26 -0
- package/src/components/ui/slider/index.ts +1 -0
- package/src/components/ui/switch/Switch.vue +24 -0
- package/src/components/ui/switch/index.ts +1 -0
- package/src/components/ui/table/Table.vue +13 -0
- package/src/components/ui/table/TableBody.vue +6 -0
- package/src/components/ui/table/TableCaption.vue +6 -0
- package/src/components/ui/table/TableCell.vue +6 -0
- package/src/components/ui/table/TableFooter.vue +6 -0
- package/src/components/ui/table/TableHead.vue +6 -0
- package/src/components/ui/table/TableHeader.vue +6 -0
- package/src/components/ui/table/TableRow.vue +6 -0
- package/src/components/ui/table/index.ts +8 -0
- package/src/components/ui/tabs/Tabs.vue +13 -0
- package/src/components/ui/tabs/TabsContent.vue +21 -0
- package/src/components/ui/tabs/TabsList.vue +21 -0
- package/src/components/ui/tabs/TabsTrigger.vue +21 -0
- package/src/components/ui/tabs/index.ts +4 -0
- package/src/components/ui/textarea/Textarea.vue +29 -0
- package/src/components/ui/textarea/index.ts +1 -0
- package/src/components/ui/toggle/Toggle.vue +40 -0
- package/src/components/ui/toggle/index.ts +1 -0
- package/src/components/ui/toggle-group/ToggleGroup.vue +16 -0
- package/src/components/ui/toggle-group/ToggleGroupItem.vue +21 -0
- package/src/components/ui/toggle-group/index.ts +2 -0
- package/src/components/ui/tooltip/Tooltip.vue +13 -0
- package/src/components/ui/tooltip/TooltipContent.vue +27 -0
- package/src/components/ui/tooltip/TooltipProvider.vue +12 -0
- package/src/components/ui/tooltip/TooltipTrigger.vue +11 -0
- package/src/components/ui/tooltip/index.ts +4 -0
- package/src/index.ts +46 -192
- package/src/patterns/DetailView.vue +2 -2
- package/src/patterns/EmptyState.vue +2 -2
- package/src/patterns/FormView.vue +2 -2
- package/src/patterns/ListView.vue +2 -2
- package/tsconfig.json +17 -3
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { HTMLAttributes } from 'vue'
|
|
3
|
+
import { cn } from '../lib/utils'
|
|
4
|
+
const props = defineProps<{ class?: HTMLAttributes['class']; error?: boolean }>()
|
|
5
|
+
</script>
|
|
6
|
+
<template>
|
|
7
|
+
<label :class="cn('text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70', error && 'text-destructive', props.class)">
|
|
8
|
+
<slot />
|
|
9
|
+
</label>
|
|
10
|
+
</template>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { HTMLAttributes } from 'vue'
|
|
3
|
+
import { cn } from '../lib/utils'
|
|
4
|
+
const props = defineProps<{ class?: HTMLAttributes['class']; message?: string }>()
|
|
5
|
+
</script>
|
|
6
|
+
<template>
|
|
7
|
+
<p v-if="message" :class="cn('text-[0.8rem] font-medium text-destructive', props.class)">
|
|
8
|
+
{{ message }}
|
|
9
|
+
</p>
|
|
10
|
+
</template>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Form components using vee-validate
|
|
2
|
+
// Re-export vee-validate primitives with standard naming
|
|
3
|
+
export { Form, Field as FormField } from 'vee-validate'
|
|
4
|
+
|
|
5
|
+
export { default as FormItem } from './FormItem.vue'
|
|
6
|
+
export { default as FormLabel } from './FormLabel.vue'
|
|
7
|
+
export { default as FormControl } from './FormControl.vue'
|
|
8
|
+
export { default as FormDescription } from './FormDescription.vue'
|
|
9
|
+
export { default as FormMessage } from './FormMessage.vue'
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { HoverCardRoot, type HoverCardRootEmits, type HoverCardRootProps, useForwardPropsEmits } from 'radix-vue'
|
|
3
|
+
|
|
4
|
+
const props = defineProps<HoverCardRootProps>()
|
|
5
|
+
const emits = defineEmits<HoverCardRootEmits>()
|
|
6
|
+
const forwarded = useForwardPropsEmits(props, emits)
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<template>
|
|
10
|
+
<HoverCardRoot v-bind="forwarded">
|
|
11
|
+
<slot />
|
|
12
|
+
</HoverCardRoot>
|
|
13
|
+
</template>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { HoverCardContent, type HoverCardContentProps, HoverCardPortal, useForwardProps } from 'radix-vue'
|
|
4
|
+
import { cn } from '../lib/utils'
|
|
5
|
+
|
|
6
|
+
const props = withDefaults(
|
|
7
|
+
defineProps<HoverCardContentProps & { class?: HTMLAttributes['class'] }>(),
|
|
8
|
+
{ sideOffset: 4, align: 'center' },
|
|
9
|
+
)
|
|
10
|
+
const delegatedProps = computed(() => { const { class: _, ...d } = props; return d })
|
|
11
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<template>
|
|
15
|
+
<HoverCardPortal>
|
|
16
|
+
<HoverCardContent
|
|
17
|
+
v-bind="forwardedProps"
|
|
18
|
+
:class="cn(
|
|
19
|
+
'z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none 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-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',
|
|
20
|
+
props.class,
|
|
21
|
+
)"
|
|
22
|
+
>
|
|
23
|
+
<slot />
|
|
24
|
+
</HoverCardContent>
|
|
25
|
+
</HoverCardPortal>
|
|
26
|
+
</template>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { HoverCardTrigger, type HoverCardTriggerProps } from 'radix-vue'
|
|
3
|
+
|
|
4
|
+
const props = defineProps<HoverCardTriggerProps>()
|
|
5
|
+
</script>
|
|
6
|
+
|
|
7
|
+
<template>
|
|
8
|
+
<HoverCardTrigger v-bind="props">
|
|
9
|
+
<slot />
|
|
10
|
+
</HoverCardTrigger>
|
|
11
|
+
</template>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { Label as LabelRoot, type LabelProps, useForwardProps } from 'radix-vue'
|
|
4
|
+
import { cn } from '../lib/utils'
|
|
5
|
+
|
|
6
|
+
const props = defineProps<LabelProps & { class?: HTMLAttributes['class'] }>()
|
|
7
|
+
const delegatedProps = computed(() => { const { class: _, ...d } = props; return d })
|
|
8
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
<template>
|
|
12
|
+
<LabelRoot
|
|
13
|
+
v-bind="forwardedProps"
|
|
14
|
+
:class="cn('text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70', props.class)"
|
|
15
|
+
>
|
|
16
|
+
<slot />
|
|
17
|
+
</LabelRoot>
|
|
18
|
+
</template>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as Label } from './Label.vue'
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { MenubarContent, type MenubarContentProps, MenubarPortal, useForwardProps } from 'radix-vue'
|
|
4
|
+
import { cn } from '../lib/utils'
|
|
5
|
+
const props = withDefaults(defineProps<MenubarContentProps & { class?: HTMLAttributes['class'] }>(), { sideOffset: 5, alignOffset: -4 })
|
|
6
|
+
const delegatedProps = computed(() => { const { class: _, ...d } = props; return d })
|
|
7
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
8
|
+
</script>
|
|
9
|
+
<template>
|
|
10
|
+
<MenubarPortal>
|
|
11
|
+
<MenubarContent v-bind="forwardedProps" :class="cn('z-50 min-w-48 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in 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-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2', props.class)">
|
|
12
|
+
<slot />
|
|
13
|
+
</MenubarContent>
|
|
14
|
+
</MenubarPortal>
|
|
15
|
+
</template>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { MenubarItem, type MenubarItemProps, useForwardProps } from 'radix-vue'
|
|
4
|
+
import { cn } from '../lib/utils'
|
|
5
|
+
const props = defineProps<MenubarItemProps & { class?: HTMLAttributes['class']; inset?: boolean }>()
|
|
6
|
+
const delegatedProps = computed(() => { const { class: _, inset: _i, ...d } = props; return d })
|
|
7
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
8
|
+
</script>
|
|
9
|
+
<template>
|
|
10
|
+
<MenubarItem v-bind="forwardedProps" :class="cn('relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50', inset && 'pl-8', props.class)">
|
|
11
|
+
<slot />
|
|
12
|
+
</MenubarItem>
|
|
13
|
+
</template>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { MenubarTrigger, type MenubarTriggerProps, useForwardProps } from 'radix-vue'
|
|
4
|
+
import { cn } from '../lib/utils'
|
|
5
|
+
const props = defineProps<MenubarTriggerProps & { class?: HTMLAttributes['class'] }>()
|
|
6
|
+
const delegatedProps = computed(() => { const { class: _, ...d } = props; return d })
|
|
7
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
8
|
+
</script>
|
|
9
|
+
<template>
|
|
10
|
+
<MenubarTrigger v-bind="forwardedProps" :class="cn('flex cursor-default select-none items-center rounded-sm px-3 py-1 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground', props.class)">
|
|
11
|
+
<slot />
|
|
12
|
+
</MenubarTrigger>
|
|
13
|
+
</template>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// Menubar — styled wrappers around radix-vue Menubar primitives
|
|
2
|
+
export { MenubarRoot as Menubar, MenubarMenu, MenubarSeparator, MenubarPortal } from 'radix-vue'
|
|
3
|
+
export { default as MenubarContent } from './MenubarContent.vue'
|
|
4
|
+
export { default as MenubarItem } from './MenubarItem.vue'
|
|
5
|
+
export { default as MenubarTrigger } from './MenubarTrigger.vue'
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { NavigationMenuContent, type NavigationMenuContentEmits, type NavigationMenuContentProps, useForwardPropsEmits } from 'radix-vue'
|
|
4
|
+
import { cn } from '../lib/utils'
|
|
5
|
+
const props = defineProps<NavigationMenuContentProps & { class?: HTMLAttributes['class'] }>()
|
|
6
|
+
const emits = defineEmits<NavigationMenuContentEmits>()
|
|
7
|
+
const delegatedProps = computed(() => { const { class: _, ...d } = props; return d })
|
|
8
|
+
const forwarded = useForwardPropsEmits(delegatedProps, emits)
|
|
9
|
+
</script>
|
|
10
|
+
<template>
|
|
11
|
+
<NavigationMenuContent v-bind="forwarded" :class="cn('left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto', props.class)">
|
|
12
|
+
<slot />
|
|
13
|
+
</NavigationMenuContent>
|
|
14
|
+
</template>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { NavigationMenuTrigger, type NavigationMenuTriggerProps, useForwardProps } from 'radix-vue'
|
|
4
|
+
import { ChevronDown } from 'lucide-vue-next'
|
|
5
|
+
import { cn } from '../lib/utils'
|
|
6
|
+
const props = defineProps<NavigationMenuTriggerProps & { class?: HTMLAttributes['class'] }>()
|
|
7
|
+
const delegatedProps = computed(() => { const { class: _, ...d } = props; return d })
|
|
8
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
9
|
+
</script>
|
|
10
|
+
<template>
|
|
11
|
+
<NavigationMenuTrigger v-bind="forwardedProps" :class="cn('group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50', props.class)">
|
|
12
|
+
<slot />
|
|
13
|
+
<ChevronDown class="relative top-px ml-1 h-3 w-3 transition duration-300 group-data-[state=open]:rotate-180" aria-hidden="true" />
|
|
14
|
+
</NavigationMenuTrigger>
|
|
15
|
+
</template>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
// NavigationMenu — styled wrappers around radix-vue NavigationMenu primitives
|
|
2
|
+
export { NavigationMenuRoot as NavigationMenu, NavigationMenuList, NavigationMenuItem, NavigationMenuLink, NavigationMenuViewport, NavigationMenuIndicator } from 'radix-vue'
|
|
3
|
+
export { default as NavigationMenuContent } from './NavigationMenuContent.vue'
|
|
4
|
+
export { default as NavigationMenuTrigger } from './NavigationMenuTrigger.vue'
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { PaginationList, type PaginationListProps, useForwardProps } from 'radix-vue'
|
|
4
|
+
import { cn } from '../lib/utils'
|
|
5
|
+
const props = defineProps<PaginationListProps & { class?: HTMLAttributes['class'] }>()
|
|
6
|
+
const delegatedProps = computed(() => { const { class: _, ...d } = props; return d })
|
|
7
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
8
|
+
</script>
|
|
9
|
+
<template>
|
|
10
|
+
<PaginationList v-bind="forwardedProps" :class="cn('flex flex-row items-center gap-1', props.class)">
|
|
11
|
+
<slot />
|
|
12
|
+
</PaginationList>
|
|
13
|
+
</template>
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { HTMLAttributes } from 'vue'
|
|
3
|
+
import { PaginationEllipsis, type PaginationEllipsisProps } from 'radix-vue'
|
|
4
|
+
import { MoreHorizontal } from 'lucide-vue-next'
|
|
5
|
+
import { cn } from '../lib/utils'
|
|
6
|
+
const props = defineProps<PaginationEllipsisProps & { class?: HTMLAttributes['class'] }>()
|
|
7
|
+
</script>
|
|
8
|
+
<template>
|
|
9
|
+
<PaginationEllipsis v-bind="props" :class="cn('flex h-9 w-9 items-center justify-center', props.class)">
|
|
10
|
+
<slot><MoreHorizontal class="h-4 w-4" /></slot>
|
|
11
|
+
</PaginationEllipsis>
|
|
12
|
+
</template>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { PaginationNext, type PaginationNextProps, useForwardProps } from 'radix-vue'
|
|
4
|
+
import { ChevronRight } from 'lucide-vue-next'
|
|
5
|
+
import { cn } from '../lib/utils'
|
|
6
|
+
const props = defineProps<PaginationNextProps & { class?: HTMLAttributes['class'] }>()
|
|
7
|
+
const delegatedProps = computed(() => { const { class: _, ...d } = props; return d })
|
|
8
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
9
|
+
</script>
|
|
10
|
+
<template>
|
|
11
|
+
<PaginationNext v-bind="forwardedProps" :class="cn('flex items-center gap-1 pr-2.5', props.class)">
|
|
12
|
+
<slot><span>Next</span><ChevronRight class="h-4 w-4" /></slot>
|
|
13
|
+
</PaginationNext>
|
|
14
|
+
</template>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { PaginationPrev, type PaginationPrevProps, useForwardProps } from 'radix-vue'
|
|
4
|
+
import { ChevronLeft } from 'lucide-vue-next'
|
|
5
|
+
import { cn } from '../lib/utils'
|
|
6
|
+
const props = defineProps<PaginationPrevProps & { class?: HTMLAttributes['class'] }>()
|
|
7
|
+
const delegatedProps = computed(() => { const { class: _, ...d } = props; return d })
|
|
8
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
9
|
+
</script>
|
|
10
|
+
<template>
|
|
11
|
+
<PaginationPrev v-bind="forwardedProps" :class="cn('flex items-center gap-1 pl-2.5', props.class)">
|
|
12
|
+
<slot><ChevronLeft class="h-4 w-4" /><span>Previous</span></slot>
|
|
13
|
+
</PaginationPrev>
|
|
14
|
+
</template>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Pagination — styled wrappers
|
|
2
|
+
export { PaginationRoot as Pagination, PaginationFirst, PaginationLast, PaginationListItem } from 'radix-vue'
|
|
3
|
+
export { default as PaginationContent } from './PaginationContent.vue'
|
|
4
|
+
export { default as PaginationEllipsis } from './PaginationEllipsis.vue'
|
|
5
|
+
export { default as PaginationNext } from './PaginationNext.vue'
|
|
6
|
+
export { default as PaginationPrev } from './PaginationPrev.vue'
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { PopoverRoot, type PopoverRootEmits, type PopoverRootProps, useForwardPropsEmits } from 'radix-vue'
|
|
3
|
+
|
|
4
|
+
const props = defineProps<PopoverRootProps>()
|
|
5
|
+
const emits = defineEmits<PopoverRootEmits>()
|
|
6
|
+
const forwarded = useForwardPropsEmits(props, emits)
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<template>
|
|
10
|
+
<PopoverRoot v-bind="forwarded">
|
|
11
|
+
<slot />
|
|
12
|
+
</PopoverRoot>
|
|
13
|
+
</template>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { PopoverContent, type PopoverContentEmits, type PopoverContentProps, PopoverPortal, useForwardPropsEmits } from 'radix-vue'
|
|
4
|
+
import { cn } from '../lib/utils'
|
|
5
|
+
|
|
6
|
+
const props = withDefaults(
|
|
7
|
+
defineProps<PopoverContentProps & { class?: HTMLAttributes['class'] }>(),
|
|
8
|
+
{ sideOffset: 4, align: 'center' },
|
|
9
|
+
)
|
|
10
|
+
const emits = defineEmits<PopoverContentEmits>()
|
|
11
|
+
const delegatedProps = computed(() => { const { class: _, ...d } = props; return d })
|
|
12
|
+
const forwarded = useForwardPropsEmits(delegatedProps, emits)
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<template>
|
|
16
|
+
<PopoverPortal>
|
|
17
|
+
<PopoverContent
|
|
18
|
+
v-bind="forwarded"
|
|
19
|
+
:class="cn(
|
|
20
|
+
'z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none 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-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',
|
|
21
|
+
props.class,
|
|
22
|
+
)"
|
|
23
|
+
>
|
|
24
|
+
<slot />
|
|
25
|
+
</PopoverContent>
|
|
26
|
+
</PopoverPortal>
|
|
27
|
+
</template>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { ProgressIndicator, ProgressRoot, type ProgressRootProps, useForwardProps } from 'radix-vue'
|
|
4
|
+
import { cn } from '../lib/utils'
|
|
5
|
+
|
|
6
|
+
const props = defineProps<ProgressRootProps & { class?: HTMLAttributes['class'] }>()
|
|
7
|
+
const delegatedProps = computed(() => { const { class: _, ...d } = props; return d })
|
|
8
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
<template>
|
|
12
|
+
<ProgressRoot
|
|
13
|
+
v-bind="forwardedProps"
|
|
14
|
+
:class="cn('relative h-2 w-full overflow-hidden rounded-full bg-primary/20', props.class)"
|
|
15
|
+
>
|
|
16
|
+
<ProgressIndicator
|
|
17
|
+
class="h-full w-full flex-1 bg-primary transition-all"
|
|
18
|
+
:style="{ transform: `translateX(-${100 - (modelValue ?? 0)}%)` }"
|
|
19
|
+
/>
|
|
20
|
+
</ProgressRoot>
|
|
21
|
+
</template>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as Progress } from './Progress.vue'
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { RadioGroupRoot, type RadioGroupRootEmits, type RadioGroupRootProps, useForwardPropsEmits } from 'radix-vue'
|
|
4
|
+
import { cn } from '../lib/utils'
|
|
5
|
+
|
|
6
|
+
const props = defineProps<RadioGroupRootProps & { class?: HTMLAttributes['class'] }>()
|
|
7
|
+
const emits = defineEmits<RadioGroupRootEmits>()
|
|
8
|
+
const delegatedProps = computed(() => { const { class: _, ...d } = props; return d })
|
|
9
|
+
const forwarded = useForwardPropsEmits(delegatedProps, emits)
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<template>
|
|
13
|
+
<RadioGroupRoot v-bind="forwarded" :class="cn('grid gap-2', props.class)">
|
|
14
|
+
<slot />
|
|
15
|
+
</RadioGroupRoot>
|
|
16
|
+
</template>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { RadioGroupIndicator, RadioGroupItem, type RadioGroupItemProps, useForwardProps } from 'radix-vue'
|
|
4
|
+
import { Circle } from 'lucide-vue-next'
|
|
5
|
+
import { cn } from '../lib/utils'
|
|
6
|
+
|
|
7
|
+
const props = defineProps<RadioGroupItemProps & { class?: HTMLAttributes['class'] }>()
|
|
8
|
+
const delegatedProps = computed(() => { const { class: _, ...d } = props; return d })
|
|
9
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<template>
|
|
13
|
+
<RadioGroupItem
|
|
14
|
+
v-bind="forwardedProps"
|
|
15
|
+
:class="cn(
|
|
16
|
+
'aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50',
|
|
17
|
+
props.class,
|
|
18
|
+
)"
|
|
19
|
+
>
|
|
20
|
+
<RadioGroupIndicator class="flex items-center justify-center">
|
|
21
|
+
<Circle class="h-3.5 w-3.5 fill-primary" />
|
|
22
|
+
</RadioGroupIndicator>
|
|
23
|
+
</RadioGroupItem>
|
|
24
|
+
</template>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { SelectRoot, type SelectRootEmits, type SelectRootProps, useForwardPropsEmits } from 'radix-vue'
|
|
3
|
+
|
|
4
|
+
const props = defineProps<SelectRootProps>()
|
|
5
|
+
const emits = defineEmits<SelectRootEmits>()
|
|
6
|
+
const forwarded = useForwardPropsEmits(props, emits)
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<template>
|
|
10
|
+
<SelectRoot v-bind="forwarded">
|
|
11
|
+
<slot />
|
|
12
|
+
</SelectRoot>
|
|
13
|
+
</template>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import {
|
|
4
|
+
SelectContent,
|
|
5
|
+
type SelectContentEmits,
|
|
6
|
+
type SelectContentProps,
|
|
7
|
+
SelectPortal,
|
|
8
|
+
SelectViewport,
|
|
9
|
+
useForwardPropsEmits,
|
|
10
|
+
} from 'radix-vue'
|
|
11
|
+
import { cn } from '../lib/utils'
|
|
12
|
+
|
|
13
|
+
const props = withDefaults(
|
|
14
|
+
defineProps<SelectContentProps & { class?: HTMLAttributes['class'] }>(),
|
|
15
|
+
{ position: 'popper' },
|
|
16
|
+
)
|
|
17
|
+
const emits = defineEmits<SelectContentEmits>()
|
|
18
|
+
|
|
19
|
+
const delegatedProps = computed(() => { const { class: _, ...d } = props; return d })
|
|
20
|
+
const forwarded = useForwardPropsEmits(delegatedProps, emits)
|
|
21
|
+
</script>
|
|
22
|
+
|
|
23
|
+
<template>
|
|
24
|
+
<SelectPortal>
|
|
25
|
+
<SelectContent
|
|
26
|
+
v-bind="{ ...forwarded, ...$attrs }"
|
|
27
|
+
:class="cn(
|
|
28
|
+
'relative z-50 max-h-96 min-w-32 overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md 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-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',
|
|
29
|
+
position === 'popper' && 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',
|
|
30
|
+
props.class,
|
|
31
|
+
)"
|
|
32
|
+
>
|
|
33
|
+
<SelectViewport
|
|
34
|
+
:class="cn('p-1', position === 'popper' && 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]')"
|
|
35
|
+
>
|
|
36
|
+
<slot />
|
|
37
|
+
</SelectViewport>
|
|
38
|
+
</SelectContent>
|
|
39
|
+
</SelectPortal>
|
|
40
|
+
</template>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { SelectGroup, type SelectGroupProps, useForwardProps } from 'radix-vue'
|
|
4
|
+
import { cn } from '../lib/utils'
|
|
5
|
+
|
|
6
|
+
const props = defineProps<SelectGroupProps & { class?: HTMLAttributes['class'] }>()
|
|
7
|
+
const delegatedProps = computed(() => { const { class: _, ...d } = props; return d })
|
|
8
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
<template>
|
|
12
|
+
<SelectGroup v-bind="forwardedProps" :class="cn('p-1 w-full', props.class)">
|
|
13
|
+
<slot />
|
|
14
|
+
</SelectGroup>
|
|
15
|
+
</template>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { SelectItem, SelectItemIndicator, type SelectItemProps, SelectItemText, useForwardProps } from 'radix-vue'
|
|
4
|
+
import { Check } from 'lucide-vue-next'
|
|
5
|
+
import { cn } from '../lib/utils'
|
|
6
|
+
|
|
7
|
+
const props = defineProps<SelectItemProps & { class?: HTMLAttributes['class'] }>()
|
|
8
|
+
const delegatedProps = computed(() => { const { class: _, ...d } = props; return d })
|
|
9
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<template>
|
|
13
|
+
<SelectItem
|
|
14
|
+
v-bind="forwardedProps"
|
|
15
|
+
:class="cn(
|
|
16
|
+
'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
|
|
17
|
+
props.class,
|
|
18
|
+
)"
|
|
19
|
+
>
|
|
20
|
+
<span class="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
|
|
21
|
+
<SelectItemIndicator>
|
|
22
|
+
<Check class="w-4 h-4" />
|
|
23
|
+
</SelectItemIndicator>
|
|
24
|
+
</span>
|
|
25
|
+
|
|
26
|
+
<SelectItemText>
|
|
27
|
+
<slot />
|
|
28
|
+
</SelectItemText>
|
|
29
|
+
</SelectItem>
|
|
30
|
+
</template>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { SelectLabel, type SelectLabelProps, useForwardProps } from 'radix-vue'
|
|
4
|
+
import { cn } from '../lib/utils'
|
|
5
|
+
|
|
6
|
+
const props = defineProps<SelectLabelProps & { class?: HTMLAttributes['class'] }>()
|
|
7
|
+
const delegatedProps = computed(() => { const { class: _, ...d } = props; return d })
|
|
8
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
<template>
|
|
12
|
+
<SelectLabel v-bind="forwardedProps" :class="cn('px-2 py-1.5 text-sm font-semibold', props.class)">
|
|
13
|
+
<slot />
|
|
14
|
+
</SelectLabel>
|
|
15
|
+
</template>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { SelectSeparator, type SelectSeparatorProps, useForwardProps } from 'radix-vue'
|
|
4
|
+
import { cn } from '../lib/utils'
|
|
5
|
+
|
|
6
|
+
const props = defineProps<SelectSeparatorProps & { class?: HTMLAttributes['class'] }>()
|
|
7
|
+
const delegatedProps = computed(() => { const { class: _, ...d } = props; return d })
|
|
8
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
<template>
|
|
12
|
+
<SelectSeparator v-bind="forwardedProps" :class="cn('-mx-1 my-1 h-px bg-muted', props.class)" />
|
|
13
|
+
</template>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { type HTMLAttributes, computed } from 'vue'
|
|
3
|
+
import { SelectTrigger, type SelectTriggerProps, useForwardProps } from 'radix-vue'
|
|
4
|
+
import { ChevronDown } from 'lucide-vue-next'
|
|
5
|
+
import { cn } from '../lib/utils'
|
|
6
|
+
|
|
7
|
+
const props = defineProps<SelectTriggerProps & { class?: HTMLAttributes['class'] }>()
|
|
8
|
+
const delegatedProps = computed(() => { const { class: _, ...d } = props; return d })
|
|
9
|
+
const forwardedProps = useForwardProps(delegatedProps)
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<template>
|
|
13
|
+
<SelectTrigger
|
|
14
|
+
v-bind="forwardedProps"
|
|
15
|
+
:class="cn(
|
|
16
|
+
'flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1',
|
|
17
|
+
props.class,
|
|
18
|
+
)"
|
|
19
|
+
>
|
|
20
|
+
<slot />
|
|
21
|
+
<ChevronDown class="w-4 h-4 opacity-50 shrink-0" />
|
|
22
|
+
</SelectTrigger>
|
|
23
|
+
</template>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { default as Select } from './Select.vue'
|
|
2
|
+
export { default as SelectContent } from './SelectContent.vue'
|
|
3
|
+
export { default as SelectGroup } from './SelectGroup.vue'
|
|
4
|
+
export { default as SelectItem } from './SelectItem.vue'
|
|
5
|
+
export { default as SelectLabel } from './SelectLabel.vue'
|
|
6
|
+
export { default as SelectSeparator } from './SelectSeparator.vue'
|
|
7
|
+
export { default as SelectTrigger } from './SelectTrigger.vue'
|
|
8
|
+
export { default as SelectValue } from './SelectValue.vue'
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { DialogRoot, type DialogRootEmits, type DialogRootProps, useForwardPropsEmits } from 'radix-vue'
|
|
3
|
+
|
|
4
|
+
const props = defineProps<DialogRootProps>()
|
|
5
|
+
const emits = defineEmits<DialogRootEmits>()
|
|
6
|
+
const forwarded = useForwardPropsEmits(props, emits)
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<template>
|
|
10
|
+
<DialogRoot v-bind="forwarded">
|
|
11
|
+
<slot />
|
|
12
|
+
</DialogRoot>
|
|
13
|
+
</template>
|