@brumaombra/ui-vintage 0.7.8 → 0.7.10

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 (275) hide show
  1. package/README.md +308 -48
  2. package/module.mjs +1 -1
  3. package/package.json +2 -1
  4. package/src/components/background-grid/BackgroundGrid.vue +11 -2
  5. package/src/components/background-grid/index.ts +2 -2
  6. package/src/components/blog/AllPostsSection.vue +25 -9
  7. package/src/components/blog/BlogContentRenderer.vue +133 -0
  8. package/src/components/blog/BlogFAQSection.vue +8 -3
  9. package/src/components/blog/BlogHeaderSection.vue +14 -11
  10. package/src/components/blog/BlogInfoSection.vue +13 -11
  11. package/src/components/blog/BlogProgressBar.vue +77 -0
  12. package/src/components/blog/BlogSectionTitle.vue +5 -5
  13. package/src/components/blog/CategoriesList.vue +11 -3
  14. package/src/components/blog/CategoriesSection.vue +11 -3
  15. package/src/components/blog/CategoryCard.vue +10 -8
  16. package/src/components/blog/HeaderCarousel.vue +24 -15
  17. package/src/components/blog/PostCard.vue +16 -11
  18. package/src/components/blog/PostsList.vue +12 -3
  19. package/src/components/blog/SocialShareSidebar.vue +43 -41
  20. package/src/components/blog/TableOfContents.vue +29 -13
  21. package/src/components/blog/index.ts +1 -0
  22. package/src/components/busy-indicator/BusyIndicator.vue +2 -2
  23. package/src/components/busy-indicator/busy-indicator-state.ts +11 -12
  24. package/src/components/busy-indicator/index.ts +3 -3
  25. package/src/components/card-grid/CardGrid.vue +25 -11
  26. package/src/components/chip/Chip.vue +15 -15
  27. package/src/components/chip/index.ts +2 -2
  28. package/src/components/confirm-dialog/ConfirmDialog.vue +9 -9
  29. package/src/components/confirm-dialog/confirm-dialog-state.ts +15 -14
  30. package/src/components/confirm-dialog/index.ts +3 -12
  31. package/src/components/content/BlogList.vue +11 -8
  32. package/src/components/content/BlogTable.vue +18 -14
  33. package/src/components/content/ProseHr.vue +10 -7
  34. package/src/components/content/Terminal.vue +70 -0
  35. package/src/components/content/index.ts +2 -1
  36. package/src/components/dashboard-shell/DashboardShell.vue +43 -64
  37. package/src/components/dashboard-shell/index.ts +2 -2
  38. package/src/components/data-list/DataList.vue +11 -13
  39. package/src/components/data-list/DataListItem.vue +9 -11
  40. package/src/components/data-list/DataListLabel.vue +9 -11
  41. package/src/components/data-list/DataListText.vue +9 -11
  42. package/src/components/data-list/DataListValue.vue +9 -11
  43. package/src/components/data-list/index.ts +5 -5
  44. package/src/components/empty-state-card/EmptyStateCard.vue +21 -11
  45. package/src/components/error-page/ErrorPage.vue +24 -27
  46. package/src/components/error-page/index.ts +2 -2
  47. package/src/components/info-card/InfoCard.vue +17 -11
  48. package/src/components/landing/index.ts +6 -6
  49. package/src/components/landing/landing-content/LandingContent.vue +5 -7
  50. package/src/components/landing/landing-content/index.ts +2 -2
  51. package/src/components/landing/landing-footer/LandingFooter.vue +26 -29
  52. package/src/components/landing/landing-footer/index.ts +3 -3
  53. package/src/components/landing/landing-navbar/LandingNavbar.vue +51 -19
  54. package/src/components/landing/landing-navbar/index.ts +2 -2
  55. package/src/components/landing/landing-shell/LandingShell.vue +12 -15
  56. package/src/components/landing/landing-shell/index.ts +2 -2
  57. package/src/components/language-flag/LanguageFlag.vue +6 -5
  58. package/src/components/language-flag/index.ts +1 -0
  59. package/src/components/language-selector/LanguageSelector.vue +20 -21
  60. package/src/components/load-more-button/LoadMoreButton.vue +18 -14
  61. package/src/components/loading-state-card/LoadingStateCard.vue +13 -9
  62. package/src/components/message-dialog/MessageDialog.vue +19 -19
  63. package/src/components/message-dialog/index.ts +3 -11
  64. package/src/components/message-dialog/message-dialog-state.ts +12 -11
  65. package/src/components/message-toast/MessageToast.vue +16 -16
  66. package/src/components/message-toast/index.ts +2 -9
  67. package/src/components/message-toast/message-toast-state.ts +9 -9
  68. package/src/components/page-header/PageHeader.vue +8 -5
  69. package/src/components/progress-component/ProgressComponent.vue +13 -10
  70. package/src/components/single-value-card/SingleValueCard.vue +22 -19
  71. package/src/components/slider-form-component/SliderFormComponent.vue +11 -20
  72. package/src/components/slider-form-component/index.ts +2 -2
  73. package/src/components/switch-form-component/SwitchFormComponent.vue +7 -9
  74. package/src/components/switch-form-component/index.ts +2 -2
  75. package/src/components/text-link/TextLink.vue +11 -7
  76. package/src/components/ui/accordion/Accordion.vue +10 -13
  77. package/src/components/ui/accordion/index.ts +1 -1
  78. package/src/components/ui/alert/Alert.vue +11 -10
  79. package/src/components/ui/alert/AlertDescription.vue +9 -8
  80. package/src/components/ui/alert/AlertTitle.vue +9 -8
  81. package/src/components/ui/alert/index.ts +10 -10
  82. package/src/components/ui/alert-dialog/AlertDialog.vue +13 -9
  83. package/src/components/ui/alert-dialog/AlertDialogAction.vue +14 -12
  84. package/src/components/ui/alert-dialog/AlertDialogCancel.vue +14 -16
  85. package/src/components/ui/alert-dialog/AlertDialogContent.vue +24 -27
  86. package/src/components/ui/alert-dialog/AlertDialogDescription.vue +13 -13
  87. package/src/components/ui/alert-dialog/AlertDialogFooter.vue +9 -12
  88. package/src/components/ui/alert-dialog/AlertDialogHeader.vue +9 -8
  89. package/src/components/ui/alert-dialog/AlertDialogTitle.vue +13 -11
  90. package/src/components/ui/alert-dialog/AlertDialogTrigger.vue +8 -7
  91. package/src/components/ui/alert-dialog/index.ts +9 -9
  92. package/src/components/ui/badge/Badge.vue +11 -12
  93. package/src/components/ui/badge/index.ts +1 -1
  94. package/src/components/ui/breadcrumb/Breadcrumb.vue +9 -12
  95. package/src/components/ui/breadcrumb/BreadcrumbEllipsis.vue +15 -19
  96. package/src/components/ui/breadcrumb/BreadcrumbItem.vue +10 -12
  97. package/src/components/ui/breadcrumb/BreadcrumbLink.vue +13 -17
  98. package/src/components/ui/breadcrumb/BreadcrumbList.vue +10 -12
  99. package/src/components/ui/breadcrumb/BreadcrumbPage.vue +10 -15
  100. package/src/components/ui/breadcrumb/BreadcrumbSeparator.vue +14 -18
  101. package/src/components/ui/breadcrumb/index.ts +7 -7
  102. package/src/components/ui/busy/Busy.vue +36 -29
  103. package/src/components/ui/busy/index.ts +1 -1
  104. package/src/components/ui/button/Button.vue +18 -19
  105. package/src/components/ui/button/index.ts +54 -35
  106. package/src/components/ui/calendar/Calendar.vue +167 -121
  107. package/src/components/ui/calendar/CalendarCell.vue +18 -17
  108. package/src/components/ui/calendar/CalendarCellTrigger.vue +31 -33
  109. package/src/components/ui/calendar/CalendarGrid.vue +14 -17
  110. package/src/components/ui/calendar/CalendarGridBody.vue +9 -11
  111. package/src/components/ui/calendar/CalendarGridHead.vue +10 -12
  112. package/src/components/ui/calendar/CalendarGridRow.vue +14 -16
  113. package/src/components/ui/calendar/CalendarHeadCell.vue +18 -17
  114. package/src/components/ui/calendar/CalendarHeader.vue +18 -17
  115. package/src/components/ui/calendar/CalendarHeading.vue +18 -22
  116. package/src/components/ui/calendar/CalendarNextButton.vue +29 -26
  117. package/src/components/ui/calendar/CalendarPrevButton.vue +29 -26
  118. package/src/components/ui/calendar/index.ts +17 -13
  119. package/src/components/ui/card/Card.vue +21 -13
  120. package/src/components/ui/card/CardAction.vue +12 -7
  121. package/src/components/ui/card/CardContent.vue +8 -7
  122. package/src/components/ui/card/CardDescription.vue +16 -7
  123. package/src/components/ui/card/CardFooter.vue +8 -7
  124. package/src/components/ui/card/CardHeader.vue +12 -7
  125. package/src/components/ui/card/CardText.vue +12 -7
  126. package/src/components/ui/card/CardTitle.vue +9 -7
  127. package/src/components/ui/card/index.ts +8 -8
  128. package/src/components/ui/command/Command.vue +71 -61
  129. package/src/components/ui/command/CommandDialog.vue +33 -23
  130. package/src/components/ui/command/CommandEmpty.vue +19 -20
  131. package/src/components/ui/command/CommandGroup.vue +32 -35
  132. package/src/components/ui/command/CommandInput.vue +25 -21
  133. package/src/components/ui/command/CommandItem.vue +62 -59
  134. package/src/components/ui/command/CommandList.vue +21 -18
  135. package/src/components/ui/command/CommandSeparator.vue +13 -11
  136. package/src/components/ui/command/CommandShortcut.vue +13 -8
  137. package/src/components/ui/command/index.ts +24 -20
  138. package/src/components/ui/date-picker/DatePicker.vue +46 -37
  139. package/src/components/ui/date-picker/index.ts +2 -2
  140. package/src/components/ui/date-time-picker/DateTimePicker.vue +99 -95
  141. package/src/components/ui/date-time-picker/index.ts +2 -2
  142. package/src/components/ui/dialog/Dialog.vue +12 -9
  143. package/src/components/ui/dialog/DialogClose.vue +8 -10
  144. package/src/components/ui/dialog/DialogContent.vue +36 -42
  145. package/src/components/ui/dialog/DialogDescription.vue +16 -11
  146. package/src/components/ui/dialog/DialogFooter.vue +13 -12
  147. package/src/components/ui/dialog/DialogHeader.vue +9 -8
  148. package/src/components/ui/dialog/DialogOverlay.vue +16 -11
  149. package/src/components/ui/dialog/DialogScrollContent.vue +47 -45
  150. package/src/components/ui/dialog/DialogTitle.vue +13 -12
  151. package/src/components/ui/dialog/DialogTrigger.vue +8 -7
  152. package/src/components/ui/dialog/index.ts +10 -10
  153. package/src/components/ui/field/Field.vue +12 -14
  154. package/src/components/ui/field/FieldContent.vue +13 -11
  155. package/src/components/ui/field/FieldDescription.vue +15 -13
  156. package/src/components/ui/field/FieldError.vue +43 -40
  157. package/src/components/ui/field/FieldGroup.vue +13 -11
  158. package/src/components/ui/field/FieldLabel.vue +16 -14
  159. package/src/components/ui/field/FieldLegend.vue +16 -14
  160. package/src/components/ui/field/FieldSeparator.vue +17 -15
  161. package/src/components/ui/field/FieldSet.vue +14 -12
  162. package/src/components/ui/field/FieldTitle.vue +13 -11
  163. package/src/components/ui/field/index.ts +36 -36
  164. package/src/components/ui/input/Input.vue +23 -20
  165. package/src/components/ui/input/index.ts +1 -1
  166. package/src/components/ui/label/Label.vue +16 -15
  167. package/src/components/ui/label/index.ts +1 -1
  168. package/src/components/ui/native-select/NativeSelect.vue +31 -41
  169. package/src/components/ui/native-select/NativeSelectOptGroup.vue +8 -7
  170. package/src/components/ui/native-select/NativeSelectOption.vue +8 -7
  171. package/src/components/ui/native-select/index.ts +3 -3
  172. package/src/components/ui/popover/Popover.vue +12 -9
  173. package/src/components/ui/popover/PopoverAnchor.vue +8 -7
  174. package/src/components/ui/popover/PopoverContent.vue +27 -31
  175. package/src/components/ui/popover/PopoverTrigger.vue +8 -7
  176. package/src/components/ui/popover/index.ts +4 -4
  177. package/src/components/ui/progress/Progress.vue +18 -32
  178. package/src/components/ui/progress/index.ts +1 -1
  179. package/src/components/ui/scroll-area/ScrollArea.vue +23 -26
  180. package/src/components/ui/scroll-area/ScrollBar.vue +22 -26
  181. package/src/components/ui/scroll-area/index.ts +2 -2
  182. package/src/components/ui/select/Select.vue +12 -9
  183. package/src/components/ui/select/SelectContent.vue +39 -40
  184. package/src/components/ui/select/SelectGroup.vue +8 -7
  185. package/src/components/ui/select/SelectItem.vue +36 -41
  186. package/src/components/ui/select/SelectItemContent.vue +22 -15
  187. package/src/components/ui/select/SelectItemText.vue +8 -7
  188. package/src/components/ui/select/SelectLabel.vue +10 -9
  189. package/src/components/ui/select/SelectScrollDownButton.vue +21 -17
  190. package/src/components/ui/select/SelectScrollUpButton.vue +21 -17
  191. package/src/components/ui/select/SelectSeparator.vue +11 -9
  192. package/src/components/ui/select/SelectTrigger.vue +27 -25
  193. package/src/components/ui/select/SelectValue.vue +8 -7
  194. package/src/components/ui/select/SelectValueContent.vue +30 -18
  195. package/src/components/ui/select/index.ts +13 -13
  196. package/src/components/ui/separator/Separator.vue +17 -18
  197. package/src/components/ui/separator/index.ts +1 -1
  198. package/src/components/ui/sheet/Sheet.vue +12 -9
  199. package/src/components/ui/sheet/SheetClose.vue +8 -7
  200. package/src/components/ui/sheet/SheetContent.vue +36 -37
  201. package/src/components/ui/sheet/SheetDescription.vue +12 -11
  202. package/src/components/ui/sheet/SheetFooter.vue +8 -7
  203. package/src/components/ui/sheet/SheetHeader.vue +8 -7
  204. package/src/components/ui/sheet/SheetOverlay.vue +16 -11
  205. package/src/components/ui/sheet/SheetTitle.vue +12 -11
  206. package/src/components/ui/sheet/SheetTrigger.vue +8 -7
  207. package/src/components/ui/sheet/index.ts +8 -8
  208. package/src/components/ui/sidebar/Sidebar.vue +68 -61
  209. package/src/components/ui/sidebar/SidebarContent.vue +13 -8
  210. package/src/components/ui/sidebar/SidebarFooter.vue +13 -8
  211. package/src/components/ui/sidebar/SidebarGroup.vue +13 -8
  212. package/src/components/ui/sidebar/SidebarGroupAction.vue +16 -16
  213. package/src/components/ui/sidebar/SidebarGroupContent.vue +9 -8
  214. package/src/components/ui/sidebar/SidebarGroupLabel.vue +15 -14
  215. package/src/components/ui/sidebar/SidebarHeader.vue +13 -8
  216. package/src/components/ui/sidebar/SidebarInput.vue +14 -12
  217. package/src/components/ui/sidebar/SidebarInset.vue +14 -12
  218. package/src/components/ui/sidebar/SidebarMenu.vue +9 -8
  219. package/src/components/ui/sidebar/SidebarMenuAction.vue +25 -23
  220. package/src/components/ui/sidebar/SidebarMenuBadge.vue +19 -17
  221. package/src/components/ui/sidebar/SidebarMenuButton.vue +33 -32
  222. package/src/components/ui/sidebar/SidebarMenuButtonChild.vue +19 -18
  223. package/src/components/ui/sidebar/SidebarMenuItem.vue +9 -8
  224. package/src/components/ui/sidebar/SidebarMenuSkeleton.vue +17 -12
  225. package/src/components/ui/sidebar/SidebarMenuSub.vue +14 -12
  226. package/src/components/ui/sidebar/SidebarMenuSubButton.vue +24 -21
  227. package/src/components/ui/sidebar/SidebarMenuSubItem.vue +9 -8
  228. package/src/components/ui/sidebar/SidebarProvider.vue +63 -53
  229. package/src/components/ui/sidebar/SidebarRail.vue +20 -18
  230. package/src/components/ui/sidebar/SidebarSeparator.vue +10 -9
  231. package/src/components/ui/sidebar/SidebarTrigger.vue +15 -14
  232. package/src/components/ui/sidebar/index.ts +62 -58
  233. package/src/components/ui/sidebar/utils.ts +16 -16
  234. package/src/components/ui/skeleton/Skeleton.vue +12 -9
  235. package/src/components/ui/skeleton/index.ts +1 -1
  236. package/src/components/ui/slider/Slider.vue +24 -19
  237. package/src/components/ui/slider/index.ts +1 -1
  238. package/src/components/ui/switch/Switch.vue +26 -23
  239. package/src/components/ui/switch/index.ts +1 -1
  240. package/src/components/ui/table/Table.vue +11 -10
  241. package/src/components/ui/table/TableBody.vue +9 -11
  242. package/src/components/ui/table/TableCaption.vue +9 -11
  243. package/src/components/ui/table/TableCell.vue +13 -16
  244. package/src/components/ui/table/TableEmpty.vue +22 -25
  245. package/src/components/ui/table/TableFooter.vue +13 -11
  246. package/src/components/ui/table/TableHead.vue +13 -11
  247. package/src/components/ui/table/TableHeader.vue +9 -11
  248. package/src/components/ui/table/TableRow.vue +13 -11
  249. package/src/components/ui/table/index.ts +9 -9
  250. package/src/components/ui/tabs/Tabs.vue +18 -18
  251. package/src/components/ui/tabs/TabsContent.vue +14 -15
  252. package/src/components/ui/tabs/TabsList.vue +18 -18
  253. package/src/components/ui/tabs/TabsTrigger.vue +19 -20
  254. package/src/components/ui/tabs/index.ts +4 -4
  255. package/src/components/ui/textarea/Textarea.vue +23 -20
  256. package/src/components/ui/textarea/index.ts +1 -1
  257. package/src/components/ui/time-picker/TimePicker.vue +33 -38
  258. package/src/components/ui/time-picker/index.ts +2 -2
  259. package/src/components/ui/tooltip/Tooltip.vue +12 -9
  260. package/src/components/ui/tooltip/TooltipContent.vue +28 -20
  261. package/src/components/ui/tooltip/TooltipProvider.vue +9 -8
  262. package/src/components/ui/tooltip/TooltipTrigger.vue +8 -7
  263. package/src/components/ui/tooltip/index.ts +4 -4
  264. package/src/i18n/de.json +5 -0
  265. package/src/i18n/en.json +5 -0
  266. package/src/i18n/es.json +5 -0
  267. package/src/i18n/fr.json +5 -0
  268. package/src/i18n/it.json +5 -0
  269. package/src/i18n/ja.json +5 -0
  270. package/src/i18n/pt.json +5 -0
  271. package/src/i18n/ru.json +5 -0
  272. package/src/i18n/zh.json +5 -0
  273. package/src/lib/common-types.ts +2 -0
  274. package/src/lib/i18n.ts +0 -5
  275. package/src/runtime/{ui-vintage-i18n-plugin.js → ui-vintage-i18n-plugin.ts} +30 -8
