@brumaombra/ui-vintage 0.9.1 → 0.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/COMPONENTS.md +102 -2
  2. package/module.mjs +43 -43
  3. package/package.json +175 -175
  4. package/src/components/background-grid/BackgroundGrid.vue +4 -4
  5. package/src/components/blog/AllPostsSection.vue +33 -33
  6. package/src/components/blog/BlogCategoriesPage.vue +46 -0
  7. package/src/components/blog/BlogContentRenderer.vue +111 -111
  8. package/src/components/blog/BlogFAQSection.vue +19 -19
  9. package/src/components/blog/BlogHeaderSection.vue +80 -80
  10. package/src/components/blog/BlogIndexPage.vue +118 -0
  11. package/src/components/blog/BlogInfoSection.vue +47 -47
  12. package/src/components/blog/BlogPageBreadcrumbs.vue +43 -0
  13. package/src/components/blog/BlogPostHeader.vue +135 -135
  14. package/src/components/blog/BlogPostPage.vue +116 -0
  15. package/src/components/blog/BlogPostsPage.vue +74 -0
  16. package/src/components/blog/BlogProgressBar.vue +33 -33
  17. package/src/components/blog/BlogSectionTitle.vue +22 -22
  18. package/src/components/blog/BlogTagsPage.vue +46 -0
  19. package/src/components/blog/BlogTagsSection.vue +25 -25
  20. package/src/components/blog/BlogViewAllLink.vue +18 -0
  21. package/src/components/blog/CategoriesList.vue +14 -14
  22. package/src/components/blog/CategoriesSection.vue +11 -11
  23. package/src/components/blog/CategoryCard.vue +25 -25
  24. package/src/components/blog/HeaderCarousel.vue +97 -97
  25. package/src/components/blog/PostCard.vue +33 -33
  26. package/src/components/blog/PostsList.vue +15 -15
  27. package/src/components/blog/SocialShareSidebar.vue +84 -84
  28. package/src/components/blog/TableOfContents.vue +307 -307
  29. package/src/components/blog/blogPageUtils.ts +98 -0
  30. package/src/components/blog/index.ts +12 -1
  31. package/src/components/busy-indicator/BusyIndicator.vue +7 -7
  32. package/src/components/busy-indicator/busy-indicator-state.ts +56 -56
  33. package/src/components/card-grid/CardGrid.vue +34 -34
  34. package/src/components/chip/Chip.vue +15 -15
  35. package/src/components/confirm-dialog/ConfirmDialog.vue +50 -50
  36. package/src/components/confirm-dialog/confirm-dialog-state.ts +131 -131
  37. package/src/components/content/BlogList.vue +30 -30
  38. package/src/components/content/BlogTable.vue +36 -36
  39. package/src/components/content/CodeBlock.vue +136 -136
  40. package/src/components/content/Flow.vue +60 -60
  41. package/src/components/content/ProseHr.vue +15 -15
  42. package/src/components/content/ProsePre.vue +12 -12
  43. package/src/components/content/Terminal.vue +59 -59
  44. package/src/components/cookie-consent/CookieConsent.vue +36 -36
  45. package/src/components/cookie-consent/useCookieConsent.ts +37 -37
  46. package/src/components/dashboard-shell/DashboardShell.vue +171 -171
  47. package/src/components/data-list/DataList.vue +6 -6
  48. package/src/components/data-list/DataListItem.vue +4 -4
  49. package/src/components/data-list/DataListLabel.vue +4 -4
  50. package/src/components/data-list/DataListText.vue +4 -4
  51. package/src/components/data-list/DataListValue.vue +4 -4
  52. package/src/components/empty-state-card/EmptyStateCard.vue +40 -40
  53. package/src/components/error-page/ErrorPage.vue +72 -72
  54. package/src/components/info-card/InfoCard.vue +31 -31
  55. package/src/components/landing/landing-content/LandingContent.vue +4 -4
  56. package/src/components/landing/landing-footer/LandingFooter.vue +128 -128
  57. package/src/components/landing/landing-navbar/LandingNavbar.vue +50 -50
  58. package/src/components/landing/landing-shell/LandingShell.vue +36 -36
  59. package/src/components/language-flag/LanguageFlag.vue +25 -25
  60. package/src/components/language-flag/flags/ChineseFlag.vue +8 -8
  61. package/src/components/language-flag/flags/EnglishFlag.vue +7 -7
  62. package/src/components/language-flag/flags/FrenchFlag.vue +5 -5
  63. package/src/components/language-flag/flags/GermanFlag.vue +5 -5
  64. package/src/components/language-flag/flags/ItalianFlag.vue +7 -7
  65. package/src/components/language-flag/flags/JapaneseFlag.vue +4 -4
  66. package/src/components/language-flag/flags/PortugueseFlag.vue +57 -57
  67. package/src/components/language-flag/flags/RussianFlag.vue +5 -5
  68. package/src/components/language-flag/flags/SpanishFlag.vue +4 -4
  69. package/src/components/language-selector/LanguageSelector.vue +76 -76
  70. package/src/components/load-more-button/LoadMoreButton.vue +17 -17
  71. package/src/components/loading-state-card/LoadingStateCard.vue +28 -28
  72. package/src/components/message-dialog/MessageDialog.vue +59 -59
  73. package/src/components/message-dialog/message-dialog-state.ts +105 -105
  74. package/src/components/message-toast/MessageToast.vue +149 -149
  75. package/src/components/message-toast/message-toast-state.ts +146 -146
  76. package/src/components/page-header/PageHeader.vue +34 -34
  77. package/src/components/progress-component/ProgressComponent.vue +33 -33
  78. package/src/components/single-value-card/SingleValueCard.vue +57 -57
  79. package/src/components/slider-form-component/SliderFormComponent.vue +36 -36
  80. package/src/components/stat-strip/StatStrip.vue +22 -22
  81. package/src/components/switch-form-component/SwitchFormComponent.vue +20 -20
  82. package/src/components/text-link/TextLink.vue +14 -14
  83. package/src/components/theme-selector/ThemeSelector.vue +61 -61
  84. package/src/components/theme-selector/theme-transition.ts +63 -63
  85. package/src/components/ui/accordion/Accordion.vue +38 -38
  86. package/src/components/ui/alert/Alert.vue +5 -5
  87. package/src/components/ui/alert/AlertDescription.vue +4 -4
  88. package/src/components/ui/alert/AlertTitle.vue +4 -4
  89. package/src/components/ui/alert/index.ts +2 -2
  90. package/src/components/ui/alert-dialog/AlertDialog.vue +3 -3
  91. package/src/components/ui/alert-dialog/AlertDialogAction.vue +3 -3
  92. package/src/components/ui/alert-dialog/AlertDialogCancel.vue +3 -3
  93. package/src/components/ui/alert-dialog/AlertDialogContent.vue +7 -7
  94. package/src/components/ui/alert-dialog/AlertDialogDescription.vue +3 -3
  95. package/src/components/ui/alert-dialog/AlertDialogFooter.vue +4 -4
  96. package/src/components/ui/alert-dialog/AlertDialogHeader.vue +4 -4
  97. package/src/components/ui/alert-dialog/AlertDialogTitle.vue +3 -3
  98. package/src/components/ui/alert-dialog/AlertDialogTrigger.vue +3 -3
  99. package/src/components/ui/animated-number/AnimatedNumber.vue +49 -48
  100. package/src/components/ui/avatar/Avatar.vue +28 -28
  101. package/src/components/ui/avatar/AvatarFallback.vue +6 -6
  102. package/src/components/ui/avatar/AvatarGroup.vue +40 -40
  103. package/src/components/ui/avatar/AvatarImage.vue +3 -3
  104. package/src/components/ui/avatar/index.ts +17 -17
  105. package/src/components/ui/badge/Badge.vue +20 -20
  106. package/src/components/ui/breadcrumb/Breadcrumb.vue +4 -4
  107. package/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue +9 -9
  108. package/src/components/ui/breadcrumb/BreadcrumbItem.vue +4 -4
  109. package/src/components/ui/breadcrumb/BreadcrumbLink.vue +4 -4
  110. package/src/components/ui/breadcrumb/BreadcrumbList.vue +4 -4
  111. package/src/components/ui/breadcrumb/BreadcrumbPage.vue +4 -4
  112. package/src/components/ui/breadcrumb/BreadcrumbSeparator.vue +4 -4
  113. package/src/components/ui/busy/Busy.vue +33 -33
  114. package/src/components/ui/button/Button.vue +23 -23
  115. package/src/components/ui/button/index.ts +56 -56
  116. package/src/components/ui/calendar/Calendar.vue +138 -138
  117. package/src/components/ui/calendar/CalendarCell.vue +7 -7
  118. package/src/components/ui/calendar/CalendarCellTrigger.vue +18 -18
  119. package/src/components/ui/calendar/CalendarGrid.vue +3 -3
  120. package/src/components/ui/calendar/CalendarGridBody.vue +3 -3
  121. package/src/components/ui/calendar/CalendarGridHead.vue +3 -3
  122. package/src/components/ui/calendar/CalendarGridRow.vue +3 -3
  123. package/src/components/ui/calendar/CalendarHeadCell.vue +7 -7
  124. package/src/components/ui/calendar/CalendarHeader.vue +7 -7
  125. package/src/components/ui/calendar/CalendarHeading.vue +6 -6
  126. package/src/components/ui/calendar/CalendarNextButton.vue +15 -15
  127. package/src/components/ui/calendar/CalendarPrevButton.vue +15 -15
  128. package/src/components/ui/calendar/index.ts +4 -4
  129. package/src/components/ui/card/Card.vue +20 -20
  130. package/src/components/ui/card/CardAction.vue +8 -8
  131. package/src/components/ui/card/CardContent.vue +4 -4
  132. package/src/components/ui/card/CardDescription.vue +12 -12
  133. package/src/components/ui/card/CardFooter.vue +4 -4
  134. package/src/components/ui/card/CardHeader.vue +8 -8
  135. package/src/components/ui/card/CardText.vue +8 -8
  136. package/src/components/ui/card/CardTitle.vue +8 -8
  137. package/src/components/ui/checkbox/Checkbox.vue +27 -27
  138. package/src/components/ui/collapsible/Collapsible.vue +3 -3
  139. package/src/components/ui/collapsible/CollapsibleContent.vue +3 -3
  140. package/src/components/ui/collapsible/CollapsibleTrigger.vue +3 -3
  141. package/src/components/ui/combobox/Combobox.vue +4 -4
  142. package/src/components/ui/combobox/ComboboxAnchor.vue +16 -16
  143. package/src/components/ui/combobox/ComboboxEmpty.vue +3 -3
  144. package/src/components/ui/combobox/ComboboxGroup.vue +9 -9
  145. package/src/components/ui/combobox/ComboboxInput.vue +6 -6
  146. package/src/components/ui/combobox/ComboboxItem.vue +17 -17
  147. package/src/components/ui/combobox/ComboboxList.vue +19 -19
  148. package/src/components/ui/combobox/ComboboxSelect.vue +77 -77
  149. package/src/components/ui/combobox/ComboboxSeparator.vue +1 -1
  150. package/src/components/ui/combobox/ComboboxTrigger.vue +10 -10
  151. package/src/components/ui/combobox/types.ts +5 -5
  152. package/src/components/ui/command/Command.vue +48 -48
  153. package/src/components/ui/command/CommandDialog.vue +14 -14
  154. package/src/components/ui/command/CommandEmpty.vue +4 -4
  155. package/src/components/ui/command/CommandGroup.vue +23 -23
  156. package/src/components/ui/command/CommandInput.vue +9 -9
  157. package/src/components/ui/command/CommandItem.vue +40 -40
  158. package/src/components/ui/command/CommandList.vue +9 -9
  159. package/src/components/ui/command/CommandSeparator.vue +3 -3
  160. package/src/components/ui/command/CommandShortcut.vue +8 -8
  161. package/src/components/ui/command/index.ts +11 -11
  162. package/src/components/ui/data-table/DataTable.vue +145 -145
  163. package/src/components/ui/data-table/index.ts +11 -11
  164. package/src/components/ui/date-picker/DatePicker.vue +31 -31
  165. package/src/components/ui/date-time-picker/DateTimePicker.vue +97 -97
  166. package/src/components/ui/dialog/Dialog.vue +3 -3
  167. package/src/components/ui/dialog/DialogClose.vue +3 -3
  168. package/src/components/ui/dialog/DialogContent.vue +21 -21
  169. package/src/components/ui/dialog/DialogDescription.vue +7 -7
  170. package/src/components/ui/dialog/DialogFooter.vue +8 -8
  171. package/src/components/ui/dialog/DialogHeader.vue +4 -4
  172. package/src/components/ui/dialog/DialogOverlay.vue +7 -7
  173. package/src/components/ui/dialog/DialogScrollContent.vue +32 -32
  174. package/src/components/ui/dialog/DialogTitle.vue +3 -3
  175. package/src/components/ui/dialog/DialogTrigger.vue +3 -3
  176. package/src/components/ui/dropdown-menu/DropdownMenu.vue +3 -3
  177. package/src/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +11 -11
  178. package/src/components/ui/dropdown-menu/DropdownMenuContent.vue +15 -15
  179. package/src/components/ui/dropdown-menu/DropdownMenuGroup.vue +3 -3
  180. package/src/components/ui/dropdown-menu/DropdownMenuItem.vue +12 -12
  181. package/src/components/ui/dropdown-menu/DropdownMenuLabel.vue +9 -9
  182. package/src/components/ui/dropdown-menu/DropdownMenuPortal.vue +3 -3
  183. package/src/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +3 -3
  184. package/src/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +11 -11
  185. package/src/components/ui/dropdown-menu/DropdownMenuSeparator.vue +1 -1
  186. package/src/components/ui/dropdown-menu/DropdownMenuShortcut.vue +4 -4
  187. package/src/components/ui/dropdown-menu/DropdownMenuSub.vue +3 -3
  188. package/src/components/ui/dropdown-menu/DropdownMenuSubContent.vue +15 -15
  189. package/src/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +15 -15
  190. package/src/components/ui/dropdown-menu/DropdownMenuTrigger.vue +3 -3
  191. package/src/components/ui/dropdown-menu/classes.ts +16 -16
  192. package/src/components/ui/field/Field.vue +5 -5
  193. package/src/components/ui/field/FieldContent.vue +8 -8
  194. package/src/components/ui/field/FieldDescription.vue +10 -10
  195. package/src/components/ui/field/FieldError.vue +39 -39
  196. package/src/components/ui/field/FieldGroup.vue +8 -8
  197. package/src/components/ui/field/FieldLabel.vue +10 -10
  198. package/src/components/ui/field/FieldLegend.vue +11 -11
  199. package/src/components/ui/field/FieldSeparator.vue +11 -11
  200. package/src/components/ui/field/FieldSet.vue +9 -9
  201. package/src/components/ui/field/FieldTitle.vue +8 -8
  202. package/src/components/ui/field/field-context.ts +36 -36
  203. package/src/components/ui/field/index.ts +22 -22
  204. package/src/components/ui/file-dropzone/FileDropzone.vue +144 -144
  205. package/src/components/ui/file-dropzone/index.ts +19 -19
  206. package/src/components/ui/hover-card/HoverCard.vue +5 -5
  207. package/src/components/ui/hover-card/HoverCardContent.vue +13 -13
  208. package/src/components/ui/hover-card/HoverCardTrigger.vue +3 -3
  209. package/src/components/ui/input/Input.vue +13 -13
  210. package/src/components/ui/kbd/Kbd.vue +10 -10
  211. package/src/components/ui/kbd/KbdGroup.vue +49 -49
  212. package/src/components/ui/label/Label.vue +7 -7
  213. package/src/components/ui/native-select/NativeSelect.vue +16 -16
  214. package/src/components/ui/native-select/NativeSelectOptGroup.vue +3 -3
  215. package/src/components/ui/native-select/NativeSelectOption.vue +3 -3
  216. package/src/components/ui/number-field/NumberField.vue +88 -88
  217. package/src/components/ui/pagination/Pagination.vue +4 -4
  218. package/src/components/ui/pagination/PaginationContent.vue +4 -4
  219. package/src/components/ui/pagination/PaginationEllipsis.vue +9 -9
  220. package/src/components/ui/pagination/PaginationFirst.vue +8 -8
  221. package/src/components/ui/pagination/PaginationItem.vue +14 -14
  222. package/src/components/ui/pagination/PaginationLast.vue +8 -8
  223. package/src/components/ui/pagination/PaginationNext.vue +8 -8
  224. package/src/components/ui/pagination/PaginationPrevious.vue +8 -8
  225. package/src/components/ui/pagination/SimplePagination.vue +25 -25
  226. package/src/components/ui/pin-input/PinInput.vue +20 -20
  227. package/src/components/ui/pin-input/PinInputInput.vue +17 -17
  228. package/src/components/ui/pin-input/context.ts +1 -1
  229. package/src/components/ui/popover/Popover.vue +3 -3
  230. package/src/components/ui/popover/PopoverAnchor.vue +3 -3
  231. package/src/components/ui/popover/PopoverContent.vue +12 -12
  232. package/src/components/ui/popover/PopoverTrigger.vue +3 -3
  233. package/src/components/ui/progress/Progress.vue +16 -16
  234. package/src/components/ui/radio-group/RadioGroup.vue +7 -7
  235. package/src/components/ui/radio-group/RadioGroupCard.vue +39 -39
  236. package/src/components/ui/radio-group/RadioGroupItem.vue +20 -20
  237. package/src/components/ui/scroll-area/ScrollArea.vue +14 -14
  238. package/src/components/ui/scroll-area/ScrollBar.vue +12 -12
  239. package/src/components/ui/select/Select.vue +3 -3
  240. package/src/components/ui/select/SelectContent.vue +25 -25
  241. package/src/components/ui/select/SelectGroup.vue +3 -3
  242. package/src/components/ui/select/SelectItem.vue +24 -24
  243. package/src/components/ui/select/SelectItemContent.vue +32 -32
  244. package/src/components/ui/select/SelectItemText.vue +3 -3
  245. package/src/components/ui/select/SelectLabel.vue +3 -3
  246. package/src/components/ui/select/SelectScrollDownButton.vue +9 -9
  247. package/src/components/ui/select/SelectScrollUpButton.vue +9 -9
  248. package/src/components/ui/select/SelectSeparator.vue +2 -2
  249. package/src/components/ui/select/SelectTrigger.vue +14 -14
  250. package/src/components/ui/select/SelectValue.vue +3 -3
  251. package/src/components/ui/select/SelectValueContent.vue +39 -39
  252. package/src/components/ui/separator/Separator.vue +7 -7
  253. package/src/components/ui/sheet/Sheet.vue +3 -3
  254. package/src/components/ui/sheet/SheetClose.vue +3 -3
  255. package/src/components/ui/sheet/SheetContent.vue +22 -22
  256. package/src/components/ui/sheet/SheetDescription.vue +3 -3
  257. package/src/components/ui/sheet/SheetFooter.vue +3 -3
  258. package/src/components/ui/sheet/SheetHeader.vue +3 -3
  259. package/src/components/ui/sheet/SheetOverlay.vue +7 -7
  260. package/src/components/ui/sheet/SheetTitle.vue +3 -3
  261. package/src/components/ui/sheet/SheetTrigger.vue +3 -3
  262. package/src/components/ui/sidebar/Sidebar.vue +57 -57
  263. package/src/components/ui/sidebar/SidebarContent.vue +8 -8
  264. package/src/components/ui/sidebar/SidebarFooter.vue +8 -8
  265. package/src/components/ui/sidebar/SidebarGroup.vue +8 -8
  266. package/src/components/ui/sidebar/SidebarGroupAction.vue +9 -9
  267. package/src/components/ui/sidebar/SidebarGroupContent.vue +4 -4
  268. package/src/components/ui/sidebar/SidebarGroupLabel.vue +8 -8
  269. package/src/components/ui/sidebar/SidebarHeader.vue +8 -8
  270. package/src/components/ui/sidebar/SidebarInput.vue +8 -8
  271. package/src/components/ui/sidebar/SidebarInset.vue +9 -9
  272. package/src/components/ui/sidebar/SidebarMenu.vue +4 -4
  273. package/src/components/ui/sidebar/SidebarMenuAction.vue +18 -18
  274. package/src/components/ui/sidebar/SidebarMenuBadge.vue +14 -14
  275. package/src/components/ui/sidebar/SidebarMenuButton.vue +21 -21
  276. package/src/components/ui/sidebar/SidebarMenuButtonChild.vue +10 -10
  277. package/src/components/ui/sidebar/SidebarMenuItem.vue +4 -4
  278. package/src/components/ui/sidebar/SidebarMenuSkeleton.vue +10 -10
  279. package/src/components/ui/sidebar/SidebarMenuSub.vue +9 -9
  280. package/src/components/ui/sidebar/SidebarMenuSubButton.vue +17 -17
  281. package/src/components/ui/sidebar/SidebarMenuSubItem.vue +4 -4
  282. package/src/components/ui/sidebar/SidebarProvider.vue +46 -46
  283. package/src/components/ui/sidebar/SidebarRail.vue +13 -13
  284. package/src/components/ui/sidebar/SidebarSeparator.vue +4 -4
  285. package/src/components/ui/sidebar/SidebarTrigger.vue +5 -5
  286. package/src/components/ui/sidebar/index.ts +29 -29
  287. package/src/components/ui/sidebar/utils.ts +7 -7
  288. package/src/components/ui/skeleton/Skeleton.vue +6 -6
  289. package/src/components/ui/slider/Slider.vue +14 -14
  290. package/src/components/ui/spinner/Spinner.vue +21 -21
  291. package/src/components/ui/stepper/SimpleStepper.vue +26 -26
  292. package/src/components/ui/stepper/Stepper.vue +6 -6
  293. package/src/components/ui/stepper/StepperDescription.vue +5 -5
  294. package/src/components/ui/stepper/StepperIndicator.vue +17 -17
  295. package/src/components/ui/stepper/StepperItem.vue +4 -4
  296. package/src/components/ui/stepper/StepperSeparator.vue +7 -7
  297. package/src/components/ui/stepper/StepperTitle.vue +5 -5
  298. package/src/components/ui/stepper/StepperTrigger.vue +4 -4
  299. package/src/components/ui/stepper/index.ts +3 -3
  300. package/src/components/ui/switch/Switch.vue +15 -15
  301. package/src/components/ui/table/Table.vue +6 -6
  302. package/src/components/ui/table/TableBody.vue +4 -4
  303. package/src/components/ui/table/TableCaption.vue +4 -4
  304. package/src/components/ui/table/TableCell.vue +8 -8
  305. package/src/components/ui/table/TableEmpty.vue +14 -14
  306. package/src/components/ui/table/TableFooter.vue +8 -8
  307. package/src/components/ui/table/TableHead.vue +8 -8
  308. package/src/components/ui/table/TableHeader.vue +4 -4
  309. package/src/components/ui/table/TableRow.vue +8 -8
  310. package/src/components/ui/tabs/Tabs.vue +4 -4
  311. package/src/components/ui/tabs/TabsContent.vue +4 -4
  312. package/src/components/ui/tabs/TabsList.vue +15 -15
  313. package/src/components/ui/tabs/TabsTrigger.vue +10 -10
  314. package/src/components/ui/tags-input/TagsInput.vue +17 -17
  315. package/src/components/ui/tags-input/TagsInputInput.vue +6 -6
  316. package/src/components/ui/tags-input/TagsInputItem.vue +15 -15
  317. package/src/components/ui/tags-input/TagsInputItemDelete.vue +12 -12
  318. package/src/components/ui/tags-input/TagsInputItemText.vue +4 -4
  319. package/src/components/ui/textarea/Textarea.vue +12 -12
  320. package/src/components/ui/time-picker/TimePicker.vue +25 -25
  321. package/src/components/ui/toggle-group/Toggle.vue +10 -10
  322. package/src/components/ui/toggle-group/ToggleGroup.vue +38 -38
  323. package/src/components/ui/toggle-group/ToggleGroupItem.vue +9 -9
  324. package/src/components/ui/toggle-group/index.ts +46 -46
  325. package/src/components/ui/tooltip/Tooltip.vue +3 -3
  326. package/src/components/ui/tooltip/TooltipContent.vue +13 -13
  327. package/src/components/ui/tooltip/TooltipProvider.vue +4 -4
  328. package/src/components/ui/tooltip/TooltipTrigger.vue +3 -3
  329. package/src/i18n/de.json +206 -185
  330. package/src/i18n/en.json +206 -185
  331. package/src/i18n/es.json +206 -185
  332. package/src/i18n/fr.json +206 -185
  333. package/src/i18n/it.json +206 -185
  334. package/src/i18n/ja.json +206 -185
  335. package/src/i18n/pt.json +206 -185
  336. package/src/i18n/ru.json +206 -185
  337. package/src/i18n/zh.json +206 -185
  338. package/src/lib/color-tokens.ts +24 -24
  339. package/src/lib/i18n.ts +65 -65
  340. package/src/lib/utils.ts +33 -33
  341. package/src/nuxt-components.d.ts +2 -2
  342. package/src/runtime/ui-vintage-i18n-plugin.ts +49 -49
  343. package/src/shims-vue.d.ts +3 -3
  344. package/src/styles.css +377 -377
