@brumaombra/ui-vintage 0.9.1 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/module.mjs +43 -43
  2. package/package.json +175 -175
  3. package/src/components/background-grid/BackgroundGrid.vue +4 -4
  4. package/src/components/blog/AllPostsSection.vue +33 -33
  5. package/src/components/blog/BlogContentRenderer.vue +111 -111
  6. package/src/components/blog/BlogFAQSection.vue +19 -19
  7. package/src/components/blog/BlogHeaderSection.vue +80 -80
  8. package/src/components/blog/BlogInfoSection.vue +47 -47
  9. package/src/components/blog/BlogPostHeader.vue +135 -135
  10. package/src/components/blog/BlogProgressBar.vue +33 -33
  11. package/src/components/blog/BlogSectionTitle.vue +22 -22
  12. package/src/components/blog/BlogTagsSection.vue +25 -25
  13. package/src/components/blog/CategoriesList.vue +14 -14
  14. package/src/components/blog/CategoriesSection.vue +11 -11
  15. package/src/components/blog/CategoryCard.vue +25 -25
  16. package/src/components/blog/HeaderCarousel.vue +97 -97
  17. package/src/components/blog/PostCard.vue +33 -33
  18. package/src/components/blog/PostsList.vue +15 -15
  19. package/src/components/blog/SocialShareSidebar.vue +84 -84
  20. package/src/components/blog/TableOfContents.vue +307 -307
  21. package/src/components/busy-indicator/BusyIndicator.vue +7 -7
  22. package/src/components/busy-indicator/busy-indicator-state.ts +56 -56
  23. package/src/components/card-grid/CardGrid.vue +34 -34
  24. package/src/components/chip/Chip.vue +15 -15
  25. package/src/components/confirm-dialog/ConfirmDialog.vue +50 -50
  26. package/src/components/confirm-dialog/confirm-dialog-state.ts +131 -131
  27. package/src/components/content/BlogList.vue +30 -30
  28. package/src/components/content/BlogTable.vue +36 -36
  29. package/src/components/content/CodeBlock.vue +136 -136
  30. package/src/components/content/Flow.vue +60 -60
  31. package/src/components/content/ProseHr.vue +15 -15
  32. package/src/components/content/ProsePre.vue +12 -12
  33. package/src/components/content/Terminal.vue +59 -59
  34. package/src/components/cookie-consent/CookieConsent.vue +36 -36
  35. package/src/components/cookie-consent/useCookieConsent.ts +37 -37
  36. package/src/components/dashboard-shell/DashboardShell.vue +171 -171
  37. package/src/components/data-list/DataList.vue +6 -6
  38. package/src/components/data-list/DataListItem.vue +4 -4
  39. package/src/components/data-list/DataListLabel.vue +4 -4
  40. package/src/components/data-list/DataListText.vue +4 -4
  41. package/src/components/data-list/DataListValue.vue +4 -4
  42. package/src/components/empty-state-card/EmptyStateCard.vue +40 -40
  43. package/src/components/error-page/ErrorPage.vue +72 -72
  44. package/src/components/info-card/InfoCard.vue +31 -31
  45. package/src/components/landing/landing-content/LandingContent.vue +4 -4
  46. package/src/components/landing/landing-footer/LandingFooter.vue +128 -128
  47. package/src/components/landing/landing-navbar/LandingNavbar.vue +50 -50
  48. package/src/components/landing/landing-shell/LandingShell.vue +36 -36
  49. package/src/components/language-flag/LanguageFlag.vue +25 -25
  50. package/src/components/language-flag/flags/ChineseFlag.vue +8 -8
  51. package/src/components/language-flag/flags/EnglishFlag.vue +7 -7
  52. package/src/components/language-flag/flags/FrenchFlag.vue +5 -5
  53. package/src/components/language-flag/flags/GermanFlag.vue +5 -5
  54. package/src/components/language-flag/flags/ItalianFlag.vue +7 -7
  55. package/src/components/language-flag/flags/JapaneseFlag.vue +4 -4
  56. package/src/components/language-flag/flags/PortugueseFlag.vue +57 -57
  57. package/src/components/language-flag/flags/RussianFlag.vue +5 -5
  58. package/src/components/language-flag/flags/SpanishFlag.vue +4 -4
  59. package/src/components/language-selector/LanguageSelector.vue +76 -76
  60. package/src/components/load-more-button/LoadMoreButton.vue +17 -17
  61. package/src/components/loading-state-card/LoadingStateCard.vue +28 -28
  62. package/src/components/message-dialog/MessageDialog.vue +59 -59
  63. package/src/components/message-dialog/message-dialog-state.ts +105 -105
  64. package/src/components/message-toast/MessageToast.vue +149 -149
  65. package/src/components/message-toast/message-toast-state.ts +146 -146
  66. package/src/components/page-header/PageHeader.vue +34 -34
  67. package/src/components/progress-component/ProgressComponent.vue +33 -33
  68. package/src/components/single-value-card/SingleValueCard.vue +57 -57
  69. package/src/components/slider-form-component/SliderFormComponent.vue +36 -36
  70. package/src/components/stat-strip/StatStrip.vue +22 -22
  71. package/src/components/switch-form-component/SwitchFormComponent.vue +20 -20
  72. package/src/components/text-link/TextLink.vue +14 -14
  73. package/src/components/theme-selector/ThemeSelector.vue +61 -61
  74. package/src/components/theme-selector/theme-transition.ts +63 -63
  75. package/src/components/ui/accordion/Accordion.vue +38 -38
  76. package/src/components/ui/alert/Alert.vue +5 -5
  77. package/src/components/ui/alert/AlertDescription.vue +4 -4
  78. package/src/components/ui/alert/AlertTitle.vue +4 -4
  79. package/src/components/ui/alert/index.ts +2 -2
  80. package/src/components/ui/alert-dialog/AlertDialog.vue +3 -3
  81. package/src/components/ui/alert-dialog/AlertDialogAction.vue +3 -3
  82. package/src/components/ui/alert-dialog/AlertDialogCancel.vue +3 -3
  83. package/src/components/ui/alert-dialog/AlertDialogContent.vue +7 -7
  84. package/src/components/ui/alert-dialog/AlertDialogDescription.vue +3 -3
  85. package/src/components/ui/alert-dialog/AlertDialogFooter.vue +4 -4
  86. package/src/components/ui/alert-dialog/AlertDialogHeader.vue +4 -4
  87. package/src/components/ui/alert-dialog/AlertDialogTitle.vue +3 -3
  88. package/src/components/ui/alert-dialog/AlertDialogTrigger.vue +3 -3
  89. package/src/components/ui/animated-number/AnimatedNumber.vue +49 -48
  90. package/src/components/ui/avatar/Avatar.vue +28 -28
  91. package/src/components/ui/avatar/AvatarFallback.vue +6 -6
  92. package/src/components/ui/avatar/AvatarGroup.vue +40 -40
  93. package/src/components/ui/avatar/AvatarImage.vue +3 -3
  94. package/src/components/ui/avatar/index.ts +17 -17
  95. package/src/components/ui/badge/Badge.vue +20 -20
  96. package/src/components/ui/breadcrumb/Breadcrumb.vue +4 -4
  97. package/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue +9 -9
  98. package/src/components/ui/breadcrumb/BreadcrumbItem.vue +4 -4
  99. package/src/components/ui/breadcrumb/BreadcrumbLink.vue +4 -4
  100. package/src/components/ui/breadcrumb/BreadcrumbList.vue +4 -4
  101. package/src/components/ui/breadcrumb/BreadcrumbPage.vue +4 -4
  102. package/src/components/ui/breadcrumb/BreadcrumbSeparator.vue +4 -4
  103. package/src/components/ui/busy/Busy.vue +33 -33
  104. package/src/components/ui/button/Button.vue +23 -23
  105. package/src/components/ui/button/index.ts +56 -56
  106. package/src/components/ui/calendar/Calendar.vue +138 -138
  107. package/src/components/ui/calendar/CalendarCell.vue +7 -7
  108. package/src/components/ui/calendar/CalendarCellTrigger.vue +18 -18
  109. package/src/components/ui/calendar/CalendarGrid.vue +3 -3
  110. package/src/components/ui/calendar/CalendarGridBody.vue +3 -3
  111. package/src/components/ui/calendar/CalendarGridHead.vue +3 -3
  112. package/src/components/ui/calendar/CalendarGridRow.vue +3 -3
  113. package/src/components/ui/calendar/CalendarHeadCell.vue +7 -7
  114. package/src/components/ui/calendar/CalendarHeader.vue +7 -7
  115. package/src/components/ui/calendar/CalendarHeading.vue +6 -6
  116. package/src/components/ui/calendar/CalendarNextButton.vue +15 -15
  117. package/src/components/ui/calendar/CalendarPrevButton.vue +15 -15
  118. package/src/components/ui/calendar/index.ts +4 -4
  119. package/src/components/ui/card/Card.vue +20 -20
  120. package/src/components/ui/card/CardAction.vue +8 -8
  121. package/src/components/ui/card/CardContent.vue +4 -4
  122. package/src/components/ui/card/CardDescription.vue +12 -12
  123. package/src/components/ui/card/CardFooter.vue +4 -4
  124. package/src/components/ui/card/CardHeader.vue +8 -8
  125. package/src/components/ui/card/CardText.vue +8 -8
  126. package/src/components/ui/card/CardTitle.vue +8 -8
  127. package/src/components/ui/checkbox/Checkbox.vue +27 -27
  128. package/src/components/ui/collapsible/Collapsible.vue +3 -3
  129. package/src/components/ui/collapsible/CollapsibleContent.vue +3 -3
  130. package/src/components/ui/collapsible/CollapsibleTrigger.vue +3 -3
  131. package/src/components/ui/combobox/Combobox.vue +4 -4
  132. package/src/components/ui/combobox/ComboboxAnchor.vue +16 -16
  133. package/src/components/ui/combobox/ComboboxEmpty.vue +3 -3
  134. package/src/components/ui/combobox/ComboboxGroup.vue +9 -9
  135. package/src/components/ui/combobox/ComboboxInput.vue +6 -6
  136. package/src/components/ui/combobox/ComboboxItem.vue +17 -17
  137. package/src/components/ui/combobox/ComboboxList.vue +19 -19
  138. package/src/components/ui/combobox/ComboboxSelect.vue +77 -77
  139. package/src/components/ui/combobox/ComboboxSeparator.vue +1 -1
  140. package/src/components/ui/combobox/ComboboxTrigger.vue +10 -10
  141. package/src/components/ui/combobox/types.ts +5 -5
  142. package/src/components/ui/command/Command.vue +48 -48
  143. package/src/components/ui/command/CommandDialog.vue +14 -14
  144. package/src/components/ui/command/CommandEmpty.vue +4 -4
  145. package/src/components/ui/command/CommandGroup.vue +23 -23
  146. package/src/components/ui/command/CommandInput.vue +9 -9
  147. package/src/components/ui/command/CommandItem.vue +40 -40
  148. package/src/components/ui/command/CommandList.vue +9 -9
  149. package/src/components/ui/command/CommandSeparator.vue +3 -3
  150. package/src/components/ui/command/CommandShortcut.vue +8 -8
  151. package/src/components/ui/command/index.ts +11 -11
  152. package/src/components/ui/data-table/DataTable.vue +145 -145
  153. package/src/components/ui/data-table/index.ts +11 -11
  154. package/src/components/ui/date-picker/DatePicker.vue +31 -31
  155. package/src/components/ui/date-time-picker/DateTimePicker.vue +97 -97
  156. package/src/components/ui/dialog/Dialog.vue +3 -3
  157. package/src/components/ui/dialog/DialogClose.vue +3 -3
  158. package/src/components/ui/dialog/DialogContent.vue +21 -21
  159. package/src/components/ui/dialog/DialogDescription.vue +7 -7
  160. package/src/components/ui/dialog/DialogFooter.vue +8 -8
  161. package/src/components/ui/dialog/DialogHeader.vue +4 -4
  162. package/src/components/ui/dialog/DialogOverlay.vue +7 -7
  163. package/src/components/ui/dialog/DialogScrollContent.vue +32 -32
  164. package/src/components/ui/dialog/DialogTitle.vue +3 -3
  165. package/src/components/ui/dialog/DialogTrigger.vue +3 -3
  166. package/src/components/ui/dropdown-menu/DropdownMenu.vue +3 -3
  167. package/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +11 -11
  168. package/src/components/ui/dropdown-menu/DropdownMenuContent.vue +15 -15
  169. package/src/components/ui/dropdown-menu/DropdownMenuGroup.vue +3 -3
  170. package/src/components/ui/dropdown-menu/DropdownMenuItem.vue +12 -12
  171. package/src/components/ui/dropdown-menu/DropdownMenuLabel.vue +9 -9
  172. package/src/components/ui/dropdown-menu/DropdownMenuPortal.vue +3 -3
  173. package/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +3 -3
  174. package/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +11 -11
  175. package/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue +1 -1
  176. package/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue +4 -4
  177. package/src/components/ui/dropdown-menu/DropdownMenuSub.vue +3 -3
  178. package/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue +15 -15
  179. package/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +15 -15
  180. package/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue +3 -3
  181. package/src/components/ui/dropdown-menu/classes.ts +16 -16
  182. package/src/components/ui/field/Field.vue +5 -5
  183. package/src/components/ui/field/FieldContent.vue +8 -8
  184. package/src/components/ui/field/FieldDescription.vue +10 -10
  185. package/src/components/ui/field/FieldError.vue +39 -39
  186. package/src/components/ui/field/FieldGroup.vue +8 -8
  187. package/src/components/ui/field/FieldLabel.vue +10 -10
  188. package/src/components/ui/field/FieldLegend.vue +11 -11
  189. package/src/components/ui/field/FieldSeparator.vue +11 -11
  190. package/src/components/ui/field/FieldSet.vue +9 -9
  191. package/src/components/ui/field/FieldTitle.vue +8 -8
  192. package/src/components/ui/field/field-context.ts +36 -36
  193. package/src/components/ui/field/index.ts +22 -22
  194. package/src/components/ui/file-dropzone/FileDropzone.vue +144 -144
  195. package/src/components/ui/file-dropzone/index.ts +19 -19
  196. package/src/components/ui/hover-card/HoverCard.vue +5 -5
  197. package/src/components/ui/hover-card/HoverCardContent.vue +13 -13
  198. package/src/components/ui/hover-card/HoverCardTrigger.vue +3 -3
  199. package/src/components/ui/input/Input.vue +13 -13
  200. package/src/components/ui/kbd/Kbd.vue +10 -10
  201. package/src/components/ui/kbd/KbdGroup.vue +49 -49
  202. package/src/components/ui/label/Label.vue +7 -7
  203. package/src/components/ui/native-select/NativeSelect.vue +16 -16
  204. package/src/components/ui/native-select/NativeSelectOptGroup.vue +3 -3
  205. package/src/components/ui/native-select/NativeSelectOption.vue +3 -3
  206. package/src/components/ui/number-field/NumberField.vue +88 -88
  207. package/src/components/ui/pagination/Pagination.vue +4 -4
  208. package/src/components/ui/pagination/PaginationContent.vue +4 -4
  209. package/src/components/ui/pagination/PaginationEllipsis.vue +9 -9
  210. package/src/components/ui/pagination/PaginationFirst.vue +8 -8
  211. package/src/components/ui/pagination/PaginationItem.vue +14 -14
  212. package/src/components/ui/pagination/PaginationLast.vue +8 -8
  213. package/src/components/ui/pagination/PaginationNext.vue +8 -8
  214. package/src/components/ui/pagination/PaginationPrevious.vue +8 -8
  215. package/src/components/ui/pagination/SimplePagination.vue +25 -25
  216. package/src/components/ui/pin-input/PinInput.vue +20 -20
  217. package/src/components/ui/pin-input/PinInputInput.vue +17 -17
  218. package/src/components/ui/pin-input/context.ts +1 -1
  219. package/src/components/ui/popover/Popover.vue +3 -3
  220. package/src/components/ui/popover/PopoverAnchor.vue +3 -3
  221. package/src/components/ui/popover/PopoverContent.vue +12 -12
  222. package/src/components/ui/popover/PopoverTrigger.vue +3 -3
  223. package/src/components/ui/progress/Progress.vue +16 -16
  224. package/src/components/ui/radio-group/RadioGroup.vue +7 -7
  225. package/src/components/ui/radio-group/RadioGroupCard.vue +39 -39
  226. package/src/components/ui/radio-group/RadioGroupItem.vue +20 -20
  227. package/src/components/ui/scroll-area/ScrollArea.vue +14 -14
  228. package/src/components/ui/scroll-area/ScrollBar.vue +12 -12
  229. package/src/components/ui/select/Select.vue +3 -3
  230. package/src/components/ui/select/SelectContent.vue +25 -25
  231. package/src/components/ui/select/SelectGroup.vue +3 -3
  232. package/src/components/ui/select/SelectItem.vue +24 -24
  233. package/src/components/ui/select/SelectItemContent.vue +32 -32
  234. package/src/components/ui/select/SelectItemText.vue +3 -3
  235. package/src/components/ui/select/SelectLabel.vue +3 -3
  236. package/src/components/ui/select/SelectScrollDownButton.vue +9 -9
  237. package/src/components/ui/select/SelectScrollUpButton.vue +9 -9
  238. package/src/components/ui/select/SelectSeparator.vue +2 -2
  239. package/src/components/ui/select/SelectTrigger.vue +14 -14
  240. package/src/components/ui/select/SelectValue.vue +3 -3
  241. package/src/components/ui/select/SelectValueContent.vue +39 -39
  242. package/src/components/ui/separator/Separator.vue +7 -7
  243. package/src/components/ui/sheet/Sheet.vue +3 -3
  244. package/src/components/ui/sheet/SheetClose.vue +3 -3
  245. package/src/components/ui/sheet/SheetContent.vue +22 -22
  246. package/src/components/ui/sheet/SheetDescription.vue +3 -3
  247. package/src/components/ui/sheet/SheetFooter.vue +3 -3
  248. package/src/components/ui/sheet/SheetHeader.vue +3 -3
  249. package/src/components/ui/sheet/SheetOverlay.vue +7 -7
  250. package/src/components/ui/sheet/SheetTitle.vue +3 -3
  251. package/src/components/ui/sheet/SheetTrigger.vue +3 -3
  252. package/src/components/ui/sidebar/Sidebar.vue +57 -57
  253. package/src/components/ui/sidebar/SidebarContent.vue +8 -8
  254. package/src/components/ui/sidebar/SidebarFooter.vue +8 -8
  255. package/src/components/ui/sidebar/SidebarGroup.vue +8 -8
  256. package/src/components/ui/sidebar/SidebarGroupAction.vue +9 -9
  257. package/src/components/ui/sidebar/SidebarGroupContent.vue +4 -4
  258. package/src/components/ui/sidebar/SidebarGroupLabel.vue +8 -8
  259. package/src/components/ui/sidebar/SidebarHeader.vue +8 -8
  260. package/src/components/ui/sidebar/SidebarInput.vue +8 -8
  261. package/src/components/ui/sidebar/SidebarInset.vue +9 -9
  262. package/src/components/ui/sidebar/SidebarMenu.vue +4 -4
  263. package/src/components/ui/sidebar/SidebarMenuAction.vue +18 -18
  264. package/src/components/ui/sidebar/SidebarMenuBadge.vue +14 -14
  265. package/src/components/ui/sidebar/SidebarMenuButton.vue +21 -21
  266. package/src/components/ui/sidebar/SidebarMenuButtonChild.vue +10 -10
  267. package/src/components/ui/sidebar/SidebarMenuItem.vue +4 -4
  268. package/src/components/ui/sidebar/SidebarMenuSkeleton.vue +10 -10
  269. package/src/components/ui/sidebar/SidebarMenuSub.vue +9 -9
  270. package/src/components/ui/sidebar/SidebarMenuSubButton.vue +17 -17
  271. package/src/components/ui/sidebar/SidebarMenuSubItem.vue +4 -4
  272. package/src/components/ui/sidebar/SidebarProvider.vue +46 -46
  273. package/src/components/ui/sidebar/SidebarRail.vue +13 -13
  274. package/src/components/ui/sidebar/SidebarSeparator.vue +4 -4
  275. package/src/components/ui/sidebar/SidebarTrigger.vue +5 -5
  276. package/src/components/ui/sidebar/index.ts +29 -29
  277. package/src/components/ui/sidebar/utils.ts +7 -7
  278. package/src/components/ui/skeleton/Skeleton.vue +6 -6
  279. package/src/components/ui/slider/Slider.vue +14 -14
  280. package/src/components/ui/spinner/Spinner.vue +21 -21
  281. package/src/components/ui/stepper/SimpleStepper.vue +26 -26
  282. package/src/components/ui/stepper/Stepper.vue +6 -6
  283. package/src/components/ui/stepper/StepperDescription.vue +5 -5
  284. package/src/components/ui/stepper/StepperIndicator.vue +17 -17
  285. package/src/components/ui/stepper/StepperItem.vue +4 -4
  286. package/src/components/ui/stepper/StepperSeparator.vue +7 -7
  287. package/src/components/ui/stepper/StepperTitle.vue +5 -5
  288. package/src/components/ui/stepper/StepperTrigger.vue +4 -4
  289. package/src/components/ui/stepper/index.ts +3 -3
  290. package/src/components/ui/switch/Switch.vue +15 -15
  291. package/src/components/ui/table/Table.vue +6 -6
  292. package/src/components/ui/table/TableBody.vue +4 -4
  293. package/src/components/ui/table/TableCaption.vue +4 -4
  294. package/src/components/ui/table/TableCell.vue +8 -8
  295. package/src/components/ui/table/TableEmpty.vue +14 -14
  296. package/src/components/ui/table/TableFooter.vue +8 -8
  297. package/src/components/ui/table/TableHead.vue +8 -8
  298. package/src/components/ui/table/TableHeader.vue +4 -4
  299. package/src/components/ui/table/TableRow.vue +8 -8
  300. package/src/components/ui/tabs/Tabs.vue +4 -4
  301. package/src/components/ui/tabs/TabsContent.vue +4 -4
  302. package/src/components/ui/tabs/TabsList.vue +15 -15
  303. package/src/components/ui/tabs/TabsTrigger.vue +10 -10
  304. package/src/components/ui/tags-input/TagsInput.vue +17 -17
  305. package/src/components/ui/tags-input/TagsInputInput.vue +6 -6
  306. package/src/components/ui/tags-input/TagsInputItem.vue +15 -15
  307. package/src/components/ui/tags-input/TagsInputItemDelete.vue +12 -12
  308. package/src/components/ui/tags-input/TagsInputItemText.vue +4 -4
  309. package/src/components/ui/textarea/Textarea.vue +12 -12
  310. package/src/components/ui/time-picker/TimePicker.vue +25 -25
  311. package/src/components/ui/toggle-group/Toggle.vue +10 -10
  312. package/src/components/ui/toggle-group/ToggleGroup.vue +38 -38
  313. package/src/components/ui/toggle-group/ToggleGroupItem.vue +9 -9
  314. package/src/components/ui/toggle-group/index.ts +46 -46
  315. package/src/components/ui/tooltip/Tooltip.vue +3 -3
  316. package/src/components/ui/tooltip/TooltipContent.vue +13 -13
  317. package/src/components/ui/tooltip/TooltipProvider.vue +4 -4
  318. package/src/components/ui/tooltip/TooltipTrigger.vue +3 -3
  319. package/src/i18n/de.json +185 -185
  320. package/src/i18n/en.json +185 -185
  321. package/src/i18n/es.json +185 -185
  322. package/src/i18n/fr.json +185 -185
  323. package/src/i18n/it.json +185 -185
  324. package/src/i18n/ja.json +185 -185
  325. package/src/i18n/pt.json +185 -185
  326. package/src/i18n/ru.json +185 -185
  327. package/src/i18n/zh.json +185 -185
  328. package/src/lib/color-tokens.ts +24 -24
  329. package/src/lib/i18n.ts +65 -65
  330. package/src/lib/utils.ts +33 -33
  331. package/src/nuxt-components.d.ts +2 -2
  332. package/src/runtime/ui-vintage-i18n-plugin.ts +49 -49
  333. package/src/shims-vue.d.ts +3 -3
  334. package/src/styles.css +377 -377