@@ -1,14 +1,15 @@
1
1
  <script setup lang="ts">
2
- import type { HTMLAttributes } from "vue"
3
- import { cn } from "../../../lib/utils"
2
+ import type { HTMLAttributes } from 'vue';
3
+ import { cn } from '../../../lib/utils';
4
4
 
5
+ // Props
5
6
  const props = defineProps<{
6
- class?: HTMLAttributes["class"]
7
- }>()
7
+ class?: HTMLAttributes['class'];
8
+ }>();
8
9
  </script>
9
10
 
10
11
  <template>
11
- <div data-slot="card-footer" :class="cn('flex items-center px-6 [.border-t]:pt-6', props.class)">
12
- <slot />
13
- </div>
12
+ <div data-slot="card-footer" :class="cn('flex items-center px-6 [.border-t]:pt-6', props.class)">
13
+ <slot />
14
+ </div>
14
15
  </template>
@@ -1,14 +1,19 @@
1
1
  <script setup lang="ts">
2
- import type { HTMLAttributes } from "vue"
3
- import { cn } from "../../../lib/utils"
2
+ import type { HTMLAttributes } from 'vue';
3
+ import { cn } from '../../../lib/utils';
4
4
 
5
+ // Props
5
6
  const props = defineProps<{
6
- class?: HTMLAttributes["class"]
7
- }>()
7
+ class?: HTMLAttributes['class'];
8
+ }>();
8
9
  </script>
