@brumaombra/ui-vintage 0.9.1 → 0.9.3

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 (344) hide show
  1. package/COMPONENTS.md +102 -2
  2. package/module.mjs +43 -43
  3. package/package.json +175 -175
  4. package/src/components/background-grid/BackgroundGrid.vue +4 -4
  5. package/src/components/blog/AllPostsSection.vue +33 -33
  6. package/src/components/blog/BlogCategoriesPage.vue +46 -0
  7. package/src/components/blog/BlogContentRenderer.vue +111 -111
  8. package/src/components/blog/BlogFAQSection.vue +19 -19
  9. package/src/components/blog/BlogHeaderSection.vue +80 -80
  10. package/src/components/blog/BlogIndexPage.vue +118 -0
  11. package/src/components/blog/BlogInfoSection.vue +47 -47
  12. package/src/components/blog/BlogPageBreadcrumbs.vue +43 -0
  13. package/src/components/blog/BlogPostHeader.vue +135 -135
  14. package/src/components/blog/BlogPostPage.vue +116 -0
  15. package/src/components/blog/BlogPostsPage.vue +74 -0
  16. package/src/components/blog/BlogProgressBar.vue +33 -33
  17. package/src/components/blog/BlogSectionTitle.vue +22 -22
  18. package/src/components/blog/BlogTagsPage.vue +46 -0
  19. package/src/components/blog/BlogTagsSection.vue +25 -25
  20. package/src/components/blog/BlogViewAllLink.vue +18 -0
  21. package/src/components/blog/CategoriesList.vue +14 -14
  22. package/src/components/blog/CategoriesSection.vue +11 -11
  23. package/src/components/blog/CategoryCard.vue +25 -25
  24. package/src/components/blog/HeaderCarousel.vue +97 -97
  25. package/src/components/blog/PostCard.vue +33 -33
  26. package/src/components/blog/PostsList.vue +15 -15
  27. package/src/components/blog/SocialShareSidebar.vue +84 -84
  28. package/src/components/blog/TableOfContents.vue +307 -307
  29. package/src/components/blog/blogPageUtils.ts +98 -0
  30. package/src/components/blog/index.ts +12 -1
  31. package/src/components/busy-indicator/BusyIndicator.vue +7 -7
  32. package/src/components/busy-indicator/busy-indicator-state.ts +56 -56
  33. package/src/components/card-grid/CardGrid.vue +34 -34
  34. package/src/components/chip/Chip.vue +15 -15
  35. package/src/components/confirm-dialog/ConfirmDialog.vue +50 -50
  36. package/src/components/confirm-dialog/confirm-dialog-state.ts +131 -131
  37. package/src/components/content/BlogList.vue +30 -30
  38. package/src/components/content/BlogTable.vue +36 -36
  39. package/src/components/content/CodeBlock.vue +136 -136
  40. package/src/components/content/Flow.vue +60 -60
  41. package/src/components/content/ProseHr.vue +15 -15
  42. package/src/components/content/ProsePre.vue +12 -12
  43. package/src/components/content/Terminal.vue +59 -59
  44. package/src/components/cookie-consent/CookieConsent.vue +36 -36
  45. package/src/components/cookie-consent/useCookieConsent.ts +37 -37
  46. package/src/components/dashboard-shell/DashboardShell.vue +171 -171
  47. package/src/components/data-list/DataList.vue +6 -6
  48. package/src/components/data-list/DataListItem.vue +4 -4
  49. package/src/components/data-list/DataListLabel.vue +4 -4
  50. package/src/components/data-list/DataListText.vue +4 -4
  51. package/src/components/data-list/DataListValue.vue +4 -4
  52. package/src/components/empty-state-card/EmptyStateCard.vue +40 -40
  53. package/src/components/error-page/ErrorPage.vue +72 -72
  54. package/src/components/info-card/InfoCard.vue +31 -31
  55. package/src/components/landing/landing-content/LandingContent.vue +4 -4
  56. package/src/components/landing/landing-footer/LandingFooter.vue +128 -128
  57. package/src/components/landing/landing-navbar/LandingNavbar.vue +50 -50
  58. package/src/components/landing/landing-shell/LandingShell.vue +36 -36
  59. package/src/components/language-flag/LanguageFlag.vue +25 -25
  60. package/src/components/language-flag/flags/ChineseFlag.vue +8 -8
  61. package/src/components/language-flag/flags/EnglishFlag.vue +7 -7
  62. package/src/components/language-flag/flags/FrenchFlag.vue +5 -5
  63. package/src/components/language-flag/flags/GermanFlag.vue +5 -5
  64. package/src/components/language-flag/flags/ItalianFlag.vue +7 -7
  65. package/src/components/language-flag/flags/JapaneseFlag.vue +4 -4
  66. package/src/components/language-flag/flags/PortugueseFlag.vue +57 -57
  67. package/src/components/language-flag/flags/RussianFlag.vue +5 -5
  68. package/src/components/language-flag/flags/SpanishFlag.vue +4 -4
  69. package/src/components/language-selector/LanguageSelector.vue +76 -76
  70. package/src/components/load-more-button/LoadMoreButton.vue +17 -17
  71. package/src/components/loading-state-card/LoadingStateCard.vue +28 -28
  72. package/src/components/message-dialog/MessageDialog.vue +59 -59
  73. package/src/components/message-dialog/message-dialog-state.ts +105 -105
  74. package/src/components/message-toast/MessageToast.vue +149 -149
  75. package/src/components/message-toast/message-toast-state.ts +146 -146
  76. package/src/components/page-header/PageHeader.vue +34 -34
  77. package/src/components/progress-component/ProgressComponent.vue +33 -33
  78. package/src/components/single-value-card/SingleValueCard.vue +57 -57
  79. package/src/components/slider-form-component/SliderFormComponent.vue +36 -36
  80. package/src/components/stat-strip/StatStrip.vue +22 -22
  81. package/src/components/switch-form-component/SwitchFormComponent.vue +20 -20
  82. package/src/components/text-link/TextLink.vue +14 -14
  83. package/src/components/theme-selector/ThemeSelector.vue +61 -61
  84. package/src/components/theme-selector/theme-transition.ts +63 -63
  85. package/src/components/ui/accordion/Accordion.vue +38 -38
  86. package/src/components/ui/alert/Alert.vue +5 -5
  87. package/src/components/ui/alert/AlertDescription.vue +4 -4
  88. package/src/components/ui/alert/AlertTitle.vue +4 -4
  89. package/src/components/ui/alert/index.ts +2 -2
  90. package/src/components/ui/alert-dialog/AlertDialog.vue +3 -3
  91. package/src/components/ui/alert-dialog/AlertDialogAction.vue +3 -3
  92. package/src/components/ui/alert-dialog/AlertDialogCancel.vue +3 -3
  93. package/src/components/ui/alert-dialog/AlertDialogContent.vue +7 -7
  94. package/src/components/ui/alert-dialog/AlertDialogDescription.vue +3 -3
  95. package/src/components/ui/alert-dialog/AlertDialogFooter.vue +4 -4
  96. package/src/components/ui/alert-dialog/AlertDialogHeader.vue +4 -4
  97. package/src/components/ui/alert-dialog/AlertDialogTitle.vue +3 -3
  98. package/src/components/ui/alert-dialog/AlertDialogTrigger.vue +3 -3
  99. package/src/components/ui/animated-number/AnimatedNumber.vue +49 -48
  100. package/src/components/ui/avatar/Avatar.vue +28 -28
  101. package/src/components/ui/avatar/AvatarFallback.vue +6 -6
  102. package/src/components/ui/avatar/AvatarGroup.vue +40 -40
  103. package/src/components/ui/avatar/AvatarImage.vue +3 -3
  104. package/src/components/ui/avatar/index.ts +17 -17
  105. package/src/components/ui/badge/Badge.vue +20 -20
  106. package/src/components/ui/breadcrumb/Breadcrumb.vue +4 -4
  107. package/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue +9 -9
  108. package/src/components/ui/breadcrumb/BreadcrumbItem.vue +4 -4
  109. package/src/components/ui/breadcrumb/BreadcrumbLink.vue +4 -4
  110. package/src/components/ui/breadcrumb/BreadcrumbList.vue +4 -4
  111. package/src/components/ui/breadcrumb/BreadcrumbPage.vue +4 -4
  112. package/src/components/ui/breadcrumb/BreadcrumbSeparator.vue +4 -4
  113. package/src/components/ui/busy/Busy.vue +33 -33
  114. package/src/components/ui/button/Button.vue +23 -23
  115. package/src/components/ui/button/index.ts +56 -56
  116. package/src/components/ui/calendar/Calendar.vue +138 -138
  117. package/src/components/ui/calendar/CalendarCell.vue +7 -7
  118. package/src/components/ui/calendar/CalendarCellTrigger.vue +18 -18
  119. package/src/components/ui/calendar/CalendarGrid.vue +3 -3
  120. package/src/components/ui/calendar/CalendarGridBody.vue +3 -3
  121. package/src/components/ui/calendar/CalendarGridHead.vue +3 -3
  122. package/src/components/ui/calendar/CalendarGridRow.vue +3 -3
  123. package/src/components/ui/calendar/CalendarHeadCell.vue +7 -7
  124. package/src/components/ui/calendar/CalendarHeader.vue +7 -7
  125. package/src/components/ui/calendar/CalendarHeading.vue +6 -6
  126. package/src/components/ui/calendar/CalendarNextButton.vue +15 -15
  127. package/src/components/ui/calendar/CalendarPrevButton.vue +15 -15
  128. package/src/components/ui/calendar/index.ts +4 -4
  129. package/src/components/ui/card/Card.vue +20 -20
  130. package/src/components/ui/card/CardAction.vue +8 -8
  131. package/src/components/ui/card/CardContent.vue +4 -4
  132. package/src/components/ui/card/CardDescription.vue +12 -12
  133. package/src/components/ui/card/CardFooter.vue +4 -4
  134. package/src/components/ui/card/CardHeader.vue +8 -8
  135. package/src/components/ui/card/CardText.vue +8 -8
  136. package/src/components/ui/card/CardTitle.vue +8 -8
  137. package/src/components/ui/checkbox/Checkbox.vue +27 -27
  138. package/src/components/ui/collapsible/Collapsible.vue +3 -3
  139. package/src/components/ui/collapsible/CollapsibleContent.vue +3 -3
  140. package/src/components/ui/collapsible/CollapsibleTrigger.vue +3 -3
  141. package/src/components/ui/combobox/Combobox.vue +4 -4
  142. package/src/components/ui/combobox/ComboboxAnchor.vue +16 -16
  143. package/src/components/ui/combobox/ComboboxEmpty.vue +3 -3
  144. package/src/components/ui/combobox/ComboboxGroup.vue +9 -9
  145. package/src/components/ui/combobox/ComboboxInput.vue +6 -6
  146. package/src/components/ui/combobox/ComboboxItem.vue +17 -17
  147. package/src/components/ui/combobox/ComboboxList.vue +19 -19
  148. package/src/components/ui/combobox/ComboboxSelect.vue +77 -77
  149. package/src/components/ui/combobox/ComboboxSeparator.vue +1 -1
  150. package/src/components/ui/combobox/ComboboxTrigger.vue +10 -10
  151. package/src/components/ui/combobox/types.ts +5 -5
  152. package/src/components/ui/command/Command.vue +48 -48
  153. package/src/components/ui/command/CommandDialog.vue +14 -14
  154. package/src/components/ui/command/CommandEmpty.vue +4 -4
  155. package/src/components/ui/command/CommandGroup.vue +23 -23
  156. package/src/components/ui/command/CommandInput.vue +9 -9
  157. package/src/components/ui/command/CommandItem.vue +40 -40
  158. package/src/components/ui/command/CommandList.vue +9 -9
  159. package/src/components/ui/command/CommandSeparator.vue +3 -3
  160. package/src/components/ui/command/CommandShortcut.vue +8 -8
  161. package/src/components/ui/command/index.ts +11 -11
  162. package/src/components/ui/data-table/DataTable.vue +145 -145
  163. package/src/components/ui/data-table/index.ts +11 -11
  164. package/src/components/ui/date-picker/DatePicker.vue +31 -31
  165. package/src/components/ui/date-time-picker/DateTimePicker.vue +97 -97
  166. package/src/components/ui/dialog/Dialog.vue +3 -3
  167. package/src/components/ui/dialog/DialogClose.vue +3 -3
  168. package/src/components/ui/dialog/DialogContent.vue +21 -21
  169. package/src/components/ui/dialog/DialogDescription.vue +7 -7
  170. package/src/components/ui/dialog/DialogFooter.vue +8 -8
  171. package/src/components/ui/dialog/DialogHeader.vue +4 -4
  172. package/src/components/ui/dialog/DialogOverlay.vue +7 -7
  173. package/src/components/ui/dialog/DialogScrollContent.vue +32 -32
  174. package/src/components/ui/dialog/DialogTitle.vue +3 -3
  175. package/src/components/ui/dialog/DialogTrigger.vue +3 -3
  176. package/src/components/ui/dropdown-menu/DropdownMenu.vue +3 -3
  177. package/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +11 -11
  178. package/src/components/ui/dropdown-menu/DropdownMenuContent.vue +15 -15
  179. package/src/components/ui/dropdown-menu/DropdownMenuGroup.vue +3 -3
  180. package/src/components/ui/dropdown-menu/DropdownMenuItem.vue +12 -12
  181. package/src/components/ui/dropdown-menu/DropdownMenuLabel.vue +9 -9
  182. package/src/components/ui/dropdown-menu/DropdownMenuPortal.vue +3 -3
  183. package/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +3 -3
  184. package/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +11 -11
  185. package/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue +1 -1
  186. package/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue +4 -4
  187. package/src/components/ui/dropdown-menu/DropdownMenuSub.vue +3 -3
  188. package/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue +15 -15
  189. package/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +15 -15
  190. package/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue +3 -3
  191. package/src/components/ui/dropdown-menu/classes.ts +16 -16
  192. package/src/components/ui/field/Field.vue +5 -5
  193. package/src/components/ui/field/FieldContent.vue +8 -8
  194. package/src/components/ui/field/FieldDescription.vue +10 -10
  195. package/src/components/ui/field/FieldError.vue +39 -39
  196. package/src/components/ui/field/FieldGroup.vue +8 -8
  197. package/src/components/ui/field/FieldLabel.vue +10 -10
  198. package/src/components/ui/field/FieldLegend.vue +11 -11
  199. package/src/components/ui/field/FieldSeparator.vue +11 -11
  200. package/src/components/ui/field/FieldSet.vue +9 -9
  201. package/src/components/ui/field/FieldTitle.vue +8 -8
  202. package/src/components/ui/field/field-context.ts +36 -36
  203. package/src/components/ui/field/index.ts +22 -22
  204. package/src/components/ui/file-dropzone/FileDropzone.vue +144 -144
  205. package/src/components/ui/file-dropzone/index.ts +19 -19
  206. package/src/components/ui/hover-card/HoverCard.vue +5 -5
  207. package/src/components/ui/hover-card/HoverCardContent.vue +13 -13
  208. package/src/components/ui/hover-card/HoverCardTrigger.vue +3 -3
  209. package/src/components/ui/input/Input.vue +13 -13
  210. package/src/components/ui/kbd/Kbd.vue +10 -10
  211. package/src/components/ui/kbd/KbdGroup.vue +49 -49
  212. package/src/components/ui/label/Label.vue +7 -7
  213. package/src/components/ui/native-select/NativeSelect.vue +16 -16
  214. package/src/components/ui/native-select/NativeSelectOptGroup.vue +3 -3
  215. package/src/components/ui/native-select/NativeSelectOption.vue +3 -3
  216. package/src/components/ui/number-field/NumberField.vue +88 -88
  217. package/src/components/ui/pagination/Pagination.vue +4 -4
  218. package/src/components/ui/pagination/PaginationContent.vue +4 -4
  219. package/src/components/ui/pagination/PaginationEllipsis.vue +9 -9
  220. package/src/components/ui/pagination/PaginationFirst.vue +8 -8
  221. package/src/components/ui/pagination/PaginationItem.vue +14 -14
  222. package/src/components/ui/pagination/PaginationLast.vue +8 -8
  223. package/src/components/ui/pagination/PaginationNext.vue +8 -8
  224. package/src/components/ui/pagination/PaginationPrevious.vue +8 -8
  225. package/src/components/ui/pagination/SimplePagination.vue +25 -25
  226. package/src/components/ui/pin-input/PinInput.vue +20 -20
  227. package/src/components/ui/pin-input/PinInputInput.vue +17 -17
  228. package/src/components/ui/pin-input/context.ts +1 -1
  229. package/src/components/ui/popover/Popover.vue +3 -3
  230. package/src/components/ui/popover/PopoverAnchor.vue +3 -3
  231. package/src/components/ui/popover/PopoverContent.vue +12 -12
  232. package/src/components/ui/popover/PopoverTrigger.vue +3 -3
  233. package/src/components/ui/progress/Progress.vue +16 -16
  234. package/src/components/ui/radio-group/RadioGroup.vue +7 -7
  235. package/src/components/ui/radio-group/RadioGroupCard.vue +39 -39
  236. package/src/components/ui/radio-group/RadioGroupItem.vue +20 -20
  237. package/src/components/ui/scroll-area/ScrollArea.vue +14 -14
  238. package/src/components/ui/scroll-area/ScrollBar.vue +12 -12
  239. package/src/components/ui/select/Select.vue +3 -3
  240. package/src/components/ui/select/SelectContent.vue +25 -25
  241. package/src/components/ui/select/SelectGroup.vue +3 -3
  242. package/src/components/ui/select/SelectItem.vue +24 -24
  243. package/src/components/ui/select/SelectItemContent.vue +32 -32
  244. package/src/components/ui/select/SelectItemText.vue +3 -3
  245. package/src/components/ui/select/SelectLabel.vue +3 -3
  246. package/src/components/ui/select/SelectScrollDownButton.vue +9 -9
  247. package/src/components/ui/select/SelectScrollUpButton.vue +9 -9
  248. package/src/components/ui/select/SelectSeparator.vue +2 -2
  249. package/src/components/ui/select/SelectTrigger.vue +14 -14
  250. package/src/components/ui/select/SelectValue.vue +3 -3
  251. package/src/components/ui/select/SelectValueContent.vue +39 -39
  252. package/src/components/ui/separator/Separator.vue +7 -7
  253. package/src/components/ui/sheet/Sheet.vue +3 -3
  254. package/src/components/ui/sheet/SheetClose.vue +3 -3
  255. package/src/components/ui/sheet/SheetContent.vue +22 -22
  256. package/src/components/ui/sheet/SheetDescription.vue +3 -3
  257. package/src/components/ui/sheet/SheetFooter.vue +3 -3
  258. package/src/components/ui/sheet/SheetHeader.vue +3 -3
  259. package/src/components/ui/sheet/SheetOverlay.vue +7 -7
  260. package/src/components/ui/sheet/SheetTitle.vue +3 -3
  261. package/src/components/ui/sheet/SheetTrigger.vue +3 -3
  262. package/src/components/ui/sidebar/Sidebar.vue +57 -57
  263. package/src/components/ui/sidebar/SidebarContent.vue +8 -8
  264. package/src/components/ui/sidebar/SidebarFooter.vue +8 -8
  265. package/src/components/ui/sidebar/SidebarGroup.vue +8 -8
  266. package/src/components/ui/sidebar/SidebarGroupAction.vue +9 -9
  267. package/src/components/ui/sidebar/SidebarGroupContent.vue +4 -4
  268. package/src/components/ui/sidebar/SidebarGroupLabel.vue +8 -8
  269. package/src/components/ui/sidebar/SidebarHeader.vue +8 -8
  270. package/src/components/ui/sidebar/SidebarInput.vue +8 -8
  271. package/src/components/ui/sidebar/SidebarInset.vue +9 -9
  272. package/src/components/ui/sidebar/SidebarMenu.vue +4 -4
  273. package/src/components/ui/sidebar/SidebarMenuAction.vue +18 -18
  274. package/src/components/ui/sidebar/SidebarMenuBadge.vue +14 -14
  275. package/src/components/ui/sidebar/SidebarMenuButton.vue +21 -21
  276. package/src/components/ui/sidebar/SidebarMenuButtonChild.vue +10 -10
  277. package/src/components/ui/sidebar/SidebarMenuItem.vue +4 -4
  278. package/src/components/ui/sidebar/SidebarMenuSkeleton.vue +10 -10
  279. package/src/components/ui/sidebar/SidebarMenuSub.vue +9 -9
  280. package/src/components/ui/sidebar/SidebarMenuSubButton.vue +17 -17
  281. package/src/components/ui/sidebar/SidebarMenuSubItem.vue +4 -4
  282. package/src/components/ui/sidebar/SidebarProvider.vue +46 -46
  283. package/src/components/ui/sidebar/SidebarRail.vue +13 -13
  284. package/src/components/ui/sidebar/SidebarSeparator.vue +4 -4
  285. package/src/components/ui/sidebar/SidebarTrigger.vue +5 -5
  286. package/src/components/ui/sidebar/index.ts +29 -29
  287. package/src/components/ui/sidebar/utils.ts +7 -7
  288. package/src/components/ui/skeleton/Skeleton.vue +6 -6
  289. package/src/components/ui/slider/Slider.vue +14 -14
  290. package/src/components/ui/spinner/Spinner.vue +21 -21
  291. package/src/components/ui/stepper/SimpleStepper.vue +26 -26
  292. package/src/components/ui/stepper/Stepper.vue +6 -6
  293. package/src/components/ui/stepper/StepperDescription.vue +5 -5
  294. package/src/components/ui/stepper/StepperIndicator.vue +17 -17
  295. package/src/components/ui/stepper/StepperItem.vue +4 -4
  296. package/src/components/ui/stepper/StepperSeparator.vue +7 -7
  297. package/src/components/ui/stepper/StepperTitle.vue +5 -5
  298. package/src/components/ui/stepper/StepperTrigger.vue +4 -4
  299. package/src/components/ui/stepper/index.ts +3 -3
  300. package/src/components/ui/switch/Switch.vue +15 -15
  301. package/src/components/ui/table/Table.vue +6 -6
  302. package/src/components/ui/table/TableBody.vue +4 -4
  303. package/src/components/ui/table/TableCaption.vue +4 -4
  304. package/src/components/ui/table/TableCell.vue +8 -8
  305. package/src/components/ui/table/TableEmpty.vue +14 -14
  306. package/src/components/ui/table/TableFooter.vue +8 -8
  307. package/src/components/ui/table/TableHead.vue +8 -8
  308. package/src/components/ui/table/TableHeader.vue +4 -4
  309. package/src/components/ui/table/TableRow.vue +8 -8
  310. package/src/components/ui/tabs/Tabs.vue +4 -4
  311. package/src/components/ui/tabs/TabsContent.vue +4 -4
  312. package/src/components/ui/tabs/TabsList.vue +15 -15
  313. package/src/components/ui/tabs/TabsTrigger.vue +10 -10
  314. package/src/components/ui/tags-input/TagsInput.vue +17 -17
  315. package/src/components/ui/tags-input/TagsInputInput.vue +6 -6
  316. package/src/components/ui/tags-input/TagsInputItem.vue +15 -15
  317. package/src/components/ui/tags-input/TagsInputItemDelete.vue +12 -12
  318. package/src/components/ui/tags-input/TagsInputItemText.vue +4 -4
  319. package/src/components/ui/textarea/Textarea.vue +12 -12
  320. package/src/components/ui/time-picker/TimePicker.vue +25 -25
  321. package/src/components/ui/toggle-group/Toggle.vue +10 -10
  322. package/src/components/ui/toggle-group/ToggleGroup.vue +38 -38
  323. package/src/components/ui/toggle-group/ToggleGroupItem.vue +9 -9
  324. package/src/components/ui/toggle-group/index.ts +46 -46
  325. package/src/components/ui/tooltip/Tooltip.vue +3 -3
  326. package/src/components/ui/tooltip/TooltipContent.vue +13 -13
  327. package/src/components/ui/tooltip/TooltipProvider.vue +4 -4
  328. package/src/components/ui/tooltip/TooltipTrigger.vue +3 -3
  329. package/src/i18n/de.json +206 -185
  330. package/src/i18n/en.json +206 -185
  331. package/src/i18n/es.json +206 -185
  332. package/src/i18n/fr.json +206 -185
  333. package/src/i18n/it.json +206 -185
  334. package/src/i18n/ja.json +206 -185
  335. package/src/i18n/pt.json +206 -185
  336. package/src/i18n/ru.json +206 -185
  337. package/src/i18n/zh.json +206 -185
  338. package/src/lib/color-tokens.ts +24 -24
  339. package/src/lib/i18n.ts +65 -65
  340. package/src/lib/utils.ts +33 -33
  341. package/src/nuxt-components.d.ts +2 -2
  342. package/src/runtime/ui-vintage-i18n-plugin.ts +49 -49
  343. package/src/shims-vue.d.ts +3 -3
  344. package/src/styles.css +377 -377
