@brumaombra/ui-vintage 0.9.1 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/module.mjs +43 -43
  2. package/package.json +175 -175
  3. package/src/components/background-grid/BackgroundGrid.vue +4 -4
  4. package/src/components/blog/AllPostsSection.vue +33 -33
  5. package/src/components/blog/BlogContentRenderer.vue +111 -111
  6. package/src/components/blog/BlogFAQSection.vue +19 -19
  7. package/src/components/blog/BlogHeaderSection.vue +80 -80
  8. package/src/components/blog/BlogInfoSection.vue +47 -47
  9. package/src/components/blog/BlogPostHeader.vue +135 -135
  10. package/src/components/blog/BlogProgressBar.vue +33 -33
  11. package/src/components/blog/BlogSectionTitle.vue +22 -22
  12. package/src/components/blog/BlogTagsSection.vue +25 -25
  13. package/src/components/blog/CategoriesList.vue +14 -14
  14. package/src/components/blog/CategoriesSection.vue +11 -11
  15. package/src/components/blog/CategoryCard.vue +25 -25
  16. package/src/components/blog/HeaderCarousel.vue +97 -97
  17. package/src/components/blog/PostCard.vue +33 -33
  18. package/src/components/blog/PostsList.vue +15 -15
  19. package/src/components/blog/SocialShareSidebar.vue +84 -84
  20. package/src/components/blog/TableOfContents.vue +307 -307
  21. package/src/components/busy-indicator/BusyIndicator.vue +7 -7
  22. package/src/components/busy-indicator/busy-indicator-state.ts +56 -56
  23. package/src/components/card-grid/CardGrid.vue +34 -34
  24. package/src/components/chip/Chip.vue +15 -15
  25. package/src/components/confirm-dialog/ConfirmDialog.vue +50 -50
  26. package/src/components/confirm-dialog/confirm-dialog-state.ts +131 -131
  27. package/src/components/content/BlogList.vue +30 -30
  28. package/src/components/content/BlogTable.vue +36 -36
  29. package/src/components/content/CodeBlock.vue +136 -136
  30. package/src/components/content/Flow.vue +60 -60
  31. package/src/components/content/ProseHr.vue +15 -15
  32. package/src/components/content/ProsePre.vue +12 -12
  33. package/src/components/content/Terminal.vue +59 -59
  34. package/src/components/cookie-consent/CookieConsent.vue +36 -36
  35. package/src/components/cookie-consent/useCookieConsent.ts +37 -37
  36. package/src/components/dashboard-shell/DashboardShell.vue +171 -171
  37. package/src/components/data-list/DataList.vue +6 -6
  38. package/src/components/data-list/DataListItem.vue +4 -4
  39. package/src/components/data-list/DataListLabel.vue +4 -4
  40. package/src/components/data-list/DataListText.vue +4 -4
  41. package/src/components/data-list/DataListValue.vue +4 -4
  42. package/src/components/empty-state-card/EmptyStateCard.vue +40 -40
  43. package/src/components/error-page/ErrorPage.vue +72 -72
  44. package/src/components/info-card/InfoCard.vue +31 -31
  45. package/src/components/landing/landing-content/LandingContent.vue +4 -4
  46. package/src/components/landing/landing-footer/LandingFooter.vue +128 -128
  47. package/src/components/landing/landing-navbar/LandingNavbar.vue +50 -50
  48. package/src/components/landing/landing-shell/LandingShell.vue +36 -36
  49. package/src/components/language-flag/LanguageFlag.vue +25 -25
  50. package/src/components/language-flag/flags/ChineseFlag.vue +8 -8
  51. package/src/components/language-flag/flags/EnglishFlag.vue +7 -7
  52. package/src/components/language-flag/flags/FrenchFlag.vue +5 -5
  53. package/src/components/language-flag/flags/GermanFlag.vue +5 -5
  54. package/src/components/language-flag/flags/ItalianFlag.vue +7 -7
  55. package/src/components/language-flag/flags/JapaneseFlag.vue +4 -4
  56. package/src/components/language-flag/flags/PortugueseFlag.vue +57 -57
  57. package/src/components/language-flag/flags/RussianFlag.vue +5 -5
  58. package/src/components/language-flag/flags/SpanishFlag.vue +4 -4
  59. package/src/components/language-selector/LanguageSelector.vue +76 -76
  60. package/src/components/load-more-button/LoadMoreButton.vue +17 -17
  61. package/src/components/loading-state-card/LoadingStateCard.vue +28 -28
  62. package/src/components/message-dialog/MessageDialog.vue +59 -59
  63. package/src/components/message-dialog/message-dialog-state.ts +105 -105
  64. package/src/components/message-toast/MessageToast.vue +149 -149
  65. package/src/components/message-toast/message-toast-state.ts +146 -146
  66. package/src/components/page-header/PageHeader.vue +34 -34
  67. package/src/components/progress-component/ProgressComponent.vue +33 -33
  68. package/src/components/single-value-card/SingleValueCard.vue +57 -57
  69. package/src/components/slider-form-component/SliderFormComponent.vue +36 -36
  70. package/src/components/stat-strip/StatStrip.vue +22 -22
  71. package/src/components/switch-form-component/SwitchFormComponent.vue +20 -20
  72. package/src/components/text-link/TextLink.vue +14 -14
  73. package/src/components/theme-selector/ThemeSelector.vue +61 -61
  74. package/src/components/theme-selector/theme-transition.ts +63 -63
  75. package/src/components/ui/accordion/Accordion.vue +38 -38
  76. package/src/components/ui/alert/Alert.vue +5 -5
  77. package/src/components/ui/alert/AlertDescription.vue +4 -4
  78. package/src/components/ui/alert/AlertTitle.vue +4 -4
  79. package/src/components/ui/alert/index.ts +2 -2
  80. package/src/components/ui/alert-dialog/AlertDialog.vue +3 -3
  81. package/src/components/ui/alert-dialog/AlertDialogAction.vue +3 -3
  82. package/src/components/ui/alert-dialog/AlertDialogCancel.vue +3 -3
  83. package/src/components/ui/alert-dialog/AlertDialogContent.vue +7 -7
  84. package/src/components/ui/alert-dialog/AlertDialogDescription.vue +3 -3
  85. package/src/components/ui/alert-dialog/AlertDialogFooter.vue +4 -4
  86. package/src/components/ui/alert-dialog/AlertDialogHeader.vue +4 -4
  87. package/src/components/ui/alert-dialog/AlertDialogTitle.vue +3 -3
  88. package/src/components/ui/alert-dialog/AlertDialogTrigger.vue +3 -3
  89. package/src/components/ui/animated-number/AnimatedNumber.vue +49 -48
  90. package/src/components/ui/avatar/Avatar.vue +28 -28
  91. package/src/components/ui/avatar/AvatarFallback.vue +6 -6
  92. package/src/components/ui/avatar/AvatarGroup.vue +40 -40
  93. package/src/components/ui/avatar/AvatarImage.vue +3 -3
  94. package/src/components/ui/avatar/index.ts +17 -17
  95. package/src/components/ui/badge/Badge.vue +20 -20
  96. package/src/components/ui/breadcrumb/Breadcrumb.vue +4 -4
  97. package/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue +9 -9
  98. package/src/components/ui/breadcrumb/BreadcrumbItem.vue +4 -4
  99. package/src/components/ui/breadcrumb/BreadcrumbLink.vue +4 -4
  100. package/src/components/ui/breadcrumb/BreadcrumbList.vue +4 -4
  101. package/src/components/ui/breadcrumb/BreadcrumbPage.vue +4 -4
  102. package/src/components/ui/breadcrumb/BreadcrumbSeparator.vue +4 -4
  103. package/src/components/ui/busy/Busy.vue +33 -33
  104. package/src/components/ui/button/Button.vue +23 -23
  105. package/src/components/ui/button/index.ts +56 -56
  106. package/src/components/ui/calendar/Calendar.vue +138 -138
  107. package/src/components/ui/calendar/CalendarCell.vue +7 -7
  108. package/src/components/ui/calendar/CalendarCellTrigger.vue +18 -18
  109. package/src/components/ui/calendar/CalendarGrid.vue +3 -3
  110. package/src/components/ui/calendar/CalendarGridBody.vue +3 -3
  111. package/src/components/ui/calendar/CalendarGridHead.vue +3 -3
  112. package/src/components/ui/calendar/CalendarGridRow.vue +3 -3
  113. package/src/components/ui/calendar/CalendarHeadCell.vue +7 -7
  114. package/src/components/ui/calendar/CalendarHeader.vue +7 -7
  115. package/src/components/ui/calendar/CalendarHeading.vue +6 -6
  116. package/src/components/ui/calendar/CalendarNextButton.vue +15 -15
  117. package/src/components/ui/calendar/CalendarPrevButton.vue +15 -15
  118. package/src/components/ui/calendar/index.ts +4 -4
  119. package/src/components/ui/card/Card.vue +20 -20
  120. package/src/components/ui/card/CardAction.vue +8 -8
  121. package/src/components/ui/card/CardContent.vue +4 -4
  122. package/src/components/ui/card/CardDescription.vue +12 -12
  123. package/src/components/ui/card/CardFooter.vue +4 -4
  124. package/src/components/ui/card/CardHeader.vue +8 -8
  125. package/src/components/ui/card/CardText.vue +8 -8
  126. package/src/components/ui/card/CardTitle.vue +8 -8
  127. package/src/components/ui/checkbox/Checkbox.vue +27 -27
  128. package/src/components/ui/collapsible/Collapsible.vue +3 -3
  129. package/src/components/ui/collapsible/CollapsibleContent.vue +3 -3
  130. package/src/components/ui/collapsible/CollapsibleTrigger.vue +3 -3
  131. package/src/components/ui/combobox/Combobox.vue +4 -4
  132. package/src/components/ui/combobox/ComboboxAnchor.vue +16 -16
  133. package/src/components/ui/combobox/ComboboxEmpty.vue +3 -3
  134. package/src/components/ui/combobox/ComboboxGroup.vue +9 -9
  135. package/src/components/ui/combobox/ComboboxInput.vue +6 -6
  136. package/src/components/ui/combobox/ComboboxItem.vue +17 -17
  137. package/src/components/ui/combobox/ComboboxList.vue +19 -19
  138. package/src/components/ui/combobox/ComboboxSelect.vue +77 -77
  139. package/src/components/ui/combobox/ComboboxSeparator.vue +1 -1
  140. package/src/components/ui/combobox/ComboboxTrigger.vue +10 -10
  141. package/src/components/ui/combobox/types.ts +5 -5
  142. package/src/components/ui/command/Command.vue +48 -48
  143. package/src/components/ui/command/CommandDialog.vue +14 -14
  144. package/src/components/ui/command/CommandEmpty.vue +4 -4
  145. package/src/components/ui/command/CommandGroup.vue +23 -23
  146. package/src/components/ui/command/CommandInput.vue +9 -9
  147. package/src/components/ui/command/CommandItem.vue +40 -40
  148. package/src/components/ui/command/CommandList.vue +9 -9
  149. package/src/components/ui/command/CommandSeparator.vue +3 -3
  150. package/src/components/ui/command/CommandShortcut.vue +8 -8
  151. package/src/components/ui/command/index.ts +11 -11
  152. package/src/components/ui/data-table/DataTable.vue +145 -145
  153. package/src/components/ui/data-table/index.ts +11 -11
  154. package/src/components/ui/date-picker/DatePicker.vue +31 -31
  155. package/src/components/ui/date-time-picker/DateTimePicker.vue +97 -97
  156. package/src/components/ui/dialog/Dialog.vue +3 -3
  157. package/src/components/ui/dialog/DialogClose.vue +3 -3
  158. package/src/components/ui/dialog/DialogContent.vue +21 -21
  159. package/src/components/ui/dialog/DialogDescription.vue +7 -7
  160. package/src/components/ui/dialog/DialogFooter.vue +8 -8
  161. package/src/components/ui/dialog/DialogHeader.vue +4 -4
  162. package/src/components/ui/dialog/DialogOverlay.vue +7 -7
  163. package/src/components/ui/dialog/DialogScrollContent.vue +32 -32
  164. package/src/components/ui/dialog/DialogTitle.vue +3 -3
  165. package/src/components/ui/dialog/DialogTrigger.vue +3 -3
  166. package/src/components/ui/dropdown-menu/DropdownMenu.vue +3 -3
  167. package/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +11 -11
  168. package/src/components/ui/dropdown-menu/DropdownMenuContent.vue +15 -15
  169. package/src/components/ui/dropdown-menu/DropdownMenuGroup.vue +3 -3
  170. package/src/components/ui/dropdown-menu/DropdownMenuItem.vue +12 -12
  171. package/src/components/ui/dropdown-menu/DropdownMenuLabel.vue +9 -9
  172. package/src/components/ui/dropdown-menu/DropdownMenuPortal.vue +3 -3
  173. package/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +3 -3
  174. package/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +11 -11
  175. package/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue +1 -1
  176. package/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue +4 -4
  177. package/src/components/ui/dropdown-menu/DropdownMenuSub.vue +3 -3
  178. package/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue +15 -15
  179. package/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +15 -15
  180. package/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue +3 -3
  181. package/src/components/ui/dropdown-menu/classes.ts +16 -16
  182. package/src/components/ui/field/Field.vue +5 -5
  183. package/src/components/ui/field/FieldContent.vue +8 -8
  184. package/src/components/ui/field/FieldDescription.vue +10 -10
  185. package/src/components/ui/field/FieldError.vue +39 -39
  186. package/src/components/ui/field/FieldGroup.vue +8 -8
  187. package/src/components/ui/field/FieldLabel.vue +10 -10
  188. package/src/components/ui/field/FieldLegend.vue +11 -11
  189. package/src/components/ui/field/FieldSeparator.vue +11 -11
  190. package/src/components/ui/field/FieldSet.vue +9 -9
  191. package/src/components/ui/field/FieldTitle.vue +8 -8
  192. package/src/components/ui/field/field-context.ts +36 -36
  193. package/src/components/ui/field/index.ts +22 -22
  194. package/src/components/ui/file-dropzone/FileDropzone.vue +144 -144
  195. package/src/components/ui/file-dropzone/index.ts +19 -19
  196. package/src/components/ui/hover-card/HoverCard.vue +5 -5
  197. package/src/components/ui/hover-card/HoverCardContent.vue +13 -13
  198. package/src/components/ui/hover-card/HoverCardTrigger.vue +3 -3
  199. package/src/components/ui/input/Input.vue +13 -13
  200. package/src/components/ui/kbd/Kbd.vue +10 -10
  201. package/src/components/ui/kbd/KbdGroup.vue +49 -49
  202. package/src/components/ui/label/Label.vue +7 -7
  203. package/src/components/ui/native-select/NativeSelect.vue +16 -16
  204. package/src/components/ui/native-select/NativeSelectOptGroup.vue +3 -3
  205. package/src/components/ui/native-select/NativeSelectOption.vue +3 -3
  206. package/src/components/ui/number-field/NumberField.vue +88 -88
  207. package/src/components/ui/pagination/Pagination.vue +4 -4
  208. package/src/components/ui/pagination/PaginationContent.vue +4 -4
  209. package/src/components/ui/pagination/PaginationEllipsis.vue +9 -9
  210. package/src/components/ui/pagination/PaginationFirst.vue +8 -8
  211. package/src/components/ui/pagination/PaginationItem.vue +14 -14
  212. package/src/components/ui/pagination/PaginationLast.vue +8 -8
  213. package/src/components/ui/pagination/PaginationNext.vue +8 -8
  214. package/src/components/ui/pagination/PaginationPrevious.vue +8 -8
  215. package/src/components/ui/pagination/SimplePagination.vue +25 -25
  216. package/src/components/ui/pin-input/PinInput.vue +20 -20
  217. package/src/components/ui/pin-input/PinInputInput.vue +17 -17
  218. package/src/components/ui/pin-input/context.ts +1 -1
  219. package/src/components/ui/popover/Popover.vue +3 -3
  220. package/src/components/ui/popover/PopoverAnchor.vue +3 -3
  221. package/src/components/ui/popover/PopoverContent.vue +12 -12
  222. package/src/components/ui/popover/PopoverTrigger.vue +3 -3
  223. package/src/components/ui/progress/Progress.vue +16 -16
  224. package/src/components/ui/radio-group/RadioGroup.vue +7 -7
  225. package/src/components/ui/radio-group/RadioGroupCard.vue +39 -39
  226. package/src/components/ui/radio-group/RadioGroupItem.vue +20 -20
  227. package/src/components/ui/scroll-area/ScrollArea.vue +14 -14
  228. package/src/components/ui/scroll-area/ScrollBar.vue +12 -12
  229. package/src/components/ui/select/Select.vue +3 -3
  230. package/src/components/ui/select/SelectContent.vue +25 -25
  231. package/src/components/ui/select/SelectGroup.vue +3 -3
  232. package/src/components/ui/select/SelectItem.vue +24 -24
  233. package/src/components/ui/select/SelectItemContent.vue +32 -32
  234. package/src/components/ui/select/SelectItemText.vue +3 -3
  235. package/src/components/ui/select/SelectLabel.vue +3 -3
  236. package/src/components/ui/select/SelectScrollDownButton.vue +9 -9
  237. package/src/components/ui/select/SelectScrollUpButton.vue +9 -9
  238. package/src/components/ui/select/SelectSeparator.vue +2 -2
  239. package/src/components/ui/select/SelectTrigger.vue +14 -14
  240. package/src/components/ui/select/SelectValue.vue +3 -3
  241. package/src/components/ui/select/SelectValueContent.vue +39 -39
  242. package/src/components/ui/separator/Separator.vue +7 -7
  243. package/src/components/ui/sheet/Sheet.vue +3 -3
  244. package/src/components/ui/sheet/SheetClose.vue +3 -3
  245. package/src/components/ui/sheet/SheetContent.vue +22 -22
  246. package/src/components/ui/sheet/SheetDescription.vue +3 -3
  247. package/src/components/ui/sheet/SheetFooter.vue +3 -3
  248. package/src/components/ui/sheet/SheetHeader.vue +3 -3
  249. package/src/components/ui/sheet/SheetOverlay.vue +7 -7
  250. package/src/components/ui/sheet/SheetTitle.vue +3 -3
  251. package/src/components/ui/sheet/SheetTrigger.vue +3 -3
  252. package/src/components/ui/sidebar/Sidebar.vue +57 -57
  253. package/src/components/ui/sidebar/SidebarContent.vue +8 -8
  254. package/src/components/ui/sidebar/SidebarFooter.vue +8 -8
  255. package/src/components/ui/sidebar/SidebarGroup.vue +8 -8
  256. package/src/components/ui/sidebar/SidebarGroupAction.vue +9 -9
  257. package/src/components/ui/sidebar/SidebarGroupContent.vue +4 -4
  258. package/src/components/ui/sidebar/SidebarGroupLabel.vue +8 -8
  259. package/src/components/ui/sidebar/SidebarHeader.vue +8 -8
  260. package/src/components/ui/sidebar/SidebarInput.vue +8 -8
  261. package/src/components/ui/sidebar/SidebarInset.vue +9 -9
  262. package/src/components/ui/sidebar/SidebarMenu.vue +4 -4
  263. package/src/components/ui/sidebar/SidebarMenuAction.vue +18 -18
  264. package/src/components/ui/sidebar/SidebarMenuBadge.vue +14 -14
  265. package/src/components/ui/sidebar/SidebarMenuButton.vue +21 -21
  266. package/src/components/ui/sidebar/SidebarMenuButtonChild.vue +10 -10
  267. package/src/components/ui/sidebar/SidebarMenuItem.vue +4 -4
  268. package/src/components/ui/sidebar/SidebarMenuSkeleton.vue +10 -10
  269. package/src/components/ui/sidebar/SidebarMenuSub.vue +9 -9
  270. package/src/components/ui/sidebar/SidebarMenuSubButton.vue +17 -17
  271. package/src/components/ui/sidebar/SidebarMenuSubItem.vue +4 -4
  272. package/src/components/ui/sidebar/SidebarProvider.vue +46 -46
  273. package/src/components/ui/sidebar/SidebarRail.vue +13 -13
  274. package/src/components/ui/sidebar/SidebarSeparator.vue +4 -4
  275. package/src/components/ui/sidebar/SidebarTrigger.vue +5 -5
  276. package/src/components/ui/sidebar/index.ts +29 -29
  277. package/src/components/ui/sidebar/utils.ts +7 -7
  278. package/src/components/ui/skeleton/Skeleton.vue +6 -6
  279. package/src/components/ui/slider/Slider.vue +14 -14
  280. package/src/components/ui/spinner/Spinner.vue +21 -21
  281. package/src/components/ui/stepper/SimpleStepper.vue +26 -26
  282. package/src/components/ui/stepper/Stepper.vue +6 -6
  283. package/src/components/ui/stepper/StepperDescription.vue +5 -5
  284. package/src/components/ui/stepper/StepperIndicator.vue +17 -17
  285. package/src/components/ui/stepper/StepperItem.vue +4 -4
  286. package/src/components/ui/stepper/StepperSeparator.vue +7 -7
  287. package/src/components/ui/stepper/StepperTitle.vue +5 -5
  288. package/src/components/ui/stepper/StepperTrigger.vue +4 -4
  289. package/src/components/ui/stepper/index.ts +3 -3
  290. package/src/components/ui/switch/Switch.vue +15 -15
  291. package/src/components/ui/table/Table.vue +6 -6
  292. package/src/components/ui/table/TableBody.vue +4 -4
  293. package/src/components/ui/table/TableCaption.vue +4 -4
  294. package/src/components/ui/table/TableCell.vue +8 -8
  295. package/src/components/ui/table/TableEmpty.vue +14 -14
  296. package/src/components/ui/table/TableFooter.vue +8 -8
  297. package/src/components/ui/table/TableHead.vue +8 -8
  298. package/src/components/ui/table/TableHeader.vue +4 -4
  299. package/src/components/ui/table/TableRow.vue +8 -8
  300. package/src/components/ui/tabs/Tabs.vue +4 -4
  301. package/src/components/ui/tabs/TabsContent.vue +4 -4
  302. package/src/components/ui/tabs/TabsList.vue +15 -15
  303. package/src/components/ui/tabs/TabsTrigger.vue +10 -10
  304. package/src/components/ui/tags-input/TagsInput.vue +17 -17
  305. package/src/components/ui/tags-input/TagsInputInput.vue +6 -6
  306. package/src/components/ui/tags-input/TagsInputItem.vue +15 -15
  307. package/src/components/ui/tags-input/TagsInputItemDelete.vue +12 -12
  308. package/src/components/ui/tags-input/TagsInputItemText.vue +4 -4
  309. package/src/components/ui/textarea/Textarea.vue +12 -12
  310. package/src/components/ui/time-picker/TimePicker.vue +25 -25
  311. package/src/components/ui/toggle-group/Toggle.vue +10 -10
  312. package/src/components/ui/toggle-group/ToggleGroup.vue +38 -38
  313. package/src/components/ui/toggle-group/ToggleGroupItem.vue +9 -9
  314. package/src/components/ui/toggle-group/index.ts +46 -46
  315. package/src/components/ui/tooltip/Tooltip.vue +3 -3
  316. package/src/components/ui/tooltip/TooltipContent.vue +13 -13
  317. package/src/components/ui/tooltip/TooltipProvider.vue +4 -4
  318. package/src/components/ui/tooltip/TooltipTrigger.vue +3 -3
  319. package/src/i18n/de.json +185 -185
  320. package/src/i18n/en.json +185 -185
  321. package/src/i18n/es.json +185 -185
  322. package/src/i18n/fr.json +185 -185
  323. package/src/i18n/it.json +185 -185
  324. package/src/i18n/ja.json +185 -185
  325. package/src/i18n/pt.json +185 -185
  326. package/src/i18n/ru.json +185 -185
  327. package/src/i18n/zh.json +185 -185
  328. package/src/lib/color-tokens.ts +24 -24
  329. package/src/lib/i18n.ts +65 -65
  330. package/src/lib/utils.ts +33 -33
  331. package/src/nuxt-components.d.ts +2 -2
  332. package/src/runtime/ui-vintage-i18n-plugin.ts +49 -49
  333. package/src/shims-vue.d.ts +3 -3
  334. package/src/styles.css +377 -377