9
10
 
10
11
  <template>
11
- <div data-slot="card-header" :class="cn('@container/card-header grid auto-rows-min items-start px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6 gap-2', props.class)">
12
- <slot />
13
- </div>
12
+ <div data-slot="card-header" :class="cn(
13
+ '@container/card-header grid auto-rows-min items-start px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6 gap-2',
14
+ props.class,
15
+ )
16
+ ">
17
+ <slot />
18
+ </div>
14
19
  </template>
@@ -1,14 +1,19 @@
1
1
  <script setup lang="ts">
2
- import type { HTMLAttributes } from "vue"
3
- import { cn } from "../../../lib/utils"
2
+ import type { HTMLAttributes } from 'vue';
3
+ import { cn } from '../../../lib/utils';
4
4
 
5
+ // Props
5
6
  const props = defineProps<{
6
- class?: HTMLAttributes["class"]
7
- }>()
7
+ class?: HTMLAttributes['class'];
8
+ }>();
8
9
  </script>
9
10
 
10
11
  <template>
11
- <p data-slot="card-text" :class="cn('text-xs sm:text-sm text-[var(--text-secondary-light)] dark:text-[var(--text-secondary-dark)]', props.class)">
12
- <slot />
13
- </p>
12
+ <p data-slot="card-text" :class="cn(
13
+ 'text-xs sm:text-sm text-(--text-secondary-light) dark:text-(--text-secondary-dark)',
14
+ props.class,
15
+ )
16
+ ">
17
+ <slot />
18
+ </p>
14
19
  </template>
