@brumaombra/ui-vintage 0.9.0 → 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 (337) hide show
  1. package/AGENTS.md +1 -1
  2. package/COMPONENTS.md +1 -1
  3. package/README.md +3 -3
  4. package/module.mjs +43 -43
  5. package/package.json +175 -175
  6. package/src/components/background-grid/BackgroundGrid.vue +4 -4
  7. package/src/components/blog/AllPostsSection.vue +33 -33
  8. package/src/components/blog/BlogContentRenderer.vue +111 -111
  9. package/src/components/blog/BlogFAQSection.vue +20 -20
  10. package/src/components/blog/BlogHeaderSection.vue +81 -81
  11. package/src/components/blog/BlogInfoSection.vue +50 -48
  12. package/src/components/blog/BlogPostHeader.vue +135 -135
  13. package/src/components/blog/BlogProgressBar.vue +33 -33
  14. package/src/components/blog/BlogSectionTitle.vue +22 -22
  15. package/src/components/blog/BlogTagsSection.vue +25 -25
  16. package/src/components/blog/CategoriesList.vue +14 -14
  17. package/src/components/blog/CategoriesSection.vue +11 -11
  18. package/src/components/blog/CategoryCard.vue +27 -26
  19. package/src/components/blog/HeaderCarousel.vue +99 -98
  20. package/src/components/blog/PostCard.vue +34 -34
  21. package/src/components/blog/PostsList.vue +15 -15
  22. package/src/components/blog/SocialShareSidebar.vue +92 -85
  23. package/src/components/blog/TableOfContents.vue +310 -308
  24. package/src/components/busy-indicator/BusyIndicator.vue +7 -7
  25. package/src/components/busy-indicator/busy-indicator-state.ts +56 -56
  26. package/src/components/card-grid/CardGrid.vue +35 -35
  27. package/src/components/chip/Chip.vue +16 -16
  28. package/src/components/confirm-dialog/ConfirmDialog.vue +51 -51
  29. package/src/components/confirm-dialog/confirm-dialog-state.ts +131 -131
  30. package/src/components/content/BlogList.vue +32 -31
  31. package/src/components/content/BlogTable.vue +36 -36
  32. package/src/components/content/CodeBlock.vue +139 -137
  33. package/src/components/content/Flow.vue +60 -60
  34. package/src/components/content/ProseHr.vue +16 -16
  35. package/src/components/content/ProsePre.vue +12 -12
  36. package/src/components/content/Terminal.vue +62 -60
  37. package/src/components/cookie-consent/CookieConsent.vue +36 -36
  38. package/src/components/cookie-consent/useCookieConsent.ts +37 -37
  39. package/src/components/dashboard-shell/DashboardShell.vue +171 -171
  40. package/src/components/data-list/DataList.vue +6 -6
  41. package/src/components/data-list/DataListItem.vue +4 -4
  42. package/src/components/data-list/DataListLabel.vue +4 -4
  43. package/src/components/data-list/DataListText.vue +4 -4
  44. package/src/components/data-list/DataListValue.vue +4 -4
  45. package/src/components/empty-state-card/EmptyStateCard.vue +41 -41
  46. package/src/components/error-page/ErrorPage.vue +73 -73
  47. package/src/components/info-card/InfoCard.vue +31 -31
  48. package/src/components/landing/landing-content/LandingContent.vue +4 -4
  49. package/src/components/landing/landing-footer/LandingFooter.vue +129 -129
  50. package/src/components/landing/landing-navbar/LandingNavbar.vue +50 -50
  51. package/src/components/landing/landing-shell/LandingShell.vue +36 -36
  52. package/src/components/language-flag/LanguageFlag.vue +25 -25
  53. package/src/components/language-flag/flags/ChineseFlag.vue +8 -8
  54. package/src/components/language-flag/flags/EnglishFlag.vue +7 -7
  55. package/src/components/language-flag/flags/FrenchFlag.vue +5 -5
  56. package/src/components/language-flag/flags/GermanFlag.vue +5 -5
  57. package/src/components/language-flag/flags/ItalianFlag.vue +7 -7
  58. package/src/components/language-flag/flags/JapaneseFlag.vue +4 -4
  59. package/src/components/language-flag/flags/PortugueseFlag.vue +57 -57
  60. package/src/components/language-flag/flags/RussianFlag.vue +5 -5
  61. package/src/components/language-flag/flags/SpanishFlag.vue +4 -4
  62. package/src/components/language-selector/LanguageSelector.vue +77 -77
  63. package/src/components/load-more-button/LoadMoreButton.vue +19 -18
  64. package/src/components/loading-state-card/LoadingStateCard.vue +29 -29
  65. package/src/components/message-dialog/MessageDialog.vue +62 -60
  66. package/src/components/message-dialog/message-dialog-state.ts +105 -105
  67. package/src/components/message-toast/MessageToast.vue +153 -150
  68. package/src/components/message-toast/message-toast-state.ts +146 -146
  69. package/src/components/page-header/PageHeader.vue +34 -34
  70. package/src/components/progress-component/ProgressComponent.vue +33 -33
  71. package/src/components/single-value-card/SingleValueCard.vue +59 -58
  72. package/src/components/slider-form-component/SliderFormComponent.vue +36 -36
  73. package/src/components/stat-strip/StatStrip.vue +22 -22
  74. package/src/components/switch-form-component/SwitchFormComponent.vue +20 -20
  75. package/src/components/text-link/TextLink.vue +14 -14
  76. package/src/components/theme-selector/ThemeSelector.vue +65 -62
  77. package/src/components/theme-selector/theme-transition.ts +63 -63
  78. package/src/components/ui/accordion/Accordion.vue +39 -39
  79. package/src/components/ui/alert/Alert.vue +5 -5
  80. package/src/components/ui/alert/AlertDescription.vue +4 -4
  81. package/src/components/ui/alert/AlertTitle.vue +4 -4
  82. package/src/components/ui/alert/index.ts +2 -2
  83. package/src/components/ui/alert-dialog/AlertDialog.vue +3 -3
  84. package/src/components/ui/alert-dialog/AlertDialogAction.vue +3 -3
  85. package/src/components/ui/alert-dialog/AlertDialogCancel.vue +3 -3
  86. package/src/components/ui/alert-dialog/AlertDialogContent.vue +7 -7
  87. package/src/components/ui/alert-dialog/AlertDialogDescription.vue +3 -3
  88. package/src/components/ui/alert-dialog/AlertDialogFooter.vue +4 -4
  89. package/src/components/ui/alert-dialog/AlertDialogHeader.vue +4 -4
  90. package/src/components/ui/alert-dialog/AlertDialogTitle.vue +3 -3
  91. package/src/components/ui/alert-dialog/AlertDialogTrigger.vue +3 -3
  92. package/src/components/ui/animated-number/AnimatedNumber.vue +49 -48
  93. package/src/components/ui/avatar/Avatar.vue +28 -28
  94. package/src/components/ui/avatar/AvatarFallback.vue +6 -6
  95. package/src/components/ui/avatar/AvatarGroup.vue +40 -40
  96. package/src/components/ui/avatar/AvatarImage.vue +3 -3
  97. package/src/components/ui/avatar/index.ts +17 -17
  98. package/src/components/ui/badge/Badge.vue +20 -20
  99. package/src/components/ui/breadcrumb/Breadcrumb.vue +4 -4
  100. package/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue +10 -10
  101. package/src/components/ui/breadcrumb/BreadcrumbItem.vue +4 -4
  102. package/src/components/ui/breadcrumb/BreadcrumbLink.vue +4 -4
  103. package/src/components/ui/breadcrumb/BreadcrumbList.vue +4 -4
  104. package/src/components/ui/breadcrumb/BreadcrumbPage.vue +4 -4
  105. package/src/components/ui/breadcrumb/BreadcrumbSeparator.vue +4 -4
  106. package/src/components/ui/busy/Busy.vue +33 -33
  107. package/src/components/ui/button/Button.vue +23 -23
  108. package/src/components/ui/button/index.ts +56 -56
  109. package/src/components/ui/calendar/Calendar.vue +138 -138
  110. package/src/components/ui/calendar/CalendarCell.vue +7 -7
  111. package/src/components/ui/calendar/CalendarCellTrigger.vue +18 -18
  112. package/src/components/ui/calendar/CalendarGrid.vue +3 -3
  113. package/src/components/ui/calendar/CalendarGridBody.vue +3 -3
  114. package/src/components/ui/calendar/CalendarGridHead.vue +3 -3
  115. package/src/components/ui/calendar/CalendarGridRow.vue +3 -3
  116. package/src/components/ui/calendar/CalendarHeadCell.vue +7 -7
  117. package/src/components/ui/calendar/CalendarHeader.vue +7 -7
  118. package/src/components/ui/calendar/CalendarHeading.vue +6 -6
  119. package/src/components/ui/calendar/CalendarNextButton.vue +16 -16
  120. package/src/components/ui/calendar/CalendarPrevButton.vue +16 -16
  121. package/src/components/ui/calendar/index.ts +4 -4
  122. package/src/components/ui/card/Card.vue +20 -20
  123. package/src/components/ui/card/CardAction.vue +8 -8
  124. package/src/components/ui/card/CardContent.vue +4 -4
  125. package/src/components/ui/card/CardDescription.vue +12 -12
  126. package/src/components/ui/card/CardFooter.vue +4 -4
  127. package/src/components/ui/card/CardHeader.vue +8 -8
  128. package/src/components/ui/card/CardText.vue +8 -8
  129. package/src/components/ui/card/CardTitle.vue +8 -8
  130. package/src/components/ui/checkbox/Checkbox.vue +27 -27
  131. package/src/components/ui/collapsible/Collapsible.vue +3 -3
  132. package/src/components/ui/collapsible/CollapsibleContent.vue +3 -3
  133. package/src/components/ui/collapsible/CollapsibleTrigger.vue +3 -3
  134. package/src/components/ui/combobox/Combobox.vue +4 -4
  135. package/src/components/ui/combobox/ComboboxAnchor.vue +16 -16
  136. package/src/components/ui/combobox/ComboboxEmpty.vue +3 -3
  137. package/src/components/ui/combobox/ComboboxGroup.vue +9 -9
  138. package/src/components/ui/combobox/ComboboxInput.vue +6 -6
  139. package/src/components/ui/combobox/ComboboxItem.vue +18 -18
  140. package/src/components/ui/combobox/ComboboxList.vue +19 -19
  141. package/src/components/ui/combobox/ComboboxSelect.vue +79 -78
  142. package/src/components/ui/combobox/ComboboxSeparator.vue +1 -1
  143. package/src/components/ui/combobox/ComboboxTrigger.vue +11 -11
  144. package/src/components/ui/combobox/types.ts +5 -5
  145. package/src/components/ui/command/Command.vue +48 -48
  146. package/src/components/ui/command/CommandDialog.vue +14 -14
  147. package/src/components/ui/command/CommandEmpty.vue +4 -4
  148. package/src/components/ui/command/CommandGroup.vue +23 -23
  149. package/src/components/ui/command/CommandInput.vue +10 -10
  150. package/src/components/ui/command/CommandItem.vue +40 -40
  151. package/src/components/ui/command/CommandList.vue +9 -9
  152. package/src/components/ui/command/CommandSeparator.vue +3 -3
  153. package/src/components/ui/command/CommandShortcut.vue +8 -8
  154. package/src/components/ui/command/index.ts +11 -11
  155. package/src/components/ui/data-table/DataTable.vue +147 -146
  156. package/src/components/ui/data-table/index.ts +11 -11
  157. package/src/components/ui/date-picker/DatePicker.vue +32 -32
  158. package/src/components/ui/date-time-picker/DateTimePicker.vue +97 -97
  159. package/src/components/ui/dialog/Dialog.vue +3 -3
  160. package/src/components/ui/dialog/DialogClose.vue +3 -3
  161. package/src/components/ui/dialog/DialogContent.vue +22 -22
  162. package/src/components/ui/dialog/DialogDescription.vue +7 -7
  163. package/src/components/ui/dialog/DialogFooter.vue +8 -8
  164. package/src/components/ui/dialog/DialogHeader.vue +4 -4
  165. package/src/components/ui/dialog/DialogOverlay.vue +7 -7
  166. package/src/components/ui/dialog/DialogScrollContent.vue +33 -33
  167. package/src/components/ui/dialog/DialogTitle.vue +3 -3
  168. package/src/components/ui/dialog/DialogTrigger.vue +3 -3
  169. package/src/components/ui/dropdown-menu/DropdownMenu.vue +3 -3
  170. package/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +12 -12
  171. package/src/components/ui/dropdown-menu/DropdownMenuContent.vue +15 -15
  172. package/src/components/ui/dropdown-menu/DropdownMenuGroup.vue +3 -3
  173. package/src/components/ui/dropdown-menu/DropdownMenuItem.vue +12 -12
  174. package/src/components/ui/dropdown-menu/DropdownMenuLabel.vue +9 -9
  175. package/src/components/ui/dropdown-menu/DropdownMenuPortal.vue +3 -3
  176. package/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +3 -3
  177. package/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +11 -11
  178. package/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue +1 -1
  179. package/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue +4 -4
  180. package/src/components/ui/dropdown-menu/DropdownMenuSub.vue +3 -3
  181. package/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue +15 -15
  182. package/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +16 -16
  183. package/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue +3 -3
  184. package/src/components/ui/dropdown-menu/classes.ts +16 -16
  185. package/src/components/ui/field/Field.vue +5 -5
  186. package/src/components/ui/field/FieldContent.vue +8 -8
  187. package/src/components/ui/field/FieldDescription.vue +10 -10
  188. package/src/components/ui/field/FieldError.vue +39 -39
  189. package/src/components/ui/field/FieldGroup.vue +8 -8
  190. package/src/components/ui/field/FieldLabel.vue +10 -10
  191. package/src/components/ui/field/FieldLegend.vue +11 -11
  192. package/src/components/ui/field/FieldSeparator.vue +11 -11
  193. package/src/components/ui/field/FieldSet.vue +9 -9
  194. package/src/components/ui/field/FieldTitle.vue +8 -8
  195. package/src/components/ui/field/field-context.ts +36 -36
  196. package/src/components/ui/field/index.ts +22 -22
  197. package/src/components/ui/file-dropzone/FileDropzone.vue +163 -154
  198. package/src/components/ui/file-dropzone/index.ts +19 -19
  199. package/src/components/ui/hover-card/HoverCard.vue +5 -5
  200. package/src/components/ui/hover-card/HoverCardContent.vue +13 -13
  201. package/src/components/ui/hover-card/HoverCardTrigger.vue +3 -3
  202. package/src/components/ui/input/Input.vue +13 -13
  203. package/src/components/ui/kbd/Kbd.vue +10 -10
  204. package/src/components/ui/kbd/KbdGroup.vue +49 -49
  205. package/src/components/ui/label/Label.vue +7 -7
  206. package/src/components/ui/native-select/NativeSelect.vue +17 -17
  207. package/src/components/ui/native-select/NativeSelectOptGroup.vue +3 -3
  208. package/src/components/ui/native-select/NativeSelectOption.vue +3 -3
  209. package/src/components/ui/number-field/NumberField.vue +90 -89
  210. package/src/components/ui/pagination/Pagination.vue +4 -4
  211. package/src/components/ui/pagination/PaginationContent.vue +4 -4
  212. package/src/components/ui/pagination/PaginationEllipsis.vue +10 -10
  213. package/src/components/ui/pagination/PaginationFirst.vue +9 -9
  214. package/src/components/ui/pagination/PaginationItem.vue +14 -14
  215. package/src/components/ui/pagination/PaginationLast.vue +9 -9
  216. package/src/components/ui/pagination/PaginationNext.vue +9 -9
  217. package/src/components/ui/pagination/PaginationPrevious.vue +9 -9
  218. package/src/components/ui/pagination/SimplePagination.vue +25 -25
  219. package/src/components/ui/pin-input/PinInput.vue +20 -20
  220. package/src/components/ui/pin-input/PinInputInput.vue +17 -17
  221. package/src/components/ui/pin-input/context.ts +1 -1
  222. package/src/components/ui/popover/Popover.vue +3 -3
  223. package/src/components/ui/popover/PopoverAnchor.vue +3 -3
  224. package/src/components/ui/popover/PopoverContent.vue +12 -12
  225. package/src/components/ui/popover/PopoverTrigger.vue +3 -3
  226. package/src/components/ui/progress/Progress.vue +16 -16
  227. package/src/components/ui/radio-group/RadioGroup.vue +7 -7
  228. package/src/components/ui/radio-group/RadioGroupCard.vue +39 -39
  229. package/src/components/ui/radio-group/RadioGroupItem.vue +20 -20
  230. package/src/components/ui/scroll-area/ScrollArea.vue +14 -14
  231. package/src/components/ui/scroll-area/ScrollBar.vue +12 -12
  232. package/src/components/ui/select/Select.vue +3 -3
  233. package/src/components/ui/select/SelectContent.vue +25 -25
  234. package/src/components/ui/select/SelectGroup.vue +3 -3
  235. package/src/components/ui/select/SelectItem.vue +25 -25
  236. package/src/components/ui/select/SelectItemContent.vue +32 -32
  237. package/src/components/ui/select/SelectItemText.vue +3 -3
  238. package/src/components/ui/select/SelectLabel.vue +3 -3
  239. package/src/components/ui/select/SelectScrollDownButton.vue +10 -10
  240. package/src/components/ui/select/SelectScrollUpButton.vue +10 -10
  241. package/src/components/ui/select/SelectSeparator.vue +2 -2
  242. package/src/components/ui/select/SelectTrigger.vue +15 -15
  243. package/src/components/ui/select/SelectValue.vue +3 -3
  244. package/src/components/ui/select/SelectValueContent.vue +39 -39
  245. package/src/components/ui/separator/Separator.vue +7 -7
  246. package/src/components/ui/sheet/Sheet.vue +3 -3
  247. package/src/components/ui/sheet/SheetClose.vue +3 -3
  248. package/src/components/ui/sheet/SheetContent.vue +22 -22
  249. package/src/components/ui/sheet/SheetDescription.vue +3 -3
  250. package/src/components/ui/sheet/SheetFooter.vue +3 -3
  251. package/src/components/ui/sheet/SheetHeader.vue +3 -3
  252. package/src/components/ui/sheet/SheetOverlay.vue +7 -7
  253. package/src/components/ui/sheet/SheetTitle.vue +3 -3
  254. package/src/components/ui/sheet/SheetTrigger.vue +3 -3
  255. package/src/components/ui/sidebar/Sidebar.vue +57 -57
  256. package/src/components/ui/sidebar/SidebarContent.vue +8 -8
  257. package/src/components/ui/sidebar/SidebarFooter.vue +8 -8
  258. package/src/components/ui/sidebar/SidebarGroup.vue +8 -8
  259. package/src/components/ui/sidebar/SidebarGroupAction.vue +9 -9
  260. package/src/components/ui/sidebar/SidebarGroupContent.vue +4 -4
  261. package/src/components/ui/sidebar/SidebarGroupLabel.vue +8 -8
  262. package/src/components/ui/sidebar/SidebarHeader.vue +8 -8
  263. package/src/components/ui/sidebar/SidebarInput.vue +8 -8
  264. package/src/components/ui/sidebar/SidebarInset.vue +9 -9
  265. package/src/components/ui/sidebar/SidebarMenu.vue +4 -4
  266. package/src/components/ui/sidebar/SidebarMenuAction.vue +18 -18
  267. package/src/components/ui/sidebar/SidebarMenuBadge.vue +14 -14
  268. package/src/components/ui/sidebar/SidebarMenuButton.vue +21 -21
  269. package/src/components/ui/sidebar/SidebarMenuButtonChild.vue +10 -10
  270. package/src/components/ui/sidebar/SidebarMenuItem.vue +4 -4
  271. package/src/components/ui/sidebar/SidebarMenuSkeleton.vue +10 -10
  272. package/src/components/ui/sidebar/SidebarMenuSub.vue +9 -9
  273. package/src/components/ui/sidebar/SidebarMenuSubButton.vue +17 -17
  274. package/src/components/ui/sidebar/SidebarMenuSubItem.vue +4 -4
  275. package/src/components/ui/sidebar/SidebarProvider.vue +46 -46
  276. package/src/components/ui/sidebar/SidebarRail.vue +13 -13
  277. package/src/components/ui/sidebar/SidebarSeparator.vue +4 -4
  278. package/src/components/ui/sidebar/SidebarTrigger.vue +6 -6
  279. package/src/components/ui/sidebar/index.ts +29 -29
  280. package/src/components/ui/sidebar/utils.ts +7 -7
  281. package/src/components/ui/skeleton/Skeleton.vue +6 -6
  282. package/src/components/ui/slider/Slider.vue +14 -14
  283. package/src/components/ui/spinner/Spinner.vue +21 -21
  284. package/src/components/ui/stepper/SimpleStepper.vue +27 -27
  285. package/src/components/ui/stepper/Stepper.vue +6 -6
  286. package/src/components/ui/stepper/StepperDescription.vue +5 -5
  287. package/src/components/ui/stepper/StepperIndicator.vue +18 -18
  288. package/src/components/ui/stepper/StepperItem.vue +4 -4
  289. package/src/components/ui/stepper/StepperSeparator.vue +7 -7
  290. package/src/components/ui/stepper/StepperTitle.vue +5 -5
  291. package/src/components/ui/stepper/StepperTrigger.vue +4 -4
  292. package/src/components/ui/stepper/index.ts +3 -3
  293. package/src/components/ui/switch/Switch.vue +15 -15
  294. package/src/components/ui/table/Table.vue +6 -6
  295. package/src/components/ui/table/TableBody.vue +4 -4
  296. package/src/components/ui/table/TableCaption.vue +4 -4
  297. package/src/components/ui/table/TableCell.vue +8 -8
  298. package/src/components/ui/table/TableEmpty.vue +14 -14
  299. package/src/components/ui/table/TableFooter.vue +8 -8
  300. package/src/components/ui/table/TableHead.vue +8 -8
  301. package/src/components/ui/table/TableHeader.vue +4 -4
  302. package/src/components/ui/table/TableRow.vue +8 -8
  303. package/src/components/ui/tabs/Tabs.vue +4 -4
  304. package/src/components/ui/tabs/TabsContent.vue +4 -4
  305. package/src/components/ui/tabs/TabsList.vue +15 -15
  306. package/src/components/ui/tabs/TabsTrigger.vue +10 -10
  307. package/src/components/ui/tags-input/TagsInput.vue +17 -17
  308. package/src/components/ui/tags-input/TagsInputInput.vue +6 -6
  309. package/src/components/ui/tags-input/TagsInputItem.vue +15 -15
  310. package/src/components/ui/tags-input/TagsInputItemDelete.vue +13 -13
  311. package/src/components/ui/tags-input/TagsInputItemText.vue +4 -4
  312. package/src/components/ui/textarea/Textarea.vue +12 -12
  313. package/src/components/ui/time-picker/TimePicker.vue +25 -25
  314. package/src/components/ui/toggle-group/Toggle.vue +10 -10
  315. package/src/components/ui/toggle-group/ToggleGroup.vue +38 -38
  316. package/src/components/ui/toggle-group/ToggleGroupItem.vue +9 -9
  317. package/src/components/ui/toggle-group/index.ts +46 -46
  318. package/src/components/ui/tooltip/Tooltip.vue +3 -3
  319. package/src/components/ui/tooltip/TooltipContent.vue +13 -13
  320. package/src/components/ui/tooltip/TooltipProvider.vue +4 -4
  321. package/src/components/ui/tooltip/TooltipTrigger.vue +3 -3
  322. package/src/i18n/de.json +185 -185
  323. package/src/i18n/en.json +185 -185
  324. package/src/i18n/es.json +185 -185
  325. package/src/i18n/fr.json +185 -185
  326. package/src/i18n/it.json +185 -185
  327. package/src/i18n/ja.json +185 -185
  328. package/src/i18n/pt.json +185 -185
  329. package/src/i18n/ru.json +185 -185
  330. package/src/i18n/zh.json +185 -185
  331. package/src/lib/color-tokens.ts +24 -24
  332. package/src/lib/i18n.ts +65 -65
  333. package/src/lib/utils.ts +33 -33
  334. package/src/nuxt-components.d.ts +2 -2
  335. package/src/runtime/ui-vintage-i18n-plugin.ts +49 -49
  336. package/src/shims-vue.d.ts +3 -3
  337. package/src/styles.css +377 -377