@@ -7,7 +7,7 @@ import { cn } from '../../../lib/utils';
7
7
 
8
8
  // Props
9
9
  const props = defineProps<TagsInputInputProps & {
10
- class?: HTMLAttributes['class'];
10
+ class?: HTMLAttributes['class'];
11
11
  }>();
12
12
 
13
13
  const delegatedProps = reactiveOmit(props, 'class');
@@ -15,9 +15,9 @@ const forwardedProps = useForwardProps(delegatedProps);
15
15
  </script>
16
16
 
17
17
  <template>
18
- <TagsInputInput data-slot="tags-input-input" v-bind="forwardedProps" :class="cn(
19
- 'h-7 min-w-24 flex-1 bg-transparent px-1 text-xs font-semibold text-foreground outline-none sm:text-sm',
20
- 'placeholder:text-muted-foreground placeholder:opacity-60 disabled:cursor-not-allowed',
21
- props.class
22
- )" />
18
+ <TagsInputInput data-slot="tags-input-input" v-bind="forwardedProps" :class="cn(
19
+ 'h-7 min-w-24 flex-1 bg-transparent px-1 text-xs font-semibold text-foreground outline-none sm:text-sm',
20
+ 'placeholder:text-muted-foreground placeholder:opacity-60 disabled:cursor-not-allowed',
21
+ props.class
22
+ )" />
23
23
  </template>