@@ -1,14 +1,16 @@
1
1
  <script setup lang="ts">
2
- import type { HTMLAttributes } from "vue"
3
- import { cn } from "../../../lib/utils"
2
+ import type { HTMLAttributes } from 'vue';
3
+ import { cn } from '../../../lib/utils';
4
4
 
5
+ // Props
5
6
  const props = defineProps<{
6
- class?: HTMLAttributes["class"]
7
- }>()
7
+ class?: HTMLAttributes['class'];
8
+ }>();
8
9
  </script>
9
10
 
10
11
  <template>
11
- <h3 data-slot="card-title" :class="cn('leading-none font-semibold text-sm sm:text-base', props.class)">
12
- <slot />
13
- </h3>
12
+ <h3 data-slot="card-title" :class="cn('leading-none font-semibold text-sm sm:text-base', props.class)
13
+ ">
14
+ <slot />
15
+ </h3>
14
16
  </template>
@@ -1,8 +1,8 @@
1
- export { default as Card } from "./Card.vue"
2
- export { default as CardAction } from "./CardAction.vue"
3
- export { default as CardContent } from "./CardContent.vue"
4
- export { default as CardText } from "./CardText.vue"
5
- export { default as CardDescription } from "./CardDescription.vue"
6
- export { default as CardFooter } from "./CardFooter.vue"
7
- export { default as CardHeader } from "./CardHeader.vue"
8
- export { default as CardTitle } from "./CardTitle.vue"
1
+ export { default as Card } from './Card.vue';
2
+ export { default as CardAction } from './CardAction.vue';
3
+ export { default as CardContent } from './CardContent.vue';
4
+ export { default as CardText } from './CardText.vue';
5
+ export { default as CardDescription } from './CardDescription.vue';
6
+ export { default as CardFooter } from './CardFooter.vue';
7
+ export { default as CardHeader } from './CardHeader.vue';
8
+ export { default as CardTitle } from './CardTitle.vue';
@@ -1,83 +1,93 @@
1
1
  <script setup lang="ts">