@@ -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>
@@ -7,15 +7,15 @@ import { cn } from '../../../lib/utils';
7
7
  import { SelectScrollDownButton, SelectScrollUpButton } from '.';
8
8
 
9
9
  defineOptions({
10
- inheritAttrs: false
10
+ inheritAttrs: false
11
11
  });
12
12
 
13
13
  // Props
14
14
  const props = withDefaults(defineProps<SelectContentProps & { class?: HTMLAttributes['class'] }>(), {
15
- align: 'start',
16
- position: 'popper',
17
- sideOffset: 4,
18
- collisionPadding: 8
15
+ align: 'start',
16
+ position: 'popper',
17
+ sideOffset: 4,
18
+ collisionPadding: 8
19
19
  });
20
20
 
21
21
  // Emits
@@ -26,24 +26,24 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits);
26
26
  </script>
27
27
 
28
28
  <template>
29
- <SelectPortal>
30
- <SelectContent data-slot="select-content" v-bind="{ ...$attrs, ...forwarded }" :class="cn(
31
- 'uv-floating-motion bg-popover text-popover-foreground relative z-50 max-h-(--reka-select-content-available-height) min-w-32 overflow-x-hidden overflow-y-auto rounded border border-border shadow-elevated-lg max-sm:w-(--reka-select-trigger-width) max-sm:min-w-(--reka-select-trigger-width)',
32
- position === 'popper' &&
33
- 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',
34
- props.class
35
- )
36
- ">
37
- <SelectScrollUpButton />
38
- <SelectViewport :class="cn(
39
- 'p-1',
40
- position === 'popper' &&
41
- 'h-(--reka-select-trigger-height) w-full min-w-(--reka-select-trigger-width) scroll-my-1'
42
- )
43
- ">
44
- <slot />
45
- </SelectViewport>
46
- <SelectScrollDownButton />
47
- </SelectContent>
48
- </SelectPortal>
29
+ <SelectPortal>
30
+ <SelectContent data-slot="select-content" v-bind="{ ...$attrs, ...forwarded }" :class="cn(
31
+ 'uv-floating-motion bg-popover text-popover-foreground relative z-50 max-h-(--reka-select-content-available-height) min-w-32 overflow-x-hidden overflow-y-auto rounded border border-border shadow-elevated-lg max-sm:w-(--reka-select-trigger-width) max-sm:min-w-(--reka-select-trigger-width)',
32
+ position === 'popper' &&
33
+ 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',
34
+ props.class
35
+ )
36
+ ">
37
+ <SelectScrollUpButton />
38
+ <SelectViewport :class="cn(
39
+ 'p-1',
40
+ position === 'popper' &&
41
+ 'h-(--reka-select-trigger-height) w-full min-w-(--reka-select-trigger-width) scroll-my-1'
42
+ )
43
+ ">
44
+ <slot />
45
+ </SelectViewport>
46
+ <SelectScrollDownButton />
47
+ </SelectContent>
48
+ </SelectPortal>
49
49
  </template>