package/src/i18n/zh.json CHANGED
@@ -1,187 +1,187 @@
1
1
  {
2
- "uiVintage": {
3
- "common": {
4
- "breadcrumb": "面包屑导航",
5
- "more": "更多",
6
- "home": "首页",
7
- "empty": {
8
- "title": "这里还没有内容",
9
- "description": "当前没有可显示的内容。"
10
- },
11
- "loading": {
12
- "title": "加载中...",
13
- "description": "请稍候,正在加载内容。"
14
- },
15
- "logo": "{name} 标志"
16
- },
17
- "buttons": {
18
- "remove": "移除",
19
- "all": "全部",
20
- "close": "关闭",
21
- "cancel": "取消",
22
- "delete": "删除",
23
- "confirm": "确认",
24
- "filter": "筛选",
25
- "search": "搜索",
26
- "apply": "应用",
27
- "clear": "清除",
28
- "loading": "加载中",
29
- "loadMore": "加载更多",
30
- "save": "保存",
31
- "update": "更新",
32
- "goBack": "返回"
33
- },
34
- "theme": {
35
- "light": "浅色",
36
- "dark": "深色",
37
- "auto": "自动",
38
- "title": "选择主题",
39
- "ariaLabel": "主题选择器"
40
- },
41
- "language": {
42
- "title": "选择语言",
43
- "ariaLabel": "语言选择器"
44
- },
45
- "sidebar": {
46
- "title": "侧边栏",
47
- "description": "显示移动侧边栏。",
48
- "toggle": "切换侧边栏"
49
- },
50
- "commandDialog": {
51
- "title": "命令面板",
52
- "description": "搜索要运行的命令..."
53
- },
54
- "datePicker": {
55
- "placeholder": "选择日期",
56
- "month": "月份",
57
- "year": "年份",
58
- "time": "时间"
59
- },
60
- "terminal": {
61
- "title": "终端",
62
- "copy": "复制命令",
63
- "copied": "命令已复制"
64
- },
65
- "code": {
66
- "title": "代码",
67
- "copy": "复制代码",
68
- "copied": "代码已复制",
69
- "position": "第 {line} 行,第 {column} 列",
70
- "plainText": "纯文本"
71
- },
72
- "footer": {
73
- "madeWith": "用",
74
- "by": "由",
75
- "allRightsReserved": "版权所有。"
76
- },
77
- "blog": {
78
- "readingProgress": "阅读进度",
79
- "readMore": "阅读更多",
80
- "goToPost": "前往文章",
81
- "new": "最新",
82
- "tableOfContents": "目录",
83
- "tableOfContentsDescription": "跳转到本文的一个部分",
84
- "tableOfContentsSections": "{count} 个章节",
85
- "openTableOfContents": "打开目录",
86
- "closeTableOfContents": "关闭目录",
87
- "loadMoreWithNumbers": "加载更多 ({current}/{total})",
88
- "author": "作者",
89
- "publishedDate": "发布时间",
90
- "lastUpdatedDate": "更新时间",
91
- "readingTime": "阅读时间",
92
- "readingTimeValue": "{minutes} 分钟",
93
- "category": "分类",
94
- "breadcrumbBlog": "博客",
95
- "carouselNavigation": "轮播导航",
96
- "goToSlide": "转到第 {index} 张幻灯片",
97
- "previousSlide": "上一张幻灯片",
98
- "nextSlide": "下一张幻灯片",
99
- "faq": {
100
- "title": "常见问题",
101
- "description": "快速找到有关此主题的常见问题答案。"
102
- },
103
- "share": {
104
- "facebook": "分享到 Facebook",
105
- "x": "分享到 X",
106
- "whatsapp": "分享到 WhatsApp",
107
- "linkedin": "分享到 LinkedIn",
108
- "telegram": "分享到 Telegram",
109
- "copy": "复制链接",
110
- "copied": "链接已复制"
111
- }
112
- },
113
- "errorPage": {
114
- "notFound": {
115
- "title": "找不到页面",
116
- "message": "找不到您请求的页面,或者该页面可能已被移动。"
117
- },
118
- "unexpected": {
119
- "title": "出了点问题",
120
- "message": "发生意外错误,当前操作已中断。请重试或返回安全页面。"
121
- }
122
- },
123
- "messageDialog": {
124
- "confirm": "确认",
125
- "error": "错误",
126
- "success": "成功",
127
- "info": "信息",
128
- "warning": "警告"
129
- },
130
- "toast": {
131
- "region": "通知"
132
- },
133
- "cookieConsent": {
134
- "region": "Cookie 同意",
135
- "message": "我们使用可选的 Cookie 来了解网站的使用情况。只有在您同意后才会设置。",
136
- "policy": "Cookie 政策",
137
- "accept": "接受",
138
- "decline": "拒绝"
139
- },
140
- "dataTable": {
141
- "selectAll": "全选所有行",
142
- "selectRow": "选择行"
143
- },
144
- "numberField": {
145
- "decrement": "减少",
146
- "increment": "增加"
147
- },
148
- "tagsInput": {
149
- "placeholder": "添加标签…"
150
- },
151
- "combobox": {
152
- "placeholder": "请选择一个选项",
153
- "searchPlaceholder": "搜索...",
154
- "empty": "未找到结果。"
155
- },
156
- "avatar": {
157
- "status": {
158
- "online": "在线",
159
- "offline": "离线",
160
- "busy": "忙碌",
161
- "away": "离开"
162
- }
163
- },
164
- "pagination": {
165
- "label": "分页",
166
- "page": "第 {page} 页",
167
- "first": "第一页",
168
- "previous": "上一页",
169
- "next": "下一页",
170
- "last": "最后一页",
171
- "more": "更多页面"
172
- },
173
- "stepper": {
174
- "label": "进度"
175
- },
176
- "fileDropzone": {
177
- "title": "将文件拖放到此处",
178
- "description": "或点击浏览您的设备",
179
- "dropActive": "松开即可上传",
180
- "browse": "浏览文件",
181
- "remove": "移除 {name}",
182
- "maxSize": "每个文件最大 {size}",
183
- "maxFiles": "最多 {count} 个文件",
184
- "files": "已选文件"
185
- }
186
- }
2
+ "uiVintage": {
3
+ "common": {
4
+ "breadcrumb": "面包屑导航",
5
+ "more": "更多",
6
+ "home": "首页",
7
+ "empty": {
8
+ "title": "这里还没有内容",
9
+ "description": "当前没有可显示的内容。"
10
+ },
11
+ "loading": {
12
+ "title": "加载中...",
13
+ "description": "请稍候,正在加载内容。"
14
+ },
15
+ "logo": "{name} 标志"
16
+ },
17
+ "buttons": {
18
+ "remove": "移除",
19
+ "all": "全部",
20
+ "close": "关闭",
21
+ "cancel": "取消",
22
+ "delete": "删除",
23
+ "confirm": "确认",
24
+ "filter": "筛选",
25
+ "search": "搜索",
26
+ "apply": "应用",
27
+ "clear": "清除",
28
+ "loading": "加载中",
29
+ "loadMore": "加载更多",
30
+ "save": "保存",
31
+ "update": "更新",
32
+ "goBack": "返回"
33
+ },
34
+ "theme": {
35
+ "light": "浅色",
36
+ "dark": "深色",
37
+ "auto": "自动",
38
+ "title": "选择主题",
39
+ "ariaLabel": "主题选择器"
40
+ },
41
+ "language": {
42
+ "title": "选择语言",
43
+ "ariaLabel": "语言选择器"
44
+ },
45
+ "sidebar": {
46
+ "title": "侧边栏",
47
+ "description": "显示移动侧边栏。",
48
+ "toggle": "切换侧边栏"
49
+ },
50
+ "commandDialog": {
51
+ "title": "命令面板",
52
+ "description": "搜索要运行的命令..."
53
+ },
54
+ "datePicker": {
55
+ "placeholder": "选择日期",
56
+ "month": "月份",
57
+ "year": "年份",
58
+ "time": "时间"
59
+ },
60
+ "terminal": {
61
+ "title": "终端",
62
+ "copy": "复制命令",
63
+ "copied": "命令已复制"
64
+ },
65
+ "code": {
66
+ "title": "代码",
67
+ "copy": "复制代码",
68
+ "copied": "代码已复制",
69
+ "position": "第 {line} 行,第 {column} 列",
70
+ "plainText": "纯文本"
71
+ },
72
+ "footer": {
73
+ "madeWith": "用",
74
+ "by": "由",
75
+ "allRightsReserved": "版权所有。"
76
+ },
77
+ "blog": {
78
+ "readingProgress": "阅读进度",
79
+ "readMore": "阅读更多",
80
+ "goToPost": "前往文章",
81
+ "new": "最新",
82
+ "tableOfContents": "目录",
83
+ "tableOfContentsDescription": "跳转到本文的一个部分",
84
+ "tableOfContentsSections": "{count} 个章节",
85
+ "openTableOfContents": "打开目录",
86
+ "closeTableOfContents": "关闭目录",
87
+ "loadMoreWithNumbers": "加载更多 ({current}/{total})",
88
+ "author": "作者",
89
+ "publishedDate": "发布时间",
90
+ "lastUpdatedDate": "更新时间",
91
+ "readingTime": "阅读时间",
92
+ "readingTimeValue": "{minutes} 分钟",
93
+ "category": "分类",
94
+ "breadcrumbBlog": "博客",
95
+ "carouselNavigation": "轮播导航",
96
+ "goToSlide": "转到第 {index} 张幻灯片",
97
+ "previousSlide": "上一张幻灯片",
98
+ "nextSlide": "下一张幻灯片",
99
+ "faq": {
100
+ "title": "常见问题",
101
+ "description": "快速找到有关此主题的常见问题答案。"
102
+ },
103
+ "share": {
104
+ "facebook": "分享到 Facebook",
105
+ "x": "分享到 X",
106
+ "whatsapp": "分享到 WhatsApp",
107
+ "linkedin": "分享到 LinkedIn",
108
+ "telegram": "分享到 Telegram",
109
+ "copy": "复制链接",
110
+ "copied": "链接已复制"
111
+ }
112
+ },
113
+ "errorPage": {
114
+ "notFound": {
115
+ "title": "找不到页面",
116
+ "message": "找不到您请求的页面,或者该页面可能已被移动。"
117
+ },
118
+ "unexpected": {
119
+ "title": "出了点问题",
120
+ "message": "发生意外错误,当前操作已中断。请重试或返回安全页面。"
121
+ }
122
+ },
123
+ "messageDialog": {
124
+ "confirm": "确认",
125
+ "error": "错误",
126
+ "success": "成功",
127
+ "info": "信息",
128
+ "warning": "警告"
129
+ },
130
+ "toast": {
131
+ "region": "通知"
132
+ },
133
+ "cookieConsent": {
134
+ "region": "Cookie 同意",
135
+ "message": "我们使用可选的 Cookie 来了解网站的使用情况。只有在您同意后才会设置。",
136
+ "policy": "Cookie 政策",
137
+ "accept": "接受",
138
+ "decline": "拒绝"
139
+ },
140
+ "dataTable": {
141
+ "selectAll": "全选所有行",
142
+ "selectRow": "选择行"
143
+ },
144
+ "numberField": {
145
+ "decrement": "减少",
146
+ "increment": "增加"
147
+ },
148
+ "tagsInput": {
149
+ "placeholder": "添加标签…"
150
+ },
151
+ "combobox": {
152
+ "placeholder": "请选择一个选项",
153
+ "searchPlaceholder": "搜索...",
154
+ "empty": "未找到结果。"
155
+ },
156
+ "avatar": {
157
+ "status": {
158
+ "online": "在线",
159
+ "offline": "离线",
160
+ "busy": "忙碌",
161
+ "away": "离开"
162
+ }
163
+ },
164
+ "pagination": {
165
+ "label": "分页",
166
+ "page": "第 {page} 页",
167
+ "first": "第一页",
168
+ "previous": "上一页",
169
+ "next": "下一页",
170
+ "last": "最后一页",
171
+ "more": "更多页面"
172
+ },
173
+ "stepper": {
174
+ "label": "进度"
175
+ },
176
+ "fileDropzone": {
177
+ "title": "将文件拖放到此处",
178
+ "description": "或点击浏览您的设备",
179
+ "dropActive": "松开即可上传",
180
+ "browse": "浏览文件",
181
+ "remove": "移除 {name}",
182
+ "maxSize": "每个文件最大 {size}",
183
+ "maxFiles": "最多 {count} 个文件",
184
+ "files": "已选文件"
185
+ }
186
+ }
187
187
  }