@@ -12,10 +12,10 @@ import { buttonVariants } from '../button';
12
12
 
13
13
  // Props
14
14
  const props = withDefaults(defineProps<PaginationPrevProps & {
15
- size?: ButtonVariants['size'];
16
- class?: HTMLAttributes['class'];
15
+ size?: ButtonVariants['size'];
16
+ class?: HTMLAttributes['class'];
17
17
  }>(), {
18
- size: 'icon-sm',
18
+ size: 'icon-sm',
19
19
  });
20
20
 
21
21
  const delegatedProps = reactiveOmit(props, 'class', 'size');
@@ -24,9 +24,9 @@ const { t } = useI18n();
24
24
  </script>
25
25
 
26
26
  <template>
27
- <PaginationPrev data-slot="pagination-previous" :aria-label="t('uiVintage.pagination.previous')" v-bind="delegatedProps" :class="cn(buttonVariants({ variant: 'secondary', size: props.size }), 'group/pagination-nav', props.class)">
28
- <slot>
29
- <HugeiconsIcon :icon="ArrowLeft01Icon" class="size-4 transition-transform duration-220 ease-spring group-hover/pagination-nav:-translate-x-0.5" aria-hidden="true" />
30
- </slot>
31
- </PaginationPrev>
27
+ <PaginationPrev data-slot="pagination-previous" :aria-label="t('uiVintage.pagination.previous')" v-bind="delegatedProps" :class="cn(buttonVariants({ variant: 'secondary', size: props.size }), 'group/pagination-nav', props.class)">
28
+ <slot>
29
+ <HugeiconsIcon :icon="ArrowLeft01Icon" class="size-4 transition-transform duration-220 ease-spring group-hover/pagination-nav:-translate-x-0.5" aria-hidden="true" />
30
+ </slot>
31
+ </PaginationPrev>
32
32
  </template>