@@ -7,7 +7,7 @@ const props = defineProps<SelectGroupProps>();
7
7
  </script>
8
8
 
9
9
  <template>
10
- <SelectGroup data-slot="select-group" v-bind="props">
11
- <slot />
12
- </SelectGroup>
10
+ <SelectGroup data-slot="select-group" v-bind="props">
11
+ <slot />
12
+ </SelectGroup>
13
13
  </template>
@@ -2,7 +2,7 @@
2
2
  import type { SelectItemProps } from 'reka-ui';
3
3
  import type { HTMLAttributes } from 'vue';
4
4
  import { reactiveOmit } from '@vueuse/core';
5
- import { Tick02Icon } from '@hugeicons/core-free-icons';
5
+ import Tick02Icon from '@hugeicons/core-free-icons/Tick02Icon';
6
6
  import { HugeiconsIcon } from '@hugeicons/vue';
7
7
  import { SelectItem, SelectItemIndicator, SelectItemText, useForwardProps } from 'reka-ui';
8
8
  import { cn } from '../../../lib/utils';
@@ -15,31 +15,31 @@ const forwardedProps = useForwardProps(delegatedProps);
15
15
  </script>
16
16
 
17
17
  <template>
18
- <SelectItem data-slot="select-item" v-bind="forwardedProps" :class="cn(
19
- 'focus:bg-accent focus:text-accent-foreground data-[state=checked]:text-foreground transition-colors duration-150 [&_svg:not([class*=\'text-\'])]:text-muted-foreground relative flex w-full cursor-pointer items-center gap-2 rounded-sm py-2.5 pr-8 pl-2 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:cursor-not-allowed data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\'size-\'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2',
20
- props.class
21
- )
22
- ">
23
- <span class="absolute right-2 flex size-3.5 items-center justify-center">
24
- <SelectItemIndicator>
25
- <slot name="indicator-icon">
26
- <HugeiconsIcon :icon="Tick02Icon" class="size-4 animate-uv-pop text-primary" />
27
- </slot>
28
- </SelectItemIndicator>
29
- </span>
18
+ <SelectItem data-slot="select-item" v-bind="forwardedProps" :class="cn(
19
+ 'focus:bg-accent focus:text-accent-foreground data-[state=checked]:text-foreground transition-colors duration-150 [&_svg:not([class*=\'text-\'])]:text-muted-foreground relative flex w-full cursor-pointer items-center gap-2 rounded-sm py-2.5 pr-8 pl-2 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:cursor-not-allowed data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\'size-\'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2',
20
+ props.class
21
+ )
22
+ ">
23
+ <span class="absolute right-2 flex size-3.5 items-center justify-center">
24
+ <SelectItemIndicator>
25
+ <slot name="indicator-icon">
26
+ <HugeiconsIcon :icon="Tick02Icon" class="size-4 animate-uv-pop text-primary" />
27
+ </slot>
28
+ </SelectItemIndicator>
29
+ </span>
30
30
 
31
- <template v-if="props.textValue">
32
- <SelectItemText>
33
- <span class="sr-only">{{ props.textValue }}</span>
34
- </SelectItemText>
31
+ <template v-if="props.textValue">
32
+ <SelectItemText>
33
+ <span class="sr-only">{{ props.textValue }}</span>
34
+ </SelectItemText>
35
35
 
36
- <div class="flex min-w-0 flex-1 flex-col">
37
- <slot />
38
- </div>
39
- </template>
36
+ <div class="flex min-w-0 flex-1 flex-col">
37
+ <slot />
38
+ </div>
39
+ </template>
40
40
 
41
- <SelectItemText v-else>
42
- <slot />
43
- </SelectItemText>
44
- </SelectItem>
41
+ <SelectItemText v-else>
42
+ <slot />
43
+ </SelectItemText>
44
+ </SelectItem>
45
45
  </template>