2
- import type { ListboxRootEmits, ListboxRootProps } from "reka-ui"
3
- import type { HTMLAttributes } from "vue"
4
- import { reactiveOmit } from "@vueuse/core"
5
- import { ListboxRoot, useFilter, useForwardPropsEmits } from "reka-ui"
6
- import { reactive, ref, watch } from "vue"
7
- import { cn } from "../../../lib/utils"
8
- import { provideCommandContext } from "."
2
+ import type { ListboxRootEmits, ListboxRootProps } from 'reka-ui';
3
+ import type { HTMLAttributes } from 'vue';
4
+ import { reactiveOmit } from '@vueuse/core';
5
+ import { ListboxRoot, useFilter, useForwardPropsEmits } from 'reka-ui';
6
+ import { reactive, ref, watch } from 'vue';
7
+ import { cn } from '../../../lib/utils';
8
+ import { provideCommandContext } from '.';
9
9
 
10
- const props = withDefaults(defineProps<ListboxRootProps & { class?: HTMLAttributes["class"] }>(), {
11
- modelValue: "",
12
- })
10
+ // Props
11
+ const props = withDefaults(defineProps<ListboxRootProps & { class?: HTMLAttributes['class'] }>(), {
12
+ modelValue: ''
13
+ });
13
14
 
14
- const emits = defineEmits<ListboxRootEmits>()
15
+ // Emits
16
+ const emits = defineEmits<ListboxRootEmits>();
15
17
 
