@brumaombra/ui-vintage 0.7.8 → 0.7.9
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/README.md +308 -48
- package/module.mjs +1 -1
- package/package.json +2 -1
- package/src/components/background-grid/BackgroundGrid.vue +11 -2
- package/src/components/background-grid/index.ts +2 -2
- package/src/components/blog/AllPostsSection.vue +25 -9
- package/src/components/blog/BlogFAQSection.vue +8 -3
- package/src/components/blog/BlogHeaderSection.vue +14 -11
- package/src/components/blog/BlogInfoSection.vue +13 -11
- package/src/components/blog/BlogSectionTitle.vue +5 -5
- package/src/components/blog/CategoriesList.vue +11 -3
- package/src/components/blog/CategoriesSection.vue +11 -3
- package/src/components/blog/CategoryCard.vue +10 -8
- package/src/components/blog/HeaderCarousel.vue +24 -15
- package/src/components/blog/PostCard.vue +16 -11
- package/src/components/blog/PostsList.vue +12 -3
- package/src/components/blog/SocialShareSidebar.vue +11 -11
- package/src/components/blog/TableOfContents.vue +29 -13
- package/src/components/busy-indicator/BusyIndicator.vue +2 -2
- package/src/components/busy-indicator/busy-indicator-state.ts +11 -12
- package/src/components/busy-indicator/index.ts +3 -3
- package/src/components/card-grid/CardGrid.vue +25 -11
- package/src/components/chip/Chip.vue +15 -15
- package/src/components/chip/index.ts +2 -2
- package/src/components/confirm-dialog/ConfirmDialog.vue +9 -9
- package/src/components/confirm-dialog/confirm-dialog-state.ts +15 -14
- package/src/components/confirm-dialog/index.ts +3 -12
- package/src/components/content/BlogList.vue +11 -8
- package/src/components/content/BlogTable.vue +18 -14
- package/src/components/content/ProseHr.vue +10 -7
- package/src/components/content/Terminal.vue +70 -0
- package/src/components/content/index.ts +2 -1
- package/src/components/dashboard-shell/DashboardShell.vue +43 -64
- package/src/components/dashboard-shell/index.ts +2 -2
- package/src/components/data-list/DataList.vue +11 -13
- package/src/components/data-list/DataListItem.vue +9 -11
- package/src/components/data-list/DataListLabel.vue +9 -11
- package/src/components/data-list/DataListText.vue +9 -11
- package/src/components/data-list/DataListValue.vue +9 -11
- package/src/components/data-list/index.ts +5 -5
- package/src/components/empty-state-card/EmptyStateCard.vue +21 -11
- package/src/components/error-page/ErrorPage.vue +24 -27
- package/src/components/error-page/index.ts +2 -2
- package/src/components/info-card/InfoCard.vue +17 -11
- package/src/components/landing/index.ts +6 -6
- package/src/components/landing/landing-content/LandingContent.vue +5 -7
- package/src/components/landing/landing-content/index.ts +2 -2
- package/src/components/landing/landing-footer/LandingFooter.vue +26 -29
- package/src/components/landing/landing-footer/index.ts +3 -3
- package/src/components/landing/landing-navbar/LandingNavbar.vue +15 -17
- package/src/components/landing/landing-navbar/index.ts +2 -2
- package/src/components/landing/landing-shell/LandingShell.vue +10 -13
- package/src/components/landing/landing-shell/index.ts +2 -2
- package/src/components/language-flag/LanguageFlag.vue +6 -5
- package/src/components/language-flag/index.ts +1 -0
- package/src/components/language-selector/LanguageSelector.vue +20 -21
- package/src/components/load-more-button/LoadMoreButton.vue +18 -14
- package/src/components/loading-state-card/LoadingStateCard.vue +13 -9
- package/src/components/message-dialog/MessageDialog.vue +19 -19
- package/src/components/message-dialog/index.ts +3 -11
- package/src/components/message-dialog/message-dialog-state.ts +12 -11
- package/src/components/message-toast/MessageToast.vue +16 -16
- package/src/components/message-toast/index.ts +2 -9
- package/src/components/message-toast/message-toast-state.ts +9 -9
- package/src/components/page-header/PageHeader.vue +8 -5
- package/src/components/progress-component/ProgressComponent.vue +13 -10
- package/src/components/single-value-card/SingleValueCard.vue +22 -19
- package/src/components/slider-form-component/SliderFormComponent.vue +11 -20
- package/src/components/slider-form-component/index.ts +2 -2
- package/src/components/switch-form-component/SwitchFormComponent.vue +7 -9
- package/src/components/switch-form-component/index.ts +2 -2
- package/src/components/text-link/TextLink.vue +11 -7
- package/src/components/ui/accordion/Accordion.vue +10 -13
- package/src/components/ui/accordion/index.ts +1 -1
- package/src/components/ui/alert/Alert.vue +11 -10
- package/src/components/ui/alert/AlertDescription.vue +9 -8
- package/src/components/ui/alert/AlertTitle.vue +9 -8
- package/src/components/ui/alert/index.ts +10 -10
- package/src/components/ui/alert-dialog/AlertDialog.vue +13 -9
- package/src/components/ui/alert-dialog/AlertDialogAction.vue +14 -12
- package/src/components/ui/alert-dialog/AlertDialogCancel.vue +14 -16
- package/src/components/ui/alert-dialog/AlertDialogContent.vue +24 -27
- package/src/components/ui/alert-dialog/AlertDialogDescription.vue +13 -13
- package/src/components/ui/alert-dialog/AlertDialogFooter.vue +9 -12
- package/src/components/ui/alert-dialog/AlertDialogHeader.vue +9 -8
- package/src/components/ui/alert-dialog/AlertDialogTitle.vue +13 -11
- package/src/components/ui/alert-dialog/AlertDialogTrigger.vue +8 -7
- package/src/components/ui/alert-dialog/index.ts +9 -9
- package/src/components/ui/badge/Badge.vue +11 -12
- package/src/components/ui/badge/index.ts +1 -1
- package/src/components/ui/breadcrumb/Breadcrumb.vue +9 -12
- package/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue +15 -19
- package/src/components/ui/breadcrumb/BreadcrumbItem.vue +10 -12
- package/src/components/ui/breadcrumb/BreadcrumbLink.vue +13 -17
- package/src/components/ui/breadcrumb/BreadcrumbList.vue +10 -12
- package/src/components/ui/breadcrumb/BreadcrumbPage.vue +10 -15
- package/src/components/ui/breadcrumb/BreadcrumbSeparator.vue +14 -18
- package/src/components/ui/breadcrumb/index.ts +7 -7
- package/src/components/ui/busy/Busy.vue +36 -29
- package/src/components/ui/busy/index.ts +1 -1
- package/src/components/ui/button/Button.vue +18 -19
- package/src/components/ui/button/index.ts +54 -35
- package/src/components/ui/calendar/Calendar.vue +167 -121
- package/src/components/ui/calendar/CalendarCell.vue +18 -17
- package/src/components/ui/calendar/CalendarCellTrigger.vue +31 -33
- package/src/components/ui/calendar/CalendarGrid.vue +14 -17
- package/src/components/ui/calendar/CalendarGridBody.vue +9 -11
- package/src/components/ui/calendar/CalendarGridHead.vue +10 -12
- package/src/components/ui/calendar/CalendarGridRow.vue +14 -16
- package/src/components/ui/calendar/CalendarHeadCell.vue +18 -17
- package/src/components/ui/calendar/CalendarHeader.vue +18 -17
- package/src/components/ui/calendar/CalendarHeading.vue +18 -22
- package/src/components/ui/calendar/CalendarNextButton.vue +29 -26
- package/src/components/ui/calendar/CalendarPrevButton.vue +29 -26
- package/src/components/ui/calendar/index.ts +17 -13
- package/src/components/ui/card/Card.vue +21 -13
- package/src/components/ui/card/CardAction.vue +12 -7
- package/src/components/ui/card/CardContent.vue +8 -7
- package/src/components/ui/card/CardDescription.vue +16 -7
- package/src/components/ui/card/CardFooter.vue +8 -7
- package/src/components/ui/card/CardHeader.vue +12 -7
- package/src/components/ui/card/CardText.vue +12 -7
- package/src/components/ui/card/CardTitle.vue +9 -7
- package/src/components/ui/card/index.ts +8 -8
- package/src/components/ui/command/Command.vue +71 -61
- package/src/components/ui/command/CommandDialog.vue +33 -23
- package/src/components/ui/command/CommandEmpty.vue +19 -20
- package/src/components/ui/command/CommandGroup.vue +32 -35
- package/src/components/ui/command/CommandInput.vue +25 -21
- package/src/components/ui/command/CommandItem.vue +62 -59
- package/src/components/ui/command/CommandList.vue +21 -18
- package/src/components/ui/command/CommandSeparator.vue +13 -11
- package/src/components/ui/command/CommandShortcut.vue +13 -8
- package/src/components/ui/command/index.ts +24 -20
- package/src/components/ui/date-picker/DatePicker.vue +46 -37
- package/src/components/ui/date-picker/index.ts +2 -2
- package/src/components/ui/date-time-picker/DateTimePicker.vue +99 -95
- package/src/components/ui/date-time-picker/index.ts +2 -2
- package/src/components/ui/dialog/Dialog.vue +12 -9
- package/src/components/ui/dialog/DialogClose.vue +8 -10
- package/src/components/ui/dialog/DialogContent.vue +36 -42
- package/src/components/ui/dialog/DialogDescription.vue +16 -11
- package/src/components/ui/dialog/DialogFooter.vue +13 -12
- package/src/components/ui/dialog/DialogHeader.vue +9 -8
- package/src/components/ui/dialog/DialogOverlay.vue +16 -11
- package/src/components/ui/dialog/DialogScrollContent.vue +47 -45
- package/src/components/ui/dialog/DialogTitle.vue +13 -12
- package/src/components/ui/dialog/DialogTrigger.vue +8 -7
- package/src/components/ui/dialog/index.ts +10 -10
- package/src/components/ui/field/Field.vue +12 -14
- package/src/components/ui/field/FieldContent.vue +13 -11
- package/src/components/ui/field/FieldDescription.vue +15 -13
- package/src/components/ui/field/FieldError.vue +43 -40
- package/src/components/ui/field/FieldGroup.vue +13 -11
- package/src/components/ui/field/FieldLabel.vue +16 -14
- package/src/components/ui/field/FieldLegend.vue +16 -14
- package/src/components/ui/field/FieldSeparator.vue +17 -15
- package/src/components/ui/field/FieldSet.vue +14 -12
- package/src/components/ui/field/FieldTitle.vue +13 -11
- package/src/components/ui/field/index.ts +36 -36
- package/src/components/ui/input/Input.vue +23 -20
- package/src/components/ui/input/index.ts +1 -1
- package/src/components/ui/label/Label.vue +16 -15
- package/src/components/ui/label/index.ts +1 -1
- package/src/components/ui/native-select/NativeSelect.vue +31 -41
- package/src/components/ui/native-select/NativeSelectOptGroup.vue +8 -7
- package/src/components/ui/native-select/NativeSelectOption.vue +8 -7
- package/src/components/ui/native-select/index.ts +3 -3
- package/src/components/ui/popover/Popover.vue +12 -9
- package/src/components/ui/popover/PopoverAnchor.vue +8 -7
- package/src/components/ui/popover/PopoverContent.vue +27 -31
- package/src/components/ui/popover/PopoverTrigger.vue +8 -7
- package/src/components/ui/popover/index.ts +4 -4
- package/src/components/ui/progress/Progress.vue +18 -32
- package/src/components/ui/progress/index.ts +1 -1
- package/src/components/ui/scroll-area/ScrollArea.vue +23 -26
- package/src/components/ui/scroll-area/ScrollBar.vue +22 -26
- package/src/components/ui/scroll-area/index.ts +2 -2
- package/src/components/ui/select/Select.vue +12 -9
- package/src/components/ui/select/SelectContent.vue +39 -40
- package/src/components/ui/select/SelectGroup.vue +8 -7
- package/src/components/ui/select/SelectItem.vue +36 -41
- package/src/components/ui/select/SelectItemContent.vue +22 -15
- package/src/components/ui/select/SelectItemText.vue +8 -7
- package/src/components/ui/select/SelectLabel.vue +10 -9
- package/src/components/ui/select/SelectScrollDownButton.vue +21 -17
- package/src/components/ui/select/SelectScrollUpButton.vue +21 -17
- package/src/components/ui/select/SelectSeparator.vue +11 -9
- package/src/components/ui/select/SelectTrigger.vue +27 -25
- package/src/components/ui/select/SelectValue.vue +8 -7
- package/src/components/ui/select/SelectValueContent.vue +30 -18
- package/src/components/ui/select/index.ts +13 -13
- package/src/components/ui/separator/Separator.vue +17 -18
- package/src/components/ui/separator/index.ts +1 -1
- package/src/components/ui/sheet/Sheet.vue +12 -9
- package/src/components/ui/sheet/SheetClose.vue +8 -7
- package/src/components/ui/sheet/SheetContent.vue +36 -37
- package/src/components/ui/sheet/SheetDescription.vue +12 -11
- package/src/components/ui/sheet/SheetFooter.vue +8 -7
- package/src/components/ui/sheet/SheetHeader.vue +8 -7
- package/src/components/ui/sheet/SheetOverlay.vue +16 -11
- package/src/components/ui/sheet/SheetTitle.vue +12 -11
- package/src/components/ui/sheet/SheetTrigger.vue +8 -7
- package/src/components/ui/sheet/index.ts +8 -8
- package/src/components/ui/sidebar/Sidebar.vue +68 -61
- package/src/components/ui/sidebar/SidebarContent.vue +13 -8
- package/src/components/ui/sidebar/SidebarFooter.vue +13 -8
- package/src/components/ui/sidebar/SidebarGroup.vue +13 -8
- package/src/components/ui/sidebar/SidebarGroupAction.vue +16 -16
- package/src/components/ui/sidebar/SidebarGroupContent.vue +9 -8
- package/src/components/ui/sidebar/SidebarGroupLabel.vue +15 -14
- package/src/components/ui/sidebar/SidebarHeader.vue +13 -8
- package/src/components/ui/sidebar/SidebarInput.vue +14 -12
- package/src/components/ui/sidebar/SidebarInset.vue +14 -12
- package/src/components/ui/sidebar/SidebarMenu.vue +9 -8
- package/src/components/ui/sidebar/SidebarMenuAction.vue +25 -23
- package/src/components/ui/sidebar/SidebarMenuBadge.vue +19 -17
- package/src/components/ui/sidebar/SidebarMenuButton.vue +33 -32
- package/src/components/ui/sidebar/SidebarMenuButtonChild.vue +19 -18
- package/src/components/ui/sidebar/SidebarMenuItem.vue +9 -8
- package/src/components/ui/sidebar/SidebarMenuSkeleton.vue +17 -12
- package/src/components/ui/sidebar/SidebarMenuSub.vue +14 -12
- package/src/components/ui/sidebar/SidebarMenuSubButton.vue +24 -21
- package/src/components/ui/sidebar/SidebarMenuSubItem.vue +9 -8
- package/src/components/ui/sidebar/SidebarProvider.vue +63 -53
- package/src/components/ui/sidebar/SidebarRail.vue +20 -18
- package/src/components/ui/sidebar/SidebarSeparator.vue +10 -9
- package/src/components/ui/sidebar/SidebarTrigger.vue +15 -14
- package/src/components/ui/sidebar/index.ts +62 -58
- package/src/components/ui/sidebar/utils.ts +16 -16
- package/src/components/ui/skeleton/Skeleton.vue +12 -9
- package/src/components/ui/skeleton/index.ts +1 -1
- package/src/components/ui/slider/Slider.vue +24 -19
- package/src/components/ui/slider/index.ts +1 -1
- package/src/components/ui/switch/Switch.vue +26 -23
- package/src/components/ui/switch/index.ts +1 -1
- package/src/components/ui/table/Table.vue +11 -10
- package/src/components/ui/table/TableBody.vue +9 -11
- package/src/components/ui/table/TableCaption.vue +9 -11
- package/src/components/ui/table/TableCell.vue +13 -16
- package/src/components/ui/table/TableEmpty.vue +22 -25
- package/src/components/ui/table/TableFooter.vue +13 -11
- package/src/components/ui/table/TableHead.vue +13 -11
- package/src/components/ui/table/TableHeader.vue +9 -11
- package/src/components/ui/table/TableRow.vue +13 -11
- package/src/components/ui/table/index.ts +9 -9
- package/src/components/ui/tabs/Tabs.vue +18 -18
- package/src/components/ui/tabs/TabsContent.vue +14 -15
- package/src/components/ui/tabs/TabsList.vue +18 -18
- package/src/components/ui/tabs/TabsTrigger.vue +19 -20
- package/src/components/ui/tabs/index.ts +4 -4
- package/src/components/ui/textarea/Textarea.vue +23 -20
- package/src/components/ui/textarea/index.ts +1 -1
- package/src/components/ui/time-picker/TimePicker.vue +33 -38
- package/src/components/ui/time-picker/index.ts +2 -2
- package/src/components/ui/tooltip/Tooltip.vue +12 -9
- package/src/components/ui/tooltip/TooltipContent.vue +28 -20
- package/src/components/ui/tooltip/TooltipProvider.vue +9 -8
- package/src/components/ui/tooltip/TooltipTrigger.vue +8 -7
- package/src/components/ui/tooltip/index.ts +4 -4
- package/src/i18n/de.json +5 -0
- package/src/i18n/en.json +5 -0
- package/src/i18n/es.json +5 -0
- package/src/i18n/fr.json +5 -0
- package/src/i18n/it.json +5 -0
- package/src/i18n/ja.json +5 -0
- package/src/i18n/pt.json +5 -0
- package/src/i18n/ru.json +5 -0
- package/src/i18n/zh.json +5 -0
- package/src/lib/common-types.ts +2 -0
- package/src/lib/i18n.ts +0 -5
- package/src/runtime/{ui-vintage-i18n-plugin.js → ui-vintage-i18n-plugin.ts} +30 -8
|
@@ -1,64 +1,68 @@
|
|
|
1
|
-
import type { ClassProp } from
|
|
2
|
-
import type { HTMLAttributes } from
|
|
3
|
-
import { cva } from
|
|
1
|
+
import type { ClassProp } from 'class-variance-authority/types';
|
|
2
|
+
import type { HTMLAttributes } from 'vue';
|
|
3
|
+
import { cva } from 'class-variance-authority';
|
|
4
4
|
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
5
|
+
export { default as Sidebar } from './Sidebar.vue';
|
|
6
|
+
export { default as SidebarContent } from './SidebarContent.vue';
|
|
7
|
+
export { default as SidebarFooter } from './SidebarFooter.vue';
|
|
8
|
+
export { default as SidebarGroup } from './SidebarGroup.vue';
|
|
9
|
+
export { default as SidebarGroupAction } from './SidebarGroupAction.vue';
|
|
10
|
+
export { default as SidebarGroupContent } from './SidebarGroupContent.vue';
|
|
11
|
+
export { default as SidebarGroupLabel } from './SidebarGroupLabel.vue';
|
|
12
|
+
export { default as SidebarHeader } from './SidebarHeader.vue';
|
|
13
|
+
export { default as SidebarInput } from './SidebarInput.vue';
|
|
14
|
+
export { default as SidebarInset } from './SidebarInset.vue';
|
|
15
|
+
export { default as SidebarMenu } from './SidebarMenu.vue';
|
|
16
|
+
export { default as SidebarMenuAction } from './SidebarMenuAction.vue';
|
|
17
|
+
export { default as SidebarMenuBadge } from './SidebarMenuBadge.vue';
|
|
18
|
+
export { default as SidebarMenuButton } from './SidebarMenuButton.vue';
|
|
19
|
+
export { default as SidebarMenuItem } from './SidebarMenuItem.vue';
|
|
20
|
+
export { default as SidebarMenuSkeleton } from './SidebarMenuSkeleton.vue';
|
|
21
|
+
export { default as SidebarMenuSub } from './SidebarMenuSub.vue';
|
|
22
|
+
export { default as SidebarMenuSubButton } from './SidebarMenuSubButton.vue';
|
|
23
|
+
export { default as SidebarMenuSubItem } from './SidebarMenuSubItem.vue';
|
|
24
|
+
export { default as SidebarProvider } from './SidebarProvider.vue';
|
|
25
|
+
export { default as SidebarRail } from './SidebarRail.vue';
|
|
26
|
+
export { default as SidebarSeparator } from './SidebarSeparator.vue';
|
|
27
|
+
export { default as SidebarTrigger } from './SidebarTrigger.vue';
|
|
12
28
|
|
|
13
|
-
export {
|
|
14
|
-
export { default as SidebarContent } from "./SidebarContent.vue"
|
|
15
|
-
export { default as SidebarFooter } from "./SidebarFooter.vue"
|
|
16
|
-
export { default as SidebarGroup } from "./SidebarGroup.vue"
|
|
17
|
-
export { default as SidebarGroupAction } from "./SidebarGroupAction.vue"
|
|
18
|
-
export { default as SidebarGroupContent } from "./SidebarGroupContent.vue"
|
|
19
|
-
export { default as SidebarGroupLabel } from "./SidebarGroupLabel.vue"
|
|
20
|
-
export { default as SidebarHeader } from "./SidebarHeader.vue"
|
|
21
|
-
export { default as SidebarInput } from "./SidebarInput.vue"
|
|
22
|
-
export { default as SidebarInset } from "./SidebarInset.vue"
|
|
23
|
-
export { default as SidebarMenu } from "./SidebarMenu.vue"
|
|
24
|
-
export { default as SidebarMenuAction } from "./SidebarMenuAction.vue"
|
|
25
|
-
export { default as SidebarMenuBadge } from "./SidebarMenuBadge.vue"
|
|
26
|
-
export { default as SidebarMenuButton } from "./SidebarMenuButton.vue"
|
|
27
|
-
export { default as SidebarMenuItem } from "./SidebarMenuItem.vue"
|
|
28
|
-
export { default as SidebarMenuSkeleton } from "./SidebarMenuSkeleton.vue"
|
|
29
|
-
export { default as SidebarMenuSub } from "./SidebarMenuSub.vue"
|
|
30
|
-
export { default as SidebarMenuSubButton } from "./SidebarMenuSubButton.vue"
|
|
31
|
-
export { default as SidebarMenuSubItem } from "./SidebarMenuSubItem.vue"
|
|
32
|
-
export { default as SidebarProvider } from "./SidebarProvider.vue"
|
|
33
|
-
export { default as SidebarRail } from "./SidebarRail.vue"
|
|
34
|
-
export { default as SidebarSeparator } from "./SidebarSeparator.vue"
|
|
35
|
-
export { default as SidebarTrigger } from "./SidebarTrigger.vue"
|
|
29
|
+
export { useSidebar } from './utils';
|
|
36
30
|
|
|
37
|
-
export
|
|
31
|
+
export interface SidebarProps {
|
|
32
|
+
side?: 'left' | 'right';
|
|
33
|
+
variant?: 'sidebar' | 'floating' | 'inset';
|
|
34
|
+
collapsible?: 'offcanvas' | 'icon' | 'none';
|
|
35
|
+
compact?: boolean;
|
|
36
|
+
class?: HTMLAttributes['class'];
|
|
37
|
+
}
|
|
38
38
|
|
|
39
39
|
export type SidebarMenuButtonVariants = {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
40
|
+
variant?: 'default' | 'outline' | null | undefined;
|
|
41
|
+
size?: 'default' | 'sm' | 'lg' | null | undefined;
|
|
42
|
+
};
|
|
43
43
|
|
|
44
|
-
export const sidebarMenuButtonVariants: (
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
44
|
+
export const sidebarMenuButtonVariants: (
|
|
45
|
+
props?: SidebarMenuButtonVariants & ClassProp
|
|
46
|
+
) => string = cva(
|
|
47
|
+
'peer/menu-button flex w-full items-center gap-2 rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,min-height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-semibold data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! group-data-[compact=true]/sidebar-wrapper:gap-1.5 group-data-[compact=true]/sidebar-wrapper:p-2.5 group-data-[compact=true]/sidebar-wrapper:[&>svg]:size-3.5 [&>svg]:size-4 [&>svg]:shrink-0',
|
|
48
|
+
{
|
|
49
|
+
variants: {
|
|
50
|
+
variant: {
|
|
51
|
+
default:
|
|
52
|
+
'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',
|
|
53
|
+
outline:
|
|
54
|
+
'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]'
|
|
55
|
+
},
|
|
56
|
+
size: {
|
|
57
|
+
default:
|
|
58
|
+
'min-h-8 text-sm group-data-[compact=true]/sidebar-wrapper:min-h-7 group-data-[compact=true]/sidebar-wrapper:text-xs group-data-[compact=true]/sidebar-wrapper:py-3',
|
|
59
|
+
sm: 'min-h-7 text-xs group-data-[compact=true]/sidebar-wrapper:min-h-6 group-data-[compact=true]/sidebar-wrapper:py-2.5',
|
|
60
|
+
lg: 'min-h-12 text-sm group-data-[compact=true]/sidebar-wrapper:min-h-10 group-data-[collapsible=icon]:p-0!'
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
defaultVariants: {
|
|
64
|
+
variant: 'default',
|
|
65
|
+
size: 'default'
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
);
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import type { ComputedRef, Ref } from
|
|
2
|
-
import { createContext } from
|
|
1
|
+
import type { ComputedRef, Ref } from 'vue';
|
|
2
|
+
import { createContext } from 'reka-ui';
|
|
3
3
|
|
|
4
|
-
export const SIDEBAR_COOKIE_NAME =
|
|
5
|
-
export const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7
|
|
6
|
-
export const SIDEBAR_WIDTH =
|
|
7
|
-
export const SIDEBAR_WIDTH_MOBILE =
|
|
8
|
-
export const SIDEBAR_WIDTH_ICON =
|
|
9
|
-
export const SIDEBAR_KEYBOARD_SHORTCUT =
|
|
4
|
+
export const SIDEBAR_COOKIE_NAME = 'sidebar_state';
|
|
5
|
+
export const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
6
|
+
export const SIDEBAR_WIDTH = '16rem';
|
|
7
|
+
export const SIDEBAR_WIDTH_MOBILE = '18rem';
|
|
8
|
+
export const SIDEBAR_WIDTH_ICON = '3rem';
|
|
9
|
+
export const SIDEBAR_KEYBOARD_SHORTCUT = 'b';
|
|
10
10
|
|
|
11
11
|
export const [useSidebar, provideSidebarContext] = createContext<{
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}>(
|
|
12
|
+
state: ComputedRef<'expanded' | 'collapsed'>;
|
|
13
|
+
open: Ref<boolean>;
|
|
14
|
+
setOpen: (value: boolean) => void;
|
|
15
|
+
isMobile: Ref<boolean>;
|
|
16
|
+
openMobile: Ref<boolean>;
|
|
17
|
+
setOpenMobile: (value: boolean) => void;
|
|
18
|
+
toggleSidebar: () => void;
|
|
19
|
+
}>('Sidebar');
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import type { HTMLAttributes } from
|
|
3
|
-
import { cn } from
|
|
2
|
+
import type { HTMLAttributes } from 'vue';
|
|
3
|
+
import { cn } from '../../../lib/utils';
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const props = defineProps<SkeletonProps>()
|
|
5
|
+
// Props
|
|
6
|
+
const props = defineProps<{
|
|
7
|
+
class?: HTMLAttributes['class'];
|
|
8
|
+
}>();
|
|
10
9
|
</script>
|
|
11
10
|
|
|
12
11
|
<template>
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
<div data-slot="skeleton" :class="cn(
|
|
13
|
+
props.class,
|
|
14
|
+
'animate-pulse rounded border border-(--border-light) bg-(--bg-surface-light) transition-colors duration-300 ease-in-out dark:border-(--border-dark) dark:bg-(--bg-surface-dark)'
|
|
15
|
+
)
|
|
16
|
+
" />
|
|
17
|
+
</template>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as Skeleton } from
|
|
1
|
+
export { default as Skeleton } from './Skeleton.vue';
|
|
@@ -1,27 +1,32 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import type { SliderRootEmits, SliderRootProps } from
|
|
3
|
-
import type { HTMLAttributes } from
|
|
4
|
-
import { reactiveOmit } from
|
|
5
|
-
import { SliderRange, SliderRoot, SliderThumb, SliderTrack, useForwardPropsEmits } from
|
|
6
|
-
import { cn } from
|
|
2
|
+
import type { SliderRootEmits, SliderRootProps } from 'reka-ui';
|
|
3
|
+
import type { HTMLAttributes } from 'vue';
|
|
4
|
+
import { reactiveOmit } from '@vueuse/core';
|
|
5
|
+
import { SliderRange, SliderRoot, SliderThumb, SliderTrack, useForwardPropsEmits } from 'reka-ui';
|
|
6
|
+
import { cn } from '../../../lib/utils';
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
const
|
|
8
|
+
// Props
|
|
9
|
+
const props = defineProps<SliderRootProps & {
|
|
10
|
+
class?: HTMLAttributes['class'];
|
|
11
|
+
}>();
|
|
10
12
|
|
|
11
|
-
|
|
13
|
+
// Emits
|
|
14
|
+
const emits = defineEmits<SliderRootEmits>();
|
|
12
15
|
|
|
13
|
-
const
|
|
16
|
+
const delegatedProps = reactiveOmit(props, 'class');
|
|
17
|
+
const forwarded = useForwardPropsEmits(delegatedProps, emits);
|
|
14
18
|
</script>
|
|
15
19
|
|
|
16
20
|
<template>
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
<SliderRoot v-slot="{ modelValue }" data-slot="slider" :class="cn(
|
|
22
|
+
'relative flex w-full cursor-pointer touch-none items-center select-none data-disabled:cursor-not-allowed data-disabled:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col',
|
|
23
|
+
props.class
|
|
24
|
+
)
|
|
25
|
+
" v-bind="forwarded">
|
|
26
|
+
<SliderTrack data-slot="slider-track" class="bg-muted relative grow overflow-hidden rounded data-[orientation=horizontal]:h-2 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-2">
|
|
27
|
+
<SliderRange data-slot="slider-range" class="bg-primary absolute data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full" />
|
|
28
|
+
</SliderTrack>
|
|
24
29
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
</template>
|
|
30
|
+
<SliderThumb v-for="(_, key) in modelValue" :key="key" data-slot="slider-thumb" class="bg-white border-primary ring-ring/50 block size-5 shrink-0 rounded border shadow-sm transition-[color,box-shadow,transform] hover:scale-105 hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50" />
|
|
31
|
+
</SliderRoot>
|
|
32
|
+
</template>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as Slider } from
|
|
1
|
+
export { default as Slider } from './Slider.vue';
|
|
@@ -1,30 +1,33 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import type { SwitchRootEmits, SwitchRootProps } from
|
|
3
|
-
import type { HTMLAttributes } from
|
|
4
|
-
import { reactiveOmit } from
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
SwitchThumb,
|
|
8
|
-
useForwardPropsEmits,
|
|
9
|
-
} from "reka-ui"
|
|
10
|
-
import { cn } from "../../../lib/utils"
|
|
2
|
+
import type { SwitchRootEmits, SwitchRootProps } from 'reka-ui';
|
|
3
|
+
import type { HTMLAttributes } from 'vue';
|
|
4
|
+
import { reactiveOmit } from '@vueuse/core';
|
|
5
|
+
import { SwitchRoot, SwitchThumb, useForwardPropsEmits } from 'reka-ui';
|
|
6
|
+
import { cn } from '../../../lib/utils';
|
|
11
7
|
|
|
12
|
-
|
|
8
|
+
// Props
|
|
9
|
+
const props = defineProps<SwitchRootProps & {
|
|
10
|
+
class?: HTMLAttributes['class'];
|
|
11
|
+
}>();
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
// Emits
|
|
14
|
+
const emits = defineEmits<SwitchRootEmits>();
|
|
15
15
|
|
|
16
|
-
const delegatedProps = reactiveOmit(props,
|
|
17
|
-
|
|
18
|
-
const forwarded = useForwardPropsEmits(delegatedProps, emits)
|
|
16
|
+
const delegatedProps = reactiveOmit(props, 'class');
|
|
17
|
+
const forwarded = useForwardPropsEmits(delegatedProps, emits);
|
|
19
18
|
</script>
|
|
20
19
|
|
|
21
20
|
<template>
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
21
|
+
<SwitchRoot v-slot="slotProps" data-slot="switch" v-bind="forwarded" :class="cn(
|
|
22
|
+
'peer relative inline-flex h-7 w-12 shrink-0 cursor-pointer items-center rounded border border-(--border-light) bg-(--button-secondary-light) transition-all duration-200 outline-none focus-visible:border-(--border-hover-light) focus-visible:ring-0 disabled:cursor-not-allowed disabled:opacity-60 data-[state=checked]:border-(--button-primary-light) data-[state=checked]:bg-(--bg-selected-light) dark:border-(--border-dark) dark:bg-(--button-secondary-dark) dark:focus-visible:border-(--border-hover-dark) dark:data-[state=checked]:border-(--button-primary-dark) dark:data-[state=checked]:bg-(--bg-selected-dark)',
|
|
23
|
+
props.class
|
|
24
|
+
)
|
|
25
|
+
">
|
|
26
|
+
<SwitchThumb data-slot="switch-thumb" :class="cn(
|
|
27
|
+
'pointer-events-none absolute left-1 top-1/2 block h-4 w-4 -translate-y-1/2 rounded-[0.2rem] bg-(--text-secondary-light) ring-0 transition-all duration-200 data-[state=checked]:translate-x-6 data-[state=checked]:bg-(--button-primary-light) dark:bg-(--text-secondary-dark) dark:data-[state=checked]:bg-(--button-primary-dark)'
|
|
28
|
+
)
|
|
29
|
+
">
|
|
30
|
+
<slot name="thumb" v-bind="slotProps" />
|
|
31
|
+
</SwitchThumb>
|
|
32
|
+
</SwitchRoot>
|
|
33
|
+
</template>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { default as Switch } from
|
|
1
|
+
export { default as Switch } from './Switch.vue';
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import type { HTMLAttributes } from
|
|
3
|
-
import { cn } from
|
|
2
|
+
import type { HTMLAttributes } from 'vue';
|
|
3
|
+
import { cn } from '../../../lib/utils';
|
|
4
4
|
|
|
5
|
+
// Props
|
|
5
6
|
const props = defineProps<{
|
|
6
|
-
|
|
7
|
-
}>()
|
|
7
|
+
class?: HTMLAttributes['class'];
|
|
8
|
+
}>();
|
|
8
9
|
</script>
|
|
9
10
|
|
|
10
11
|
<template>
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
</template>
|
|
12
|
+
<div data-slot="table-container" class="relative w-full overflow-auto">
|
|
13
|
+
<table data-slot="table" :class="cn('w-full caption-bottom text-sm', props.class)">
|
|
14
|
+
<slot />
|
|
15
|
+
</table>
|
|
16
|
+
</div>
|
|
17
|
+
</template>
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import type { HTMLAttributes } from
|
|
3
|
-
import { cn } from
|
|
2
|
+
import type { HTMLAttributes } from 'vue';
|
|
3
|
+
import { cn } from '../../../lib/utils';
|
|
4
4
|
|
|
5
|
+
// Props
|
|
5
6
|
const props = defineProps<{
|
|
6
|
-
|
|
7
|
-
}>()
|
|
7
|
+
class?: HTMLAttributes['class'];
|
|
8
|
+
}>();
|
|
8
9
|
</script>
|
|
9
10
|
|
|
10
11
|
<template>
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
<slot />
|
|
16
|
-
</tbody>
|
|
17
|
-
</template>
|
|
12
|
+
<tbody data-slot="table-body" :class="cn('[&_tr:last-child]:border-0', props.class)">
|
|
13
|
+
<slot />
|
|
14
|
+
</tbody>
|
|
15
|
+
</template>
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import type { HTMLAttributes } from
|
|
3
|
-
import { cn } from
|
|
2
|
+
import type { HTMLAttributes } from 'vue';
|
|
3
|
+
import { cn } from '../../../lib/utils';
|
|
4
4
|
|
|
5
|
+
// Props
|
|
5
6
|
const props = defineProps<{
|
|
6
|
-
|
|
7
|
-
}>()
|
|
7
|
+
class?: HTMLAttributes['class'];
|
|
8
|
+
}>();
|
|
8
9
|
</script>
|
|
9
10
|
|
|
10
11
|
<template>
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
<slot />
|
|
16
|
-
</caption>
|
|
17
|
-
</template>
|
|
12
|
+
<caption data-slot="table-caption" :class="cn('text-muted-foreground mt-4 text-sm', props.class)">
|
|
13
|
+
<slot />
|
|
14
|
+
</caption>
|
|
15
|
+
</template>
|
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import type { HTMLAttributes } from
|
|
3
|
-
import { cn } from
|
|
2
|
+
import type { HTMLAttributes } from 'vue';
|
|
3
|
+
import { cn } from '../../../lib/utils';
|
|
4
4
|
|
|
5
|
+
// Props
|
|
5
6
|
const props = defineProps<{
|
|
6
|
-
|
|
7
|
-
}>()
|
|
7
|
+
class?: HTMLAttributes['class'];
|
|
8
|
+
}>();
|
|
8
9
|
</script>
|
|
9
10
|
|
|
10
11
|
<template>
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
>
|
|
20
|
-
<slot />
|
|
21
|
-
</td>
|
|
22
|
-
</template>
|
|
12
|
+
<td data-slot="table-cell" :class="cn(
|
|
13
|
+
'px-2 py-3 max-w-75 text-xs md:text-sm align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 *:[[role=checkbox]]:translate-y-0.5',
|
|
14
|
+
props.class
|
|
15
|
+
)
|
|
16
|
+
">
|
|
17
|
+
<slot />
|
|
18
|
+
</td>
|
|
19
|
+
</template>
|
|
@@ -1,34 +1,31 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import type { HTMLAttributes } from
|
|
3
|
-
import { reactiveOmit } from
|
|
4
|
-
import { cn } from
|
|
5
|
-
import TableCell from
|
|
6
|
-
import TableRow from
|
|
2
|
+
import type { HTMLAttributes } from 'vue';
|
|
3
|
+
import { reactiveOmit } from '@vueuse/core';
|
|
4
|
+
import { cn } from '../../../lib/utils';
|
|
5
|
+
import TableCell from './TableCell.vue';
|
|
6
|
+
import TableRow from './TableRow.vue';
|
|
7
7
|
|
|
8
|
+
// Props
|
|
8
9
|
const props = withDefaults(defineProps<{
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
class?: HTMLAttributes['class'];
|
|
11
|
+
colspan?: number;
|
|
11
12
|
}>(), {
|
|
12
|
-
|
|
13
|
-
})
|
|
13
|
+
colspan: 1
|
|
14
|
+
});
|
|
14
15
|
|
|
15
|
-
const delegatedProps = reactiveOmit(props,
|
|
16
|
+
const delegatedProps = reactiveOmit(props, 'class');
|
|
16
17
|
</script>
|
|
17
18
|
|
|
18
19
|
<template>
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
'p-4 whitespace-nowrap align-middle text-sm text-foreground',
|
|
24
|
-
props.class,
|
|
20
|
+
<TableRow>
|
|
21
|
+
<TableCell :class="cn(
|
|
22
|
+
'p-4 whitespace-nowrap align-middle text-sm text-foreground',
|
|
23
|
+
props.class
|
|
25
24
|
)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
</TableRow>
|
|
34
|
-
</template>
|
|
25
|
+
" v-bind="delegatedProps">
|
|
26
|
+
<div class="flex items-center justify-center py-10">
|
|
27
|
+
<slot />
|
|
28
|
+
</div>
|
|
29
|
+
</TableCell>
|
|
30
|
+
</TableRow>
|
|
31
|
+
</template>
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import type { HTMLAttributes } from
|
|
3
|
-
import { cn } from
|
|
2
|
+
import type { HTMLAttributes } from 'vue';
|
|
3
|
+
import { cn } from '../../../lib/utils';
|
|
4
4
|
|
|
5
|
+
// Props
|
|
5
6
|
const props = defineProps<{
|
|
6
|
-
|
|
7
|
-
}>()
|
|
7
|
+
class?: HTMLAttributes['class'];
|
|
8
|
+
}>();
|
|
8
9
|
</script>
|
|
9
10
|
|
|
10
11
|
<template>
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
</
|
|
12
|
+
<tfoot data-slot="table-footer" :class="cn(
|
|
13
|
+
'bg-muted/50 border-t border-border font-semibold [&>tr]:last:border-b-0',
|
|
14
|
+
props.class
|
|
15
|
+
)
|
|
16
|
+
">
|
|
17
|
+
<slot />
|
|
18
|
+
</tfoot>
|
|
19
|
+
</template>
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import type { HTMLAttributes } from
|
|
3
|
-
import { cn } from
|
|
2
|
+
import type { HTMLAttributes } from 'vue';
|
|
3
|
+
import { cn } from '../../../lib/utils';
|
|
4
4
|
|
|
5
|
+
// Props
|
|
5
6
|
const props = defineProps<{
|
|
6
|
-
|
|
7
|
-
}>()
|
|
7
|
+
class?: HTMLAttributes['class'];
|
|
8
|
+
}>();
|
|
8
9
|
</script>
|
|
9
10
|
|
|
10
11
|
<template>
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
</
|
|
12
|
+
<th data-slot="table-head" :class="cn(
|
|
13
|
+
'text-foreground h-10 px-2 max-w-75 text-left align-middle font-semibold whitespace-nowrap [&:has([role=checkbox])]:pr-0 *:[[role=checkbox]]:translate-y-0.5',
|
|
14
|
+
props.class
|
|
15
|
+
)
|
|
16
|
+
">
|
|
17
|
+
<slot />
|
|
18
|
+
</th>
|
|
19
|
+
</template>
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import type { HTMLAttributes } from
|
|
3
|
-
import { cn } from
|
|
2
|
+
import type { HTMLAttributes } from 'vue';
|
|
3
|
+
import { cn } from '../../../lib/utils';
|
|
4
4
|
|
|
5
|
+
// Props
|
|
5
6
|
const props = defineProps<{
|
|
6
|
-
|
|
7
|
-
}>()
|
|
7
|
+
class?: HTMLAttributes['class'];
|
|
8
|
+
}>();
|
|
8
9
|
</script>
|
|
9
10
|
|
|
10
11
|
<template>
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
<slot />
|
|
16
|
-
</thead>
|
|
17
|
-
</template>
|
|
12
|
+
<thead data-slot="table-header" :class="cn('[&_tr]:border-b [&_tr]:border-border', props.class)">
|
|
13
|
+
<slot />
|
|
14
|
+
</thead>
|
|
15
|
+
</template>
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import type { HTMLAttributes } from
|
|
3
|
-
import { cn } from
|
|
2
|
+
import type { HTMLAttributes } from 'vue';
|
|
3
|
+
import { cn } from '../../../lib/utils';
|
|
4
4
|
|
|
5
|
+
// Props
|
|
5
6
|
const props = defineProps<{
|
|
6
|
-
|
|
7
|
-
}>()
|
|
7
|
+
class?: HTMLAttributes['class'];
|
|
8
|
+
}>();
|
|
8
9
|
</script>
|
|
9
10
|
|
|
10
11
|
<template>
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
</
|
|
12
|
+
<tr data-slot="table-row" :class="cn(
|
|
13
|
+
'hover:bg-muted/50 data-[state=selected]:bg-muted border-b border-border transition-colors',
|
|
14
|
+
props.class
|
|
15
|
+
)
|
|
16
|
+
">
|
|
17
|
+
<slot />
|
|
18
|
+
</tr>
|
|
19
|
+
</template>
|