@brumaombra/ui-vintage 0.7.7 → 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.
Files changed (273) hide show
  1. package/README.md +308 -48
  2. package/module.mjs +1 -1
  3. package/package.json +2 -1
  4. package/src/components/background-grid/BackgroundGrid.vue +11 -2
  5. package/src/components/background-grid/index.ts +2 -2
  6. package/src/components/blog/AllPostsSection.vue +25 -9
  7. package/src/components/blog/BlogFAQSection.vue +8 -3
  8. package/src/components/blog/BlogHeaderSection.vue +14 -11
  9. package/src/components/blog/BlogInfoSection.vue +13 -11
  10. package/src/components/blog/BlogSectionTitle.vue +5 -5
  11. package/src/components/blog/CategoriesList.vue +11 -3
  12. package/src/components/blog/CategoriesSection.vue +11 -3
  13. package/src/components/blog/CategoryCard.vue +10 -8
  14. package/src/components/blog/HeaderCarousel.vue +24 -15
  15. package/src/components/blog/PostCard.vue +16 -11
  16. package/src/components/blog/PostsList.vue +12 -3
  17. package/src/components/blog/SocialShareSidebar.vue +11 -11
  18. package/src/components/blog/TableOfContents.vue +29 -13
  19. package/src/components/busy-indicator/BusyIndicator.vue +2 -2
  20. package/src/components/busy-indicator/busy-indicator-state.ts +11 -12
  21. package/src/components/busy-indicator/index.ts +3 -3
  22. package/src/components/card-grid/CardGrid.vue +25 -11
  23. package/src/components/chip/Chip.vue +15 -15
  24. package/src/components/chip/index.ts +2 -2
  25. package/src/components/confirm-dialog/ConfirmDialog.vue +9 -9
  26. package/src/components/confirm-dialog/confirm-dialog-state.ts +15 -14
  27. package/src/components/confirm-dialog/index.ts +3 -12
  28. package/src/components/content/BlogList.vue +11 -8
  29. package/src/components/content/BlogTable.vue +18 -14
  30. package/src/components/content/ProseHr.vue +10 -7
  31. package/src/components/content/Terminal.vue +70 -0
  32. package/src/components/content/index.ts +2 -1
  33. package/src/components/dashboard-shell/DashboardShell.vue +49 -65
  34. package/src/components/dashboard-shell/index.ts +2 -2
  35. package/src/components/data-list/DataList.vue +11 -13
  36. package/src/components/data-list/DataListItem.vue +9 -11
  37. package/src/components/data-list/DataListLabel.vue +9 -11
  38. package/src/components/data-list/DataListText.vue +9 -11
  39. package/src/components/data-list/DataListValue.vue +9 -11
  40. package/src/components/data-list/index.ts +5 -5
  41. package/src/components/empty-state-card/EmptyStateCard.vue +21 -11
  42. package/src/components/error-page/ErrorPage.vue +24 -27
  43. package/src/components/error-page/index.ts +2 -2
  44. package/src/components/info-card/InfoCard.vue +17 -11
  45. package/src/components/landing/index.ts +6 -6
  46. package/src/components/landing/landing-content/LandingContent.vue +5 -7
  47. package/src/components/landing/landing-content/index.ts +2 -2
  48. package/src/components/landing/landing-footer/LandingFooter.vue +26 -29
  49. package/src/components/landing/landing-footer/index.ts +3 -3
  50. package/src/components/landing/landing-navbar/LandingNavbar.vue +15 -17
  51. package/src/components/landing/landing-navbar/index.ts +2 -2
  52. package/src/components/landing/landing-shell/LandingShell.vue +10 -13
  53. package/src/components/landing/landing-shell/index.ts +2 -2
  54. package/src/components/language-flag/LanguageFlag.vue +6 -5
  55. package/src/components/language-flag/index.ts +1 -0
  56. package/src/components/language-selector/LanguageSelector.vue +20 -21
  57. package/src/components/load-more-button/LoadMoreButton.vue +18 -14
  58. package/src/components/loading-state-card/LoadingStateCard.vue +13 -9
  59. package/src/components/message-dialog/MessageDialog.vue +19 -19
  60. package/src/components/message-dialog/index.ts +3 -11
  61. package/src/components/message-dialog/message-dialog-state.ts +12 -11
  62. package/src/components/message-toast/MessageToast.vue +16 -16
  63. package/src/components/message-toast/index.ts +2 -9
  64. package/src/components/message-toast/message-toast-state.ts +9 -9
  65. package/src/components/page-header/PageHeader.vue +8 -5
  66. package/src/components/progress-component/ProgressComponent.vue +13 -10
  67. package/src/components/single-value-card/SingleValueCard.vue +22 -19
  68. package/src/components/slider-form-component/SliderFormComponent.vue +11 -20
  69. package/src/components/slider-form-component/index.ts +2 -2
  70. package/src/components/switch-form-component/SwitchFormComponent.vue +7 -9
  71. package/src/components/switch-form-component/index.ts +2 -2
  72. package/src/components/text-link/TextLink.vue +11 -7
  73. package/src/components/theme-selector/ThemeSelector.vue +4 -4
  74. package/src/components/ui/accordion/Accordion.vue +12 -15
  75. package/src/components/ui/accordion/index.ts +1 -1
  76. package/src/components/ui/alert/Alert.vue +11 -10
  77. package/src/components/ui/alert/AlertDescription.vue +9 -8
  78. package/src/components/ui/alert/AlertTitle.vue +9 -8
  79. package/src/components/ui/alert/index.ts +10 -10
  80. package/src/components/ui/alert-dialog/AlertDialog.vue +13 -9
  81. package/src/components/ui/alert-dialog/AlertDialogAction.vue +14 -12
  82. package/src/components/ui/alert-dialog/AlertDialogCancel.vue +14 -16
  83. package/src/components/ui/alert-dialog/AlertDialogContent.vue +24 -27
  84. package/src/components/ui/alert-dialog/AlertDialogDescription.vue +13 -13
  85. package/src/components/ui/alert-dialog/AlertDialogFooter.vue +9 -12
  86. package/src/components/ui/alert-dialog/AlertDialogHeader.vue +9 -8
  87. package/src/components/ui/alert-dialog/AlertDialogTitle.vue +13 -11
  88. package/src/components/ui/alert-dialog/AlertDialogTrigger.vue +8 -7
  89. package/src/components/ui/alert-dialog/index.ts +9 -9
  90. package/src/components/ui/badge/Badge.vue +11 -12
  91. package/src/components/ui/badge/index.ts +1 -1
  92. package/src/components/ui/breadcrumb/Breadcrumb.vue +9 -12
  93. package/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue +15 -19
  94. package/src/components/ui/breadcrumb/BreadcrumbItem.vue +10 -12
  95. package/src/components/ui/breadcrumb/BreadcrumbLink.vue +13 -17
  96. package/src/components/ui/breadcrumb/BreadcrumbList.vue +10 -12
  97. package/src/components/ui/breadcrumb/BreadcrumbPage.vue +10 -15
  98. package/src/components/ui/breadcrumb/BreadcrumbSeparator.vue +14 -18
  99. package/src/components/ui/breadcrumb/index.ts +7 -7
  100. package/src/components/ui/busy/Busy.vue +36 -29
  101. package/src/components/ui/busy/index.ts +1 -1
  102. package/src/components/ui/button/Button.vue +18 -19
  103. package/src/components/ui/button/index.ts +54 -35
  104. package/src/components/ui/calendar/Calendar.vue +167 -121
  105. package/src/components/ui/calendar/CalendarCell.vue +18 -17
  106. package/src/components/ui/calendar/CalendarCellTrigger.vue +31 -33
  107. package/src/components/ui/calendar/CalendarGrid.vue +14 -17
  108. package/src/components/ui/calendar/CalendarGridBody.vue +9 -11
  109. package/src/components/ui/calendar/CalendarGridHead.vue +10 -12
  110. package/src/components/ui/calendar/CalendarGridRow.vue +14 -16
  111. package/src/components/ui/calendar/CalendarHeadCell.vue +18 -17
  112. package/src/components/ui/calendar/CalendarHeader.vue +18 -17
  113. package/src/components/ui/calendar/CalendarHeading.vue +18 -22
  114. package/src/components/ui/calendar/CalendarNextButton.vue +29 -26
  115. package/src/components/ui/calendar/CalendarPrevButton.vue +29 -26
  116. package/src/components/ui/calendar/index.ts +17 -13
  117. package/src/components/ui/card/Card.vue +21 -13
  118. package/src/components/ui/card/CardAction.vue +12 -7
  119. package/src/components/ui/card/CardContent.vue +8 -7
  120. package/src/components/ui/card/CardDescription.vue +16 -7
  121. package/src/components/ui/card/CardFooter.vue +8 -7
  122. package/src/components/ui/card/CardHeader.vue +12 -7
  123. package/src/components/ui/card/CardText.vue +12 -7
  124. package/src/components/ui/card/CardTitle.vue +9 -7
  125. package/src/components/ui/card/index.ts +8 -8
  126. package/src/components/ui/command/Command.vue +71 -61
  127. package/src/components/ui/command/CommandDialog.vue +33 -23
  128. package/src/components/ui/command/CommandEmpty.vue +19 -20
  129. package/src/components/ui/command/CommandGroup.vue +32 -35
  130. package/src/components/ui/command/CommandInput.vue +25 -21
  131. package/src/components/ui/command/CommandItem.vue +62 -59
  132. package/src/components/ui/command/CommandList.vue +21 -18
  133. package/src/components/ui/command/CommandSeparator.vue +13 -11
  134. package/src/components/ui/command/CommandShortcut.vue +13 -8
  135. package/src/components/ui/command/index.ts +24 -20
  136. package/src/components/ui/date-picker/DatePicker.vue +46 -37
  137. package/src/components/ui/date-picker/index.ts +2 -2
  138. package/src/components/ui/date-time-picker/DateTimePicker.vue +99 -95
  139. package/src/components/ui/date-time-picker/index.ts +2 -2
  140. package/src/components/ui/dialog/Dialog.vue +12 -9
  141. package/src/components/ui/dialog/DialogClose.vue +8 -10
  142. package/src/components/ui/dialog/DialogContent.vue +36 -42
  143. package/src/components/ui/dialog/DialogDescription.vue +16 -11
  144. package/src/components/ui/dialog/DialogFooter.vue +13 -12
  145. package/src/components/ui/dialog/DialogHeader.vue +9 -8
  146. package/src/components/ui/dialog/DialogOverlay.vue +16 -11
  147. package/src/components/ui/dialog/DialogScrollContent.vue +47 -45
  148. package/src/components/ui/dialog/DialogTitle.vue +13 -12
  149. package/src/components/ui/dialog/DialogTrigger.vue +8 -7
  150. package/src/components/ui/dialog/index.ts +10 -10
  151. package/src/components/ui/field/Field.vue +12 -14
  152. package/src/components/ui/field/FieldContent.vue +13 -11
  153. package/src/components/ui/field/FieldDescription.vue +15 -13
  154. package/src/components/ui/field/FieldError.vue +43 -40
  155. package/src/components/ui/field/FieldGroup.vue +13 -11
  156. package/src/components/ui/field/FieldLabel.vue +16 -14
  157. package/src/components/ui/field/FieldLegend.vue +16 -14
  158. package/src/components/ui/field/FieldSeparator.vue +17 -15
  159. package/src/components/ui/field/FieldSet.vue +14 -12
  160. package/src/components/ui/field/FieldTitle.vue +13 -11
  161. package/src/components/ui/field/index.ts +36 -36
  162. package/src/components/ui/input/Input.vue +23 -20
  163. package/src/components/ui/input/index.ts +1 -1
  164. package/src/components/ui/label/Label.vue +16 -15
  165. package/src/components/ui/label/index.ts +1 -1
  166. package/src/components/ui/native-select/NativeSelect.vue +31 -41
  167. package/src/components/ui/native-select/NativeSelectOptGroup.vue +8 -7
  168. package/src/components/ui/native-select/NativeSelectOption.vue +8 -7
  169. package/src/components/ui/native-select/index.ts +3 -3
  170. package/src/components/ui/popover/Popover.vue +12 -9
  171. package/src/components/ui/popover/PopoverAnchor.vue +8 -7
  172. package/src/components/ui/popover/PopoverContent.vue +27 -31
  173. package/src/components/ui/popover/PopoverTrigger.vue +8 -7
  174. package/src/components/ui/popover/index.ts +4 -4
  175. package/src/components/ui/progress/Progress.vue +18 -32
  176. package/src/components/ui/progress/index.ts +1 -1
  177. package/src/components/ui/scroll-area/ScrollArea.vue +23 -26
  178. package/src/components/ui/scroll-area/ScrollBar.vue +22 -26
  179. package/src/components/ui/scroll-area/index.ts +2 -2
  180. package/src/components/ui/select/Select.vue +12 -9
  181. package/src/components/ui/select/SelectContent.vue +39 -40
  182. package/src/components/ui/select/SelectGroup.vue +8 -7
  183. package/src/components/ui/select/SelectItem.vue +36 -41
  184. package/src/components/ui/select/SelectItemContent.vue +22 -15
  185. package/src/components/ui/select/SelectItemText.vue +8 -7
  186. package/src/components/ui/select/SelectLabel.vue +10 -9
  187. package/src/components/ui/select/SelectScrollDownButton.vue +21 -17
  188. package/src/components/ui/select/SelectScrollUpButton.vue +21 -17
  189. package/src/components/ui/select/SelectSeparator.vue +11 -9
  190. package/src/components/ui/select/SelectTrigger.vue +27 -25
  191. package/src/components/ui/select/SelectValue.vue +8 -7
  192. package/src/components/ui/select/SelectValueContent.vue +30 -18
  193. package/src/components/ui/select/index.ts +13 -13
  194. package/src/components/ui/separator/Separator.vue +17 -18
  195. package/src/components/ui/separator/index.ts +1 -1
  196. package/src/components/ui/sheet/Sheet.vue +12 -9
  197. package/src/components/ui/sheet/SheetClose.vue +8 -7
  198. package/src/components/ui/sheet/SheetContent.vue +36 -37
  199. package/src/components/ui/sheet/SheetDescription.vue +12 -11
  200. package/src/components/ui/sheet/SheetFooter.vue +8 -7
  201. package/src/components/ui/sheet/SheetHeader.vue +8 -7
  202. package/src/components/ui/sheet/SheetOverlay.vue +16 -11
  203. package/src/components/ui/sheet/SheetTitle.vue +12 -11
  204. package/src/components/ui/sheet/SheetTrigger.vue +8 -7
  205. package/src/components/ui/sheet/index.ts +8 -8
  206. package/src/components/ui/sidebar/Sidebar.vue +68 -61
  207. package/src/components/ui/sidebar/SidebarContent.vue +13 -8
  208. package/src/components/ui/sidebar/SidebarFooter.vue +13 -8
  209. package/src/components/ui/sidebar/SidebarGroup.vue +13 -8
  210. package/src/components/ui/sidebar/SidebarGroupAction.vue +16 -16
  211. package/src/components/ui/sidebar/SidebarGroupContent.vue +9 -8
  212. package/src/components/ui/sidebar/SidebarGroupLabel.vue +15 -14
  213. package/src/components/ui/sidebar/SidebarHeader.vue +13 -8
  214. package/src/components/ui/sidebar/SidebarInput.vue +14 -12
  215. package/src/components/ui/sidebar/SidebarInset.vue +14 -12
  216. package/src/components/ui/sidebar/SidebarMenu.vue +9 -8
  217. package/src/components/ui/sidebar/SidebarMenuAction.vue +25 -23
  218. package/src/components/ui/sidebar/SidebarMenuBadge.vue +19 -17
  219. package/src/components/ui/sidebar/SidebarMenuButton.vue +33 -32
  220. package/src/components/ui/sidebar/SidebarMenuButtonChild.vue +19 -18
  221. package/src/components/ui/sidebar/SidebarMenuItem.vue +9 -8
  222. package/src/components/ui/sidebar/SidebarMenuSkeleton.vue +17 -12
  223. package/src/components/ui/sidebar/SidebarMenuSub.vue +14 -12
  224. package/src/components/ui/sidebar/SidebarMenuSubButton.vue +24 -21
  225. package/src/components/ui/sidebar/SidebarMenuSubItem.vue +9 -8
  226. package/src/components/ui/sidebar/SidebarProvider.vue +63 -53
  227. package/src/components/ui/sidebar/SidebarRail.vue +20 -18
  228. package/src/components/ui/sidebar/SidebarSeparator.vue +10 -9
  229. package/src/components/ui/sidebar/SidebarTrigger.vue +15 -14
  230. package/src/components/ui/sidebar/index.ts +62 -58
  231. package/src/components/ui/sidebar/utils.ts +16 -16
  232. package/src/components/ui/skeleton/Skeleton.vue +12 -9
  233. package/src/components/ui/skeleton/index.ts +1 -1
  234. package/src/components/ui/slider/Slider.vue +24 -19
  235. package/src/components/ui/slider/index.ts +1 -1
  236. package/src/components/ui/switch/Switch.vue +26 -23
  237. package/src/components/ui/switch/index.ts +1 -1
  238. package/src/components/ui/table/Table.vue +11 -10
  239. package/src/components/ui/table/TableBody.vue +9 -11
  240. package/src/components/ui/table/TableCaption.vue +9 -11
  241. package/src/components/ui/table/TableCell.vue +13 -16
  242. package/src/components/ui/table/TableEmpty.vue +22 -25
  243. package/src/components/ui/table/TableFooter.vue +13 -11
  244. package/src/components/ui/table/TableHead.vue +13 -11
  245. package/src/components/ui/table/TableHeader.vue +9 -11
  246. package/src/components/ui/table/TableRow.vue +13 -11
  247. package/src/components/ui/table/index.ts +9 -9
  248. package/src/components/ui/tabs/Tabs.vue +18 -18
  249. package/src/components/ui/tabs/TabsContent.vue +14 -15
  250. package/src/components/ui/tabs/TabsList.vue +18 -18
  251. package/src/components/ui/tabs/TabsTrigger.vue +19 -20
  252. package/src/components/ui/tabs/index.ts +4 -4
  253. package/src/components/ui/textarea/Textarea.vue +23 -20
  254. package/src/components/ui/textarea/index.ts +1 -1
  255. package/src/components/ui/time-picker/TimePicker.vue +33 -38
  256. package/src/components/ui/time-picker/index.ts +2 -2
  257. package/src/components/ui/tooltip/Tooltip.vue +12 -9
  258. package/src/components/ui/tooltip/TooltipContent.vue +28 -20
  259. package/src/components/ui/tooltip/TooltipProvider.vue +9 -8
  260. package/src/components/ui/tooltip/TooltipTrigger.vue +8 -7
  261. package/src/components/ui/tooltip/index.ts +4 -4
  262. package/src/i18n/de.json +5 -0
  263. package/src/i18n/en.json +5 -0
  264. package/src/i18n/es.json +5 -0
  265. package/src/i18n/fr.json +5 -0
  266. package/src/i18n/it.json +5 -0
  267. package/src/i18n/ja.json +5 -0
  268. package/src/i18n/pt.json +5 -0
  269. package/src/i18n/ru.json +5 -0
  270. package/src/i18n/zh.json +5 -0
  271. package/src/lib/common-types.ts +2 -0
  272. package/src/lib/i18n.ts +0 -5
  273. package/src/runtime/{ui-vintage-i18n-plugin.js → ui-vintage-i18n-plugin.ts} +30 -8