@@ -9,7 +9,7 @@ import TagsInputItemText from './TagsInputItemText.vue';
9
9
 
10
10
  // Props
11
11
  const props = defineProps<TagsInputItemProps & {
12
- class?: HTMLAttributes['class'];
12
+ class?: HTMLAttributes['class'];
13
13
  }>();
14
14
 
15
15
  const delegatedProps = reactiveOmit(props, 'class');
@@ -17,19 +17,19 @@ const forwardedProps = useForwardProps(delegatedProps);
17
17
  </script>
18
18
 
19
19
  <template>
20
- <TagsInputItem data-slot="tags-input-item" v-bind="forwardedProps" :class="cn(
21
- 'group/tag inline-flex h-7 max-w-full animate-uv-pop items-center gap-1.5 rounded border border-border bg-surface py-1 pr-1 pl-2.5 text-xs font-semibold text-foreground outline-none',
22
- 'transition-[border-color,background-color,box-shadow] duration-150 ease-snappy',
23
- 'data-[state=active]:border-primary data-[state=active]:bg-primary/5 data-[state=active]:ring-[3px] data-[state=active]:ring-primary/15',
24
- 'data-disabled:opacity-60',
25
- props.class
26
- )">
27
- <slot>
28
- <!-- Tag text -->
29
- <TagsInputItemText />
20
+ <TagsInputItem data-slot="tags-input-item" v-bind="forwardedProps" :class="cn(
21
+ 'group/tag inline-flex h-7 max-w-full animate-uv-pop items-center gap-1.5 rounded border border-border bg-surface py-1 pr-1 pl-2.5 text-xs font-semibold text-foreground outline-none',
22
+ 'transition-[border-color,background-color,box-shadow] duration-150 ease-snappy',
23
+ 'data-[state=active]:border-primary data-[state=active]:bg-primary/5 data-[state=active]:ring-[3px] data-[state=active]:ring-primary/15',
24
+ 'data-disabled:opacity-60',
25
+ props.class
26
+ )">
27
+ <slot>
28
+ <!-- Tag text -->
29
+ <TagsInputItemText />
30
30
 