@@ -11,15 +11,15 @@ type CodeLanguage = string;
11
11
 
12
12
  // Props
13
13
  const props = withDefaults(defineProps<{
14
- code?: string;
15
- language?: CodeLanguage;
16
- title?: string;
17
- copyable?: boolean;
14
+ code?: string;
15
+ language?: CodeLanguage;
16
+ title?: string;
17
+ copyable?: boolean;
18
18
  }>(), {
19
- code: '',
20
- language: 'text',
21
- title: '',
22
- copyable: true
19
+ code: '',
20
+ language: 'text',
21
+ title: '',
22
+ copyable: true
23
23
  });
24
24
 
25
25
  const { t } = useI18n();
@@ -28,171 +28,171 @@ const highlightedCode = ref('');
28
28
  let highlightRequest = 0;
29
29
  const resolvedTitle = computed(() => props.title || t('uiVintage.code.title'));
30
30
  const languageLabels: Record<string, string> = {
31
- js: 'JavaScript',
32
- javascript: 'JavaScript',
33
- ts: 'TypeScript',
34
- typescript: 'TypeScript',
35
- vue: 'Vue',
36
- html: 'HTML',
37
- css: 'CSS',
38
- json: 'JSON',
39
- md: 'Markdown',
40
- markdown: 'Markdown',
41
- yaml: 'YAML',
42
- yml: 'YAML',
31
+ js: 'JavaScript',
32
+ javascript: 'JavaScript',
33
+ ts: 'TypeScript',
34
+ typescript: 'TypeScript',
35
+ vue: 'Vue',
36
+ html: 'HTML',
37
+ css: 'CSS',
38
+ json: 'JSON',
39
+ md: 'Markdown',
40
+ markdown: 'Markdown',
41
+ yaml: 'YAML',
42
+ yml: 'YAML',
43
43
  };