@@ -1,77 +1,84 @@
1
1
  <script setup lang="ts">
2
- import type { SidebarProps } from "."
3
- import { cn } from "../../../lib/utils"
4
- import { Sheet, SheetContent } from '../sheet'
5
- import SheetDescription from '../sheet/SheetDescription.vue'
6
- import SheetHeader from '../sheet/SheetHeader.vue'
7
- import SheetTitle from '../sheet/SheetTitle.vue'
8
- import { SIDEBAR_WIDTH_MOBILE, useSidebar } from "./utils"
2
+ import type { SidebarProps } from '.';
3
+ import { cn } from '../../../lib/utils';
4
+ import { Sheet, SheetContent } from '../sheet';
5
+ import SheetDescription from '../sheet/SheetDescription.vue';
6
+ import SheetHeader from '../sheet/SheetHeader.vue';
7
+ import SheetTitle from '../sheet/SheetTitle.vue';
8
+ import { SIDEBAR_WIDTH_MOBILE, useSidebar } from './utils';
9
9
 
10
10
  defineOptions({
11
- inheritAttrs: false,
12
- })
11
+ inheritAttrs: false
12
+ });
13
13
 
14
+ // Props
14
15
  const props = withDefaults(defineProps<SidebarProps>(), {
15
- side: "left",
16
- variant: "sidebar",
17
- collapsible: "offcanvas",
18
- compact: false,
19
- })
16
+ side: 'left',
17
+ variant: 'sidebar',
18
+ collapsible: 'offcanvas',
19
+ compact: false
20
+ });
20
21
 