31
- <!-- Delete button -->
32
- <TagsInputItemDelete />
33
- </slot>
34
- </TagsInputItem>
31
+ <!-- Delete button -->
32
+ <TagsInputItemDelete />
33
+ </slot>
34
+ </TagsInputItem>
35
35
  </template>
@@ -9,7 +9,7 @@ import { cn } from '../../../lib/utils';
9
9
 
10
10
  // Props
11
11
  const props = defineProps<TagsInputItemDeleteProps & {
12
- class?: HTMLAttributes['class'];
12
+ class?: HTMLAttributes['class'];
13
13
  }>();
14
14
 
15
15
  const delegatedProps = reactiveOmit(props, 'class');
@@ -17,15 +17,15 @@ const forwardedProps = useForwardProps(delegatedProps);
17
17
  </script>
18
18
 
19
19
  <template>
20
- <TagsInputItemDelete data-slot="tags-input-item-delete" v-bind="forwardedProps" :class="cn(
21
- 'inline-flex size-5 shrink-0 cursor-pointer items-center justify-center rounded-sm text-muted-foreground outline-none',
22
- '[transition:rotate_320ms_var(--ease-spring),scale_320ms_var(--ease-spring),background-color_150ms_var(--ease-snappy),color_150ms_var(--ease-snappy)]',
23
- 'hover:rotate-90 hover:bg-accent hover:text-foreground active:scale-[0.8] focus-visible:ring-[3px] focus-visible:ring-ring/45',
24
- 'group-data-[state=active]/tag:text-primary data-disabled:pointer-events-none',
25
- props.class
26
- )">
27
- <slot>
28
- <HugeiconsIcon :icon="Cancel01Icon" class="size-3" />
29
- </slot>
30
- </TagsInputItemDelete>
20
+ <TagsInputItemDelete data-slot="tags-input-item-delete" v-bind="forwardedProps" :class="cn(
21
+ 'inline-flex size-5 shrink-0 cursor-pointer items-center justify-center rounded-sm text-muted-foreground outline-none',
22
+ '[transition:rotate_320ms_var(--ease-spring),scale_320ms_var(--ease-spring),background-color_150ms_var(--ease-snappy),color_150ms_var(--ease-snappy)]',
23
+ 'hover:rotate-90 hover:bg-accent hover:text-foreground active:scale-[0.8] focus-visible:ring-[3px] focus-visible:ring-ring/45',
24
+ 'group-data-[state=active]/tag:text-primary data-disabled:pointer-events-none',
25
+ props.class
26
+ )">
27
+ <slot>
28
+ <HugeiconsIcon :icon="Cancel01Icon" class="size-3" />
29
+ </slot>
30
+ </TagsInputItemDelete>
31
31
  </template>