16
- const delegatedProps = reactiveOmit(props, "class")
18
+ // Omit local class from delegated props
19
+ const delegatedProps = reactiveOmit(props, 'class');
17
20
 
18
- const forwarded = useForwardPropsEmits(delegatedProps, emits)
21
+ // Forward props
22
+ const forwarded = useForwardPropsEmits(delegatedProps, emits);
19
23
 
20
- const allItems = ref<Map<string, string>>(new Map())
21
- const allGroups = ref<Map<string, Set<string>>>(new Map())
24
+ const allItems = ref<Map<string, string>>(new Map());
25
+ const allGroups = ref<Map<string, Set<string>>>(new Map());
22
26
 
23
- const { contains } = useFilter({ sensitivity: "base" })
27
+ const { contains } = useFilter({ sensitivity: 'base' });
24
28
  const filterState = reactive({
25
- search: "",
26
- filtered: {
27
- /** The count of all visible items. */
28
- count: 0,
29
- /** Map from visible item id to its search score. */
30
- items: new Map() as Map<string, number>,
31
- /** Set of groups with at least one visible item. */
32
- groups: new Set() as Set<string>,
33
- },
34
- })
29
+ search: '',
30
+ filtered: {
31
+ /** The count of all visible items. */
32
+ count: 0,
33
+ /** Map from visible item id to its search score. */
34
+ items: new Map() as Map<string, number>,
35
+ /** Set of groups with at least one visible item. */
36
+ groups: new Set() as Set<string>,
37
+ },
38
+ });
35
39
 
36
40
  function filterItems() {
37
- if (!filterState.search) {
38
- filterState.filtered.count = allItems.value.size
39
- // Do nothing, each item will know to show itself because search is empty
40
- return
41
- }
41
+ if (!filterState.search) {
42
+ filterState.filtered.count = allItems.value.size;
43
+ // Do nothing, each item will know to show itself because search is empty
44
+ return;
45
+ }
42
46
 
43
- // Reset the groups
44
- filterState.filtered.groups = new Set()
45
- let itemCount = 0
47
+ // Reset the groups
48
+ filterState.filtered.groups = new Set();
49
+ let itemCount = 0;
46
50
 
47
- // Check which items should be included
48
- for (const [id, value] of allItems.value) {
49
- const score = contains(value, filterState.search)
50
- filterState.filtered.items.set(id, score ? 1 : 0)
51
- if (score)
52
- itemCount++
53
- }
51
+ // Check which items should be included
52
+ for (const [id, value] of allItems.value) {
53
+ const score = contains(value, filterState.search);
54
+ filterState.filtered.items.set(id, score ? 1 : 0);
55
+ if (score) itemCount++;
56
+ }
54
57
 
55
- // Check which groups have at least 1 item shown
56
- for (const [groupId, group] of allGroups.value) {
57
- for (const itemId of group) {
58
- if (filterState.filtered.items.get(itemId)! > 0) {
59
- filterState.filtered.groups.add(groupId)
60
- break
61
- }
58
+ // Check which groups have at least 1 item shown
59
+ for (const [groupId, group] of allGroups.value) {
60
+ for (const itemId of group) {
61
+ if (filterState.filtered.items.get(itemId)! > 0) {
62
+ filterState.filtered.groups.add(groupId);
63
+ break;
64
+ }
65
+ }
62
66
  }
63
- }
64
67
 
65
- filterState.filtered.count = itemCount
68
+ filterState.filtered.count = itemCount;
66
69
  }
67
70
 
68
- watch(() => filterState.search, () => {
69
- filterItems()
70
- })
71
+ watch(
72
+ () => filterState.search,
73
+ () => {
74
+ filterItems();
75
+ },
76
+ );
71
77
 
72
78
  provideCommandContext({
73
- allItems,
74
- allGroups,
75
- filterState,
76
- })
79
+ allItems,
80
+ allGroups,
81
+ filterState,
82
+ });
77
83
  </script>
78
84
 
79
85
  <template>
80
- <ListboxRoot data-slot="command" v-bind="forwarded" :class="cn('bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded transition-colors duration-300 ease-in-out', props.class)">
81
- <slot />
82
- </ListboxRoot>
83
- </template>
86
+ <ListboxRoot data-slot="command" v-bind="forwarded" :class="cn(
87
+ 'bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded transition-colors duration-300 ease-in-out',
88
+ props.class,
89
+ )
90
+ ">
91
+ <slot />
92
+ </ListboxRoot>
93
+ </template>
@@ -1,31 +1,41 @@
1
1
  <script setup lang="ts">
2
- import type { DialogRootEmits, DialogRootProps } from "reka-ui"
3
- import { useForwardPropsEmits } from "reka-ui"
4
- import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '../dialog'
5
- import Command from "./Command.vue"
2
+ import type { DialogRootEmits, DialogRootProps } from 'reka-ui';
3
+ import { useForwardPropsEmits } from 'reka-ui';
4
+ import {
5
+ Dialog,
6
+ DialogContent,
7
+ DialogDescription,
8
+ DialogHeader,
9
+ DialogTitle,
10
+ } from '../dialog';
11
+ import Command from './Command.vue';
6
12
 