44
44
  const languageLabel = computed(() => props.language === 'text' ? t('uiVintage.code.plainText') : languageLabels[props.language] || props.language);
45
45
  const displayedCode = computed(() => {
46
- if (props.language !== 'json') return props.code.replace(/\n$/, '');
46
+ if (props.language !== 'json') return props.code.replace(/\n$/, '');
47
47
 
48
- try {
49
- return JSON.stringify(JSON.parse(props.code), null, 2);
50
- } catch {
51
- return props.code.replace(/\n$/, '');
52
- }
48
+ try {
49
+ return JSON.stringify(JSON.parse(props.code), null, 2);
50
+ } catch {
51
+ return props.code.replace(/\n$/, '');
52
+ }
53
53
  });
54
54
  const codeLines = computed(() => displayedCode.value.split(/\r?\n/));
55
55
 
56
56
  // Highlight code in the library so all consumers share the same rendering behavior.
57
57
  const highlightCode = async () => {
58
- const requestId = ++highlightRequest;
59
- highlightedCode.value = '';
60
-
61
- if (!displayedCode.value || props.language === 'text') return;
62
-
63
- try {
64
- // Load the highlighter only when a code block is rendered, so pages without code never download it
65
- const { codeToHtml } = await import('shiki');
66
- const html = await codeToHtml(displayedCode.value, {
67
- lang: props.language,
68
- themes: { light: 'github-light', dark: 'github-dark' },
69
- defaultColor: false
70
- });
71
-
72
- if (requestId === highlightRequest) {
73
- highlightedCode.value = html;
74
- }
75
- } catch {
76
- // Keep the escaped plain-text fallback for unsupported languages.
77
- }
58
+ const requestId = ++highlightRequest;
59
+ highlightedCode.value = '';
60
+
61
+ if (!displayedCode.value || props.language === 'text') return;
62
+
63
+ try {
64
+ // Load the highlighter only when a code block is rendered, so pages without code never download it
65
+ const { codeToHtml } = await import('shiki');
66
+ const html = await codeToHtml(displayedCode.value, {
67
+ lang: props.language,
68
+ themes: { light: 'github-light', dark: 'github-dark' },
69
+ defaultColor: false
70
+ });
71
+
72
+ if (requestId === highlightRequest) {
73
+ highlightedCode.value = html;
74
+ }
75
+ } catch {
76
+ // Keep the escaped plain-text fallback for unsupported languages.
77
+ }
78
78
  };