@@ -7,7 +7,7 @@ import { cn } from '../../../lib/utils';
7
7
 
8
8
  // Props
9
9
  const props = defineProps<TagsInputItemTextProps & {
10
- class?: HTMLAttributes['class'];
10
+ class?: HTMLAttributes['class'];
11
11
  }>();
12
12
 
13
13
  const delegatedProps = reactiveOmit(props, 'class');
@@ -15,7 +15,7 @@ const forwardedProps = useForwardProps(delegatedProps);
15
15
  </script>
16
16
 
17
17
  <template>
18
- <TagsInputItemText data-slot="tags-input-item-text" v-bind="forwardedProps" :class="cn('truncate leading-none', props.class)">
19
- <slot />
20
- </TagsInputItemText>
18
+ <TagsInputItemText data-slot="tags-input-item-text" v-bind="forwardedProps" :class="cn('truncate leading-none', props.class)">
19
+ <slot />
20
+ </TagsInputItemText>
21
21
  </template>
@@ -6,19 +6,19 @@ import { useFieldControlId } from '../field/field-context';
6
6
 
7
7
  // Props
8
8
  const props = defineProps<{
9
- class?: HTMLAttributes['class'];
10
- defaultValue?: string | number;
11
- modelValue?: string | number;
9
+ class?: HTMLAttributes['class'];
10
+ defaultValue?: string | number;
11
+ modelValue?: string | number;
12
12
  }>();
13
13
 
14
14
  // Emits
15
15
  const emits = defineEmits<{
16
- (e: 'update:modelValue', payload: string | number): void;
16
+ (e: 'update:modelValue', payload: string | number): void;
17
17
  }>();
18
18
 
19
19
  const modelValue = useVModel(props, 'modelValue', emits, {
20
- passive: true,
21
- defaultValue: props.defaultValue
20
+ passive: true,
21
+ defaultValue: props.defaultValue
22
22
  });
23
23
 
24
24
  // Let a surrounding Field label point to this control
@@ -26,10 +26,10 @@ const fieldControlId = useFieldControlId();
26
26
  </script>
27
27
 
28
28
  <template>
29
- <textarea :id="fieldControlId" v-model="modelValue" data-slot="textarea" :class="cn(
30
- 'uv-field flex field-sizing-content min-h-30 w-full min-w-0 rounded border border-input bg-secondary px-4 py-3 text-xs font-semibold text-foreground shadow-elevated-sm outline-none sm:text-sm',
31
- 'selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground placeholder:opacity-60',
32
- 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60 aria-invalid:animate-uv-shake',
33
- props.class
34
- )" />
29
+ <textarea :id="fieldControlId" v-model="modelValue" data-slot="textarea" :class="cn(
30
+ 'uv-field flex field-sizing-content min-h-30 w-full min-w-0 rounded border border-input bg-secondary px-4 py-3 text-xs font-semibold text-foreground shadow-elevated-sm outline-none sm:text-sm',
31
+ 'selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground placeholder:opacity-60',
32
+ 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-60 aria-invalid:animate-uv-shake',
33
+ props.class
34
+ )" />
35
35
  </template>
@@ -6,46 +6,46 @@ import { Input } from '../input';
6
6
 
7
7
  // Props