@@ -11,17 +11,17 @@ import PaginationPrevious from './PaginationPrevious.vue';
11
11
 
12
12
  // Props
13
13
  const props = withDefaults(defineProps<{
14
- total: number;
15
- itemsPerPage?: number;
16
- siblingCount?: number;
17
- showEdges?: boolean;
18
- disabled?: boolean;
19
- class?: HTMLAttributes['class'];
14
+ total: number;
15
+ itemsPerPage?: number;
16
+ siblingCount?: number;
17
+ showEdges?: boolean;
18
+ disabled?: boolean;
19
+ class?: HTMLAttributes['class'];
20
20
  }>(), {
21
- itemsPerPage: 10,
22
- siblingCount: 1,
23
- showEdges: true,
24
- disabled: false,
21
+ itemsPerPage: 10,
22
+ siblingCount: 1,
23
+ showEdges: true,
24
+ disabled: false,
25
25
  });
26
26
 
27
27
  // Current page (1-based, v-model:page)
@@ -29,21 +29,21 @@ const page = defineModel<number>('page', { default: 1 });
29
29
  </script>
30
30
 
31
31
  <template>
32
- <Pagination v-model:page="page" :total="props.total" :items-per-page="props.itemsPerPage" :sibling-count="props.siblingCount" :show-edges="props.showEdges" :disabled="props.disabled" :class="props.class">
33
- <PaginationContent v-slot="{ items }">
34
- <!-- Jump to start / previous -->
35
- <PaginationFirst class="hidden sm:inline-flex" />
36
- <PaginationPrevious />
32
+ <Pagination v-model:page="page" :total="props.total" :items-per-page="props.itemsPerPage" :sibling-count="props.siblingCount" :show-edges="props.showEdges" :disabled="props.disabled" :class="props.class">
33
+ <PaginationContent v-slot="{ items }">
34
+ <!-- Jump to start / previous -->
35
+ <PaginationFirst class="hidden sm:inline-flex" />
36
+ <PaginationPrevious />
37
37
 