13
+ // Props
7
14
  const props = withDefaults(defineProps<DialogRootProps & {
8
- title?: string
9
- description?: string
15
+ title?: string;
16
+ description?: string;
10
17
  }>(), {
11
- title: "Command Palette",
12
- description: "Search for a command to run...",
13
- })
14
- const emits = defineEmits<DialogRootEmits>()
18
+ title: 'Command Palette',
19
+ description: 'Search for a command to run...'
20
+ });
15
21
 
16
- const forwarded = useForwardPropsEmits(props, emits)
22
+ // Emits
23
+ const emits = defineEmits<DialogRootEmits>();
24
+
25
+ // Forward props
26
+ const forwarded = useForwardPropsEmits(props, emits);
17
27
  </script>
18
28
 
19
29
  <template>
20
- <Dialog v-slot="slotProps" v-bind="forwarded">
21
- <DialogContent class="overflow-hidden p-0 ">
22
- <DialogHeader class="sr-only">
23
- <DialogTitle>{{ title }}</DialogTitle>
24
- <DialogDescription>{{ description }}</DialogDescription>
25
- </DialogHeader>
26
- <Command>
27
- <slot v-bind="slotProps" />
28
- </Command>
29
- </DialogContent>
30
- </Dialog>
31
- </template>
30
+ <Dialog v-slot="slotProps" v-bind="forwarded">
31
+ <DialogContent class="overflow-hidden p-0">
32
+ <DialogHeader class="sr-only">
33
+ <DialogTitle>{{ title }}</DialogTitle>
34
+ <DialogDescription>{{ description }}</DialogDescription>
35
+ </DialogHeader>
36
+ <Command>
37
+ <slot v-bind="slotProps" />
38
+ </Command>
39
+ </DialogContent>
40
+ </Dialog>
41
+ </template>
@@ -1,27 +1,26 @@
1
1
  <script setup lang="ts">
2
- import type { PrimitiveProps } from "reka-ui"
3
- import type { HTMLAttributes } from "vue"
4
- import { reactiveOmit } from "@vueuse/core"
5
- import { Primitive } from "reka-ui"
6
- import { computed } from "vue"
7
- import { cn } from "../../../lib/utils"
8
- import { useCommand } from "."
2
+ import type { PrimitiveProps } from 'reka-ui';
3
+ import type { HTMLAttributes } from 'vue';
4
+ import { reactiveOmit } from '@vueuse/core';
5
+ import { Primitive } from 'reka-ui';
6
+ import { computed } from 'vue';
7
+ import { cn } from '../../../lib/utils';
8
+ import { useCommand } from '.';
9
9
 
10
- const props = defineProps<PrimitiveProps & { class?: HTMLAttributes["class"] }>()
10
+ // Props
11
+ const props = defineProps<PrimitiveProps & { class?: HTMLAttributes['class'] }>();
11
12
 
12
- const delegatedProps = reactiveOmit(props, "class")
13
+ // Omit local class from delegated props
14
+ const delegatedProps = reactiveOmit(props, 'class');
13
15
 
14
- const { filterState } = useCommand()
15
- const isRender = computed(() => !!filterState.search && filterState.filtered.count === 0,
16
- )
16
+ const { filterState } = useCommand();
17
+ const isRender = computed(
18
+ () => !!filterState.search && filterState.filtered.count === 0,
19
+ );
17
20
  </script>
18
21
 
19
22
  <template>
20
- <Primitive
21
- v-if="isRender"
22
- data-slot="command-empty"
23
- v-bind="delegatedProps" :class="cn('py-6 text-center text-sm', props.class)"
24
- >
25
- <slot />
26
- </Primitive>
27
- </template>
23
+ <Primitive v-if="isRender" data-slot="command-empty" v-bind="delegatedProps" :class="cn('py-6 text-center text-sm', props.class)">
24
+ <slot />
25
+ </Primitive>
26
+ </template>
@@ -1,47 +1,44 @@
1
1
  <script setup lang="ts">
2
- import type { ListboxGroupProps } from "reka-ui"
3
- import type { HTMLAttributes } from "vue"
4
- import { reactiveOmit } from "@vueuse/core"
5
- import { ListboxGroup, ListboxGroupLabel, useId } from "reka-ui"
6
- import { computed, onMounted, onUnmounted } from "vue"
7
- import { cn } from "../../../lib/utils"
8
- import { provideCommandGroupContext, useCommand } from "."
2
+ import type { ListboxGroupProps } from 'reka-ui';
3
+ import type { HTMLAttributes } from 'vue';
4
+ import { reactiveOmit } from '@vueuse/core';
5
+ import { ListboxGroup, ListboxGroupLabel, useId } from 'reka-ui';
6
+ import { computed, onMounted, onUnmounted } from 'vue';
7
+ import { cn } from '../../../lib/utils';
8
+ import { provideCommandGroupContext, useCommand } from '.';
9
9
 
10
+ // Props
10
11
  const props = defineProps<ListboxGroupProps & {
11
- class?: HTMLAttributes["class"]
12
- heading?: string
13
- }>()
12
+ class?: HTMLAttributes['class'];
13
+ heading?: string;
14
+ }>();
14
15
 
15
- const delegatedProps = reactiveOmit(props, "class")
16
+ // Omit local class from delegated props
17
+ const delegatedProps = reactiveOmit(props, 'class');
16
18
 