@@ -3,49 +3,49 @@ export type ButtonVariantName = "primary" | "secondary" | "ghost" | "link" | Ton
3
3
 
4
4
  // Return the list of classes for a given tone color
5
5
  const surfaceToneClasses: Record<ToneColor, string> = {
6
- gray: "border border-border bg-surface text-foreground",
7
- green: "border border-green-200 bg-green-50 text-green-700 dark:border-green-800/50 dark:bg-green-900/10 dark:text-green-400",
8
- red: "border border-red-200 bg-red-50 text-red-700 dark:border-red-800/50 dark:bg-red-900/10 dark:text-red-400",
9
- blue: "border border-blue-200 bg-blue-50 text-blue-700 dark:border-blue-800/50 dark:bg-blue-900/10 dark:text-blue-400",
10
- yellow: "border border-yellow-200 bg-yellow-50 text-yellow-700 dark:border-yellow-800/50 dark:bg-yellow-900/10 dark:text-yellow-400"
6
+ gray: "border border-border bg-surface text-foreground",
7
+ green: "border border-green-200 bg-green-50 text-green-700 dark:border-green-800/50 dark:bg-green-900/10 dark:text-green-400",
8
+ red: "border border-red-200 bg-red-50 text-red-700 dark:border-red-800/50 dark:bg-red-900/10 dark:text-red-400",
9
+ blue: "border border-blue-200 bg-blue-50 text-blue-700 dark:border-blue-800/50 dark:bg-blue-900/10 dark:text-blue-400",
10
+ yellow: "border border-yellow-200 bg-yellow-50 text-yellow-700 dark:border-yellow-800/50 dark:bg-yellow-900/10 dark:text-yellow-400"
11
11
  }