79
79
 
80
80
  watch([displayedCode, () => props.language], highlightCode, { immediate: true });
81
81
 
82
82
  // Copy the formatted code to the clipboard
83
83
  const copyCode = async () => {
84
- if (!props.copyable || !displayedCode.value || !navigator.clipboard) {
85
- return;
86
- }
87
-
88
- await navigator.clipboard.writeText(displayedCode.value);
89
- copied.value = true;
90
- window.setTimeout(() => {
91
- copied.value = false;
92
- }, 1800);
84
+ if (!props.copyable || !displayedCode.value || !navigator.clipboard) {
85
+ return;
86
+ }
87
+
88
+ await navigator.clipboard.writeText(displayedCode.value);
89
+ copied.value = true;
90
+ window.setTimeout(() => {
91
+ copied.value = false;
92
+ }, 1800);
93
93
  };
94
94
  </script>
95
95
 
96
96
  <template>
97
- <div class="not-prose my-6 sm:my-8">
98
- <div data-aos="blur-up" data-code-window class="overflow-hidden rounded border border-border bg-card text-foreground shadow-elevated-sm">
99
- <!-- Window title bar -->
100
- <div class="relative flex h-8 items-center border-b border-border bg-surface px-3">
101
- <!-- Traffic lights -->
102
- <span aria-hidden="true" class="flex items-center gap-2">
103
- <span class="size-3 rounded-full bg-destructive/85" />
104
- <span class="size-3 rounded-full bg-warning/85" />
105
- <span class="size-3 rounded-full bg-success/85" />
106
- </span>
107
-
108
- <!-- Window title -->
109
- <div class="pointer-events-none absolute inset-x-24 truncate text-center text-xs text-muted-foreground">{{ resolvedTitle }}</div>
110
-
111
- <!-- Copy code button -->
112
- <Button v-if="props.copyable"
113
- variant="ghost"
114
- size="icon"
115
- class="ml-auto size-6 text-muted-foreground hover:bg-accent hover:text-foreground"
116
- :aria-label="copied ? t('uiVintage.code.copied') : t('uiVintage.code.copy')"
117
- :title="copied ? t('uiVintage.code.copied') : t('uiVintage.code.copy')"
118
- :disabled="!displayedCode"
119
- @click="copyCode">
120
- <HugeiconsIcon :icon="copied ? CheckmarkCircle02Icon : Copy01Icon" class="size-3.5" />
121
- </Button>
122
-
123
- <!-- Announce the copy to screen readers -->
124
- <span v-if="props.copyable" class="sr-only" aria-live="polite">{{ copied ? t('uiVintage.code.copied') : '' }}</span>
125
- </div>
126
-
127
- <!-- Editor tabs -->
128
- <div class="flex h-9 items-stretch border-b border-border bg-surface">
129
- <!-- Active tab -->
130
- <div class="flex min-w-0 items-center gap-2 -mb-px border-r border-border border-t-2 border-t-primary bg-card px-3 text-foreground">
131
- <HugeiconsIcon :icon="CodeIcon" class="size-3.5 shrink-0 text-primary" />
132
- <span class="truncate text-xs">{{ resolvedTitle }}</span>
133
- </div>
134
- </div>
135
-
136
- <!-- Code content -->
137
- <div v-if="highlightedCode" class="code-block-content uv-code-block-content overflow-x-auto" v-html="highlightedCode" />
138
- <div v-else class="code-block-content overflow-x-auto">
139
- <pre><code><template v-for="(line, index) in codeLines" :key="index"><span class="line">{{ line }}</span>{{ index < codeLines.length - 1 ? '\n' : '' }}</template></code></pre>
140
- </div>
141
-
142
- <!-- Status bar -->
143
- <div class="flex h-6 items-center justify-between gap-3 border-t border-border bg-surface px-3 text-[11px] text-muted-foreground">
144
- <span class="truncate">{{ t('uiVintage.code.position', { line: codeLines.length, column: 1 }) }}</span>
145
- <span class="flex shrink-0 items-center gap-3">
146
- <span>UTF-8</span>
147
- <span>{{ languageLabel }}</span>
148
- </span>
149
- </div>
150
- </div>
151
- </div>
97
+ <div class="not-prose my-6 sm:my-8">
98
+ <div data-aos="blur-up" data-code-window class="overflow-hidden rounded border border-border bg-card text-foreground shadow-elevated-sm">
99
+ <!-- Window title bar -->
100
+ <div class="relative flex h-8 items-center border-b border-border bg-surface px-3">
101
+ <!-- Traffic lights -->
102
+ <span aria-hidden="true" class="flex items-center gap-2">
103
+ <span class="size-3 rounded-full bg-destructive/85" />
104
+ <span class="size-3 rounded-full bg-warning/85" />
105
+ <span class="size-3 rounded-full bg-success/85" />
106
+ </span>
107
+
108
+ <!-- Window title -->
109
+ <div class="pointer-events-none absolute inset-x-24 truncate text-center text-xs text-muted-foreground">{{ resolvedTitle }}</div>
110
+
111
+ <!-- Copy code button -->
112
+ <Button v-if="props.copyable"
113
+ variant="ghost"
114
+ size="icon"
115
+ class="ml-auto size-6 text-muted-foreground hover:bg-accent hover:text-foreground"
116
+ :aria-label="copied ? t('uiVintage.code.copied') : t('uiVintage.code.copy')"
117
+ :title="copied ? t('uiVintage.code.copied') : t('uiVintage.code.copy')"
118
+ :disabled="!displayedCode"
119
+ @click="copyCode">
120
+ <HugeiconsIcon :icon="copied ? CheckmarkCircle02Icon : Copy01Icon" class="size-3.5" />
121
+ </Button>
122
+
123
+ <!-- Announce the copy to screen readers -->
124
+ <span v-if="props.copyable" class="sr-only" aria-live="polite">{{ copied ? t('uiVintage.code.copied') : '' }}</span>
125
+ </div>
126
+
127
+ <!-- Editor tabs -->
128
+ <div class="flex h-9 items-stretch border-b border-border bg-surface">
129
+ <!-- Active tab -->
130
+ <div class="flex min-w-0 items-center gap-2 -mb-px border-r border-border border-t-2 border-t-primary bg-card px-3 text-foreground">
131
+ <HugeiconsIcon :icon="CodeIcon" class="size-3.5 shrink-0 text-primary" />
132
+ <span class="truncate text-xs">{{ resolvedTitle }}</span>
133
+ </div>
134
+ </div>
135
+
136
+ <!-- Code content -->
137
+ <div v-if="highlightedCode" class="code-block-content uv-code-block-content overflow-x-auto" v-html="highlightedCode" />
138
+ <div v-else class="code-block-content overflow-x-auto">
139
+ <pre><code><template v-for="(line, index) in codeLines" :key="index"><span class="line">{{ line }}</span>{{ index < codeLines.length - 1 ? '\n' : '' }}</template></code></pre>
140
+ </div>
141
+
142
+ <!-- Status bar -->
143
+ <div class="flex h-6 items-center justify-between gap-3 border-t border-border bg-surface px-3 text-[11px] text-muted-foreground">
144
+ <span class="truncate">{{ t('uiVintage.code.position', { line: codeLines.length, column: 1 }) }}</span>
145
+ <span class="flex shrink-0 items-center gap-3">
146
+ <span>UTF-8</span>
147
+ <span>{{ languageLabel }}</span>
148
+ </span>
149
+ </div>
150
+ </div>
151
+ </div>
152
152
  </template>