21
- const { isMobile, state, openMobile, setOpenMobile } = useSidebar()
22
+ const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
22
23
 
23
24
  function handleMobileSidebarClick(event: MouseEvent) {
24
- const target = event.target as HTMLElement | null
25
+ const target = event.target as HTMLElement | null;
25
26
 
26
- if (target?.closest('[data-sidebar="menu-button"]')) {
27
- setOpenMobile(false)
28
- }
27
+ if (target?.closest('[data-sidebar="menu-button"]')) {
28
+ setOpenMobile(false);
29
+ }
29
30
  }
30
31
  </script>
31
32
 
32
33
  <template>
33
- <div v-if="collapsible === 'none'" data-slot="sidebar" :class="cn('group/sidebar-wrapper bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col', props.class)" v-bind="$attrs">
34
- <slot />
35
- </div>
36
-
37
- <Sheet v-else-if="isMobile" :open="openMobile" v-bind="$attrs" @update:open="setOpenMobile">
38
- <SheetContent data-sidebar="sidebar" data-slot="sidebar" data-mobile="true" :data-compact="props.compact ? 'true' : 'false'" :side="side" class="group/sidebar-wrapper border-sidebar-border bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden" :style="{
39
- '--sidebar-width': SIDEBAR_WIDTH_MOBILE,
40
- }">
41
- <SheetHeader class="sr-only">
42
- <SheetTitle>Sidebar</SheetTitle>
43
- <SheetDescription>Displays the mobile sidebar.</SheetDescription>
44
- </SheetHeader>
45
- <div class="flex h-full w-full flex-col" @click="handleMobileSidebarClick">
34
+ <div v-if="collapsible === 'none'" data-slot="sidebar" :class="cn(
35
+ 'group/sidebar-wrapper bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col',
36
+ props.class
37
+ )
38
+ " v-bind="$attrs">
46
39
  <slot />