12
12
 
13
13
  // Get the appropriate classes for a given tone color
14
14
  export const getSurfaceToneClasses = (color: ToneColor) => {
15
- return surfaceToneClasses[color];
15
+ return surfaceToneClasses[color];
16
16
  }
17
17
 
18
18
  // Return the list of classes for interactive surfaces
19
19
  const interactiveSurfaceToneClasses: Record<ToneColor, string> = {
20
- gray: `${surfaceToneClasses.gray} hover:border-border-strong hover:bg-accent`,
21
- green: `${surfaceToneClasses.green} hover:border-green-300 hover:bg-green-100 dark:hover:border-green-700/60 dark:hover:bg-green-900/20`,
22
- red: `${surfaceToneClasses.red} hover:border-red-300 hover:bg-red-100 dark:hover:border-red-700/60 dark:hover:bg-red-900/20`,
23
- blue: `${surfaceToneClasses.blue} hover:border-blue-300 hover:bg-blue-100 dark:hover:border-blue-700/60 dark:hover:bg-blue-900/20`,
24
- yellow: `${surfaceToneClasses.yellow} hover:border-yellow-300 hover:bg-yellow-100 dark:hover:border-yellow-700/60 dark:hover:bg-yellow-900/20`
20
+ gray: `${surfaceToneClasses.gray} hover:border-border-strong hover:bg-accent`,
21
+ green: `${surfaceToneClasses.green} hover:border-green-300 hover:bg-green-100 dark:hover:border-green-700/60 dark:hover:bg-green-900/20`,
22
+ red: `${surfaceToneClasses.red} hover:border-red-300 hover:bg-red-100 dark:hover:border-red-700/60 dark:hover:bg-red-900/20`,
23
+ blue: `${surfaceToneClasses.blue} hover:border-blue-300 hover:bg-blue-100 dark:hover:border-blue-700/60 dark:hover:bg-blue-900/20`,
24
+ yellow: `${surfaceToneClasses.yellow} hover:border-yellow-300 hover:bg-yellow-100 dark:hover:border-yellow-700/60 dark:hover:bg-yellow-900/20`
25
25
  }
