@brumaombra/ui-vintage 0.9.1 → 0.9.2
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/module.mjs +43 -43
- package/package.json +175 -175
- package/src/components/background-grid/BackgroundGrid.vue +4 -4
- package/src/components/blog/AllPostsSection.vue +33 -33
- package/src/components/blog/BlogContentRenderer.vue +111 -111
- package/src/components/blog/BlogFAQSection.vue +19 -19
- package/src/components/blog/BlogHeaderSection.vue +80 -80
- package/src/components/blog/BlogInfoSection.vue +47 -47
- package/src/components/blog/BlogPostHeader.vue +135 -135
- package/src/components/blog/BlogProgressBar.vue +33 -33
- package/src/components/blog/BlogSectionTitle.vue +22 -22
- package/src/components/blog/BlogTagsSection.vue +25 -25
- package/src/components/blog/CategoriesList.vue +14 -14
- package/src/components/blog/CategoriesSection.vue +11 -11
- package/src/components/blog/CategoryCard.vue +25 -25
- package/src/components/blog/HeaderCarousel.vue +97 -97
- package/src/components/blog/PostCard.vue +33 -33
- package/src/components/blog/PostsList.vue +15 -15
- package/src/components/blog/SocialShareSidebar.vue +84 -84
- package/src/components/blog/TableOfContents.vue +307 -307
- package/src/components/busy-indicator/BusyIndicator.vue +7 -7
- package/src/components/busy-indicator/busy-indicator-state.ts +56 -56
- package/src/components/card-grid/CardGrid.vue +34 -34
- package/src/components/chip/Chip.vue +15 -15
- package/src/components/confirm-dialog/ConfirmDialog.vue +50 -50
- package/src/components/confirm-dialog/confirm-dialog-state.ts +131 -131
- package/src/components/content/BlogList.vue +30 -30
- package/src/components/content/BlogTable.vue +36 -36
- package/src/components/content/CodeBlock.vue +136 -136
- package/src/components/content/Flow.vue +60 -60
- package/src/components/content/ProseHr.vue +15 -15
- package/src/components/content/ProsePre.vue +12 -12
- package/src/components/content/Terminal.vue +59 -59
- package/src/components/cookie-consent/CookieConsent.vue +36 -36
- package/src/components/cookie-consent/useCookieConsent.ts +37 -37
- package/src/components/dashboard-shell/DashboardShell.vue +171 -171
- package/src/components/data-list/DataList.vue +6 -6
- package/src/components/data-list/DataListItem.vue +4 -4
- package/src/components/data-list/DataListLabel.vue +4 -4
- package/src/components/data-list/DataListText.vue +4 -4
- package/src/components/data-list/DataListValue.vue +4 -4
- package/src/components/empty-state-card/EmptyStateCard.vue +40 -40
- package/src/components/error-page/ErrorPage.vue +72 -72
- package/src/components/info-card/InfoCard.vue +31 -31
- package/src/components/landing/landing-content/LandingContent.vue +4 -4
- package/src/components/landing/landing-footer/LandingFooter.vue +128 -128
- package/src/components/landing/landing-navbar/LandingNavbar.vue +50 -50
- package/src/components/landing/landing-shell/LandingShell.vue +36 -36
- package/src/components/language-flag/LanguageFlag.vue +25 -25
- package/src/components/language-flag/flags/ChineseFlag.vue +8 -8
- package/src/components/language-flag/flags/EnglishFlag.vue +7 -7
- package/src/components/language-flag/flags/FrenchFlag.vue +5 -5
- package/src/components/language-flag/flags/GermanFlag.vue +5 -5
- package/src/components/language-flag/flags/ItalianFlag.vue +7 -7
- package/src/components/language-flag/flags/JapaneseFlag.vue +4 -4
- package/src/components/language-flag/flags/PortugueseFlag.vue +57 -57
- package/src/components/language-flag/flags/RussianFlag.vue +5 -5
- package/src/components/language-flag/flags/SpanishFlag.vue +4 -4
- package/src/components/language-selector/LanguageSelector.vue +76 -76
- package/src/components/load-more-button/LoadMoreButton.vue +17 -17
- package/src/components/loading-state-card/LoadingStateCard.vue +28 -28
- package/src/components/message-dialog/MessageDialog.vue +59 -59
- package/src/components/message-dialog/message-dialog-state.ts +105 -105
- package/src/components/message-toast/MessageToast.vue +149 -149
- package/src/components/message-toast/message-toast-state.ts +146 -146
- package/src/components/page-header/PageHeader.vue +34 -34
- package/src/components/progress-component/ProgressComponent.vue +33 -33
- package/src/components/single-value-card/SingleValueCard.vue +57 -57
- package/src/components/slider-form-component/SliderFormComponent.vue +36 -36
- package/src/components/stat-strip/StatStrip.vue +22 -22
- package/src/components/switch-form-component/SwitchFormComponent.vue +20 -20
- package/src/components/text-link/TextLink.vue +14 -14
- package/src/components/theme-selector/ThemeSelector.vue +61 -61
- package/src/components/theme-selector/theme-transition.ts +63 -63
- package/src/components/ui/accordion/Accordion.vue +38 -38
- package/src/components/ui/alert/Alert.vue +5 -5
- package/src/components/ui/alert/AlertDescription.vue +4 -4
- package/src/components/ui/alert/AlertTitle.vue +4 -4
- package/src/components/ui/alert/index.ts +2 -2
- package/src/components/ui/alert-dialog/AlertDialog.vue +3 -3
- package/src/components/ui/alert-dialog/AlertDialogAction.vue +3 -3
- package/src/components/ui/alert-dialog/AlertDialogCancel.vue +3 -3
- package/src/components/ui/alert-dialog/AlertDialogContent.vue +7 -7
- package/src/components/ui/alert-dialog/AlertDialogDescription.vue +3 -3
- package/src/components/ui/alert-dialog/AlertDialogFooter.vue +4 -4
- package/src/components/ui/alert-dialog/AlertDialogHeader.vue +4 -4
- package/src/components/ui/alert-dialog/AlertDialogTitle.vue +3 -3
- package/src/components/ui/alert-dialog/AlertDialogTrigger.vue +3 -3
- package/src/components/ui/animated-number/AnimatedNumber.vue +49 -48
- package/src/components/ui/avatar/Avatar.vue +28 -28
- package/src/components/ui/avatar/AvatarFallback.vue +6 -6
- package/src/components/ui/avatar/AvatarGroup.vue +40 -40
- package/src/components/ui/avatar/AvatarImage.vue +3 -3
- package/src/components/ui/avatar/index.ts +17 -17
- package/src/components/ui/badge/Badge.vue +20 -20
- package/src/components/ui/breadcrumb/Breadcrumb.vue +4 -4
- package/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue +9 -9
- package/src/components/ui/breadcrumb/BreadcrumbItem.vue +4 -4
- package/src/components/ui/breadcrumb/BreadcrumbLink.vue +4 -4
- package/src/components/ui/breadcrumb/BreadcrumbList.vue +4 -4
- package/src/components/ui/breadcrumb/BreadcrumbPage.vue +4 -4
- package/src/components/ui/breadcrumb/BreadcrumbSeparator.vue +4 -4
- package/src/components/ui/busy/Busy.vue +33 -33
- package/src/components/ui/button/Button.vue +23 -23
- package/src/components/ui/button/index.ts +56 -56
- package/src/components/ui/calendar/Calendar.vue +138 -138
- package/src/components/ui/calendar/CalendarCell.vue +7 -7
- package/src/components/ui/calendar/CalendarCellTrigger.vue +18 -18
- package/src/components/ui/calendar/CalendarGrid.vue +3 -3
- package/src/components/ui/calendar/CalendarGridBody.vue +3 -3
- package/src/components/ui/calendar/CalendarGridHead.vue +3 -3
- package/src/components/ui/calendar/CalendarGridRow.vue +3 -3
- package/src/components/ui/calendar/CalendarHeadCell.vue +7 -7
- package/src/components/ui/calendar/CalendarHeader.vue +7 -7
- package/src/components/ui/calendar/CalendarHeading.vue +6 -6
- package/src/components/ui/calendar/CalendarNextButton.vue +15 -15
- package/src/components/ui/calendar/CalendarPrevButton.vue +15 -15
- package/src/components/ui/calendar/index.ts +4 -4
- package/src/components/ui/card/Card.vue +20 -20
- package/src/components/ui/card/CardAction.vue +8 -8
- package/src/components/ui/card/CardContent.vue +4 -4
- package/src/components/ui/card/CardDescription.vue +12 -12
- package/src/components/ui/card/CardFooter.vue +4 -4
- package/src/components/ui/card/CardHeader.vue +8 -8
- package/src/components/ui/card/CardText.vue +8 -8
- package/src/components/ui/card/CardTitle.vue +8 -8
- package/src/components/ui/checkbox/Checkbox.vue +27 -27
- package/src/components/ui/collapsible/Collapsible.vue +3 -3
- package/src/components/ui/collapsible/CollapsibleContent.vue +3 -3
- package/src/components/ui/collapsible/CollapsibleTrigger.vue +3 -3
- package/src/components/ui/combobox/Combobox.vue +4 -4
- package/src/components/ui/combobox/ComboboxAnchor.vue +16 -16
- package/src/components/ui/combobox/ComboboxEmpty.vue +3 -3
- package/src/components/ui/combobox/ComboboxGroup.vue +9 -9
- package/src/components/ui/combobox/ComboboxInput.vue +6 -6
- package/src/components/ui/combobox/ComboboxItem.vue +17 -17
- package/src/components/ui/combobox/ComboboxList.vue +19 -19
- package/src/components/ui/combobox/ComboboxSelect.vue +77 -77
- package/src/components/ui/combobox/ComboboxSeparator.vue +1 -1
- package/src/components/ui/combobox/ComboboxTrigger.vue +10 -10
- package/src/components/ui/combobox/types.ts +5 -5
- package/src/components/ui/command/Command.vue +48 -48
- package/src/components/ui/command/CommandDialog.vue +14 -14
- package/src/components/ui/command/CommandEmpty.vue +4 -4
- package/src/components/ui/command/CommandGroup.vue +23 -23
- package/src/components/ui/command/CommandInput.vue +9 -9
- package/src/components/ui/command/CommandItem.vue +40 -40
- package/src/components/ui/command/CommandList.vue +9 -9
- package/src/components/ui/command/CommandSeparator.vue +3 -3
- package/src/components/ui/command/CommandShortcut.vue +8 -8
- package/src/components/ui/command/index.ts +11 -11
- package/src/components/ui/data-table/DataTable.vue +145 -145
- package/src/components/ui/data-table/index.ts +11 -11
- package/src/components/ui/date-picker/DatePicker.vue +31 -31
- package/src/components/ui/date-time-picker/DateTimePicker.vue +97 -97
- package/src/components/ui/dialog/Dialog.vue +3 -3
- package/src/components/ui/dialog/DialogClose.vue +3 -3
- package/src/components/ui/dialog/DialogContent.vue +21 -21
- package/src/components/ui/dialog/DialogDescription.vue +7 -7
- package/src/components/ui/dialog/DialogFooter.vue +8 -8
- package/src/components/ui/dialog/DialogHeader.vue +4 -4
- package/src/components/ui/dialog/DialogOverlay.vue +7 -7
- package/src/components/ui/dialog/DialogScrollContent.vue +32 -32
- package/src/components/ui/dialog/DialogTitle.vue +3 -3
- package/src/components/ui/dialog/DialogTrigger.vue +3 -3
- package/src/components/ui/dropdown-menu/DropdownMenu.vue +3 -3
- package/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +11 -11
- package/src/components/ui/dropdown-menu/DropdownMenuContent.vue +15 -15
- package/src/components/ui/dropdown-menu/DropdownMenuGroup.vue +3 -3
- package/src/components/ui/dropdown-menu/DropdownMenuItem.vue +12 -12
- package/src/components/ui/dropdown-menu/DropdownMenuLabel.vue +9 -9
- package/src/components/ui/dropdown-menu/DropdownMenuPortal.vue +3 -3
- package/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +3 -3
- package/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +11 -11
- package/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue +1 -1
- package/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue +4 -4
- package/src/components/ui/dropdown-menu/DropdownMenuSub.vue +3 -3
- package/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue +15 -15
- package/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +15 -15
- package/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue +3 -3
- package/src/components/ui/dropdown-menu/classes.ts +16 -16
- package/src/components/ui/field/Field.vue +5 -5
- package/src/components/ui/field/FieldContent.vue +8 -8
- package/src/components/ui/field/FieldDescription.vue +10 -10
- package/src/components/ui/field/FieldError.vue +39 -39
- package/src/components/ui/field/FieldGroup.vue +8 -8
- package/src/components/ui/field/FieldLabel.vue +10 -10
- package/src/components/ui/field/FieldLegend.vue +11 -11
- package/src/components/ui/field/FieldSeparator.vue +11 -11
- package/src/components/ui/field/FieldSet.vue +9 -9
- package/src/components/ui/field/FieldTitle.vue +8 -8
- package/src/components/ui/field/field-context.ts +36 -36
- package/src/components/ui/field/index.ts +22 -22
- package/src/components/ui/file-dropzone/FileDropzone.vue +144 -144
- package/src/components/ui/file-dropzone/index.ts +19 -19
- package/src/components/ui/hover-card/HoverCard.vue +5 -5
- package/src/components/ui/hover-card/HoverCardContent.vue +13 -13
- package/src/components/ui/hover-card/HoverCardTrigger.vue +3 -3
- package/src/components/ui/input/Input.vue +13 -13
- package/src/components/ui/kbd/Kbd.vue +10 -10
- package/src/components/ui/kbd/KbdGroup.vue +49 -49
- package/src/components/ui/label/Label.vue +7 -7
- package/src/components/ui/native-select/NativeSelect.vue +16 -16
- package/src/components/ui/native-select/NativeSelectOptGroup.vue +3 -3
- package/src/components/ui/native-select/NativeSelectOption.vue +3 -3
- package/src/components/ui/number-field/NumberField.vue +88 -88
- package/src/components/ui/pagination/Pagination.vue +4 -4
- package/src/components/ui/pagination/PaginationContent.vue +4 -4
- package/src/components/ui/pagination/PaginationEllipsis.vue +9 -9
- package/src/components/ui/pagination/PaginationFirst.vue +8 -8
- package/src/components/ui/pagination/PaginationItem.vue +14 -14
- package/src/components/ui/pagination/PaginationLast.vue +8 -8
- package/src/components/ui/pagination/PaginationNext.vue +8 -8
- package/src/components/ui/pagination/PaginationPrevious.vue +8 -8
- package/src/components/ui/pagination/SimplePagination.vue +25 -25
- package/src/components/ui/pin-input/PinInput.vue +20 -20
- package/src/components/ui/pin-input/PinInputInput.vue +17 -17
- package/src/components/ui/pin-input/context.ts +1 -1
- package/src/components/ui/popover/Popover.vue +3 -3
- package/src/components/ui/popover/PopoverAnchor.vue +3 -3
- package/src/components/ui/popover/PopoverContent.vue +12 -12
- package/src/components/ui/popover/PopoverTrigger.vue +3 -3
- package/src/components/ui/progress/Progress.vue +16 -16
- package/src/components/ui/radio-group/RadioGroup.vue +7 -7
- package/src/components/ui/radio-group/RadioGroupCard.vue +39 -39
- package/src/components/ui/radio-group/RadioGroupItem.vue +20 -20
- package/src/components/ui/scroll-area/ScrollArea.vue +14 -14
- package/src/components/ui/scroll-area/ScrollBar.vue +12 -12
- package/src/components/ui/select/Select.vue +3 -3
- package/src/components/ui/select/SelectContent.vue +25 -25
- package/src/components/ui/select/SelectGroup.vue +3 -3
- package/src/components/ui/select/SelectItem.vue +24 -24
- package/src/components/ui/select/SelectItemContent.vue +32 -32
- package/src/components/ui/select/SelectItemText.vue +3 -3
- package/src/components/ui/select/SelectLabel.vue +3 -3
- package/src/components/ui/select/SelectScrollDownButton.vue +9 -9
- package/src/components/ui/select/SelectScrollUpButton.vue +9 -9
- package/src/components/ui/select/SelectSeparator.vue +2 -2
- package/src/components/ui/select/SelectTrigger.vue +14 -14
- package/src/components/ui/select/SelectValue.vue +3 -3
- package/src/components/ui/select/SelectValueContent.vue +39 -39
- package/src/components/ui/separator/Separator.vue +7 -7
- package/src/components/ui/sheet/Sheet.vue +3 -3
- package/src/components/ui/sheet/SheetClose.vue +3 -3
- package/src/components/ui/sheet/SheetContent.vue +22 -22
- package/src/components/ui/sheet/SheetDescription.vue +3 -3
- package/src/components/ui/sheet/SheetFooter.vue +3 -3
- package/src/components/ui/sheet/SheetHeader.vue +3 -3
- package/src/components/ui/sheet/SheetOverlay.vue +7 -7
- package/src/components/ui/sheet/SheetTitle.vue +3 -3
- package/src/components/ui/sheet/SheetTrigger.vue +3 -3
- package/src/components/ui/sidebar/Sidebar.vue +57 -57
- package/src/components/ui/sidebar/SidebarContent.vue +8 -8
- package/src/components/ui/sidebar/SidebarFooter.vue +8 -8
- package/src/components/ui/sidebar/SidebarGroup.vue +8 -8
- package/src/components/ui/sidebar/SidebarGroupAction.vue +9 -9
- package/src/components/ui/sidebar/SidebarGroupContent.vue +4 -4
- package/src/components/ui/sidebar/SidebarGroupLabel.vue +8 -8
- package/src/components/ui/sidebar/SidebarHeader.vue +8 -8
- package/src/components/ui/sidebar/SidebarInput.vue +8 -8
- package/src/components/ui/sidebar/SidebarInset.vue +9 -9
- package/src/components/ui/sidebar/SidebarMenu.vue +4 -4
- package/src/components/ui/sidebar/SidebarMenuAction.vue +18 -18
- package/src/components/ui/sidebar/SidebarMenuBadge.vue +14 -14
- package/src/components/ui/sidebar/SidebarMenuButton.vue +21 -21
- package/src/components/ui/sidebar/SidebarMenuButtonChild.vue +10 -10
- package/src/components/ui/sidebar/SidebarMenuItem.vue +4 -4
- package/src/components/ui/sidebar/SidebarMenuSkeleton.vue +10 -10
- package/src/components/ui/sidebar/SidebarMenuSub.vue +9 -9
- package/src/components/ui/sidebar/SidebarMenuSubButton.vue +17 -17
- package/src/components/ui/sidebar/SidebarMenuSubItem.vue +4 -4
- package/src/components/ui/sidebar/SidebarProvider.vue +46 -46
- package/src/components/ui/sidebar/SidebarRail.vue +13 -13
- package/src/components/ui/sidebar/SidebarSeparator.vue +4 -4
- package/src/components/ui/sidebar/SidebarTrigger.vue +5 -5
- package/src/components/ui/sidebar/index.ts +29 -29
- package/src/components/ui/sidebar/utils.ts +7 -7
- package/src/components/ui/skeleton/Skeleton.vue +6 -6
- package/src/components/ui/slider/Slider.vue +14 -14
- package/src/components/ui/spinner/Spinner.vue +21 -21
- package/src/components/ui/stepper/SimpleStepper.vue +26 -26
- package/src/components/ui/stepper/Stepper.vue +6 -6
- package/src/components/ui/stepper/StepperDescription.vue +5 -5
- package/src/components/ui/stepper/StepperIndicator.vue +17 -17
- package/src/components/ui/stepper/StepperItem.vue +4 -4
- package/src/components/ui/stepper/StepperSeparator.vue +7 -7
- package/src/components/ui/stepper/StepperTitle.vue +5 -5
- package/src/components/ui/stepper/StepperTrigger.vue +4 -4
- package/src/components/ui/stepper/index.ts +3 -3
- package/src/components/ui/switch/Switch.vue +15 -15
- package/src/components/ui/table/Table.vue +6 -6
- package/src/components/ui/table/TableBody.vue +4 -4
- package/src/components/ui/table/TableCaption.vue +4 -4
- package/src/components/ui/table/TableCell.vue +8 -8
- package/src/components/ui/table/TableEmpty.vue +14 -14
- package/src/components/ui/table/TableFooter.vue +8 -8
- package/src/components/ui/table/TableHead.vue +8 -8
- package/src/components/ui/table/TableHeader.vue +4 -4
- package/src/components/ui/table/TableRow.vue +8 -8
- package/src/components/ui/tabs/Tabs.vue +4 -4
- package/src/components/ui/tabs/TabsContent.vue +4 -4
- package/src/components/ui/tabs/TabsList.vue +15 -15
- package/src/components/ui/tabs/TabsTrigger.vue +10 -10
- package/src/components/ui/tags-input/TagsInput.vue +17 -17
- package/src/components/ui/tags-input/TagsInputInput.vue +6 -6
- package/src/components/ui/tags-input/TagsInputItem.vue +15 -15
- package/src/components/ui/tags-input/TagsInputItemDelete.vue +12 -12
- package/src/components/ui/tags-input/TagsInputItemText.vue +4 -4
- package/src/components/ui/textarea/Textarea.vue +12 -12
- package/src/components/ui/time-picker/TimePicker.vue +25 -25
- package/src/components/ui/toggle-group/Toggle.vue +10 -10
- package/src/components/ui/toggle-group/ToggleGroup.vue +38 -38
- package/src/components/ui/toggle-group/ToggleGroupItem.vue +9 -9
- package/src/components/ui/toggle-group/index.ts +46 -46
- package/src/components/ui/tooltip/Tooltip.vue +3 -3
- package/src/components/ui/tooltip/TooltipContent.vue +13 -13
- package/src/components/ui/tooltip/TooltipProvider.vue +4 -4
- package/src/components/ui/tooltip/TooltipTrigger.vue +3 -3
- package/src/i18n/de.json +185 -185
- package/src/i18n/en.json +185 -185
- package/src/i18n/es.json +185 -185
- package/src/i18n/fr.json +185 -185
- package/src/i18n/it.json +185 -185
- package/src/i18n/ja.json +185 -185
- package/src/i18n/pt.json +185 -185
- package/src/i18n/ru.json +185 -185
- package/src/i18n/zh.json +185 -185
- package/src/lib/color-tokens.ts +24 -24
- package/src/lib/i18n.ts +65 -65
- package/src/lib/utils.ts +33 -33
- package/src/nuxt-components.d.ts +2 -2
- package/src/runtime/ui-vintage-i18n-plugin.ts +49 -49
- package/src/shims-vue.d.ts +3 -3
- package/src/styles.css +377 -377
|
@@ -19,16 +19,16 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);
|
|
|
19
19
|
</script>
|
|
20
20
|
|
|
21
21
|
<template>
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
22
|
+
<DropdownMenuCheckboxItem data-slot="dropdown-menu-checkbox-item" v-bind="forwarded" :class="cn(dropdownMenuItemClass, 'pl-9 data-[state=checked]:text-foreground', props.class)">
|
|
23
|
+
<!-- Check indicator (pops in when checked) -->
|
|
24
|
+
<span class="pointer-events-none absolute left-3 flex size-4 items-center justify-center text-primary">
|
|
25
|
+
<DropdownMenuItemIndicator>
|
|
26
|
+
<slot name="indicator-icon">
|
|
27
|
+
<HugeiconsIcon :icon="Tick02Icon" class="size-4 animate-uv-pop" :stroke-width="2.5" />
|
|
28
|
+
</slot>
|
|
29
|
+
</DropdownMenuItemIndicator>
|
|
30
|
+
</span>
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
<slot />
|
|
33
|
+
</DropdownMenuCheckboxItem>
|
|
34
34
|
</template>
|
|
@@ -7,14 +7,14 @@ import { cn } from '../../../lib/utils';
|
|
|
7
7
|
import { dropdownMenuStaggerClass, dropdownMenuSurfaceClass } from './classes';
|
|
8
8
|
|
|
9
9
|
defineOptions({
|
|
10
|
-
|
|
10
|
+
inheritAttrs: false
|
|
11
11
|
});
|
|
12
12
|
|
|
13
13
|
// Props
|
|
14
14
|
const props = withDefaults(defineProps<DropdownMenuContentProps & { class?: HTMLAttributes['class'] }>(), {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
align: 'start',
|
|
16
|
+
sideOffset: 6,
|
|
17
|
+
collisionPadding: 8
|
|
18
18
|
});
|
|
19
19
|
|
|
20
20
|
// Emits
|
|
@@ -25,15 +25,15 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);
|
|
|
25
25
|
</script>
|
|
26
26
|
|
|
27
27
|
<template>
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
28
|
+
<DropdownMenuPortal>
|
|
29
|
+
<DropdownMenuContent data-slot="dropdown-menu-content" v-bind="{ ...$attrs, ...forwarded }" :class="cn(
|
|
30
|
+
dropdownMenuSurfaceClass,
|
|
31
|
+
'max-h-(--reka-dropdown-menu-content-available-height)',
|
|
32
|
+
dropdownMenuStaggerClass,
|
|
33
|
+
props.class
|
|
34
|
+
)
|
|
35
|
+
">
|
|
36
|
+
<slot />
|
|
37
|
+
</DropdownMenuContent>
|
|
38
|
+
</DropdownMenuPortal>
|
|
39
39
|
</template>
|
|
@@ -7,7 +7,7 @@ const props = defineProps<DropdownMenuGroupProps>();
|
|
|
7
7
|
</script>
|
|
8
8
|
|
|
9
9
|
<template>
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
<DropdownMenuGroup data-slot="dropdown-menu-group" v-bind="props">
|
|
11
|
+
<slot />
|
|
12
|
+
</DropdownMenuGroup>
|
|
13
13
|
</template>
|
|
@@ -8,11 +8,11 @@ import { dropdownMenuItemClass } from './classes';
|
|
|
8
8
|
|
|
9
9
|
// Props
|
|
10
10
|
const props = withDefaults(defineProps<DropdownMenuItemProps & {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
class?: HTMLAttributes['class'];
|
|
12
|
+
inset?: boolean;
|
|
13
|
+
variant?: 'default' | 'destructive';
|
|
14
14
|
}>(), {
|
|
15
|
-
|
|
15
|
+
variant: 'default'
|
|
16
16
|
});
|
|
17
17
|
|
|
18
18
|
// Emits
|
|
@@ -23,12 +23,12 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);
|
|
|
23
23
|
</script>
|
|
24
24
|
|
|
25
25
|
<template>
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
26
|
+
<DropdownMenuItem data-slot="dropdown-menu-item" :data-inset="props.inset ? '' : undefined" :data-variant="props.variant" v-bind="forwarded" :class="cn(
|
|
27
|
+
dropdownMenuItemClass,
|
|
28
|
+
props.variant === 'destructive' && 'text-destructive before:bg-destructive data-highlighted:bg-destructive/10 data-highlighted:text-destructive',
|
|
29
|
+
props.class
|
|
30
|
+
)
|
|
31
|
+
">
|
|
32
|
+
<slot />
|
|
33
|
+
</DropdownMenuItem>
|
|
34
34
|
</template>
|
|
@@ -7,8 +7,8 @@ import { cn } from '../../../lib/utils';
|
|
|
7
7
|
|
|
8
8
|
// Props
|
|
9
9
|
const props = defineProps<DropdownMenuLabelProps & {
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
class?: HTMLAttributes['class'];
|
|
11
|
+
inset?: boolean;
|
|
12
12
|
}>();
|
|
13
13
|
|
|
14
14
|
const delegatedProps = reactiveOmit(props, 'class', 'inset');
|
|
@@ -16,11 +16,11 @@ const forwardedProps = useForwardProps(delegatedProps);
|
|
|
16
16
|
</script>
|
|
17
17
|
|
|
18
18
|
<template>
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
<DropdownMenuLabel data-slot="dropdown-menu-label" :data-inset="props.inset ? '' : undefined" v-bind="forwardedProps" :class="cn(
|
|
20
|
+
'px-3 pt-2 pb-1.5 text-[11px] font-semibold uppercase tracking-[0.16em] text-muted-foreground select-none data-inset:pl-9',
|
|
21
|
+
props.class
|
|
22
|
+
)
|
|
23
|
+
">
|
|
24
|
+
<slot />
|
|
25
|
+
</DropdownMenuLabel>
|
|
26
26
|
</template>
|
|
@@ -12,7 +12,7 @@ const forwarded = useForwardPropsEmits(props, emits);
|
|
|
12
12
|
</script>
|
|
13
13
|
|
|
14
14
|
<template>
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
<DropdownMenuRadioGroup data-slot="dropdown-menu-radio-group" v-bind="forwarded">
|
|
16
|
+
<slot />
|
|
17
|
+
</DropdownMenuRadioGroup>
|
|
18
18
|
</template>
|
|
@@ -17,16 +17,16 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);
|
|
|
17
17
|
</script>
|
|
18
18
|
|
|
19
19
|
<template>
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
20
|
+
<DropdownMenuRadioItem data-slot="dropdown-menu-radio-item" v-bind="forwarded" :class="cn(dropdownMenuItemClass, 'group/dropdown-radio-item pl-9 data-[state=checked]:text-foreground', props.class)">
|
|
21
|
+
<!-- Radio ring with a dot that pops in when checked -->
|
|
22
|
+
<span class="pointer-events-none absolute left-3 flex size-4 items-center justify-center rounded-full border border-border-strong transition-colors duration-150 group-data-[state=checked]/dropdown-radio-item:border-primary">
|
|
23
|
+
<DropdownMenuItemIndicator>
|
|
24
|
+
<slot name="indicator-icon">
|
|
25
|
+
<span class="block size-2 animate-uv-pop rounded-full bg-primary" />
|
|
26
|
+
</slot>
|
|
27
|
+
</DropdownMenuItemIndicator>
|
|
28
|
+
</span>
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
<slot />
|
|
31
|
+
</DropdownMenuRadioItem>
|
|
32
32
|
</template>
|
|
@@ -12,5 +12,5 @@ const delegatedProps = reactiveOmit(props, 'class');
|
|
|
12
12
|
</script>
|
|
13
13
|
|
|
14
14
|
<template>
|
|
15
|
-
|
|
15
|
+
<DropdownMenuSeparator data-slot="dropdown-menu-separator" v-bind="delegatedProps" :class="cn('-mx-1 my-1 h-px bg-border', props.class)" />
|
|
16
16
|
</template>
|
|
@@ -4,12 +4,12 @@ import { cn } from '../../../lib/utils';
|
|
|
4
4
|
|
|
5
5
|
// Props
|
|
6
6
|
const props = defineProps<{
|
|
7
|
-
|
|
7
|
+
class?: HTMLAttributes['class'];
|
|
8
8
|
}>();
|
|
9
9
|
</script>
|
|
10
10
|
|
|
11
11
|
<template>
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
<span data-slot="dropdown-menu-shortcut" :class="cn('ml-auto pl-4 text-[11px] font-semibold tracking-widest text-muted-foreground', props.class)">
|
|
13
|
+
<slot />
|
|
14
|
+
</span>
|
|
15
15
|
</template>
|
|
@@ -12,7 +12,7 @@ const forwarded = useForwardPropsEmits(props, emits);
|
|
|
12
12
|
</script>
|
|
13
13
|
|
|
14
14
|
<template>
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
<DropdownMenuSub v-slot="slotProps" data-slot="dropdown-menu-sub" v-bind="forwarded">
|
|
16
|
+
<slot v-bind="slotProps" />
|
|
17
|
+
</DropdownMenuSub>
|
|
18
18
|
</template>
|
|
@@ -7,14 +7,14 @@ import { cn } from '../../../lib/utils';
|
|
|
7
7
|
import { dropdownMenuStaggerClass, dropdownMenuSurfaceClass } from './classes';
|
|
8
8
|
|
|
9
9
|
defineOptions({
|
|
10
|
-
|
|
10
|
+
inheritAttrs: false
|
|
11
11
|
});
|
|
12
12
|
|
|
13
13
|
// Props
|
|
14
14
|
const props = withDefaults(defineProps<DropdownMenuSubContentProps & { class?: HTMLAttributes['class'] }>(), {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
sideOffset: 6,
|
|
16
|
+
alignOffset: -5,
|
|
17
|
+
collisionPadding: 8
|
|
18
18
|
});
|
|
19
19
|
|
|
20
20
|
// Emits
|
|
@@ -25,15 +25,15 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);
|
|
|
25
25
|
</script>
|
|
26
26
|
|
|
27
27
|
<template>
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
28
|
+
<DropdownMenuPortal>
|
|
29
|
+
<DropdownMenuSubContent data-slot="dropdown-menu-sub-content" v-bind="{ ...$attrs, ...forwarded }" :class="cn(
|
|
30
|
+
dropdownMenuSurfaceClass,
|
|
31
|
+
'max-h-(--reka-dropdown-menu-content-available-height)',
|
|
32
|
+
dropdownMenuStaggerClass,
|
|
33
|
+
props.class
|
|
34
|
+
)
|
|
35
|
+
">
|
|
36
|
+
<slot />
|
|
37
|
+
</DropdownMenuSubContent>
|
|
38
|
+
</DropdownMenuPortal>
|
|
39
39
|
</template>
|
|
@@ -10,8 +10,8 @@ import { dropdownMenuItemClass } from './classes';
|
|
|
10
10
|
|
|
11
11
|
// Props
|
|
12
12
|
const props = defineProps<DropdownMenuSubTriggerProps & {
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
class?: HTMLAttributes['class'];
|
|
14
|
+
inset?: boolean;
|
|
15
15
|
}>();
|
|
16
16
|
|
|
17
17
|
const delegatedProps = reactiveOmit(props, 'class', 'inset');
|
|
@@ -19,18 +19,18 @@ const forwardedProps = useForwardProps(delegatedProps);
|
|
|
19
19
|
</script>
|
|
20
20
|
|
|
21
21
|
<template>
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
22
|
+
<DropdownMenuSubTrigger data-slot="dropdown-menu-sub-trigger" :data-inset="props.inset ? '' : undefined" v-bind="forwardedProps" :class="cn(
|
|
23
|
+
'group/dropdown-sub-trigger',
|
|
24
|
+
dropdownMenuItemClass,
|
|
25
|
+
'data-[state=open]:bg-accent data-[state=open]:text-foreground data-[state=open]:before:scale-y-100',
|
|
26
|
+
props.class
|
|
27
|
+
)
|
|
28
|
+
">
|
|
29
|
+
<slot />
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
<!-- Chevron nudges right while the sub menu is open -->
|
|
32
|
+
<span class="ml-auto flex items-center transition-transform duration-300 ease-spring group-data-[state=open]/dropdown-sub-trigger:translate-x-1">
|
|
33
|
+
<HugeiconsIcon :icon="ArrowRight01Icon" class="size-4 opacity-60" />
|
|
34
|
+
</span>
|
|
35
|
+
</DropdownMenuSubTrigger>
|
|
36
36
|
</template>
|
|
@@ -9,7 +9,7 @@ const forwardedProps = useForwardProps(props);
|
|
|
9
9
|
</script>
|
|
10
10
|
|
|
11
11
|
<template>
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
<DropdownMenuTrigger data-slot="dropdown-menu-trigger" v-bind="forwardedProps">
|
|
13
|
+
<slot />
|
|
14
|
+
</DropdownMenuTrigger>
|
|
15
15
|
</template>
|
|
@@ -3,24 +3,24 @@ export const dropdownMenuSurfaceClass = 'uv-floating-motion bg-popover text-popo
|
|
|
3
3
|
|
|
4
4
|
// Lightweight entrance stagger for the first ~8 direct children (runs once on open, not on highlight)
|
|
5
5
|
export const dropdownMenuStaggerClass = [
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
6
|
+
'[&[data-state=open]>*]:animate-[uv-float-in_240ms_var(--ease-out-expo)_both] [&>*]:[--uv-float-offset:-3px]',
|
|
7
|
+
'[&[data-state=open]>*:nth-child(2)]:[animation-delay:16ms]',
|
|
8
|
+
'[&[data-state=open]>*:nth-child(3)]:[animation-delay:32ms]',
|
|
9
|
+
'[&[data-state=open]>*:nth-child(4)]:[animation-delay:48ms]',
|
|
10
|
+
'[&[data-state=open]>*:nth-child(5)]:[animation-delay:64ms]',
|
|
11
|
+
'[&[data-state=open]>*:nth-child(6)]:[animation-delay:80ms]',
|
|
12
|
+
'[&[data-state=open]>*:nth-child(7)]:[animation-delay:96ms]',
|
|
13
|
+
'[&[data-state=open]>*:nth-child(8)]:[animation-delay:112ms]',
|
|
14
|
+
'[&[data-state=open]>*:nth-child(n+9)]:[animation-delay:128ms]'
|
|
15
15
|
].join(' ');
|
|
16
16
|
|
|
17
17
|
// Shared item classes (items, checkbox/radio items, sub triggers)
|
|
18
18
|
export const dropdownMenuItemClass = [
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
'relative flex cursor-pointer items-center gap-3 rounded px-3 py-2 text-xs font-semibold text-muted-foreground outline-hidden select-none transition-colors duration-150 sm:text-sm',
|
|
20
|
+
'data-highlighted:bg-accent data-highlighted:text-foreground data-disabled:pointer-events-none data-disabled:opacity-50 data-inset:pl-9',
|
|
21
|
+
'[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\'size-\'])]:size-4',
|
|
22
|
+
// A primary bar springs onto the highlighted item, like in the command palette
|
|
23
|
+
'before:absolute before:inset-y-1.5 before:left-0 before:w-0.5 before:scale-y-0 before:rounded-full before:bg-primary before:transition-transform before:duration-300 before:ease-spring data-highlighted:before:scale-y-100',
|
|
24
|
+
// Leading icons nudge slightly when the item is highlighted
|
|
25
|
+
'[&>svg]:transition-transform [&>svg]:duration-300 [&>svg]:ease-spring [&[data-highlighted]>svg]:translate-x-0.5 [&[data-highlighted]>svg]:scale-110'
|
|
26
26
|
].join(' ');
|
|
@@ -7,8 +7,8 @@ import { provideFieldContext } from './field-context';
|
|
|
7
7
|
|
|
8
8
|
// Props
|
|
9
9
|
const props = defineProps<{
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
class?: HTMLAttributes['class'];
|
|
11
|
+
orientation?: FieldVariants['orientation'];
|
|
12
12
|
}>();
|
|
13
13
|
|
|
14
14
|
// Let FieldLabel point to the control placed in this field
|
|
@@ -16,7 +16,7 @@ provideFieldContext();
|
|
|
16
16
|
</script>
|
|
17
17
|
|
|
18
18
|
<template>
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
<div role="group" data-slot="field" :data-orientation="orientation" :class="cn(fieldVariants({ orientation }), props.class)">
|
|
20
|
+
<slot />
|
|
21
|
+
</div>
|
|
22
22
|
</template>
|
|
@@ -4,16 +4,16 @@ import { cn } from '../../../lib/utils';
|
|
|
4
4
|
|
|
5
5
|
// Props
|
|
6
6
|
const props = defineProps<{
|
|
7
|
-
|
|
7
|
+
class?: HTMLAttributes['class'];
|
|
8
8
|
}>();
|
|
9
9
|
</script>
|
|
10
10
|
|
|
11
11
|
<template>
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
<div data-slot="field-content" :class="cn(
|
|
13
|
+
'group/field-content flex flex-1 flex-col gap-1.5 leading-snug',
|
|
14
|
+
props.class
|
|
15
|
+
)
|
|
16
|
+
">
|
|
17
|
+
<slot />
|
|
18
|
+
</div>
|
|
19
19
|
</template>
|
|
@@ -4,18 +4,18 @@ import { cn } from '../../../lib/utils';
|
|
|
4
4
|
|
|
5
5
|
// Props
|
|
6
6
|
const props = defineProps<{
|
|
7
|
-
|
|
7
|
+
class?: HTMLAttributes['class'];
|
|
8
8
|
}>();
|
|
9
9
|
</script>
|
|
10
10
|
|
|
11
11
|
<template>
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
12
|
+
<p data-slot="field-description" :class="cn(
|
|
13
|
+
'text-xs leading-5 font-normal text-muted-foreground group-has-data-[orientation=horizontal]/field:text-balance',
|
|
14
|
+
'last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5',
|
|
15
|
+
'[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4',
|
|
16
|
+
props.class
|
|
17
|
+
)
|
|
18
|
+
">
|
|
19
|
+
<slot />
|
|
20
|
+
</p>
|
|
21
21
|
</template>
|
|
@@ -5,50 +5,50 @@ import { cn } from '../../../lib/utils';
|
|
|
5
5
|
|
|
6
6
|
// Props
|
|
7
7
|
const props = defineProps<{
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
class?: HTMLAttributes['class'];
|
|
9
|
+
errors?: Array<string | { message: string | undefined } | undefined>;
|
|
10
10
|
}>();
|
|
11
11
|
|
|
12
12
|
const content = computed(() => {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
13
|
+
if (!props.errors || props.errors.length === 0) return null;
|
|
14
|
+
|
|
15
|
+
const uniqueErrors = [
|
|
16
|
+
...new Map(
|
|
17
|
+
props.errors.filter(Boolean).map((error) => {
|
|
18
|
+
const message =
|
|
19
|
+
typeof error === 'string' ? error : error?.message;
|
|
20
|
+
return [message, error];
|
|
21
|
+
})
|
|
22
|
+
).values()
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
// Nothing to show when every entry is empty
|
|
26
|
+
if (uniqueErrors.length === 0) return null;
|
|
27
|
+
|
|
28
|
+
if (uniqueErrors.length === 1 && uniqueErrors[0]) {
|
|
29
|
+
return typeof uniqueErrors[0] === 'string'
|
|
30
|
+
? uniqueErrors[0]
|
|
31
|
+
: uniqueErrors[0].message;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return uniqueErrors.map((error) =>
|
|
35
|
+
typeof error === 'string' ? error : error?.message
|
|
36
|
+
);
|
|
37
37
|
});
|
|
38
38
|
</script>
|
|
39
39
|
|
|
40
40
|
<template>
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
41
|
+
<div v-if="$slots.default || content" role="alert" data-slot="field-error" :class="cn('text-destructive animate-[uv-fade-up_0.3s_var(--ease-out-expo)_both] text-xs font-normal', props.class)">
|
|
42
|
+
<slot v-if="$slots.default" />
|
|
43
|
+
|
|
44
|
+
<template v-else-if="typeof content === 'string'">
|
|
45
|
+
{{ content }}
|
|
46
|
+
</template>
|
|
47
|
+
|
|
48
|
+
<ul v-else-if="Array.isArray(content)" class="ml-4 flex list-disc flex-col gap-1">
|
|
49
|
+
<li v-for="(error, index) in content" :key="index">
|
|
50
|
+
{{ error }}
|
|
51
|
+
</li>
|
|
52
|
+
</ul>
|
|
53
|
+
</div>
|
|
54
54
|
</template>
|
|
@@ -4,16 +4,16 @@ import { cn } from '../../../lib/utils';
|
|
|
4
4
|
|
|
5
5
|
// Props
|
|
6
6
|
const props = defineProps<{
|
|
7
|
-
|
|
7
|
+
class?: HTMLAttributes['class'];
|
|
8
8
|
}>();
|
|
9
9
|
</script>
|
|
10
10
|
|
|
11
11
|
<template>
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
<div data-slot="field-group" :class="cn(
|
|
13
|
+
'group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4',
|
|
14
|
+
props.class
|
|
15
|
+
)
|
|
16
|
+
">
|
|
17
|
+
<slot />
|
|
18
|
+
</div>
|
|
19
19
|
</template>
|
|
@@ -6,7 +6,7 @@ import { useFieldLabel } from './field-context';
|
|
|
6
6
|
|
|
7
7
|
// Props
|
|
8
8
|
const props = defineProps<{
|
|
9
|
-
|
|
9
|
+
class?: HTMLAttributes['class'];
|
|
10
10
|
}>();
|
|
11
11
|
|
|
12
12
|
// Point to the control of the surrounding Field (an explicit for attribute still wins)
|
|
@@ -14,13 +14,13 @@ const { labelId, target: labelTarget } = useFieldLabel();
|
|
|
14
14
|
</script>
|
|
15
15
|
|
|
16
16
|
<template>
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
17
|
+
<Label :id="labelId" data-slot="field-label" :for="labelTarget" :class="cn(
|
|
18
|
+
'group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50',
|
|
19
|
+
'has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded has-[>[data-slot=field]]:border *:data-[slot=field]:p-4',
|
|
20
|
+
'has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10',
|
|
21
|
+
props.class
|
|
22
|
+
)
|
|
23
|
+
">
|
|
24
|
+
<slot />
|
|
25
|
+
</Label>
|
|
26
26
|
</template>
|