38
- <!-- Page numbers and gaps -->
39
- <template v-for="(item, index) in items" :key="item.type === 'page' ? `page-${item.value}` : `ellipsis-${index}`">
40
- <PaginationItem v-if="item.type === 'page'" :value="item.value" />
41
- <PaginationEllipsis v-else />
42
- </template>
38
+ <!-- Page numbers and gaps -->
39
+ <template v-for="(item, index) in items" :key="item.type === 'page' ? `page-${item.value}` : `ellipsis-${index}`">
40
+ <PaginationItem v-if="item.type === 'page'" :value="item.value" />
41
+ <PaginationEllipsis v-else />
42
+ </template>
43
43
 
44
- <!-- Next / jump to end -->
45
- <PaginationNext />
46
- <PaginationLast class="hidden sm:inline-flex" />
47
- </PaginationContent>
48
- </Pagination>
44
+ <!-- Next / jump to end -->
45
+ <PaginationNext />
46
+ <PaginationLast class="hidden sm:inline-flex" />
47
+ </PaginationContent>
48
+ </Pagination>
49
49
  </template>
@@ -10,11 +10,11 @@ import PinInputInput from './PinInputInput.vue';
10
10
 
11
11
  // Props
12
12
  const props = defineProps<PinInputRootProps<Type> & {
13
- length?: number;
14
- invalid?: boolean;
15
- separatorAfter?: number;
16
- class?: HTMLAttributes['class'];
17
- inputClass?: HTMLAttributes['class'];
13
+ length?: number;
14
+ invalid?: boolean;
15
+ separatorAfter?: number;
16
+ class?: HTMLAttributes['class'];
17
+ inputClass?: HTMLAttributes['class'];
18
18
  }>();