26
26
 
27
27
  // Get the appropriate classes for interactive surfaces based on tone color
28
28
  export const getInteractiveSurfaceToneClasses = (color: ToneColor) => {
29
- return interactiveSurfaceToneClasses[color];
29
+ return interactiveSurfaceToneClasses[color];
30
30
  }
31
31
 
32
32
  // Return the list of classes for button variants
33
33
  export const buttonVariantClasses: Record<ButtonVariantName, string> = {
34
- // Custom button variants
35
- primary: "bg-primary text-primary-foreground shadow-elevated-sm hover:bg-primary-hover before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:-translate-x-full before:bg-[linear-gradient(105deg,transparent_35%,rgb(255_255_255/0.38)_50%,transparent_65%)] before:transition-[translate] before:duration-700 before:ease-out-expo hover:before:translate-x-full motion-reduce:before:hidden",
36
- secondary: "border border-border bg-secondary text-foreground shadow-elevated-sm hover:border-border-strong hover:bg-accent",
37
- ghost: "text-muted-foreground hover:bg-accent hover:text-foreground",
38
- link: "text-primary underline-offset-4 decoration-2 hover:underline enabled:active:scale-100",
34
+ // Custom button variants
35
+ primary: "bg-primary text-primary-foreground shadow-elevated-sm hover:bg-primary-hover before:pointer-events-none before:absolute before:inset-0 before:-z-10 before:-translate-x-full before:bg-[linear-gradient(105deg,transparent_35%,rgb(255_255_255/0.38)_50%,transparent_65%)] before:transition-[translate] before:duration-700 before:ease-out-expo hover:before:translate-x-full motion-reduce:before:hidden",
36
+ secondary: "border border-border bg-secondary text-foreground shadow-elevated-sm hover:border-border-strong hover:bg-accent",
37
+ ghost: "text-muted-foreground hover:bg-accent hover:text-foreground",
38
+ link: "text-primary underline-offset-4 decoration-2 hover:underline enabled:active:scale-100",
39
39
 
40
- // Tone-based button variants
41
- gray: getInteractiveSurfaceToneClasses("gray"),
42
- green: getInteractiveSurfaceToneClasses("green"),
43
- red: getInteractiveSurfaceToneClasses("red"),
44
- blue: getInteractiveSurfaceToneClasses("blue"),
45
- yellow: getInteractiveSurfaceToneClasses("yellow")
40
+ // Tone-based button variants
41
+ gray: getInteractiveSurfaceToneClasses("gray"),
42
+ green: getInteractiveSurfaceToneClasses("green"),
43
+ red: getInteractiveSurfaceToneClasses("red"),
44
+ blue: getInteractiveSurfaceToneClasses("blue"),
45
+ yellow: getInteractiveSurfaceToneClasses("yellow")
46
46
  }