47
- </div>
48
- </SheetContent>
49
- </Sheet>
40
+ </div>
50
41
 
51
- <div v-else class="group/sidebar-wrapper group peer text-sidebar-foreground hidden md:block" data-slot="sidebar" :data-state="state" :data-collapsible="state === 'collapsed' ? collapsible : ''" :data-variant="variant" :data-side="side">
52
- <!-- This is what handles the sidebar gap on desktop -->
53
- <div :class="cn(
54
- 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',
55
- 'group-data-[collapsible=offcanvas]:w-0',
56
- 'group-data-[side=right]:rotate-180',
57
- variant === 'floating' || variant === 'inset'
58
- ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'
59
- : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)',
60
- )" />
61
- <div :class="cn(
62
- 'fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex',
63
- side === 'left'
64
- ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'
65
- : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',
66
- // Adjust the padding for floating and inset variants.
67
- variant === 'floating' || variant === 'inset'
68
- ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'
69
- : 'border-sidebar-border group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',
70
- props.class,
71
- )" v-bind="$attrs">
72
- <div data-sidebar="sidebar" class="bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm">
73
- <slot />
74
- </div>
42
+ <Sheet v-else-if="isMobile" :open="openMobile" v-bind="$attrs" @update:open="setOpenMobile">
43
+ <SheetContent data-sidebar="sidebar" data-slot="sidebar" data-mobile="true" :data-compact="props.compact ? 'true' : 'false'" :side="side" class="group/sidebar-wrapper border-sidebar-border bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden" :style="{
44
+ '--sidebar-width': SIDEBAR_WIDTH_MOBILE
45
+ }">
46
+ <SheetHeader class="sr-only">
47
+ <SheetTitle>Sidebar</SheetTitle>
48
+ <SheetDescription>Displays the mobile sidebar.</SheetDescription>
49
+ </SheetHeader>
50
+ <div class="flex h-full w-full flex-col" @click="handleMobileSidebarClick">
51
+ <slot />
52
+ </div>
53
+ </SheetContent>
54
+ </Sheet>
55
+
56
+ <div v-else class="group/sidebar-wrapper group peer text-sidebar-foreground hidden md:block" data-slot="sidebar" :data-state="state" :data-collapsible="state === 'collapsed' ? collapsible : ''" :data-variant="variant" :data-side="side">
57
+ <!-- This is what handles the sidebar gap on desktop -->
58
+ <div :class="cn(
59
+ 'relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear',
60
+ 'group-data-[collapsible=offcanvas]:w-0',
61
+ 'group-data-[side=right]:rotate-180',
62
+ variant === 'floating' || variant === 'inset'
63
+ ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]'
64
+ : 'group-data-[collapsible=icon]:w-(--sidebar-width-icon)'
65
+ )
66
+ " />
67
+ <div :class="cn(
68
+ 'fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex',
69
+ side === 'left'
70
+ ? 'left-0 group-data-[collapsible=offcanvas]:-left-(--sidebar-width)'
71
+ : 'right-0 group-data-[collapsible=offcanvas]:-right-(--sidebar-width)',
72
+ // Adjust the padding for floating and inset variants.
73
+ variant === 'floating' || variant === 'inset'
74
+ ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]'
75
+ : 'border-sidebar-border group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l',
76
+ props.class
77
+ )
78
+ " v-bind="$attrs">
79
+ <div data-sidebar="sidebar" class="bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm">
80
+ <slot />
81
+ </div>
82
+ </div>
75
83
  </div>