19
19
 
20
20
  // Emits
@@ -25,24 +25,24 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);
25
25
 
26
26
  // Share the invalid state with the cells (also when they are passed through the slot)
27
27
  provide(pinInputContextKey, {
28
- invalid: computed(() => !!props.invalid)
28
+ invalid: computed(() => !!props.invalid)
29
29
  });
30
30
  </script>
31
31
 
32
32
  <template>
33
- <PinInputRoot v-slot="slotProps" data-slot="pin-input" v-bind="forwarded" :aria-invalid="props.invalid || undefined" :class="cn(
34
- 'flex items-center gap-2 has-disabled:opacity-60',
35
- props.invalid && 'animate-uv-shake',
36
- props.class
37
- )">
38
- <slot v-bind="slotProps">
39
- <!-- Auto-rendered cells -->
40
- <template v-for="index in props.length ?? 0" :key="index">
41
- <PinInputInput :index="index - 1" :class="props.inputClass" />
33
+ <PinInputRoot v-slot="slotProps" data-slot="pin-input" v-bind="forwarded" :aria-invalid="props.invalid || undefined" :class="cn(
34
+ 'flex items-center gap-2 has-disabled:opacity-60',
35
+ props.invalid && 'animate-uv-shake',
36
+ props.class
37
+ )">
38
+ <slot v-bind="slotProps">
39
+ <!-- Auto-rendered cells -->
40
+ <template v-for="index in props.length ?? 0" :key="index">
41
+ <PinInputInput :index="index - 1" :class="props.inputClass" />
42
42
 
43
- <!-- Separator -->
44
- <span v-if="props.separatorAfter === index - 1 && index < (props.length ?? 0)" data-slot="pin-input-separator" aria-hidden="true" class="mx-0.5 h-0.5 w-3 shrink-0 rounded-full bg-border-strong" />
45
- </template>
46
- </slot>
47
- </PinInputRoot>
43
+ <!-- Separator -->
44
+ <span v-if="props.separatorAfter === index - 1 && index < (props.length ?? 0)" data-slot="pin-input-separator" aria-hidden="true" class="mx-0.5 h-0.5 w-3 shrink-0 rounded-full bg-border-strong" />
45
+ </template>
46
+ </slot>
47
+ </PinInputRoot>
48
48
  </template>
@@ -11,7 +11,7 @@ defineOptions({ inheritAttrs: false });
11
11
 
12
12
  // Props
13
13
  const props = defineProps<PinInputInputProps & {
14
- class?: HTMLAttributes['class'];
14
+ class?: HTMLAttributes['class'];
15
15
  }>();
16
16
 
17
17
  const delegatedProps = reactiveOmit(props, 'class');
@@ -22,8 +22,8 @@ const pinInputContext = inject(pinInputContextKey, null);
22
22
 
23
23
  // Current character of this cell
24
24
  const cellValue = computed(() => {
25
- const value = rootContext.currentModelValue.value[props.index];
26
- return value === undefined || value === null ? '' : String(value);
25
+ const value = rootContext.currentModelValue.value[props.index];
26
+ return value === undefined || value === null ? '' : String(value);
27
27
  });
28
28
  const isFilled = computed(() => cellValue.value !== '');
29
29
  const displayValue = computed(() => (rootContext.mask.value ? '•' : cellValue.value));
@@ -31,19 +31,19 @@ const isInvalid = computed(() => pinInputContext?.invalid.value || undefined);
31
31
  </script>
32
32
 
33
33
  <template>
34
- <span data-slot="pin-input-cell" class="relative inline-flex shrink-0">
35
- <!-- Native input (text is transparent, the overlay below renders the character) -->
36
- <PinInputInput data-slot="pin-input-input" v-bind="{ ...$attrs, ...forwardedProps }" :aria-invalid="isInvalid" :data-filled="isFilled ? '' : undefined" :class="cn(
37
- 'uv-field size-12 rounded border border-input bg-secondary text-center text-lg font-semibold text-transparent caret-primary shadow-elevated-sm outline-none sm:size-13',
38
- 'placeholder:text-muted-foreground placeholder:opacity-50 selection:bg-primary/25',
39
- 'data-filled:border-primary/60 data-filled:bg-primary/5',
40
- 'disabled:cursor-not-allowed disabled:opacity-60',
41
- props.class
42
- )" />
34
+ <span data-slot="pin-input-cell" class="relative inline-flex shrink-0">
35
+ <!-- Native input (text is transparent, the overlay below renders the character) -->
36
+ <PinInputInput data-slot="pin-input-input" v-bind="{ ...$attrs, ...forwardedProps }" :aria-invalid="isInvalid" :data-filled="isFilled ? '' : undefined" :class="cn(
37
+ 'uv-field size-12 rounded border border-input bg-secondary text-center text-lg font-semibold text-transparent caret-primary shadow-elevated-sm outline-none sm:size-13',
38
+ 'placeholder:text-muted-foreground placeholder:opacity-50 selection:bg-primary/25',
39
+ 'data-filled:border-primary/60 data-filled:bg-primary/5',
40
+ 'disabled:cursor-not-allowed disabled:opacity-60',
41
+ props.class
42
+ )" />
43
43
 
44
- <!-- Animated character (re-keyed on every value so it pops) -->
45
- <span v-if="isFilled" :key="cellValue" aria-hidden="true" class="pointer-events-none absolute inset-0 flex animate-uv-pop items-center justify-center text-lg font-semibold text-foreground">
46
- {{ displayValue }}
47
- </span>
48
- </span>
44
+ <!-- Animated character (re-keyed on every value so it pops) -->
45
+ <span v-if="isFilled" :key="cellValue" aria-hidden="true" class="pointer-events-none absolute inset-0 flex animate-uv-pop items-center justify-center text-lg font-semibold text-foreground">
46
+ {{ displayValue }}
47
+ </span>
48
+ </span>
49
49
  </template>