8
8
  const props = withDefaults(defineProps<{
9
- defaultValue?: string;
10
- modelValue?: string;
11
- step?: string | number;
12
- min?: string;
13
- max?: string;
14
- disabled?: boolean;
15
- class?: HTMLAttributes['class'];
16
- inputClass?: HTMLAttributes['class'];
9
+ defaultValue?: string;
10
+ modelValue?: string;
11
+ step?: string | number;
12
+ min?: string;
13
+ max?: string;
14
+ disabled?: boolean;
15
+ class?: HTMLAttributes['class'];
16
+ inputClass?: HTMLAttributes['class'];
17
17
  }>(), {
18
- defaultValue: '',
19
- step: 60,
20
- disabled: false
18
+ defaultValue: '',
19
+ step: 60,
20
+ disabled: false
21
21
  });
22
22
 
23
23
  // Emits
24
24
  const emits = defineEmits<{
25
- (e: 'update:modelValue', payload: string): void;
25
+ (e: 'update:modelValue', payload: string): void;
26
26
  }>();
27
27
 
28
28
  const internalValue = ref(props.defaultValue);
29
29
  const isControlled = computed(() => props.modelValue !== undefined);
30
30
 
31
31
  const time = computed({
32
- get: () =>
33
- (isControlled.value ? props.modelValue : internalValue.value) ?? '',
34
- set: (value: string | number) => {
35
- const nextValue = String(value);
32
+ get: () =>
33
+ (isControlled.value ? props.modelValue : internalValue.value) ?? '',
34
+ set: (value: string | number) => {
35
+ const nextValue = String(value);
36
36
 
37
- if (!isControlled.value) internalValue.value = nextValue;
37
+ if (!isControlled.value) internalValue.value = nextValue;
38
38
 
39
- emits('update:modelValue', nextValue);
40
- }
39
+ emits('update:modelValue', nextValue);
40
+ }
41
41
  });
42
42
  </script>
43
43
 
44
44
  <template>
45
- <Input v-model="time" type="time" :step="props.step" :min="props.min" :max="props.max" :disabled="props.disabled" :class="cn(
46
- 'cursor-pointer font-normal hover:border-border-strong hover:bg-accent [&::-webkit-calendar-picker-indicator]:cursor-pointer [&::-webkit-calendar-picker-indicator]:opacity-70 hover:[&::-webkit-calendar-picker-indicator]:opacity-100',
47
- props.inputClass,
48
- props.class
49
- )
50
- " />
45
+ <Input v-model="time" type="time" :step="props.step" :min="props.min" :max="props.max" :disabled="props.disabled" :class="cn(
46
+ 'cursor-pointer font-normal hover:border-border-strong hover:bg-accent [&::-webkit-calendar-picker-indicator]:cursor-pointer [&::-webkit-calendar-picker-indicator]:opacity-70 hover:[&::-webkit-calendar-picker-indicator]:opacity-100',
47
+ props.inputClass,
48
+ props.class
49
+ )
50
+ " />
51
51
  </template>
@@ -9,14 +9,14 @@ import { toggleVariants } from '.';
9
9
 
10
10
  // Props
11
11
  const props = withDefaults(defineProps<ToggleProps & {
12
- variant?: ToggleVariants['variant'];
13
- size?: ToggleVariants['size'];
14
- class?: HTMLAttributes['class'];
12
+ variant?: ToggleVariants['variant'];
13
+ size?: ToggleVariants['size'];
14
+ class?: HTMLAttributes['class'];
15
15
  }>(), {
16
- variant: 'default',
17
- size: 'default',
18
- disabled: false,
19
- modelValue: undefined,
16
+ variant: 'default',
17
+ size: 'default',
18
+ disabled: false,
19
+ modelValue: undefined,
20
20
  });
21
21
 
22
22
  // Emits
@@ -27,7 +27,7 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);
27
27
  </script>
28
28
 
29
29
  <template>
30
- <Toggle v-slot="slotProps" data-slot="toggle" :data-variant="props.variant" :data-size="props.size" v-bind="forwarded" :class="cn(toggleVariants({ variant: props.variant, size: props.size }), props.class)">
31
- <slot v-bind="slotProps" />
32
- </Toggle>
30
+ <Toggle v-slot="slotProps" data-slot="toggle" :data-variant="props.variant" :data-size="props.size" v-bind="forwarded" :class="cn(toggleVariants({ variant: props.variant, size: props.size }), props.class)">
31
+ <slot v-bind="slotProps" />
32
+ </Toggle>
33
33
  </template>
@@ -10,15 +10,15 @@ import { toggleGroupContextKey } from '.';
10
10
 
11
11
  // Props
12
12
  const props = withDefaults(defineProps<ToggleGroupRootProps & {
13
- size?: ToggleGroupSize;
14
- highlight?: boolean;
15
- class?: HTMLAttributes['class'];
13
+ size?: ToggleGroupSize;
14
+ highlight?: boolean;
15
+ class?: HTMLAttributes['class'];
16
16
  }>(), {
17
- size: 'default',
18
- highlight: false,
19
- disabled: false,
20
- rovingFocus: true,
21
- loop: true,
17
+ size: 'default',
18
+ highlight: false,
19
+ disabled: false,
20
+ rovingFocus: true,
21
+ loop: true,
22
22
  });
23
23
 
24
24
  // Emits
@@ -29,8 +29,8 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);
29
29
 
30
30
  // Single selection gets the sliding indicator (mirrors reka's type inference)
31
31
  const isSingle = computed(() => {
32
- if (props.type) return props.type === 'single';
33
- return !Array.isArray(props.modelValue ?? props.defaultValue);
32
+ if (props.type) return props.type === 'single';
33
+ return !Array.isArray(props.modelValue ?? props.defaultValue);
34
34
  });
35
35
 
36
36
  // Share size and indicator mode with the items
@@ -45,16 +45,16 @@ const animated = ref(false);
45
45
 
46
46
  // Measure the active item (offset* ignores the press scale transform)
47
47
  function measure() {
48
- const root = unrefElement(rootRef) as HTMLElement | null | undefined;
49
- if (!root || !isSingle.value) return;
50
- const item = root.querySelector<HTMLElement>('[data-slot="toggle-group-item"][data-state="on"]');
51
- activeItem.value = item;
52
- if (!item) {
53
- visible.value = false;
54
- return;
55
- }
56
- rect.value = { x: item.offsetLeft, y: item.offsetTop, width: item.offsetWidth, height: item.offsetHeight };
57
- visible.value = true;
48
+ const root = unrefElement(rootRef) as HTMLElement | null | undefined;
49
+ if (!root || !isSingle.value) return;
50
+ const item = root.querySelector<HTMLElement>('[data-slot="toggle-group-item"][data-state="on"]');
51
+ activeItem.value = item;
52
+ if (!item) {
53
+ visible.value = false;
54
+ return;
55
+ }
56
+ rect.value = { x: item.offsetLeft, y: item.offsetTop, width: item.offsetWidth, height: item.offsetHeight };
57
+ visible.value = true;
58
58
  }
59
59
 
60
60
  // Re-measure when selection changes or when the layout moves
@@ -64,30 +64,30 @@ useResizeObserver(activeItem, measure);
64
64
 