76
- </div>
77
- </template>
84
+ </template>
@@ -1,14 +1,19 @@
1
1
  <script setup lang="ts">
2
- import type { HTMLAttributes } from "vue"
3
- import { cn } from "../../../lib/utils"
2
+ import type { HTMLAttributes } from 'vue';
3
+ import { cn } from '../../../lib/utils';
4
4
 
5
+ // Props
5
6
  const props = defineProps<{
6
- class?: HTMLAttributes["class"]
7
- }>()
7
+ class?: HTMLAttributes['class'];
8
+ }>();
8
9
  </script>
9
10
 
10
11
  <template>
11
- <div data-slot="sidebar-content" data-sidebar="content" :class="cn('flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[compact=true]/sidebar-wrapper:gap-1.5 group-data-[collapsible=icon]:overflow-hidden', props.class)">
12
- <slot />
13
- </div>
14
- </template>
12
+ <div data-slot="sidebar-content" data-sidebar="content" :class="cn(
13
+ 'flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[compact=true]/sidebar-wrapper:gap-1.5 group-data-[collapsible=icon]:overflow-hidden',
14
+ props.class
15
+ )
16
+ ">
17
+ <slot />
18
+ </div>
19
+ </template>
@@ -1,14 +1,19 @@
1
1
  <script setup lang="ts">