153
153
 
154
154
  <style scoped>
155
155
  .code-block-content :deep(pre) {
156
- margin: 0;
157
- min-width: max-content;
158
- padding: 0.75rem 1rem 0.75rem 0;
159
- background-color: transparent !important;
160
- color: var(--foreground);
161
- font-size: 0.75rem;
162
- line-height: 1.5rem;
163
- counter-reset: line;
156
+ margin: 0;
157
+ min-width: max-content;
158
+ padding: 0.75rem 1rem 0.75rem 0;
159
+ background-color: transparent !important;
160
+ color: var(--foreground);
161
+ font-size: 0.75rem;
162
+ line-height: 1.5rem;
163
+ counter-reset: line;
164
164
  }
165
165
 
166
166
  /* Line numbers in the editor gutter */
167
167
  .code-block-content :deep(.line)::before {
168
- counter-increment: line;
169
- content: counter(line);
170
- display: inline-block;
171
- width: 2.75rem;
172
- margin-right: 1rem;
173
- padding-right: 0.25rem;
174
- text-align: right;
175
- color: color-mix(in oklab, var(--muted-foreground) 65%, transparent);
176
- user-select: none;
168
+ counter-increment: line;
169
+ content: counter(line);
170
+ display: inline-block;
171
+ width: 2.75rem;
172
+ margin-right: 1rem;
173
+ padding-right: 0.25rem;
174
+ text-align: right;
175
+ color: color-mix(in oklab, var(--muted-foreground) 65%, transparent);
176
+ user-select: none;
177
177
  }