17
- const { allGroups, filterState } = useCommand()
18
- const id = useId()
19
+ const { allGroups, filterState } = useCommand();
20
+ const id = useId();
19
21
 
20
- const isRender = computed(() => !filterState.search ? true : filterState.filtered.groups.has(id))
22
+ const isRender = computed(() =>
23
+ !filterState.search ? true : filterState.filtered.groups.has(id),
24
+ );
21
25
 
22
- provideCommandGroupContext({ id })
26
+ provideCommandGroupContext({ id });
23
27
  onMounted(() => {
24
- if (!allGroups.value.has(id))
25
- allGroups.value.set(id, new Set())
26
- })
28
+ if (!allGroups.value.has(id)) allGroups.value.set(id, new Set());
29
+ });
27
30
  onUnmounted(() => {
28
- allGroups.value.delete(id)
29
- })
31
+ allGroups.value.delete(id);
32
+ });
30
33
  </script>
31
34
 
32
35
  <template>
33
- <ListboxGroup
34
- v-bind="delegatedProps"
35
- :id="id"
36
- data-slot="command-group"
37
- :class="cn('text-foreground overflow-hidden', props.class)"
38
- :hidden="isRender ? undefined : true"
39
- >
40
- <ListboxGroupLabel v-if="heading" data-slot="command-group-heading" class="border-b border-(--border-light) px-3 py-2 text-xs font-semibold uppercase tracking-[0.16em] text-(--text-secondary-light) dark:border-(--border-dark) dark:text-(--text-secondary-dark)">
41
- {{ heading }}
42
- </ListboxGroupLabel>
43
- <div class="p-2">
44
- <slot />
45
- </div>
46
- </ListboxGroup>
47
- </template>
36
+ <ListboxGroup v-bind="delegatedProps" :id="id" data-slot="command-group" :class="cn('text-foreground overflow-hidden', props.class)" :hidden="isRender ? undefined : true">
37
+ <ListboxGroupLabel v-if="heading" data-slot="command-group-heading" class="border-b border-(--border-light) px-3 py-2 text-xs font-semibold uppercase tracking-[0.16em] text-(--text-secondary-light) dark:border-(--border-dark) dark:text-(--text-secondary-dark)">
38
+ {{ heading }}
39
+ </ListboxGroupLabel>
40
+ <div class="p-2">
41
+ <slot />
42
+ </div>
43
+ </ListboxGroup>
44
+ </template>
@@ -1,31 +1,35 @@
1
1
  <script setup lang="ts">
2
- import type { ListboxFilterProps } from "reka-ui"
3
- import type { HTMLAttributes } from "vue"
4
- import { reactiveOmit } from "@vueuse/core"
5
- import { Search01Icon } from "@hugeicons/core-free-icons"
6
- import { HugeiconsIcon } from "@hugeicons/vue"
7
- import { ListboxFilter, useForwardProps } from "reka-ui"
8
- import { cn } from "../../../lib/utils"
9
- import { useCommand } from "."
2
+ import type { ListboxFilterProps } from 'reka-ui';
3
+ import type { HTMLAttributes } from 'vue';
4
+ import { reactiveOmit } from '@vueuse/core';
5
+ import { Search01Icon } from '@hugeicons/core-free-icons';
6
+ import { HugeiconsIcon } from '@hugeicons/vue';
7
+ import { ListboxFilter, useForwardProps } from 'reka-ui';
8
+ import { cn } from '../../../lib/utils';
9
+ import { useCommand } from '.';
10
10
 
11
11
  defineOptions({
12
- inheritAttrs: false,
13
- })
12
+ inheritAttrs: false,
13
+ });
14
14
 
15
- const props = defineProps<ListboxFilterProps & {
16
- class?: HTMLAttributes["class"]
17
- }>()
15
+ // Props
16
+ const props = defineProps<ListboxFilterProps & { class?: HTMLAttributes['class'] }>();
18
17
 
19
- const delegatedProps = reactiveOmit(props, "class")
18
+ // Omit local class from delegated props
19
+ const delegatedProps = reactiveOmit(props, 'class');
20
20
 
21
- const forwardedProps = useForwardProps(delegatedProps)
21
+ const forwardedProps = useForwardProps(delegatedProps);
22
22
 
23
- const { filterState } = useCommand()
23
+ const { filterState } = useCommand();
24
24
  </script>
25
25
 
26
26
  <template>
27
- <div data-slot="command-input-wrapper" class="flex h-9 items-center gap-2 border-b px-3">
28
- <HugeiconsIcon :icon="Search01Icon" class="size-4 shrink-0 opacity-50" />
29
- <ListboxFilter v-bind="{ ...forwardedProps, ...$attrs }" v-model="filterState.search" data-slot="command-input" auto-focus :class="cn('placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50', props.class)" />
30
- </div>
31
- </template>
27
+ <div data-slot="command-input-wrapper" class="flex h-9 items-center gap-2 border-b px-3">
28
+ <HugeiconsIcon :icon="Search01Icon" class="size-4 shrink-0 opacity-50" />
29
+ <ListboxFilter v-bind="{ ...forwardedProps, ...$attrs }" v-model="filterState.search" data-slot="command-input" auto-focus :class="cn(
30
+ 'placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50',
31
+ props.class,
32
+ )
33
+ " />
34
+ </div>
35
+ </template>