47
47
 
48
48
  // Get the appropriate classes for a given button variant
49
49
  export const getButtonVariantClasses = (variant: ButtonVariantName) => {
50
- return buttonVariantClasses[variant];
50
+ return buttonVariantClasses[variant];
51
51
  }
package/src/lib/i18n.ts CHANGED
@@ -11,15 +11,15 @@ import ru from '../i18n/ru.json';
11
11
 
12
12
  // The list of translation files
13
13
  export const uiVintageMessages = {
14
- en,
15
- it,
16
- fr,
17
- es,
18
- de,
19
- pt,
20
- zh,
21
- ja,
22
- ru
14
+ en,
15
+ it,
16
+ fr,
17
+ es,
18
+ de,
19
+ pt,
20
+ zh,
21
+ ja,
22
+ ru
23
23
  } as const;
24
24
 
25
25
  // The type of the available locales based on the keys of the messages object
@@ -30,79 +30,79 @@ let runtimeLocaleSource: (() => string | undefined) | null = null;
30
30
 
31
31
  // Let the app tell the imperatively mounted components which locale it uses
32
32
  export const setUiVintageRuntimeLocaleSource = (source: (() => string | undefined) | null) => {
33
- runtimeLocaleSource = source;
33
+ runtimeLocaleSource = source;
34
34
  };