178
178
 
179
179
  @media (min-width: 640px) {
180
- .code-block-content :deep(pre) {
181
- padding: 1rem 1.25rem 1rem 0;
182
- font-size: 0.875rem;
183
- }
180
+ .code-block-content :deep(pre) {
181
+ padding: 1rem 1.25rem 1rem 0;
182
+ font-size: 0.875rem;
183
+ }
184
184
  }
185
185
  </style>
186
186
 
187
187
  <style>
188
188
  /* Shiki emits both themes as CSS variables; pick the one matching the library's `.dark` class and drop Nuxt Content's per-token backgrounds */
189
189
  .uv-code-block-content .shiki span {
190
- color: var(--shiki-light);
191
- background-color: transparent;
190
+ color: var(--shiki-light);
191
+ background-color: transparent;
192
192
  }
193
193
 
194
194
  .dark .uv-code-block-content .shiki span {
195
- color: var(--shiki-dark);
196
- background-color: transparent;
195
+ color: var(--shiki-dark);
196
+ background-color: transparent;
197
197
  }
198
- </style>
198
+ </style>
@@ -2,92 +2,92 @@
2
2
  import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '../ui/card';
3
3
 
4
4
  type FlowItem = string | {
5
- label?: string;
6
- title?: string;
7
- description?: string;
5
+ label?: string;
6
+ title?: string;
7
+ description?: string;
8
8
  };