65
65
  // First placement is instant, later moves slide
66
66
  onMounted(async () => {
67
- measure();
68
- await nextTick();
69
- requestAnimationFrame(() => {
70
- animated.value = true;
71
- });
67
+ measure();
68
+ await nextTick();
69
+ requestAnimationFrame(() => {
70
+ animated.value = true;
71
+ });
72
72
  });
73
73
 
74
74
  const indicatorStyle = computed<CSSProperties>(() => ({
75
- width: `${rect.value.width}px`,
76
- height: `${rect.value.height}px`,
77
- transform: `translate(${rect.value.x}px, ${rect.value.y}px) scale(${visible.value ? 1 : 0.9})`,
78
- opacity: visible.value ? 1 : 0,
75
+ width: `${rect.value.width}px`,
76
+ height: `${rect.value.height}px`,
77
+ transform: `translate(${rect.value.x}px, ${rect.value.y}px) scale(${visible.value ? 1 : 0.9})`,
78
+ opacity: visible.value ? 1 : 0,
79
79
  }));
80
80
  </script>
81
81
 
82
82
  <template>
83
- <ToggleGroupRoot ref="rootRef" v-slot="slotProps" data-slot="toggle-group" :data-size="props.size" v-bind="forwarded" :class="cn('relative inline-flex w-fit items-center gap-1 rounded border border-border bg-card p-1 shadow-elevated-sm data-[orientation=vertical]:flex-col data-[orientation=vertical]:items-stretch', props.class)">
84
- <!-- Sliding indicator behind the active item -->
85
- <span v-if="isSingle" data-slot="toggle-group-indicator" aria-hidden="true" :style="indicatorStyle" :class="cn(
86
- 'pointer-events-none absolute top-0 left-0 z-0 rounded-sm border',
87
- animated && '[transition:transform_380ms_var(--ease-spring),width_380ms_var(--ease-spring),height_380ms_var(--ease-spring),opacity_180ms_var(--ease-snappy)]',
88
- props.highlight ? 'border-primary/40 bg-primary/10' : 'border-border-strong bg-surface shadow-elevated-sm'
89
- )" />
83
+ <ToggleGroupRoot ref="rootRef" v-slot="slotProps" data-slot="toggle-group" :data-size="props.size" v-bind="forwarded" :class="cn('relative inline-flex w-fit items-center gap-1 rounded border border-border bg-card p-1 shadow-elevated-sm data-[orientation=vertical]:flex-col data-[orientation=vertical]:items-stretch', props.class)">
84
+ <!-- Sliding indicator behind the active item -->
85
+ <span v-if="isSingle" data-slot="toggle-group-indicator" aria-hidden="true" :style="indicatorStyle" :class="cn(
86
+ 'pointer-events-none absolute top-0 left-0 z-0 rounded-sm border',
87
+ animated && '[transition:transform_380ms_var(--ease-spring),width_380ms_var(--ease-spring),height_380ms_var(--ease-spring),opacity_180ms_var(--ease-snappy)]',
88
+ props.highlight ? 'border-primary/40 bg-primary/10' : 'border-border-strong bg-surface shadow-elevated-sm'
89
+ )" />
90
90
 
91
- <slot v-bind="slotProps" />
92
- </ToggleGroupRoot>
91
+ <slot v-bind="slotProps" />
92
+ </ToggleGroupRoot>
93
93
  </template>
@@ -10,8 +10,8 @@ import { toggleGroupContextKey, toggleGroupItemVariants } from '.';
10
10
 
11
11
  // Props
12
12
  const props = defineProps<ToggleGroupItemProps & {
13
- size?: ToggleGroupSize;
14
- class?: HTMLAttributes['class'];
13
+ size?: ToggleGroupSize;
14
+ class?: HTMLAttributes['class'];
15
15
  }>();
16
16
 
17
17
  const delegatedProps = reactiveOmit(props, 'class', 'size');
@@ -24,11 +24,11 @@ const hasIndicator = computed(() => context?.indicator.value ?? false);
24
24
  </script>
25
25
 
26
26
  <template>
27
- <ToggleGroupItem v-slot="slotProps" data-slot="toggle-group-item" :data-size="size" v-bind="forwardedProps" :class="cn(
28
- toggleGroupItemVariants({ size }),
29
- !hasIndicator && 'hover:bg-accent data-[state=on]:bg-accent',
30
- props.class
31
- )">
32
- <slot v-bind="slotProps" />
33
- </ToggleGroupItem>
27
+ <ToggleGroupItem v-slot="slotProps" data-slot="toggle-group-item" :data-size="size" v-bind="forwardedProps" :class="cn(
28
+ toggleGroupItemVariants({ size }),
29
+ !hasIndicator && 'hover:bg-accent data-[state=on]:bg-accent',
30
+ props.class
31
+ )">
32
+ <slot v-bind="slotProps" />
33
+ </ToggleGroupItem>
34
34
  </template>
@@ -7,62 +7,62 @@ export { default as ToggleGroup } from './ToggleGroup.vue';
7
7
  export { default as ToggleGroupItem } from './ToggleGroupItem.vue';
8
8
 
9
9
  export type ToggleVariants = {
10
- variant?: 'default' | 'outline' | null | undefined;
11
- size?: 'default' | 'sm' | 'lg' | null | undefined;
10
+ variant?: 'default' | 'outline' | null | undefined;
11
+ size?: 'default' | 'sm' | 'lg' | null | undefined;
12
12
  };
13
13
 
14
14
  export type ToggleGroupSize = 'default' | 'sm' | 'lg';
15
15
 
16
16
  // Standalone toggle button
17
17
  export const toggleVariants: (props?: ToggleVariants & ClassProp) => string = cva(
18
- [
19
- "inline-flex shrink-0 cursor-pointer select-none items-center justify-center gap-2 whitespace-nowrap rounded text-xs font-semibold text-muted-foreground outline-none sm:text-sm",
20
- "[transition:color_150ms,background-color_150ms,border-color_150ms,box-shadow_220ms,opacity_150ms,transform_380ms_var(--ease-spring)]",
21
- "hover:bg-accent hover:text-foreground active:scale-[0.97] active:duration-75 disabled:pointer-events-none disabled:opacity-50",
22
- "focus-visible:ring-[3px] focus-visible:ring-ring/45",
23
- "data-[state=on]:bg-accent data-[state=on]:text-foreground",
24
- "[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
25
- ],
26
- {
27
- variants: {
28
- variant: {
29
- default: 'bg-transparent',
30
- outline: 'border border-border bg-secondary shadow-elevated-sm hover:border-border-strong data-[state=on]:border-border-strong',
31
- },
32
- size: {
33
- default: 'h-10 min-w-10 px-3',
34
- sm: 'h-8 min-w-8 gap-1.5 px-2',
35
- lg: 'h-12 min-w-12 px-4',
36
- },
37
- },
38
- defaultVariants: {
39
- variant: 'default',
40
- size: 'default',
41
- },
42
- },
18
+ [
19
+ "inline-flex shrink-0 cursor-pointer select-none items-center justify-center gap-2 whitespace-nowrap rounded text-xs font-semibold text-muted-foreground outline-none sm:text-sm",
20
+ "[transition:color_150ms,background-color_150ms,border-color_150ms,box-shadow_220ms,opacity_150ms,transform_380ms_var(--ease-spring)]",
21
+ "hover:bg-accent hover:text-foreground active:scale-[0.97] active:duration-75 disabled:pointer-events-none disabled:opacity-50",
22
+ "focus-visible:ring-[3px] focus-visible:ring-ring/45",
23
+ "data-[state=on]:bg-accent data-[state=on]:text-foreground",
24
+ "[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
25
+ ],
26
+ {
27
+ variants: {
28
+ variant: {
29
+ default: 'bg-transparent',
30
+ outline: 'border border-border bg-secondary shadow-elevated-sm hover:border-border-strong data-[state=on]:border-border-strong',
31
+ },
32
+ size: {
33
+ default: 'h-10 min-w-10 px-3',
34
+ sm: 'h-8 min-w-8 gap-1.5 px-2',
35
+ lg: 'h-12 min-w-12 px-4',
36
+ },
37
+ },
38
+ defaultVariants: {
39
+ variant: 'default',
40
+ size: 'default',
41
+ },
42
+ },
43
43
  );