35
35
 
36
36
  // Resolve the current runtime locale from the app, the document or the navigator
37
37
  const getUiVintageRuntimeLocale = (): UiVintageLocale => {
38
- let browserLocale = 'en';
38
+ let browserLocale = 'en';
39
39
 
40
- // Prefer the app locale, then try to detect the user's locale from the document or navigator
41
- const appLocale = runtimeLocaleSource?.();
42
- if (appLocale) {
43
- browserLocale = appLocale.toLowerCase();
44
- } else if (typeof document !== 'undefined' && document.documentElement?.lang) {
45
- browserLocale = document.documentElement.lang?.toLowerCase();
46
- } else if (typeof navigator !== 'undefined' && navigator.language) {
47
- browserLocale = navigator.language?.toLowerCase();
48
- }
40
+ // Prefer the app locale, then try to detect the user's locale from the document or navigator
41
+ const appLocale = runtimeLocaleSource?.();
42
+ if (appLocale) {
43
+ browserLocale = appLocale.toLowerCase();
44
+ } else if (typeof document !== 'undefined' && document.documentElement?.lang) {
45
+ browserLocale = document.documentElement.lang?.toLowerCase();
46
+ } else if (typeof navigator !== 'undefined' && navigator.language) {
47
+ browserLocale = navigator.language?.toLowerCase();
48
+ }
49
49
 
50
- // Default to English if the detected locale is not supported, otherwise use it
51
- if (browserLocale.startsWith('it')) {
52
- return 'it';
53
- } else if (browserLocale.startsWith('fr')) {
54
- return 'fr';
55
- } else if (browserLocale.startsWith('es')) {
56
- return 'es';
57
- } else if (browserLocale.startsWith('de')) {
58
- return 'de';
59
- } else if (browserLocale.startsWith('pt')) {
60
- return 'pt';
61
- } else if (browserLocale.startsWith('zh')) {
62
- return 'zh';
63
- } else if (browserLocale.startsWith('ja')) {
64
- return 'ja';
65
- } else if (browserLocale.startsWith('ru')) {
66
- return 'ru';
67
- }
50
+ // Default to English if the detected locale is not supported, otherwise use it
51
+ if (browserLocale.startsWith('it')) {
52
+ return 'it';
53
+ } else if (browserLocale.startsWith('fr')) {
54
+ return 'fr';
55
+ } else if (browserLocale.startsWith('es')) {
56
+ return 'es';
57
+ } else if (browserLocale.startsWith('de')) {
58
+ return 'de';
59
+ } else if (browserLocale.startsWith('pt')) {
60
+ return 'pt';
61
+ } else if (browserLocale.startsWith('zh')) {
62
+ return 'zh';
63
+ } else if (browserLocale.startsWith('ja')) {
64
+ return 'ja';
65
+ } else if (browserLocale.startsWith('ru')) {
66
+ return 'ru';
67
+ }
68
68
 
69
- // Fallback to English for unsupported or undetectable locales
70
- return 'en';
69
+ // Fallback to English for unsupported or undetectable locales
70
+ return 'en';
71
71
  };