9
9
 
10
10
  // Props
11
11
  const props = withDefaults(defineProps<{
12
- title?: string;
13
- description?: string;
14
- items?: FlowItem[];
15
- orientation?: 'horizontal' | 'vertical';
12
+ title?: string;
13
+ description?: string;
14
+ items?: FlowItem[];
15
+ orientation?: 'horizontal' | 'vertical';
16
16
  }>(), {
17
- title: '',
18
- description: '',
19
- items: () => [],
20
- orientation: 'horizontal'
17
+ title: '',
18
+ description: '',
19
+ items: () => [],
20
+ orientation: 'horizontal'
21
21
  });
22
22
 
23
23
  // Get item label
24
24
  const getItemLabel = (item: FlowItem) => {
25
- if (typeof item === 'string') return item;
26
- return item.label || item.title || '';
25
+ if (typeof item === 'string') return item;
26
+ return item.label || item.title || '';
27
27
  };
28
28
 
29
29
  // Get item description
30
30
  const getItemDescription = (item: FlowItem) => {
31
- if (typeof item === 'string') return '';
32
- return item.description || '';
31
+ if (typeof item === 'string') return '';
32
+ return item.description || '';
33
33
  };
34
34
 
35
35
  // Check if orientation is vertical
36
36
  const isVertical = () => {
37
- return props.orientation === 'vertical';
37
+ return props.orientation === 'vertical';
38
38
  };
39
39
 
40
40
  // Format the step number with a leading zero
41
41
  const formatNumber = (index: number) => {
42
- return String(index + 1).padStart(2, '0');
42
+ return String(index + 1).padStart(2, '0');
43
43
  };
44
44
  </script>
45
45
 
46
46
  <template>
47
- <div class="not-prose my-6 sm:my-8">
48
- <Card data-aos="blur-up">
49
- <!-- Card header -->
50
- <CardHeader v-if="props.title || props.description">
51
- <!-- Card title -->
52
- <CardTitle v-if="props.title">
53
- {{ props.title }}
54
- </CardTitle>
47
+ <div class="not-prose my-6 sm:my-8">
48
+ <Card data-aos="blur-up">
49
+ <!-- Card header -->
50
+ <CardHeader v-if="props.title || props.description">
51
+ <!-- Card title -->
52
+ <CardTitle v-if="props.title">
53
+ {{ props.title }}
54
+ </CardTitle>
55
55
 
56
- <!-- Card description -->
57
- <CardDescription v-if="props.description">
58
- {{ props.description }}
59
- </CardDescription>
60
- </CardHeader>
56
+ <!-- Card description -->
57
+ <CardDescription v-if="props.description">
58
+ {{ props.description }}
59
+ </CardDescription>
60
+ </CardHeader>
61
61
 
62
- <!-- Card content -->
63
- <CardContent>
64
- <ol :class="['flex flex-col', !isVertical() && 'md:flex-row md:gap-4']">
65
- <!-- Flow step -->
66
- <li v-for="(item, index) in props.items"
67
- :key="`${getItemLabel(item)}-${index}`"
68
- data-aos="blur-up"
69
- :data-aos-delay="100 + index * 90"
70
- :class="['relative flex gap-4 pb-6 last:pb-0', !isVertical() && 'md:flex-1 md:flex-col md:gap-3 md:pb-0']">
71
- <!-- Step number -->
72
- <span class="relative z-10 flex size-7 shrink-0 items-center justify-center rounded border border-primary/30 bg-card text-[11px] font-semibold tabular-nums text-primary">
73
- {{ formatNumber(index) }}
74
- </span>
62
+ <!-- Card content -->
63
+ <CardContent>
64
+ <ol :class="['flex flex-col', !isVertical() && 'md:flex-row md:gap-4']">
65
+ <!-- Flow step -->
66
+ <li v-for="(item, index) in props.items"
67
+ :key="`${getItemLabel(item)}-${index}`"
68
+ data-aos="blur-up"
69
+ :data-aos-delay="100 + index * 90"
70
+ :class="['relative flex gap-4 pb-6 last:pb-0', !isVertical() && 'md:flex-1 md:flex-col md:gap-3 md:pb-0']">
71
+ <!-- Step number -->
72
+ <span class="relative z-10 flex size-7 shrink-0 items-center justify-center rounded border border-primary/30 bg-card text-[11px] font-semibold tabular-nums text-primary">
73
+ {{ formatNumber(index) }}
74
+ </span>
75
75
 