@@ -2,7 +2,7 @@ import type { ComputedRef, InjectionKey } from 'vue';
2
2
 
3
3
  // Shared state provided by PinInput to its cells
4
4
  export interface PinInputContext {
5
- invalid: ComputedRef<boolean>;
5
+ invalid: ComputedRef<boolean>;
6
6
  }
7
7
 
8
8
  export const pinInputContextKey: InjectionKey<PinInputContext> = Symbol('uvPinInput');
@@ -12,7 +12,7 @@ const forwarded = useForwardPropsEmits(props, emits);
12
12
  </script>
13
13
 
14
14
  <template>
15
- <PopoverRoot v-slot="slotProps" data-slot="popover" v-bind="forwarded">
16
- <slot v-bind="slotProps" />
17
- </PopoverRoot>
15
+ <PopoverRoot v-slot="slotProps" data-slot="popover" v-bind="forwarded">
16
+ <slot v-bind="slotProps" />
17
+ </PopoverRoot>
18
18
  </template>
@@ -7,7 +7,7 @@ const props = defineProps<PopoverAnchorProps>();
7
7
  </script>
8
8
 
9
9
  <template>
10
- <PopoverAnchor data-slot="popover-anchor" v-bind="props">
11
- <slot />
12
- </PopoverAnchor>
10
+ <PopoverAnchor data-slot="popover-anchor" v-bind="props">
11
+ <slot />
12
+ </PopoverAnchor>
13
13
  </template>
@@ -6,13 +6,13 @@ import { PopoverContent, PopoverPortal, useForwardPropsEmits } from 'reka-ui';
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<PopoverContentProps & { class?: HTMLAttributes['class'] }>(), {
14
- align: 'center',
15
- sideOffset: 4
14
+ align: 'center',
15
+ sideOffset: 4
16
16
  });
17
17
 
18
18
  // Emits
@@ -24,13 +24,13 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);
24
24
  </script>
25
25
 
26
26
  <template>
27
- <PopoverPortal>
28
- <PopoverContent data-slot="popover-content" v-bind="{ ...$attrs, ...forwarded }" :class="cn(
29
- 'uv-floating-motion bg-popover text-popover-foreground z-50 w-72 rounded border border-border p-4 shadow-elevated-lg outline-hidden',
30
- props.class
31
- )
32
- ">
33
- <slot />
34
- </PopoverContent>
35
- </PopoverPortal>
27
+ <PopoverPortal>
28
+ <PopoverContent data-slot="popover-content" v-bind="{ ...$attrs, ...forwarded }" :class="cn(
29
+ 'uv-floating-motion bg-popover text-popover-foreground z-50 w-72 rounded border border-border p-4 shadow-elevated-lg outline-hidden',
30
+ props.class
31
+ )
32
+ ">
33
+ <slot />
34
+ </PopoverContent>
35
+ </PopoverPortal>
36
36
  </template>
@@ -7,7 +7,7 @@ const props = defineProps<PopoverTriggerProps>();
7
7
  </script>
8
8
 
9
9
  <template>
10
- <PopoverTrigger data-slot="popover-trigger" v-bind="props">
11
- <slot />
12
- </PopoverTrigger>
10
+ <PopoverTrigger data-slot="popover-trigger" v-bind="props">
11
+ <slot />
12
+ </PopoverTrigger>
13
13
  </template>
@@ -8,32 +8,32 @@ import { cn } from '../../../lib/utils';
8
8
 
9
9
  // Props
10
10
  const props = withDefaults(defineProps<ProgressRootProps & {
11
- indeterminate?: boolean;
12
- class?: HTMLAttributes['class'];
11
+ indeterminate?: boolean;
12
+ class?: HTMLAttributes['class'];
13
13
  }>(), {
14
- modelValue: 0,
15
- indeterminate: false
14
+ modelValue: 0,
15
+ indeterminate: false
16
16
  });
17
17
 
18
18
  const delegatedProps = reactiveOmit(props, 'class', 'indeterminate');
19
19
 
20
20
  // Resolve the fill percentage against the configured max
21
21
  const percentage = computed(() => {
22
- const max = props.max ?? 100;
23
- if (!max) return 0;
24
- return Math.min(100, Math.max(0, ((props.modelValue ?? 0) / max) * 100));
22
+ const max = props.max ?? 100;
23
+ if (!max) return 0;
24
+ return Math.min(100, Math.max(0, ((props.modelValue ?? 0) / max) * 100));
25
25
  });
26
26
  </script>
27
27
 
28
28
  <template>
29
- <ProgressRoot data-slot="progress" v-bind="delegatedProps" :model-value="props.indeterminate ? null : props.modelValue" :class="cn(
30
- 'relative h-2 w-full overflow-hidden rounded-sm bg-muted',
31
- props.class
32
- )">
33
- <!-- Indeterminate bar -->
34
- <div v-if="props.indeterminate" data-slot="progress-indicator" class="absolute inset-y-0 left-0 w-full origin-left animate-uv-indeterminate rounded-sm bg-primary" />
29
+ <ProgressRoot data-slot="progress" v-bind="delegatedProps" :model-value="props.indeterminate ? null : props.modelValue" :class="cn(
30
+ 'relative h-2 w-full overflow-hidden rounded-sm bg-muted',
31
+ props.class
32
+ )">
33
+ <!-- Indeterminate bar -->
34
+ <div v-if="props.indeterminate" data-slot="progress-indicator" class="absolute inset-y-0 left-0 w-full origin-left animate-uv-indeterminate rounded-sm bg-primary" />
35
35
 
36
- <!-- Determinate bar -->
37
- <ProgressIndicator v-else data-slot="progress-indicator" class="relative h-full w-full flex-1 overflow-hidden rounded-sm bg-primary transition-transform duration-700 ease-out-expo" :style="`transform: translateX(-${100 - percentage}%);`" />
38
- </ProgressRoot>
36
+ <!-- Determinate bar -->
37
+ <ProgressIndicator v-else data-slot="progress-indicator" class="relative h-full w-full flex-1 overflow-hidden rounded-sm bg-primary transition-transform duration-700 ease-out-expo" :style="`transform: translateX(-${100 - percentage}%);`" />
38
+ </ProgressRoot>
39
39
  </template>
@@ -7,7 +7,7 @@ import { cn } from '../../../lib/utils';
7
7
 
8
8
  // Props
9
9
  const props = defineProps<RadioGroupRootProps & {
10
- class?: HTMLAttributes['class'];
10
+ class?: HTMLAttributes['class'];
11
11
  }>();
12
12
 
13
13
  // Emits
@@ -18,10 +18,10 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);
18
18
  </script>
19
19
 
20
20
  <template>