2
- import type { HTMLAttributes } from "vue"
3
- import { cn } from "../../../lib/utils"
2
+ import type { HTMLAttributes } from 'vue';
3
+ import { cn } from '../../../lib/utils';
4
4
 
5
+ // Props
5
6
  const props = defineProps<{
6
- class?: HTMLAttributes["class"]
7
- }>()
7
+ class?: HTMLAttributes['class'];
8
+ }>();
8
9
  </script>
9
10
 
10
11
  <template>
11
- <div data-slot="sidebar-footer" data-sidebar="footer" :class="cn('flex flex-col gap-2 p-2 group-data-[compact=true]/sidebar-wrapper:gap-1.5 group-data-[compact=true]/sidebar-wrapper:p-2.5', props.class)">
12
- <slot />
13
- </div>
14
- </template>
12
+ <div data-slot="sidebar-footer" data-sidebar="footer" :class="cn(
13
+ 'flex flex-col gap-2 p-2 group-data-[compact=true]/sidebar-wrapper:gap-1.5 group-data-[compact=true]/sidebar-wrapper:p-2.5',
14
+ props.class
15
+ )
16
+ ">
17
+ <slot />
18
+ </div>
19
+ </template>
@@ -1,14 +1,19 @@
1
1
  <script setup lang="ts">
2
- import type { HTMLAttributes } from "vue"
3
- import { cn } from "../../../lib/utils"
2
+ import type { HTMLAttributes } from 'vue';
3
+ import { cn } from '../../../lib/utils';
4
4
 
5
+ // Props
5
6
  const props = defineProps<{
6
- class?: HTMLAttributes["class"]
7
- }>()
7
+ class?: HTMLAttributes['class'];
8
+ }>();
8
9
  </script>
9
10
 
10
11
  <template>
11
- <div data-slot="sidebar-group" data-sidebar="group" :class="cn('relative flex w-full min-w-0 flex-col p-2 group-data-[compact=true]/sidebar-wrapper:p-2.5', props.class)">
12
- <slot />
13
- </div>
14
- </template>
12
+ <div data-slot="sidebar-group" data-sidebar="group" :class="cn(
13
+ 'relative flex w-full min-w-0 flex-col p-2 group-data-[compact=true]/sidebar-wrapper:p-2.5',
14
+ props.class
15
+ )
16
+ ">
17
+ <slot />
18
+ </div>
19
+ </template>
@@ -1,21 +1,21 @@
1
1
  <script setup lang="ts">
2
- import type { PrimitiveProps } from "reka-ui"
3
- import type { HTMLAttributes } from "vue"
4
- import { Primitive } from "reka-ui"
5
- import { cn } from "../../../lib/utils"
2
+ import type { PrimitiveProps } from 'reka-ui';
3
+ import type { HTMLAttributes } from 'vue';
4
+ import { Primitive } from 'reka-ui';
5
+ import { cn } from '../../../lib/utils';
6
6
 
7
- const props = defineProps<PrimitiveProps & {
8
- class?: HTMLAttributes["class"]
9
- }>()
7
+ // Props
8
+ const props = defineProps<PrimitiveProps & { class?: HTMLAttributes['class'] }>();
10
9
  </script>
11
10
 
12
11
  <template>
13
- <Primitive data-slot="sidebar-group-action" data-sidebar="group-action" :as="as" :as-child="asChild" :class="cn(
14
- 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',
15
- 'after:absolute after:-inset-2 md:after:hidden',
16
- 'group-data-[collapsible=icon]:hidden',
17
- props.class,
18
- )">
19
- <slot />
20
- </Primitive>
21
- </template>
12
+ <Primitive data-slot="sidebar-group-action" data-sidebar="group-action" :as="as" :as-child="asChild" :class="cn(
13
+ 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',
14
+ 'after:absolute after:-inset-2 md:after:hidden',
15
+ 'group-data-[collapsible=icon]:hidden',
16
+ props.class
17
+ )
18
+ ">
19
+ <slot />
20
+ </Primitive>
21
+ </template>
@@ -1,14 +1,15 @@
1
1
  <script setup lang="ts">
2
- import type { HTMLAttributes } from "vue"
3
- import { cn } from "../../../lib/utils"
2
+ import type { HTMLAttributes } from 'vue';
3
+ import { cn } from '../../../lib/utils';
4
4
 
5
+ // Props
5
6
  const props = defineProps<{
6
- class?: HTMLAttributes["class"]
7
- }>()
7
+ class?: HTMLAttributes['class'];
8
+ }>();
8
9
  </script>
9
10
 
10
11
  <template>