76
- <!-- Connector to the next step -->
77
- <span v-if="index < props.items.length - 1"
78
- aria-hidden="true"
79
- :class="['absolute top-8 bottom-1 left-3.5 w-px bg-border', !isVertical() && 'md:top-3.5 md:bottom-auto md:left-10 md:-right-2 md:h-px md:w-auto md:bg-linear-to-r md:from-primary/40 md:to-border']" />
76
+ <!-- Connector to the next step -->
77
+ <span v-if="index < props.items.length - 1"
78
+ aria-hidden="true"
79
+ :class="['absolute top-8 bottom-1 left-3.5 w-px bg-border', !isVertical() && 'md:top-3.5 md:bottom-auto md:left-10 md:-right-2 md:h-px md:w-auto md:bg-linear-to-r md:from-primary/40 md:to-border']" />
80
80
 
81
- <!-- Step text -->
82
- <div :class="['flex min-w-0 flex-col gap-1 pt-1', !isVertical() && 'md:pt-0']">
83
- <span class="text-xs font-semibold leading-5 text-foreground md:text-sm">{{ getItemLabel(item) }}</span>
84
- <p v-if="getItemDescription(item)" class="text-xs leading-5 text-muted-foreground">
85
- {{ getItemDescription(item) }}
86
- </p>
87
- </div>
88
- </li>
89
- </ol>
90
- </CardContent>
91
- </Card>
92
- </div>
93
- </template>
81
+ <!-- Step text -->
82
+ <div :class="['flex min-w-0 flex-col gap-1 pt-1', !isVertical() && 'md:pt-0']">
83
+ <span class="text-xs font-semibold leading-5 text-foreground md:text-sm">{{ getItemLabel(item) }}</span>
84
+ <p v-if="getItemDescription(item)" class="text-xs leading-5 text-muted-foreground">
85
+ {{ getItemDescription(item) }}
86
+ </p>
87
+ </div>
88
+ </li>
89
+ </ol>
90
+ </CardContent>
91
+ </Card>
92
+ </div>
93
+ </template>
@@ -5,25 +5,25 @@ import type { HugeiconsIconDefinition } from '../../lib/common-types';
5
5
 
6
6
  // Props
7
7
  const props = withDefaults(defineProps<{
8
- icon?: HugeiconsIconDefinition;
8
+ icon?: HugeiconsIconDefinition;
9
9
  }>(), {
10
- icon: () => ChartLineData02Icon
10
+ icon: () => ChartLineData02Icon
11
11
  });
12
12
  </script>
13
13
 
14
14
  <template>
15
- <div aria-hidden="true" data-aos="blur-up" class="not-prose my-8 sm:my-14">
16
- <div class="flex items-center gap-3 sm:gap-4">
17
- <!-- Left line -->
18
- <div class="h-px flex-1 bg-linear-to-r from-transparent via-border to-primary/40" />
15
+ <div aria-hidden="true" data-aos="blur-up" class="not-prose my-8 sm:my-14">
16
+ <div class="flex items-center gap-3 sm:gap-4">
17
+ <!-- Left line -->
18
+ <div class="h-px flex-1 bg-linear-to-r from-transparent via-border to-primary/40" />
19
19
 
20
- <!-- Icon in the middle -->
21
- <div class="flex size-7 shrink-0 items-center justify-center rounded border border-primary/30 bg-card text-primary">
22
- <HugeiconsIcon :icon="props.icon" class="size-3.5" />
23
- </div>
20
+ <!-- Icon in the middle -->
21
+ <div class="flex size-7 shrink-0 items-center justify-center rounded border border-primary/30 bg-card text-primary">
22
+ <HugeiconsIcon :icon="props.icon" class="size-3.5" />
23
+ </div>
24
24
 
25
- <!-- Right line -->
26
- <div class="h-px flex-1 bg-linear-to-l from-transparent via-border to-primary/40" />
27
- </div>
28
- </div>
29
- </template>
25
+ <!-- Right line -->
26
+ <div class="h-px flex-1 bg-linear-to-l from-transparent via-border to-primary/40" />
27
+ </div>
28
+ </div>
29
+ </template>
@@ -8,13 +8,13 @@ defineOptions({ inheritAttrs: false });
8
8
 
9
9
  // Props
10
10
  const props = withDefaults(defineProps<{
11
- code?: string;
12
- language?: string;
13
- filename?: string;
11
+ code?: string;
12
+ language?: string;
13
+ filename?: string;
14
14
  }>(), {
15
- code: '',
16
- language: '',
17
- filename: ''
15
+ code: '',
16
+ language: '',
17
+ filename: ''
18
18
  });
19
19
 
20
20
  const normalizedLanguage = computed(() => props.language.toLowerCase());
@@ -23,12 +23,12 @@ const commands = computed(() => props.code.replace(/\n$/, '').split(/\r?\n/));
23
23
  </script>
24
24
 
25
25
  <template>
26
- <!-- Terminal value -->
27
- <Terminal v-if="isShellBlock" :commands="commands" :title="props.filename" />
26
+ <!-- Terminal value -->
27
+ <Terminal v-if="isShellBlock" :commands="commands" :title="props.filename" />
28
28
 
29
- <!-- Code block -->
30
- <CodeBlock v-else-if="normalizedLanguage" :code="props.code" :language="normalizedLanguage" :title="props.filename" />
29
+ <!-- Code block -->
30
+ <CodeBlock v-else-if="normalizedLanguage" :code="props.code" :language="normalizedLanguage" :title="props.filename" />
31
31
 
32
- <!-- Fallback pre block -->
33
- <pre v-else v-bind="$attrs"><slot /></pre>
32
+ <!-- Fallback pre block -->
33
+ <pre v-else v-bind="$attrs"><slot /></pre>
34
34
  </template>