@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
package/AGENTS.md CHANGED
@@ -30,7 +30,7 @@ Only build something new when no entry point fits, and compose it from library p
30
30
  - Customize components through their props and the `class` prop (merged with tailwind-merge) rather than wrapping them in extra styled elements.
31
31
  - Keep corners at `rounded` (the library's square look) and use `shadow-elevated-sm|md|lg|xl` for elevation, without glows or gradients.
32
32
  - For motion, reuse the library utilities (`ease-spring`, `ease-out-expo`, `animate-uv-fade-up`, `animate-uv-pop`, `uv-floating-motion`). In custom transitions, name `scale`, `rotate`, and `translate` explicitly; Tailwind v4 doesn't animate them through `transform`.
33
- - Icons are Hugeicons definitions: import them from `@hugeicons/core-free-icons` and pass them to `:icon` props, or render them with `HugeiconsIcon` from `@hugeicons/vue`. Both packages are peer dependencies, so the app must list them in its own `package.json`.
33
+ - Icons are Hugeicons definitions: import each one from its own module (`import Rocket01Icon from '@hugeicons/core-free-icons/Rocket01Icon'`, never the `@hugeicons/core-free-icons` barrel, which makes the build parse the whole icon set) and pass them to `:icon` props, or render them with `HugeiconsIcon` from `@hugeicons/vue`. Both packages are peer dependencies, so the app must list them in its own `package.json`.
34
34
  - Form controls use `v-model`. Mark invalid fields with `aria-invalid` and show messages with `FieldError`.
35
35
  - Library strings are translated through vue-i18n (`uiVintage.*` keys). App copy belongs in the app's own locale files.
36
36
 
package/COMPONENTS.md CHANGED
@@ -10,7 +10,7 @@ This file lists every public entry point of the package with its components, pro
10
10
  - Import from explicit subpaths only (for example `@brumaombra/ui-vintage/button`). There is no root barrel, and `src/` paths are internal.
11
11
  - Style with the semantic Tailwind tokens: `bg-background`, `bg-card`, `bg-surface`, `bg-accent`, `bg-primary`, `hover:bg-primary-hover`, `text-foreground`, `text-muted-foreground`, `border-border`, `border-border-strong`, `text-destructive`, `text-success`, `text-warning`, `text-info`. They switch automatically in dark mode, so do not add `dark:` color overrides.
12
12
  - Reuse the motion utilities from the stylesheet instead of custom animations: `ease-spring`, `ease-bounce`, `ease-out-expo`, `ease-snappy`, `uv-floating-motion`, `uv-modal-motion`, `uv-overlay-motion`, `uv-collapsible-motion`, `uv-field`, `animate-uv-pop`, `animate-uv-fade-up`, `animate-uv-shake`, `animate-uv-shimmer`, `animate-uv-float`, `animate-uv-ping-soft`, and elevation via `shadow-elevated-sm|md|lg|xl`. Tailwind v4 animates `scale`, `rotate`, and `translate` as separate properties, so name them (not `transform`) in custom transitions.
13
- - Icons are Hugeicons definitions passed as values: `import { Rocket01Icon } from '@hugeicons/core-free-icons'` then `:icon="Rocket01Icon"`, or render one with `<HugeiconsIcon :icon="Rocket01Icon" />` from `@hugeicons/vue`.
13
+ - Icons are Hugeicons definitions passed as values, each imported from its own module: `import Rocket01Icon from '@hugeicons/core-free-icons/Rocket01Icon'` then `:icon="Rocket01Icon"`, or render one with `<HugeiconsIcon :icon="Rocket01Icon" />` from `@hugeicons/vue`.
14
14
  - Every component accepts `class`, merged with `tailwind-merge`, so utility overrides win over the defaults.
15
15
 
16
16
  ## Contents
package/README.md CHANGED
@@ -101,7 +101,7 @@ Import components from their public subpath:
101
101
  <script setup>
102
102
  import { Button } from '@brumaombra/ui-vintage/button';
103
103
  import { SingleValueCard } from '@brumaombra/ui-vintage/single-value-card';
104
- import { Money03Icon } from '@hugeicons/core-free-icons';
104
+ import Money03Icon from '@hugeicons/core-free-icons/Money03Icon';
105
105
  </script>
106
106
 
107
107
  <template>
@@ -364,7 +364,7 @@ demo-app/ Private showcase app (not published)
364
364
 
365
365
  `demo-app/` is a documentation-style Nuxt 4 app that shows every component with a live preview and a copyable code tab, a live mini-app on the overview page, a complete blog built with Nuxt Content, and a command palette (`Ctrl/⌘ + K`) to jump to any section. It imports the package through `file:..`, so it runs the same source that is published to npm.
366
366
 
367
- It needs Node.js 22.19 or newer, because Nuxt Content uses the built-in `node:sqlite` module instead of a native SQLite build.
367
+ It needs Node.js 24.21 or newer. Nuxt Content uses the built-in `node:sqlite` module instead of a native SQLite build.
368
368
 
369
369
  ```bash
370
370
  # Install and start the demo
@@ -401,7 +401,7 @@ New entry points need an export in `package.json` and a description and category
401
401
 
402
402
  - Nuxt 4 and Vue 3.5 or newer.
403
403
  - Tailwind CSS v4 with `@tailwindcss/vite` registered in `vite.plugins`.
404
- - `@hugeicons/core-free-icons` 4 and `@hugeicons/vue` 1 (the icons you pass to `:icon` props, and the ones the components render).
404
+ - `@hugeicons/core-free-icons` 4.3 or newer and `@hugeicons/vue` 1 (the icons you pass to `:icon` props, and the ones the components render). Import each icon from its own module, as in the example above: the package barrel makes the build parse the whole icon set.
405
405
  - `vue-i18n` 9, 10, or 11 with an i18n setup, such as `@nuxtjs/i18n` (the components call `useI18n()`).
406
406
  - `@nuxt/image` 2 for image components (the module installs it when needed).
407
407
  - `@nuxt/content` 3, only for the `blog` and `content` components.
package/module.mjs CHANGED
@@ -7,25 +7,25 @@ const consumerRequire = createRequire(resolve(process.cwd(), 'package.json'));
7
7
 
8
8
  // Resolve Nuxt Kit from either the consumer app or the package itself
9
9
  const loadNuxtKit = async () => {
10
- // Attempt to load Nuxt Kit
11
- for (const specifier of ['@nuxt/kit', 'nuxt/node_modules/@nuxt/kit']) {
12
- try {
13
- return await import(specifier);
14
- } catch { }
10
+ // Attempt to load Nuxt Kit
11
+ for (const specifier of ['@nuxt/kit', 'nuxt/node_modules/@nuxt/kit']) {
12
+ try {
13
+ return await import(specifier);
14
+ } catch { }
15
15
 
16
- try {
17
- const resolvedPath = consumerRequire.resolve(specifier);
18
- return await import(pathToFileURL(resolvedPath).href);
19
- } catch { }
16
+ try {
17
+ const resolvedPath = consumerRequire.resolve(specifier);
18
+ return await import(pathToFileURL(resolvedPath).href);
19
+ } catch { }
20
20
 
21
- try {
22
- const resolvedPath = moduleRequire.resolve(specifier);
23
- return await import(pathToFileURL(resolvedPath).href);
24
- } catch { }
25
- }
21
+ try {
22
+ const resolvedPath = moduleRequire.resolve(specifier);
23
+ return await import(pathToFileURL(resolvedPath).href);
24
+ } catch { }
25
+ }
26
26
 
27
- // Throw an error if Nuxt Kit cannot be resolved
28
- throw new Error('Unable to resolve @nuxt/kit for @brumaombra/ui-vintage. Install the package dependencies or add Nuxt to the consuming app.');
27
+ // Throw an error if Nuxt Kit cannot be resolved
28
+ throw new Error('Unable to resolve @nuxt/kit for @brumaombra/ui-vintage. Install the package dependencies or add Nuxt to the consuming app.');
29
29
  };
30
30
 
31
31
  const { addPlugin, createResolver, defineNuxtModule, hasNuxtModule, installModule } = await loadNuxtKit();
@@ -35,35 +35,35 @@ const sourceRoot = resolver.resolve('src');
35
35
  const stylesPath = resolver.resolve('src/styles.css');
36
36
 
37
37
  export default defineNuxtModule({
38
- // Module meta information
39
- meta: {
40
- name: '@brumaombra/ui-vintage',
41
- configKey: 'uiVintage',
42
- version,
43
- compatibility: {
44
- nuxt: '>=4.0.0'
45
- }
46
- },
38
+ // Module meta information
39
+ meta: {
40
+ name: '@brumaombra/ui-vintage',
41
+ configKey: 'uiVintage',
42
+ version,
43
+ compatibility: {
44
+ nuxt: '>=4.0.0'
45
+ }
46
+ },
47
47
 
48
- // Module main function
49
- async setup(_, nuxt) {
50
- // Inject the shared library stylesheet once
51
- if (!nuxt.options.css.includes(stylesPath)) {
52
- nuxt.options.css.push(stylesPath);
53
- }
48
+ // Module main function
49
+ async setup(_, nuxt) {
50
+ // Inject the shared library stylesheet once
51
+ if (!nuxt.options.css.includes(stylesPath)) {
52
+ nuxt.options.css.push(stylesPath);
53
+ }
54
54
 
55
- // Transpile the published source so consuming apps can import it directly
56
- const cleanSourceRoot = sourceRoot.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
57
- nuxt.options.build.transpile.push(new RegExp(`^${cleanSourceRoot}`));
55
+ // Transpile the published source so consuming apps can import it directly
56
+ const cleanSourceRoot = sourceRoot.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
57
+ nuxt.options.build.transpile.push(new RegExp(`^${cleanSourceRoot}`));
58
58
 
59
- // Ensure Nuxt Image is available for components that render NuxtImg
60
- if (!hasNuxtModule('@nuxt/image', nuxt)) {
61
- await installModule('@nuxt/image');
62
- }
59
+ // Ensure Nuxt Image is available for components that render NuxtImg
60
+ if (!hasNuxtModule('@nuxt/image', nuxt)) {
61
+ await installModule('@nuxt/image');
62
+ }
63
63
 
64
- // Add the plugin to merge the library translations into the app i18n instance at runtime
65
- addPlugin({
66
- src: resolver.resolve('src/runtime/ui-vintage-i18n-plugin.ts')
67
- });
68
- }
64
+ // Add the plugin to merge the library translations into the app i18n instance at runtime
65
+ addPlugin({
66
+ src: resolver.resolve('src/runtime/ui-vintage-i18n-plugin.ts')
67
+ });
68
+ }
69
69
  });
package/package.json CHANGED
@@ -1,176 +1,176 @@
1
1
  {
2
- "name": "@brumaombra/ui-vintage",
3
- "version": "0.9.0",
4
- "description": "Source-published Nuxt UI runtime with shared theme tokens and built-in Nuxt integrations.",
5
- "private": false,
6
- "author": "Mauro Brambilla",
7
- "license": "MIT",
8
- "homepage": "https://github.com/brumaombra/ui-vintage#readme",
9
- "repository": {
10
- "type": "git",
11
- "url": "git+https://github.com/brumaombra/ui-vintage.git"
12
- },
13
- "bugs": {
14
- "url": "https://github.com/brumaombra/ui-vintage/issues"
15
- },
16
- "keywords": [
17
- "nuxt",
18
- "nuxt4",
19
- "nuxt-module",
20
- "components",
21
- "ui",
22
- "shared-runtime",
23
- "nuxt-image"
24
- ],
25
- "type": "module",
26
- "publishConfig": {
27
- "access": "public"
28
- },
29
- "files": [
30
- "src",
31
- "module.mjs",
32
- "COMPONENTS.md",
33
- "AGENTS.md"
34
- ],
35
- "exports": {
36
- ".": {
37
- "import": "./module.mjs",
38
- "default": "./module.mjs"
39
- },
40
- "./package.json": "./package.json",
41
- "./style.css": "./src/styles.css",
42
- "./accordion": "./src/components/ui/accordion/index.ts",
43
- "./alert": "./src/components/ui/alert/index.ts",
44
- "./alert-dialog": "./src/components/ui/alert-dialog/index.ts",
45
- "./animated-number": "./src/components/ui/animated-number/index.ts",
46
- "./avatar": "./src/components/ui/avatar/index.ts",
47
- "./background-grid": "./src/components/background-grid/index.ts",
48
- "./badge": "./src/components/ui/badge/index.ts",
49
- "./blog": "./src/components/blog/index.ts",
50
- "./breadcrumb": "./src/components/ui/breadcrumb/index.ts",
51
- "./busy": "./src/components/ui/busy/index.ts",
52
- "./busy-indicator": "./src/components/busy-indicator/index.ts",
53
- "./button": "./src/components/ui/button/index.ts",
54
- "./calendar": "./src/components/ui/calendar/index.ts",
55
- "./card": "./src/components/ui/card/index.ts",
56
- "./card-grid": "./src/components/card-grid/index.ts",
57
- "./checkbox": "./src/components/ui/checkbox/index.ts",
58
- "./chip": "./src/components/chip/index.ts",
59
- "./collapsible": "./src/components/ui/collapsible/index.ts",
60
- "./combobox": "./src/components/ui/combobox/index.ts",
61
- "./command": "./src/components/ui/command/index.ts",
62
- "./common-types": "./src/lib/common-types.ts",
63
- "./confirm-dialog": "./src/components/confirm-dialog/index.ts",
64
- "./cookie-consent": "./src/components/cookie-consent/index.ts",
65
- "./content": "./src/components/content/index.ts",
66
- "./dashboard-shell": "./src/components/dashboard-shell/index.ts",
67
- "./data-list": "./src/components/data-list/index.ts",
68
- "./data-table": "./src/components/ui/data-table/index.ts",
69
- "./date-picker": "./src/components/ui/date-picker/index.ts",
70
- "./date-time-picker": "./src/components/ui/date-time-picker/index.ts",
71
- "./dialog": "./src/components/ui/dialog/index.ts",
72
- "./dropdown-menu": "./src/components/ui/dropdown-menu/index.ts",
73
- "./empty-state-card": "./src/components/empty-state-card/index.ts",
74
- "./error-page": "./src/components/error-page/index.ts",
75
- "./field": "./src/components/ui/field/index.ts",
76
- "./file-dropzone": "./src/components/ui/file-dropzone/index.ts",
77
- "./hover-card": "./src/components/ui/hover-card/index.ts",
78
- "./info-card": "./src/components/info-card/index.ts",
79
- "./input": "./src/components/ui/input/index.ts",
80
- "./kbd": "./src/components/ui/kbd/index.ts",
81
- "./label": "./src/components/ui/label/index.ts",
82
- "./landing": "./src/components/landing/index.ts",
83
- "./landing-content": "./src/components/landing/landing-content/index.ts",
84
- "./landing-footer": "./src/components/landing/landing-footer/index.ts",
85
- "./landing-navbar": "./src/components/landing/landing-navbar/index.ts",
86
- "./landing-shell": "./src/components/landing/landing-shell/index.ts",
87
- "./language-flag": "./src/components/language-flag/index.ts",
88
- "./language-selector": "./src/components/language-selector/index.ts",
89
- "./load-more-button": "./src/components/load-more-button/index.ts",
90
- "./loading-state-card": "./src/components/loading-state-card/index.ts",
91
- "./message-dialog": "./src/components/message-dialog/index.ts",
92
- "./message-toast": "./src/components/message-toast/index.ts",
93
- "./native-select": "./src/components/ui/native-select/index.ts",
94
- "./number-field": "./src/components/ui/number-field/index.ts",
95
- "./page-header": "./src/components/page-header/index.ts",
96
- "./pagination": "./src/components/ui/pagination/index.ts",
97
- "./pin-input": "./src/components/ui/pin-input/index.ts",
98
- "./popover": "./src/components/ui/popover/index.ts",
99
- "./progress": "./src/components/ui/progress/index.ts",
100
- "./progress-component": "./src/components/progress-component/index.ts",
101
- "./radio-group": "./src/components/ui/radio-group/index.ts",
102
- "./scroll-area": "./src/components/ui/scroll-area/index.ts",
103
- "./select": "./src/components/ui/select/index.ts",
104
- "./separator": "./src/components/ui/separator/index.ts",
105
- "./sheet": "./src/components/ui/sheet/index.ts",
106
- "./sidebar": "./src/components/ui/sidebar/index.ts",
107
- "./single-value-card": "./src/components/single-value-card/index.ts",
108
- "./skeleton": "./src/components/ui/skeleton/index.ts",
109
- "./slider": "./src/components/ui/slider/index.ts",
110
- "./slider-form-component": "./src/components/slider-form-component/index.ts",
111
- "./spinner": "./src/components/ui/spinner/index.ts",
112
- "./stat-strip": "./src/components/stat-strip/index.ts",
113
- "./stepper": "./src/components/ui/stepper/index.ts",
114
- "./switch": "./src/components/ui/switch/index.ts",
115
- "./switch-form-component": "./src/components/switch-form-component/index.ts",
116
- "./table": "./src/components/ui/table/index.ts",
117
- "./tabs": "./src/components/ui/tabs/index.ts",
118
- "./tags-input": "./src/components/ui/tags-input/index.ts",
119
- "./text-link": "./src/components/text-link/index.ts",
120
- "./textarea": "./src/components/ui/textarea/index.ts",
121
- "./theme-selector": "./src/components/theme-selector/index.ts",
122
- "./time-picker": "./src/components/ui/time-picker/index.ts",
123
- "./toggle-group": "./src/components/ui/toggle-group/index.ts",
124
- "./tooltip": "./src/components/ui/tooltip/index.ts",
125
- "./utils": "./src/lib/utils.ts"
126
- },
127
- "sideEffects": [
128
- "**/*.css"
129
- ],
130
- "scripts": {
131
- "typecheck": "vue-tsc --noEmit",
132
- "docs:components": "node scripts/generate-components-doc.mjs",
133
- "docs:components:check": "node scripts/generate-components-doc.mjs --check",
134
- "test": "npm --prefix demo-app run test"
135
- },
136
- "peerDependencies": {
137
- "@hugeicons/core-free-icons": "^4.1.0",
138
- "@hugeicons/vue": "^1.0.0",
139
- "@nuxt/content": "^3.0.0",
140
- "@nuxt/image": "^2.0.0",
141
- "nuxt": "^4.0.0",
142
- "tailwindcss": "^4.0.0",
143
- "vue": "^3.5.0",
144
- "vue-i18n": "^9.0.0 || ^10.0.0 || ^11.0.0"
145
- },
146
- "peerDependenciesMeta": {
147
- "@nuxt/content": {
148
- "optional": true
149
- }
150
- },
151
- "dependencies": {
152
- "@internationalized/date": "3.10.0",
153
- "@nuxt/kit": "4.5.2",
154
- "@vueuse/core": "14.2.1",
155
- "class-variance-authority": "0.7.1",
156
- "clsx": "2.1.1",
157
- "reka-ui": "2.9.2",
158
- "shiki": "4.4.3",
159
- "tailwind-merge": "3.5.0"
160
- },
161
- "devDependencies": {
162
- "@hugeicons/core-free-icons": "4.1.1",
163
- "@hugeicons/vue": "1.0.5",
164
- "nuxt": "4.5.2",
165
- "tailwindcss": "4.2.4",
166
- "typescript": "5.9.3",
167
- "vue": "3.5.42",
168
- "vue-i18n": "11.4.13",
169
- "vue-tsc": "2.2.10"
170
- },
171
- "overrides": {
172
- "archiver-utils": {
173
- "glob": "13.0.6"
174
- }
175
- }
176
- }
2
+ "name": "@brumaombra/ui-vintage",
3
+ "version": "0.9.2",
4
+ "description": "Source-published Nuxt UI runtime with shared theme tokens and built-in Nuxt integrations.",
5
+ "private": false,
6
+ "author": "Mauro Brambilla",
7
+ "license": "MIT",
8
+ "homepage": "https://github.com/brumaombra/ui-vintage#readme",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/brumaombra/ui-vintage.git"
12
+ },
13
+ "bugs": {
14
+ "url": "https://github.com/brumaombra/ui-vintage/issues"
15
+ },
16
+ "keywords": [
17
+ "nuxt",
18
+ "nuxt4",
19
+ "nuxt-module",
20
+ "components",
21
+ "ui",
22
+ "shared-runtime",
23
+ "nuxt-image"
24
+ ],
25
+ "type": "module",
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
29
+ "files": [
30
+ "src",
31
+ "module.mjs",
32
+ "COMPONENTS.md",
33
+ "AGENTS.md"
34
+ ],
35
+ "exports": {
36
+ ".": {
37
+ "import": "./module.mjs",
38
+ "default": "./module.mjs"
39
+ },
40
+ "./package.json": "./package.json",
41
+ "./style.css": "./src/styles.css",
42
+ "./accordion": "./src/components/ui/accordion/index.ts",
43
+ "./alert": "./src/components/ui/alert/index.ts",
44
+ "./alert-dialog": "./src/components/ui/alert-dialog/index.ts",
45
+ "./animated-number": "./src/components/ui/animated-number/index.ts",
46
+ "./avatar": "./src/components/ui/avatar/index.ts",
47
+ "./background-grid": "./src/components/background-grid/index.ts",
48
+ "./badge": "./src/components/ui/badge/index.ts",
49
+ "./blog": "./src/components/blog/index.ts",
50
+ "./breadcrumb": "./src/components/ui/breadcrumb/index.ts",
51
+ "./busy": "./src/components/ui/busy/index.ts",
52
+ "./busy-indicator": "./src/components/busy-indicator/index.ts",
53
+ "./button": "./src/components/ui/button/index.ts",
54
+ "./calendar": "./src/components/ui/calendar/index.ts",
55
+ "./card": "./src/components/ui/card/index.ts",
56
+ "./card-grid": "./src/components/card-grid/index.ts",
57
+ "./checkbox": "./src/components/ui/checkbox/index.ts",
58
+ "./chip": "./src/components/chip/index.ts",
59
+ "./collapsible": "./src/components/ui/collapsible/index.ts",
60
+ "./combobox": "./src/components/ui/combobox/index.ts",
61
+ "./command": "./src/components/ui/command/index.ts",
62
+ "./common-types": "./src/lib/common-types.ts",
63
+ "./confirm-dialog": "./src/components/confirm-dialog/index.ts",
64
+ "./cookie-consent": "./src/components/cookie-consent/index.ts",
65
+ "./content": "./src/components/content/index.ts",
66
+ "./dashboard-shell": "./src/components/dashboard-shell/index.ts",
67
+ "./data-list": "./src/components/data-list/index.ts",
68
+ "./data-table": "./src/components/ui/data-table/index.ts",
69
+ "./date-picker": "./src/components/ui/date-picker/index.ts",
70
+ "./date-time-picker": "./src/components/ui/date-time-picker/index.ts",
71
+ "./dialog": "./src/components/ui/dialog/index.ts",
72
+ "./dropdown-menu": "./src/components/ui/dropdown-menu/index.ts",
73
+ "./empty-state-card": "./src/components/empty-state-card/index.ts",
74
+ "./error-page": "./src/components/error-page/index.ts",
75
+ "./field": "./src/components/ui/field/index.ts",
76
+ "./file-dropzone": "./src/components/ui/file-dropzone/index.ts",
77
+ "./hover-card": "./src/components/ui/hover-card/index.ts",
78
+ "./info-card": "./src/components/info-card/index.ts",
79
+ "./input": "./src/components/ui/input/index.ts",
80
+ "./kbd": "./src/components/ui/kbd/index.ts",
81
+ "./label": "./src/components/ui/label/index.ts",
82
+ "./landing": "./src/components/landing/index.ts",
83
+ "./landing-content": "./src/components/landing/landing-content/index.ts",
84
+ "./landing-footer": "./src/components/landing/landing-footer/index.ts",
85
+ "./landing-navbar": "./src/components/landing/landing-navbar/index.ts",
86
+ "./landing-shell": "./src/components/landing/landing-shell/index.ts",
87
+ "./language-flag": "./src/components/language-flag/index.ts",
88
+ "./language-selector": "./src/components/language-selector/index.ts",
89
+ "./load-more-button": "./src/components/load-more-button/index.ts",
90
+ "./loading-state-card": "./src/components/loading-state-card/index.ts",
91
+ "./message-dialog": "./src/components/message-dialog/index.ts",
92
+ "./message-toast": "./src/components/message-toast/index.ts",
93
+ "./native-select": "./src/components/ui/native-select/index.ts",
94
+ "./number-field": "./src/components/ui/number-field/index.ts",
95
+ "./page-header": "./src/components/page-header/index.ts",
96
+ "./pagination": "./src/components/ui/pagination/index.ts",
97
+ "./pin-input": "./src/components/ui/pin-input/index.ts",
98
+ "./popover": "./src/components/ui/popover/index.ts",
99
+ "./progress": "./src/components/ui/progress/index.ts",
100
+ "./progress-component": "./src/components/progress-component/index.ts",
101
+ "./radio-group": "./src/components/ui/radio-group/index.ts",
102
+ "./scroll-area": "./src/components/ui/scroll-area/index.ts",
103
+ "./select": "./src/components/ui/select/index.ts",
104
+ "./separator": "./src/components/ui/separator/index.ts",
105
+ "./sheet": "./src/components/ui/sheet/index.ts",
106
+ "./sidebar": "./src/components/ui/sidebar/index.ts",
107
+ "./single-value-card": "./src/components/single-value-card/index.ts",
108
+ "./skeleton": "./src/components/ui/skeleton/index.ts",
109
+ "./slider": "./src/components/ui/slider/index.ts",
110
+ "./slider-form-component": "./src/components/slider-form-component/index.ts",
111
+ "./spinner": "./src/components/ui/spinner/index.ts",
112
+ "./stat-strip": "./src/components/stat-strip/index.ts",
113
+ "./stepper": "./src/components/ui/stepper/index.ts",
114
+ "./switch": "./src/components/ui/switch/index.ts",
115
+ "./switch-form-component": "./src/components/switch-form-component/index.ts",
116
+ "./table": "./src/components/ui/table/index.ts",
117
+ "./tabs": "./src/components/ui/tabs/index.ts",
118
+ "./tags-input": "./src/components/ui/tags-input/index.ts",
119
+ "./text-link": "./src/components/text-link/index.ts",
120
+ "./textarea": "./src/components/ui/textarea/index.ts",
121
+ "./theme-selector": "./src/components/theme-selector/index.ts",
122
+ "./time-picker": "./src/components/ui/time-picker/index.ts",
123
+ "./toggle-group": "./src/components/ui/toggle-group/index.ts",
124
+ "./tooltip": "./src/components/ui/tooltip/index.ts",
125
+ "./utils": "./src/lib/utils.ts"
126
+ },
127
+ "sideEffects": [
128
+ "**/*.css"
129
+ ],
130
+ "scripts": {
131
+ "typecheck": "vue-tsc --noEmit",
132
+ "docs:components": "node scripts/generate-components-doc.mjs",
133
+ "docs:components:check": "node scripts/generate-components-doc.mjs --check",
134
+ "test": "npm --prefix demo-app run test"
135
+ },
136
+ "peerDependencies": {
137
+ "@hugeicons/core-free-icons": "^4.3.0",
138
+ "@hugeicons/vue": "^1.0.0",
139
+ "@nuxt/content": "^3.0.0",
140
+ "@nuxt/image": "^2.0.0",
141
+ "nuxt": "^4.0.0",
142
+ "tailwindcss": "^4.0.0",
143
+ "vue": "^3.5.0",
144
+ "vue-i18n": "^9.0.0 || ^10.0.0 || ^11.0.0"
145
+ },
146
+ "peerDependenciesMeta": {
147
+ "@nuxt/content": {
148
+ "optional": true
149
+ }
150
+ },
151
+ "dependencies": {
152
+ "@internationalized/date": "3.10.0",
153
+ "@nuxt/kit": "4.5.2",
154
+ "@vueuse/core": "14.2.1",
155
+ "class-variance-authority": "0.7.1",
156
+ "clsx": "2.1.1",
157
+ "reka-ui": "2.9.2",
158
+ "shiki": "4.4.3",
159
+ "tailwind-merge": "3.5.0"
160
+ },
161
+ "devDependencies": {
162
+ "@hugeicons/core-free-icons": "4.3.5",
163
+ "@hugeicons/vue": "1.0.8",
164
+ "nuxt": "4.5.2",
165
+ "tailwindcss": "4.2.4",
166
+ "typescript": "5.9.3",
167
+ "vue": "3.5.42",
168
+ "vue-i18n": "11.4.13",
169
+ "vue-tsc": "2.2.10"
170
+ },
171
+ "overrides": {
172
+ "archiver-utils": {
173
+ "glob": "13.0.6"
174
+ }
175
+ }
176
+ }
@@ -3,12 +3,12 @@ import type { HTMLAttributes } from 'vue';
3
3
 
4
4
  // Props
5
5
  const props = defineProps<{
6
- class?: HTMLAttributes['class'];
6
+ class?: HTMLAttributes['class'];
7
7
  }>();
8
8
  </script>
9
9
 
10
10
  <template>
11
- <div :class="['pointer-events-none absolute inset-0 z-0 overflow-hidden', props.class]">
12
- <div class="absolute inset-0 bg-[linear-gradient(to_right,#80808012_1px,transparent_1px),linear-gradient(to_bottom,#80808012_1px,transparent_1px)] bg-size-[20px_20px] dark:bg-[linear-gradient(to_right,#ffffff0d_1px,transparent_1px),linear-gradient(to_bottom,#ffffff0d_1px,transparent_1px)]" />
13
- </div>
11
+ <div :class="['pointer-events-none absolute inset-0 z-0 overflow-hidden', props.class]">
12
+ <div class="absolute inset-0 bg-[linear-gradient(to_right,#80808012_1px,transparent_1px),linear-gradient(to_bottom,#80808012_1px,transparent_1px)] bg-size-[20px_20px] dark:bg-[linear-gradient(to_right,#ffffff0d_1px,transparent_1px),linear-gradient(to_bottom,#ffffff0d_1px,transparent_1px)]" />
13
+ </div>
14
14
  </template>
@@ -8,38 +8,38 @@ const { t } = useI18n();
8
8
 
9
9
  // Props
10
10
  const props = withDefaults(defineProps<{
11
- posts?: Array<{
12
- path: string;
13
- title: string;
14
- description?: string;
15
- image?: string;
16
- categoryText?: string;
17
- categoryPath?: string;
18
- }>;
19
- currentPage?: number;
20
- postsPerPage?: number;
21
- totalPosts?: number;
22
- hasMorePosts?: boolean;
23
- isLoading?: boolean;
11
+ posts?: Array<{
12
+ path: string;
13
+ title: string;
14
+ description?: string;
15
+ image?: string;
16
+ categoryText?: string;
17
+ categoryPath?: string;
18
+ }>;
19
+ currentPage?: number;
20
+ postsPerPage?: number;
21
+ totalPosts?: number;
22
+ hasMorePosts?: boolean;
23
+ isLoading?: boolean;
24
24
  }>(), {
25
- posts: () => [],
26
- currentPage: 1,
27
- postsPerPage: 9,
28
- totalPosts: 0,
29
- hasMorePosts: false,
30
- isLoading: false
25
+ posts: () => [],
26
+ currentPage: 1,
27
+ postsPerPage: 9,
28
+ totalPosts: 0,
29
+ hasMorePosts: false,
30
+ isLoading: false
31
31
  });
32
32
 
33
33
  // Emits
34
34
  const emits = defineEmits<{
35
- 'load-more': [];
35
+ 'load-more': [];
36
36
  }>();
37
37
 
38
38
  // Handle load more posts
39
39
  const handleLoadMorePosts = () => {
40
- if (!props.isLoading) {
41
- emits('load-more');
42
- }
40
+ if (!props.isLoading) {
41
+ emits('load-more');
42
+ }
43
43
  };
44
44
 
45
45
  // Number of currently visible posts
@@ -47,15 +47,15 @@ const visiblePostsCount = computed(() => Math.min(props.posts.length, props.tota
47
47
  </script>
48
48
 
49
49
  <template>
50
- <div>
51
- <!-- Blog posts grid -->
52
- <PostsList :posts="props.posts" />
50
+ <div>
51
+ <!-- Blog posts grid -->
52
+ <PostsList :posts="props.posts" />
53
53
 
54
- <!-- Load more button -->
55
- <LoadMoreButton v-if="props.hasMorePosts"
56
- :busy="props.isLoading"
57
- :text="t('uiVintage.blog.loadMoreWithNumbers', { current: visiblePostsCount, total: props.totalPosts })"
58
- @load-more="handleLoadMorePosts"
59
- class="mt-8" />
60
- </div>
54
+ <!-- Load more button -->
55
+ <LoadMoreButton v-if="props.hasMorePosts"
56
+ :busy="props.isLoading"
57
+ :text="t('uiVintage.blog.loadMoreWithNumbers', { current: visiblePostsCount, total: props.totalPosts })"
58
+ @load-more="handleLoadMorePosts"
59
+ class="mt-8" />
60
+ </div>
61
61
  </template>