11
- <div data-slot="sidebar-group-content" data-sidebar="group-content" :class="cn('w-full text-sm', props.class)">
12
- <slot />
13
- </div>
14
- </template>
12
+ <div data-slot="sidebar-group-content" data-sidebar="group-content" :class="cn('w-full text-sm', props.class)">
13
+ <slot />
14
+ </div>
15
+ </template>
@@ -1,19 +1,20 @@
1
1
  <script setup lang="ts">
2
- import type { PrimitiveProps } from "reka-ui"
3
- import type { HTMLAttributes } from "vue"
4
- import { Primitive } from "reka-ui"
5
- import { cn } from "../../../lib/utils"
2
+ import type { PrimitiveProps } from 'reka-ui';
3
+ import type { HTMLAttributes } from 'vue';
4
+ import { Primitive } from 'reka-ui';
5
+ import { cn } from '../../../lib/utils';
6
6
 
7
- const props = defineProps<PrimitiveProps & {
8
- class?: HTMLAttributes["class"]
9
- }>()
7
+ // Props
8
+ const props = defineProps<PrimitiveProps & { class?: HTMLAttributes['class'] }>();
10
9
  </script>
11
10
 
12
11
  <template>
13
- <Primitive data-slot="sidebar-group-label" data-sidebar="group-label" :as="as" :as-child="asChild" :class="cn(
14
- 'text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-semibold outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 group-data-[compact=true]/sidebar-wrapper:h-7 group-data-[compact=true]/sidebar-wrapper:px-1.5 [&>svg]:size-4 [&>svg]:shrink-0',
15
- 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',
16
- props.class)">
17
- <slot />
18
- </Primitive>
19
- </template>
12
+ <Primitive data-slot="sidebar-group-label" data-sidebar="group-label" :as="as" :as-child="asChild" :class="cn(
13
+ 'text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-semibold outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 group-data-[compact=true]/sidebar-wrapper:h-7 group-data-[compact=true]/sidebar-wrapper:px-1.5 [&>svg]:size-4 [&>svg]:shrink-0',
14
+ 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',
15
+ props.class
16
+ )
17
+ ">
18
+ <slot />
19
+ </Primitive>
20
+ </template>
@@ -1,14 +1,19 @@
1
1
  <script setup lang="ts">
2
- import type { HTMLAttributes } from "vue"
3
- import { cn } from "../../../lib/utils"
2
+ import type { HTMLAttributes } from 'vue';
3
+ import { cn } from '../../../lib/utils';
4
4
 
5
+ // Props
5
6
  const props = defineProps<{
6
- class?: HTMLAttributes["class"]
7
- }>()
7
+ class?: HTMLAttributes['class'];
8
+ }>();
8
9
  </script>
9
10
 
10
11
  <template>
11
- <div data-slot="sidebar-header" data-sidebar="header" :class="cn('flex flex-col gap-2 p-2 group-data-[compact=true]/sidebar-wrapper:gap-1.5 group-data-[compact=true]/sidebar-wrapper:p-2.5', props.class)">
12
- <slot />
13
- </div>
14
- </template>
12
+ <div data-slot="sidebar-header" data-sidebar="header" :class="cn(
13
+ 'flex flex-col gap-2 p-2 group-data-[compact=true]/sidebar-wrapper:gap-1.5 group-data-[compact=true]/sidebar-wrapper:p-2.5',
14
+ props.class
15
+ )
16
+ ">
17
+ <slot />
18
+ </div>
19
+ </template>
@@ -1,18 +1,20 @@
1
1
  <script setup lang="ts">
2
- import type { HTMLAttributes } from "vue"
3
- import { cn } from "../../../lib/utils"
4
- import { Input } from '../input'
2
+ import type { HTMLAttributes } from 'vue';
3
+ import { cn } from '../../../lib/utils';
4
+ import { Input } from '../input';
5
5
 
6
+ // Props
6
7
  const props = defineProps<{
7
- class?: HTMLAttributes["class"]
8
- }>()
8
+ class?: HTMLAttributes['class'];
9
+ }>();
9
10
  </script>
10
11
 
11
12
  <template>
12
- <Input data-slot="sidebar-input" data-sidebar="input" :class="cn(
13
- 'bg-background h-8 w-full shadow-none group-data-[compact=true]/sidebar-wrapper:h-7 group-data-[compact=true]/sidebar-wrapper:text-xs',
14
- props.class,
15
- )">
16
- <slot />
17
- </Input>
18
- </template>
13
+ <Input data-slot="sidebar-input" data-sidebar="input" :class="cn(
14
+ 'bg-background h-8 w-full shadow-none group-data-[compact=true]/sidebar-wrapper:h-7 group-data-[compact=true]/sidebar-wrapper:text-xs',
15
+ props.class
16
+ )
17
+ ">
18
+ <slot />
19
+ </Input>
20
+ </template>
@@ -1,18 +1,20 @@
1
1
  <script setup lang="ts">
2
- import type { HTMLAttributes } from "vue"
3
- import { cn } from "../../../lib/utils"
2
+ import type { HTMLAttributes } from 'vue';
3
+ import { cn } from '../../../lib/utils';
4
4
 
5
+ // Props
5
6
  const props = defineProps<{
6
- class?: HTMLAttributes["class"]
7
- }>()
7
+ class?: HTMLAttributes['class'];
8
+ }>();
8
9
  </script>
9
10
 
10
11
  <template>
11
- <main data-slot="sidebar-inset" :class="cn(
12
- 'bg-background relative flex w-full flex-1 flex-col',
13
- 'md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2',
14
- props.class,
15
- )">
16
- <slot />
17
- </main>
18
- </template>
12
+ <main data-slot="sidebar-inset" :class="cn(
13
+ 'bg-background relative flex w-full flex-1 flex-col',
14
+ 'md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2',
15
+ props.class
16
+ )
17
+ ">
18
+ <slot />
19
+ </main>
20
+ </template>
@@ -1,14 +1,15 @@
1
1
  <script setup lang="ts">