21
- <RadioGroupRoot v-slot="slotProps" data-slot="radio-group" v-bind="forwarded" :class="cn(
22
- 'grid gap-3 aria-[orientation=horizontal]:flex aria-[orientation=horizontal]:flex-wrap aria-[orientation=horizontal]:items-center aria-[orientation=horizontal]:gap-x-5',
23
- props.class
24
- )">
25
- <slot v-bind="slotProps" />
26
- </RadioGroupRoot>
21
+ <RadioGroupRoot v-slot="slotProps" data-slot="radio-group" v-bind="forwarded" :class="cn(
22
+ 'grid gap-3 aria-[orientation=horizontal]:flex aria-[orientation=horizontal]:flex-wrap aria-[orientation=horizontal]:items-center aria-[orientation=horizontal]:gap-x-5',
23
+ props.class
24
+ )">
25
+ <slot v-bind="slotProps" />
26
+ </RadioGroupRoot>
27
27
  </template>
@@ -8,49 +8,49 @@ import { cn } from '../../../lib/utils';
8
8
 
9
9
  // Props
10
10
  const props = defineProps<{
11
- value: AcceptableValue;
12
- label: string;
13
- description?: string;
14
- icon?: HugeiconsIconDefinition;
15
- disabled?: boolean;
16
- id?: string;
17
- class?: HTMLAttributes['class'];
11
+ value: AcceptableValue;
12
+ label: string;
13
+ description?: string;
14
+ icon?: HugeiconsIconDefinition;
15
+ disabled?: boolean;
16
+ id?: string;
17
+ class?: HTMLAttributes['class'];
18
18
  }>();
19
19
  </script>
20
20
 
21
21
  <template>
22
- <RadioGroupItem :id="props.id" :value="props.value" :disabled="props.disabled" data-slot="radio-group-card" :class="cn(
23
- 'group/radio-card relative flex w-full cursor-pointer items-center gap-3 rounded border border-border bg-card px-4 py-3 text-left shadow-elevated-sm outline-none',
24
- '[transition:scale_320ms_var(--ease-spring),border-color_150ms_var(--ease-snappy),background-color_150ms_var(--ease-snappy),box-shadow_200ms_var(--ease-snappy)]',
25
- 'hover:border-border-strong active:scale-[0.985] focus-visible:ring-[3px] focus-visible:ring-ring/45',
26
- 'data-[state=checked]:border-primary data-[state=checked]:bg-primary/5 data-[state=checked]:hover:border-primary',
27
- 'disabled:cursor-not-allowed disabled:opacity-60 disabled:active:scale-100',
28
- props.class
29
- )">
30
- <!-- Icon -->
31
- <span v-if="props.icon" class="flex size-9 shrink-0 items-center justify-center rounded border border-border bg-surface text-muted-foreground transition-colors duration-150 group-data-[state=checked]/radio-card:border-primary/40 group-data-[state=checked]/radio-card:bg-primary/10 group-data-[state=checked]/radio-card:text-primary">
32
- <HugeiconsIcon :icon="props.icon" class="size-4.5" />
33
- </span>
22
+ <RadioGroupItem :id="props.id" :value="props.value" :disabled="props.disabled" data-slot="radio-group-card" :class="cn(
23
+ 'group/radio-card relative flex w-full cursor-pointer items-center gap-3 rounded border border-border bg-card px-4 py-3 text-left shadow-elevated-sm outline-none',
24
+ '[transition:scale_320ms_var(--ease-spring),border-color_150ms_var(--ease-snappy),background-color_150ms_var(--ease-snappy),box-shadow_200ms_var(--ease-snappy)]',
25
+ 'hover:border-border-strong active:scale-[0.985] focus-visible:ring-[3px] focus-visible:ring-ring/45',
26
+ 'data-[state=checked]:border-primary data-[state=checked]:bg-primary/5 data-[state=checked]:hover:border-primary',
27
+ 'disabled:cursor-not-allowed disabled:opacity-60 disabled:active:scale-100',
28
+ props.class
29
+ )">
30
+ <!-- Icon -->
31
+ <span v-if="props.icon" class="flex size-9 shrink-0 items-center justify-center rounded border border-border bg-surface text-muted-foreground transition-colors duration-150 group-data-[state=checked]/radio-card:border-primary/40 group-data-[state=checked]/radio-card:bg-primary/10 group-data-[state=checked]/radio-card:text-primary">
32
+ <HugeiconsIcon :icon="props.icon" class="size-4.5" />
33
+ </span>
34
34
 
35
- <!-- Label and description -->
36
- <span class="flex min-w-0 flex-1 flex-col gap-0.5">
37
- <span class="text-xs font-semibold text-foreground sm:text-sm">
38
- <slot name="label">{{ props.label }}</slot>
39
- </span>
40
- <span v-if="props.description || $slots.description" class="text-xs text-muted-foreground">
41
- <slot name="description">{{ props.description }}</slot>
42
- </span>
43
- </span>
35
+ <!-- Label and description -->
36
+ <span class="flex min-w-0 flex-1 flex-col gap-0.5">
37
+ <span class="text-xs font-semibold text-foreground sm:text-sm">
38
+ <slot name="label">{{ props.label }}</slot>
39
+ </span>
40
+ <span v-if="props.description || $slots.description" class="text-xs text-muted-foreground">
41
+ <slot name="description">{{ props.description }}</slot>
42
+ </span>
43
+ </span>
44
44
 
45
- <!-- Radio circle -->
46
- <span aria-hidden="true" class="flex size-5 shrink-0 items-center justify-center rounded-full border border-input bg-secondary shadow-elevated-sm transition-colors duration-150 group-data-[state=checked]/radio-card:border-primary">
47
- <RadioGroupIndicator force-mount data-slot="radio-group-indicator" :class="cn(
48
- 'pointer-events-none flex items-center justify-center opacity-0 scale-0',
49
- '[transition:scale_140ms_var(--ease-snappy),opacity_100ms_var(--ease-snappy)]',
50
- 'data-[state=checked]:opacity-100 data-[state=checked]:scale-100 data-[state=checked]:[transition:scale_420ms_var(--ease-bounce),opacity_80ms_linear]'
51
- )">
52
- <span class="size-2.5 rounded-full bg-primary" />
53
- </RadioGroupIndicator>
54
- </span>
55
- </RadioGroupItem>
45
+ <!-- Radio circle -->
46
+ <span aria-hidden="true" class="flex size-5 shrink-0 items-center justify-center rounded-full border border-input bg-secondary shadow-elevated-sm transition-colors duration-150 group-data-[state=checked]/radio-card:border-primary">
47
+ <RadioGroupIndicator force-mount data-slot="radio-group-indicator" :class="cn(
48
+ 'pointer-events-none flex items-center justify-center opacity-0 scale-0',
49
+ '[transition:scale_140ms_var(--ease-snappy),opacity_100ms_var(--ease-snappy)]',
50
+ 'data-[state=checked]:opacity-100 data-[state=checked]:scale-100 data-[state=checked]:[transition:scale_420ms_var(--ease-bounce),opacity_80ms_linear]'
51
+ )">
52
+ <span class="size-2.5 rounded-full bg-primary" />
53
+ </RadioGroupIndicator>
54
+ </span>
55
+ </RadioGroupItem>
56
56
  </template>
@@ -7,7 +7,7 @@ import { cn } from '../../../lib/utils';
7
7
 