44
44
 
45
45
  // Segmented control item (sits above the sliding indicator)
46
46
  export const toggleGroupItemVariants: (props?: { size?: ToggleGroupSize | null } & ClassProp) => string = cva(
47
- [
48
- "relative z-10 inline-flex shrink-0 cursor-pointer select-none items-center justify-center gap-1.5 whitespace-nowrap rounded-sm text-xs font-semibold text-muted-foreground outline-none sm:text-sm",
49
- "[transition:color_150ms,background-color_150ms,box-shadow_220ms,opacity_150ms,transform_380ms_var(--ease-spring)]",
50
- "hover:text-foreground data-[state=on]:text-foreground active:scale-[0.96] active:duration-75 disabled:pointer-events-none disabled:opacity-50",
51
- "focus-visible:ring-[3px] focus-visible:ring-ring/45",
52
- "[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
53
- ],
54
- {
55
- variants: {
56
- size: {
57
- default: 'h-9 px-3',
58
- sm: 'h-7 px-2.5',
59
- lg: 'h-11 px-4',
60
- },
61
- },
62
- defaultVariants: {
63
- size: 'default',
64
- },
65
- },
47
+ [
48
+ "relative z-10 inline-flex shrink-0 cursor-pointer select-none items-center justify-center gap-1.5 whitespace-nowrap rounded-sm text-xs font-semibold text-muted-foreground outline-none sm:text-sm",
49
+ "[transition:color_150ms,background-color_150ms,box-shadow_220ms,opacity_150ms,transform_380ms_var(--ease-spring)]",
50
+ "hover:text-foreground data-[state=on]:text-foreground active:scale-[0.96] active:duration-75 disabled:pointer-events-none disabled:opacity-50",
51
+ "focus-visible:ring-[3px] focus-visible:ring-ring/45",
52
+ "[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
53
+ ],
54
+ {
55
+ variants: {
56
+ size: {
57
+ default: 'h-9 px-3',
58
+ sm: 'h-7 px-2.5',
59
+ lg: 'h-11 px-4',
60
+ },
61
+ },
62
+ defaultVariants: {
63
+ size: 'default',
64
+ },
65
+ },
66
66
  );
67
67
 
68
68
  // Context shared by a toggle group with its items
@@ -12,7 +12,7 @@ const forwarded = useForwardPropsEmits(props, emits);
12
12
  </script>
13
13
 
14
14
  <template>
15
- <TooltipRoot v-slot="slotProps" data-slot="tooltip" v-bind="forwarded">
16
- <slot v-bind="slotProps" />
17
- </TooltipRoot>
15
+ <TooltipRoot v-slot="slotProps" data-slot="tooltip" v-bind="forwarded">
16
+ <slot v-bind="slotProps" />
17
+ </TooltipRoot>
18
18
  </template>
@@ -6,14 +6,14 @@ import { TooltipArrow, TooltipContent, TooltipPortal, useForwardPropsEmits } fro
6
6
  import { cn } from '../../../lib/utils';
7
7
 
8
8
  defineOptions({
9
- inheritAttrs: false
9
+ inheritAttrs: false
10
10
  });
11
11
 
12
12
  // Props
13
13
  const props = withDefaults(defineProps<TooltipContentProps & {
14
- class?: HTMLAttributes['class'];
14
+ class?: HTMLAttributes['class'];
15
15
  }>(), {
16
- sideOffset: 4
16
+ sideOffset: 4
17
17
  });
18
18
 
19
19
  // Emits
@@ -24,15 +24,15 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);
24
24
  </script>
25
25
 
26
26
  <template>
27
- <TooltipPortal>
28
- <TooltipContent data-slot="tooltip-content" v-bind="{ ...forwarded, ...$attrs }" :class="cn(
29
- 'uv-floating-motion bg-foreground text-background z-50 w-fit max-w-72 rounded px-3 py-1.5 text-xs font-semibold text-balance shadow-elevated-lg',
30
- props.class
31
- )
32
- ">
33
- <slot />
27
+ <TooltipPortal>
28
+ <TooltipContent data-slot="tooltip-content" v-bind="{ ...forwarded, ...$attrs }" :class="cn(
29
+ 'uv-floating-motion bg-foreground text-background z-50 w-fit max-w-72 rounded px-3 py-1.5 text-xs font-semibold text-balance shadow-elevated-lg',
30
+ props.class
31
+ )
32
+ ">
33
+ <slot />
34
34
 
35
- <TooltipArrow class="bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-xs" />
36
- </TooltipContent>
37
- </TooltipPortal>
35
+ <TooltipArrow class="bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%-2px)] rotate-45 rounded-xs" />
36
+ </TooltipContent>
37
+ </TooltipPortal>
38
38
  </template>
@@ -4,12 +4,12 @@ import { TooltipProvider } from 'reka-ui';
4
4
 
5
5
  // Props
6
6
  const props = withDefaults(defineProps<TooltipProviderProps>(), {
7
- delayDuration: 0
7
+ delayDuration: 0
8
8
  });
9
9
  </script>
10
10
 
11
11
  <template>
12
- <TooltipProvider v-bind="props">
13
- <slot />
14
- </TooltipProvider>
12
+ <TooltipProvider v-bind="props">
13
+ <slot />
14
+ </TooltipProvider>
15
15
  </template>
@@ -7,7 +7,7 @@ const props = defineProps<TooltipTriggerProps>();
7
7
  </script>
8
8
 
9
9
  <template>
10
- <TooltipTrigger data-slot="tooltip-trigger" v-bind="props">
11
- <slot />
12
- </TooltipTrigger>
10
+ <TooltipTrigger data-slot="tooltip-trigger" v-bind="props">
11
+ <slot />
12
+ </TooltipTrigger>
13
13
  </template>