2
- import type { HTMLAttributes } from "vue"
3
- import { cn } from "../../../lib/utils"
2
+ import type { HTMLAttributes } from 'vue';
3
+ import { cn } from '../../../lib/utils';
4
4
 
5
+ // Props
5
6
  const props = defineProps<{
6
- class?: HTMLAttributes["class"]
7
- }>()
7
+ class?: HTMLAttributes['class'];
8
+ }>();
8
9
  </script>
9
10
 
10
11
  <template>
11
- <ul data-slot="sidebar-menu" data-sidebar="menu" :class="cn('flex w-full min-w-0 flex-col gap-1', props.class)">
12
- <slot />
13
- </ul>
14
- </template>
12
+ <ul data-slot="sidebar-menu" data-sidebar="menu" :class="cn('flex w-full min-w-0 flex-col gap-1', props.class)">
13
+ <slot />
14
+ </ul>
15
+ </template>
@@ -1,30 +1,32 @@
1
1
  <script setup lang="ts">
2
- import type { PrimitiveProps } from "reka-ui"
3
- import type { HTMLAttributes } from "vue"
4
- import { Primitive } from "reka-ui"
5
- import { cn } from "../../../lib/utils"
2
+ import type { PrimitiveProps } from 'reka-ui';
3
+ import type { HTMLAttributes } from 'vue';
4
+ import { Primitive } from 'reka-ui';
5
+ import { cn } from '../../../lib/utils';
6
6
 
7
+ // Props
7
8
  const props = withDefaults(defineProps<PrimitiveProps & {
8
- showOnHover?: boolean
9
- class?: HTMLAttributes["class"]
9
+ showOnHover?: boolean;
10
+ class?: HTMLAttributes['class'];
10
11
  }>(), {
11
- as: "button",
12
- })
12
+ as: 'button'
13
+ });
13
14
  </script>
14
15
 
15
16
  <template>
16
- <Primitive data-slot="sidebar-menu-action" data-sidebar="menu-action" :class="cn(
17
- 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',
18
- 'after:absolute after:-inset-2 md:after:hidden',
19
- 'peer-data-[size=sm]/menu-button:top-1',
20
- 'peer-data-[size=default]/menu-button:top-1.5',
21
- 'peer-data-[size=lg]/menu-button:top-2.5',
22
- 'group-data-[compact=true]/sidebar-wrapper:top-1',
23
- 'group-data-[collapsible=icon]:hidden',
24
- showOnHover
25
- && 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0',
26
- props.class,
27
- )" :as="as" :as-child="asChild">
28
- <slot />
29
- </Primitive>
30
- </template>
17
+ <Primitive data-slot="sidebar-menu-action" data-sidebar="menu-action" :class="cn(
18
+ 'text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',
19
+ 'after:absolute after:-inset-2 md:after:hidden',
20
+ 'peer-data-[size=sm]/menu-button:top-1',
21
+ 'peer-data-[size=default]/menu-button:top-1.5',
22
+ 'peer-data-[size=lg]/menu-button:top-2.5',
23
+ 'group-data-[compact=true]/sidebar-wrapper:top-1',
24
+ 'group-data-[collapsible=icon]:hidden',
25
+ showOnHover &&
26
+ 'peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0',
27
+ props.class
28
+ )
29
+ " :as="as" :as-child="asChild">
30
+ <slot />
31
+ </Primitive>
32
+ </template>
@@ -1,23 +1,25 @@
1
1
  <script setup lang="ts">
2
- import type { HTMLAttributes } from "vue"
3
- import { cn } from "../../../lib/utils"
2
+ import type { HTMLAttributes } from 'vue';
3
+ import { cn } from '../../../lib/utils';
4
4
 
5
+ // Props
5
6
  const props = defineProps<{
6
- class?: HTMLAttributes["class"]
7
- }>()
7
+ class?: HTMLAttributes['class'];
8
+ }>();
8
9
  </script>
9
10
 
10
11
  <template>
11
- <div data-slot="sidebar-menu-badge" data-sidebar="menu-badge" :class="cn(
12
- 'text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-semibold tabular-nums select-none',
13
- 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',
14
- 'peer-data-[size=sm]/menu-button:top-1',
15
- 'peer-data-[size=default]/menu-button:top-1.5',
16
- 'peer-data-[size=lg]/menu-button:top-2.5',
17
- 'group-data-[compact=true]/sidebar-wrapper:top-1',
18
- 'group-data-[collapsible=icon]:hidden',
19
- props.class,
20
- )">
21
- <slot />
22
- </div>
23
- </template>
12
+ <div data-slot="sidebar-menu-badge" data-sidebar="menu-badge" :class="cn(
13
+ 'text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-semibold tabular-nums select-none',
14
+ 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',
15
+ 'peer-data-[size=sm]/menu-button:top-1',
16
+ 'peer-data-[size=default]/menu-button:top-1.5',
17
+ 'peer-data-[size=lg]/menu-button:top-2.5',
18
+ 'group-data-[compact=true]/sidebar-wrapper:top-1',
19
+ 'group-data-[collapsible=icon]:hidden',
20
+ props.class
21
+ )
22
+ ">
23
+ <slot />
24
+ </div>
25
+ </template>