8
8
  // Props
9
9
  const props = defineProps<RadioGroupItemProps & {
10
- class?: HTMLAttributes['class'];
10
+ class?: HTMLAttributes['class'];
11
11
  }>();
12
12
 
13
13
  // Emits
@@ -18,23 +18,23 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);
18
18
  </script>
19
19
 
20
20
  <template>
21
- <RadioGroupItem v-slot="slotProps" data-slot="radio-group-item" v-bind="forwarded" :class="cn(
22
- 'peer relative inline-flex size-5 shrink-0 cursor-pointer items-center justify-center rounded-full border border-input bg-secondary text-primary shadow-elevated-sm outline-none',
23
- '[transition:scale_320ms_var(--ease-spring),border-color_150ms_var(--ease-snappy),box-shadow_150ms_var(--ease-snappy)]',
24
- 'hover:border-border-strong active:scale-[0.86] focus-visible:ring-[3px] focus-visible:ring-ring/45',
25
- 'data-[state=checked]:border-primary data-[state=checked]:hover:border-primary',
26
- 'disabled:cursor-not-allowed disabled:opacity-60 disabled:active:scale-100 aria-invalid:border-destructive',
27
- props.class
28
- )">
29
- <!-- Indicator (always mounted so the dot can pop in and shrink out) -->
30
- <RadioGroupIndicator force-mount data-slot="radio-group-indicator" :class="cn(
31
- 'pointer-events-none flex items-center justify-center opacity-0 scale-0',
32
- '[transition:scale_140ms_var(--ease-snappy),opacity_100ms_var(--ease-snappy)]',
33
- 'data-[state=checked]:opacity-100 data-[state=checked]:scale-100 data-[state=checked]:[transition:scale_420ms_var(--ease-bounce),opacity_80ms_linear]'
34
- )">
35
- <slot v-bind="slotProps">
36
- <span class="size-2.5 rounded-full bg-primary" />
37
- </slot>
38
- </RadioGroupIndicator>
39
- </RadioGroupItem>
21
+ <RadioGroupItem v-slot="slotProps" data-slot="radio-group-item" v-bind="forwarded" :class="cn(
22
+ 'peer relative inline-flex size-5 shrink-0 cursor-pointer items-center justify-center rounded-full border border-input bg-secondary text-primary shadow-elevated-sm outline-none',
23
+ '[transition:scale_320ms_var(--ease-spring),border-color_150ms_var(--ease-snappy),box-shadow_150ms_var(--ease-snappy)]',
24
+ 'hover:border-border-strong active:scale-[0.86] focus-visible:ring-[3px] focus-visible:ring-ring/45',
25
+ 'data-[state=checked]:border-primary data-[state=checked]:hover:border-primary',
26
+ 'disabled:cursor-not-allowed disabled:opacity-60 disabled:active:scale-100 aria-invalid:border-destructive',
27
+ props.class
28
+ )">
29
+ <!-- Indicator (always mounted so the dot can pop in and shrink out) -->
30
+ <RadioGroupIndicator force-mount data-slot="radio-group-indicator" :class="cn(
31
+ 'pointer-events-none flex items-center justify-center opacity-0 scale-0',
32
+ '[transition:scale_140ms_var(--ease-snappy),opacity_100ms_var(--ease-snappy)]',
33
+ 'data-[state=checked]:opacity-100 data-[state=checked]:scale-100 data-[state=checked]:[transition:scale_420ms_var(--ease-bounce),opacity_80ms_linear]'
34
+ )">
35
+ <slot v-bind="slotProps">
36
+ <span class="size-2.5 rounded-full bg-primary" />
37
+ </slot>
38
+ </RadioGroupIndicator>
39
+ </RadioGroupItem>
40
40
  </template>
@@ -13,18 +13,18 @@ const delegatedProps = reactiveOmit(props, 'class');
13
13
  </script>
14
14
 
15
15
  <template>
16
- <ScrollAreaRoot
17
- data-slot="scroll-area"
18
- v-bind="delegatedProps"
19
- :class="cn('relative', props.class)"
20
- >
21
- <ScrollAreaViewport
22
- data-slot="scroll-area-viewport"
23
- class="focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1"
24
- >
25
- <slot />
26
- </ScrollAreaViewport>
27
- <ScrollBar />
28
- <ScrollAreaCorner />
29
- </ScrollAreaRoot>
16
+ <ScrollAreaRoot
17
+ data-slot="scroll-area"
18
+ v-bind="delegatedProps"
19
+ :class="cn('relative', props.class)"
20
+ >
21
+ <ScrollAreaViewport
22
+ data-slot="scroll-area-viewport"
23
+ class="focus-visible:ring-ring/50 size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:outline-1"
24
+ >
25
+ <slot />
26
+ </ScrollAreaViewport>
27
+ <ScrollBar />
28
+ <ScrollAreaCorner />
29
+ </ScrollAreaRoot>
30
30
  </template>
@@ -7,22 +7,22 @@ import { cn } from '../../../lib/utils';
7
7
 
8
8
  // Props
9
9
  const props = withDefaults(defineProps<ScrollAreaScrollbarProps & { class?: HTMLAttributes['class'] }>(), {
10
- orientation: 'vertical'
10
+ orientation: 'vertical'
11
11
  });
12
12
 
13
13
  const delegatedProps = reactiveOmit(props, 'class');
14
14
  </script>
15
15
 
16
16
  <template>
17
- <ScrollAreaScrollbar data-slot="scroll-area-scrollbar" v-bind="delegatedProps" :class="cn(
18
- 'flex touch-none p-px transition-colors select-none',
19
- orientation === 'vertical' &&
20
- 'h-full w-2.5 border-l border-l-transparent',
21
- orientation === 'horizontal' &&
22
- 'h-2.5 flex-col border-t border-t-transparent',
23
- props.class
24
- )
25
- ">
26
- <ScrollAreaThumb data-slot="scroll-area-thumb" class="bg-border relative flex-1 rounded-full" />
27
- </ScrollAreaScrollbar>
17
+ <ScrollAreaScrollbar data-slot="scroll-area-scrollbar" v-bind="delegatedProps" :class="cn(
18
+ 'flex touch-none p-px transition-colors select-none',
19
+ orientation === 'vertical' &&
20
+ 'h-full w-2.5 border-l border-l-transparent',
21
+ orientation === 'horizontal' &&
22
+ 'h-2.5 flex-col border-t border-t-transparent',
23
+ props.class
24
+ )
25
+ ">
26
+ <ScrollAreaThumb data-slot="scroll-area-thumb" class="bg-border relative flex-1 rounded-full" />
27
+ </ScrollAreaScrollbar>
28
28
  </template>
@@ -12,7 +12,7 @@ const forwarded = useForwardPropsEmits(props, emits);
12
12
  </script>
13
13
 
14
14
  <template>
15
- <SelectRoot v-slot="slotProps" data-slot="select" v-bind="forwarded">
16
- <slot v-bind="slotProps" />
17
- </SelectRoot>
15
+ <SelectRoot v-slot="slotProps" data-slot="select" v-bind="forwarded">
16
+ <slot v-bind="slotProps" />
17
+ </SelectRoot>
18
18
  </template>