72
72
 
73
73
  // Read a message from the bundled library locales with a safe fallback
74
74
  export const getUiVintageRuntimeMessage = (path: string, fallback: string) => {
75
- const localeMessages = uiVintageMessages[getUiVintageRuntimeLocale()];
76
- const segments = path.split('.');
77
- let currentValue: unknown = localeMessages;
75
+ const localeMessages = uiVintageMessages[getUiVintageRuntimeLocale()];
76
+ const segments = path.split('.');
77
+ let currentValue: unknown = localeMessages;
78
78
 
79
- // Traverse the nested message object based on the path segments
80
- for (const segment of segments) {
81
- // If the current value is not an object or doesn't contain the segment, return the fallback
82
- if (!currentValue || typeof currentValue !== 'object' || !(segment in currentValue)) {
83
- return fallback;
84
- }
79
+ // Traverse the nested message object based on the path segments
80
+ for (const segment of segments) {
81
+ // If the current value is not an object or doesn't contain the segment, return the fallback
82
+ if (!currentValue || typeof currentValue !== 'object' || !(segment in currentValue)) {
83
+ return fallback;
84
+ }
85
85
 
86
- // Move deeper into the nested structure
87
- currentValue = (currentValue as Record<string, unknown>)[segment];
88
- }
86
+ // Move deeper into the nested structure
87
+ currentValue = (currentValue as Record<string, unknown>)[segment];
88
+ }
89
89
 
90
- // If the final value is a string, return it; otherwise, return the fallback
91
- return typeof currentValue === 'string' ? currentValue : fallback;
90
+ // If the final value is a string, return it; otherwise, return the fallback
91
+ return typeof currentValue === 'string' ? currentValue : fallback;
92
92
  };
93
93
 
94
94
  // Translate library messages inside components: use the app's vue-i18n when available (same locale on server and client),
95
95
  // and fall back to the bundled messages in trees mounted outside the app (toasts, dialogs, busy indicator)
96
96
  export const useUiVintageMessage = () => {
97
- let translate: ((key: string) => string) | null = null;
98
- try {
99
- translate = useI18n({ useScope: 'global' }).t;
100
- } catch {
101
- translate = null;
102
- }
97
+ let translate: ((key: string) => string) | null = null;
98
+ try {
99
+ translate = useI18n({ useScope: 'global' }).t;
100
+ } catch {
101
+ translate = null;
102
+ }
103
103
 
104
- return (path: string, fallback: string) => {
105
- const message = translate?.(path);
106
- return message && message !== path ? message : getUiVintageRuntimeMessage(path, fallback);
107
- };
108
- };
104
+ return (path: string, fallback: string) => {
105
+ const message = translate?.(path);
106
+ return message && message !== path ? message : getUiVintageRuntimeMessage(path, fallback);
107
+ };
108
+ };