@aleph-alpha/ui-library 1.11.0 → 1.13.0

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 (545) hide show
  1. package/README.md +78 -3
  2. package/config.d.ts +185 -1
  3. package/config.js +549 -6
  4. package/dist/system/index.d.ts +1788 -407
  5. package/dist/system/lib.js +48817 -24028
  6. package/package.json +3 -3
  7. package/src/__tests__/test-utils.ts +46 -0
  8. package/src/{primitives → components}/UiAccordion/UiAccordion.stories.ts +26 -2
  9. package/src/{primitives → components}/UiAccordion/UiAccordion.vue +1 -1
  10. package/src/{primitives → components}/UiAccordion/UiAccordionContent.vue +1 -1
  11. package/src/{primitives → components}/UiAccordion/UiAccordionItem.vue +1 -1
  12. package/src/{primitives → components}/UiAccordion/UiAccordionTrigger.vue +1 -1
  13. package/src/{primitives → components}/UiAccordion/types.ts +0 -1
  14. package/src/{primitives → components}/UiAlert/UiAlert.stories.ts +9 -9
  15. package/src/{primitives → components}/UiAlert/UiAlert.vue +1 -1
  16. package/src/{primitives → components}/UiAlert/UiAlertDescription.vue +1 -1
  17. package/src/{primitives → components}/UiAlert/UiAlertTitle.vue +1 -1
  18. package/src/{primitives → components}/UiAlert/types.ts +2 -1
  19. package/src/{primitives → components}/UiAlertDialog/UiAlertDialog.stories.ts +1 -1
  20. package/src/{primitives → components}/UiAlertDialog/UiAlertDialog.vue +1 -1
  21. package/src/{primitives → components}/UiAlertDialog/UiAlertDialogAction.vue +1 -1
  22. package/src/{primitives → components}/UiAlertDialog/UiAlertDialogCancel.vue +1 -1
  23. package/src/{primitives → components}/UiAlertDialog/UiAlertDialogContent.vue +1 -1
  24. package/src/{primitives → components}/UiAlertDialog/UiAlertDialogDescription.vue +1 -1
  25. package/src/{primitives → components}/UiAlertDialog/UiAlertDialogFooter.vue +1 -1
  26. package/src/{primitives → components}/UiAlertDialog/UiAlertDialogHeader.vue +1 -1
  27. package/src/{primitives → components}/UiAlertDialog/UiAlertDialogTitle.vue +1 -1
  28. package/src/{primitives → components}/UiAlertDialog/UiAlertDialogTrigger.vue +1 -1
  29. package/src/{primitives → components}/UiAlertDialog/index.ts +1 -0
  30. package/src/{primitives → components}/UiAlertDialog/types.ts +1 -1
  31. package/src/{primitives → components}/UiAvatar/UiAvatar.stories.ts +1 -1
  32. package/src/{primitives → components}/UiAvatar/UiAvatar.vue +1 -1
  33. package/src/{primitives → components}/UiAvatar/UiAvatarFallback.vue +1 -1
  34. package/src/{primitives → components}/UiAvatar/UiAvatarImage.vue +1 -1
  35. package/src/{primitives → components}/UiAvatar/index.ts +1 -0
  36. package/src/{primitives → components}/UiAvatar/types.ts +4 -1
  37. package/src/{primitives → components}/UiBadge/UiBadge.stories.ts +10 -10
  38. package/src/{primitives → components}/UiBadge/UiBadge.vue +1 -1
  39. package/src/{primitives → components}/UiBadge/__tests__/UiBadge.test.ts +3 -13
  40. package/src/{primitives → components}/UiBadge/types.ts +0 -1
  41. package/src/{primitives → components}/UiButton/UiButton.stories.ts +13 -13
  42. package/src/{primitives → components}/UiButton/UiButton.vue +2 -2
  43. package/src/{primitives → components}/UiButton/__tests__/UiButton.test.ts +1 -10
  44. package/src/{primitives → components}/UiButton/types.ts +0 -1
  45. package/src/{primitives → components}/UiCalendar/UiCalendar.stories.ts +5 -5
  46. package/src/{primitives → components}/UiCalendar/UiCalendar.vue +1 -1
  47. package/src/{primitives → components}/UiCalendar/types.ts +0 -1
  48. package/src/{primitives → components}/UiCard/UiCard.stories.ts +1 -1
  49. package/src/{primitives → components}/UiCard/UiCard.vue +1 -1
  50. package/src/{primitives → components}/UiCard/UiCardAction.vue +1 -1
  51. package/src/{primitives → components}/UiCard/UiCardContent.vue +1 -1
  52. package/src/{primitives → components}/UiCard/UiCardDescription.vue +1 -1
  53. package/src/{primitives → components}/UiCard/UiCardFooter.vue +1 -1
  54. package/src/{primitives → components}/UiCard/UiCardHeader.vue +1 -1
  55. package/src/{primitives → components}/UiCard/UiCardTitle.vue +1 -1
  56. package/src/components/UiCard/index.ts +10 -0
  57. package/src/{primitives → components}/UiCard/types.ts +0 -1
  58. package/src/{primitives → components}/UiCheckbox/UiCheckbox.stories.ts +1 -1
  59. package/src/{primitives → components}/UiCheckbox/UiCheckbox.vue +1 -1
  60. package/src/{primitives → components}/UiCheckbox/types.ts +0 -1
  61. package/src/{primitives → components}/UiDrawer/UiDrawer.stories.ts +1 -1
  62. package/src/{primitives → components}/UiDrawer/UiDrawer.vue +1 -1
  63. package/src/{primitives → components}/UiDrawer/UiDrawerClose.vue +1 -1
  64. package/src/{primitives → components}/UiDrawer/UiDrawerContent.vue +1 -1
  65. package/src/{primitives → components}/UiDrawer/UiDrawerDescription.vue +1 -1
  66. package/src/{primitives → components}/UiDrawer/UiDrawerFooter.vue +1 -1
  67. package/src/{primitives → components}/UiDrawer/UiDrawerHeader.vue +1 -1
  68. package/src/{primitives → components}/UiDrawer/UiDrawerTitle.vue +1 -1
  69. package/src/{primitives → components}/UiDrawer/UiDrawerTrigger.vue +1 -1
  70. package/src/{primitives → components}/UiDrawer/index.ts +1 -0
  71. package/src/{primitives → components}/UiDrawer/types.ts +31 -1
  72. package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenu.stories.ts +3 -3
  73. package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenu.vue +1 -1
  74. package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuCheckboxItem.vue +2 -1
  75. package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuContent.vue +1 -1
  76. package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuGroup.vue +1 -1
  77. package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuItem.vue +1 -1
  78. package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuLabel.vue +1 -1
  79. package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuRadioGroup.vue +1 -1
  80. package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuRadioItem.vue +1 -1
  81. package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuSeparator.vue +1 -1
  82. package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuShortcut.vue +1 -1
  83. package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuSub.vue +1 -1
  84. package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuSubContent.vue +1 -1
  85. package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuSubTrigger.vue +1 -1
  86. package/src/{primitives → components}/UiDropdownMenu/UiDropdownMenuTrigger.vue +1 -1
  87. package/src/{primitives → components}/UiDropdownMenu/types.ts +61 -1
  88. package/src/components/UiEmpty/UiEmpty.stories.ts +240 -0
  89. package/src/components/UiEmpty/UiEmpty.vue +35 -0
  90. package/src/components/UiEmpty/__tests__/UiEmpty.test.ts +67 -0
  91. package/src/components/UiEmpty/index.ts +2 -0
  92. package/src/components/UiEmpty/types.ts +26 -0
  93. package/src/{primitives → components}/UiField/UiField.stories.ts +1 -2
  94. package/src/{primitives → components}/UiField/UiField.vue +1 -1
  95. package/src/{primitives → components}/UiField/UiFieldContent.vue +1 -1
  96. package/src/{primitives → components}/UiField/UiFieldDescription.vue +1 -1
  97. package/src/{primitives → components}/UiField/UiFieldError.vue +1 -1
  98. package/src/{primitives → components}/UiField/UiFieldGroup.vue +1 -1
  99. package/src/{primitives → components}/UiField/UiFieldLabel.vue +1 -1
  100. package/src/{primitives → components}/UiField/UiFieldLegend.vue +1 -1
  101. package/src/{primitives → components}/UiField/UiFieldSeparator.vue +1 -1
  102. package/src/{primitives → components}/UiField/UiFieldSet.vue +1 -1
  103. package/src/{primitives → components}/UiField/UiFieldTitle.vue +1 -1
  104. package/src/{primitives → components}/UiField/index.ts +1 -0
  105. package/src/{primitives → components}/UiField/types.ts +7 -2
  106. package/src/components/UiIcon/UiIcon.stories.ts +140 -0
  107. package/src/components/UiIcon/UiIcon.vue +67 -0
  108. package/src/components/UiIcon/__tests__/UiIcon.test.ts +53 -0
  109. package/src/{primitives → components}/UiIcon/index.ts +1 -0
  110. package/src/components/UiIcon/types.ts +33 -0
  111. package/src/{primitives → components}/UiIconButton/UiIconButton.stories.ts +37 -37
  112. package/src/{primitives → components}/UiIconButton/UiIconButton.vue +2 -2
  113. package/src/{primitives → components}/UiIconButton/__tests__/UiIconButton.test.ts +2 -9
  114. package/src/{primitives → components}/UiIconButton/types.ts +0 -1
  115. package/src/{primitives → components}/UiInput/UiInput.stories.ts +1 -1
  116. package/src/{primitives → components}/UiInput/UiInput.vue +1 -1
  117. package/src/{primitives → components}/UiInput/types.ts +0 -1
  118. package/src/components/UiItem/UiItem.stories.ts +1029 -0
  119. package/src/components/UiItem/UiItem.vue +20 -0
  120. package/src/components/UiItem/UiItemMedia.vue +18 -0
  121. package/src/components/UiItem/__tests__/UiItem.test.ts +446 -0
  122. package/src/components/UiItem/constants.ts +13 -0
  123. package/src/components/UiItem/index.ts +15 -0
  124. package/src/components/UiItem/types.ts +114 -0
  125. package/src/components/UiKbd/UiKbd.stories.ts +546 -0
  126. package/src/components/UiKbd/UiKbd.vue +57 -0
  127. package/src/components/UiKbd/UiKbdGroup.vue +13 -0
  128. package/src/components/UiKbd/__tests__/UiKbd.test.ts +46 -0
  129. package/src/components/UiKbd/index.ts +3 -0
  130. package/src/components/UiKbd/types.ts +25 -0
  131. package/src/components/UiLabel/UiLabel.stories.ts +192 -0
  132. package/src/components/UiLabel/UiLabel.vue +16 -0
  133. package/src/components/UiLabel/__tests__/UiLabel.test.ts +43 -0
  134. package/src/components/UiLabel/index.ts +2 -0
  135. package/src/components/UiLabel/types.ts +15 -0
  136. package/src/components/UiListbox/UiListbox.stories.ts +607 -0
  137. package/src/components/UiListbox/UiListbox.vue +33 -0
  138. package/src/components/UiListbox/UiListboxContent.vue +13 -0
  139. package/src/components/UiListbox/UiListboxFilter.vue +16 -0
  140. package/src/components/UiListbox/UiListboxGroup.vue +13 -0
  141. package/src/components/UiListbox/UiListboxGroupLabel.vue +13 -0
  142. package/src/components/UiListbox/UiListboxItem.vue +21 -0
  143. package/src/components/UiListbox/UiListboxItemIndicator.vue +13 -0
  144. package/src/components/UiListbox/__tests__/UiListbox.test.ts +42 -0
  145. package/src/components/UiListbox/index.ts +8 -0
  146. package/src/components/UiListbox/types.ts +109 -0
  147. package/src/{primitives → components}/UiPopover/UiPopover.stories.ts +17 -1
  148. package/src/{primitives → components}/UiPopover/UiPopover.vue +1 -1
  149. package/src/{primitives → components}/UiPopover/UiPopoverContent.vue +1 -1
  150. package/src/{primitives → components}/UiPopover/UiPopoverTrigger.vue +1 -1
  151. package/src/{primitives → components}/UiPopover/index.ts +1 -0
  152. package/src/{primitives → components}/UiPopover/types.ts +13 -1
  153. package/src/{primitives → components}/UiProgress/UiProgress.stories.ts +1 -1
  154. package/src/{primitives → components}/UiProgress/UiProgress.vue +1 -1
  155. package/src/{primitives → components}/UiProgress/types.ts +3 -4
  156. package/src/{primitives → components}/UiRadioGroup/UiRadioGroup.stories.ts +1 -1
  157. package/src/{primitives → components}/UiRadioGroup/UiRadioGroup.vue +1 -1
  158. package/src/{primitives → components}/UiRadioGroup/UiRadioGroupItem.vue +1 -1
  159. package/src/{primitives → components}/UiRadioGroup/types.ts +6 -1
  160. package/src/{primitives → components}/UiRangeCalendar/UiRangeCalendar.stories.ts +1 -1
  161. package/src/{primitives → components}/UiRangeCalendar/UiRangeCalendar.vue +1 -1
  162. package/src/{primitives → components}/UiRangeCalendar/types.ts +0 -1
  163. package/src/{primitives → components}/UiSelect/UiSelect.stories.ts +20 -1
  164. package/src/{primitives → components}/UiSelect/UiSelect.vue +1 -1
  165. package/src/{primitives → components}/UiSelect/UiSelectContent.vue +1 -1
  166. package/src/{primitives → components}/UiSelect/UiSelectGroup.vue +1 -1
  167. package/src/{primitives → components}/UiSelect/UiSelectItem.vue +1 -1
  168. package/src/{primitives → components}/UiSelect/UiSelectLabel.vue +1 -1
  169. package/src/{primitives → components}/UiSelect/UiSelectSeparator.vue +1 -1
  170. package/src/{primitives → components}/UiSelect/UiSelectTrigger.vue +1 -1
  171. package/src/{primitives → components}/UiSelect/UiSelectValue.vue +1 -1
  172. package/src/{primitives → components}/UiSelect/types.ts +0 -1
  173. package/src/components/UiSeparator/UiSeparator.stories.ts +177 -0
  174. package/src/components/UiSeparator/UiSeparator.vue +17 -0
  175. package/src/components/UiSeparator/__tests__/UiSeparator.test.ts +34 -0
  176. package/src/components/UiSeparator/index.ts +2 -0
  177. package/src/components/UiSeparator/types.ts +22 -0
  178. package/src/components/UiSkeleton/UiSkeleton.stories.ts +247 -0
  179. package/src/components/UiSkeleton/UiSkeleton.vue +24 -0
  180. package/src/components/UiSkeleton/__tests__/UiSkeleton.test.ts +47 -0
  181. package/src/components/UiSkeleton/index.ts +2 -0
  182. package/src/components/UiSkeleton/types.ts +25 -0
  183. package/src/{primitives → components}/UiSlider/UiSlider.stories.ts +1 -1
  184. package/src/{primitives → components}/UiSlider/UiSlider.vue +1 -1
  185. package/src/{primitives → components}/UiSlider/__tests__/UiSlider.test.ts +1 -1
  186. package/src/{primitives → components}/UiSlider/index.ts +1 -0
  187. package/src/{primitives → components}/UiSlider/types.ts +0 -1
  188. package/src/{primitives → components}/UiSpinner/UiSpinner.stories.ts +1 -1
  189. package/src/{primitives → components}/UiSpinner/UiSpinner.vue +1 -1
  190. package/src/{primitives → components}/UiSpinner/types.ts +0 -1
  191. package/src/{primitives → components}/UiSwitch/UiSwitch.stories.ts +1 -1
  192. package/src/{primitives → components}/UiSwitch/UiSwitch.vue +1 -1
  193. package/src/{primitives → components}/UiSwitch/types.ts +0 -1
  194. package/src/{primitives → components}/UiTable/UiTable.stories.ts +3 -3
  195. package/src/{primitives → components}/UiTable/UiTable.vue +1 -1
  196. package/src/{primitives → components}/UiTable/UiTableBody.vue +1 -1
  197. package/src/{primitives → components}/UiTable/UiTableCaption.vue +1 -1
  198. package/src/{primitives → components}/UiTable/UiTableCell.vue +1 -1
  199. package/src/{primitives → components}/UiTable/UiTableEmpty.vue +1 -1
  200. package/src/{primitives → components}/UiTable/UiTableFooter.vue +1 -1
  201. package/src/{primitives → components}/UiTable/UiTableHead.vue +1 -1
  202. package/src/{primitives → components}/UiTable/UiTableHeader.vue +1 -1
  203. package/src/{primitives → components}/UiTable/UiTableRow.vue +1 -1
  204. package/src/{primitives → components}/UiTable/types.ts +0 -1
  205. package/src/{primitives → components}/UiTabs/UiTabs.stories.ts +22 -3
  206. package/src/{primitives → components}/UiTabs/UiTabs.vue +1 -1
  207. package/src/{primitives → components}/UiTabs/UiTabsContent.vue +1 -1
  208. package/src/{primitives → components}/UiTabs/UiTabsList.vue +1 -1
  209. package/src/{primitives → components}/UiTabs/UiTabsTrigger.vue +1 -1
  210. package/src/{primitives → components}/UiTabs/types.ts +0 -1
  211. package/src/components/UiTagsInput/UiTagsInput.stories.ts +538 -0
  212. package/src/components/UiTagsInput/UiTagsInput.vue +20 -0
  213. package/src/components/UiTagsInput/UiTagsInputInput.vue +14 -0
  214. package/src/components/UiTagsInput/UiTagsInputItem.vue +16 -0
  215. package/src/components/UiTagsInput/UiTagsInputItemDelete.vue +13 -0
  216. package/src/components/UiTagsInput/UiTagsInputItemText.vue +11 -0
  217. package/src/components/UiTagsInput/__tests__/UiTagsInput.test.ts +44 -0
  218. package/src/components/UiTagsInput/index.ts +6 -0
  219. package/src/components/UiTagsInput/types.ts +51 -0
  220. package/src/{primitives → components}/UiTextarea/UiTextarea.stories.ts +1 -1
  221. package/src/{primitives → components}/UiTextarea/UiTextarea.vue +1 -1
  222. package/src/{primitives → components}/UiTextarea/types.ts +0 -1
  223. package/src/components/UiToggle/UiToggle.stories.ts +370 -0
  224. package/src/components/UiToggle/UiToggle.vue +28 -0
  225. package/src/components/UiToggle/__tests__/UiToggle.test.ts +62 -0
  226. package/src/components/UiToggle/index.ts +2 -0
  227. package/src/components/UiToggle/types.ts +34 -0
  228. package/src/components/UiToggleGroup/UiToggleGroup.stories.ts +441 -0
  229. package/src/components/UiToggleGroup/UiToggleGroup.vue +52 -0
  230. package/src/components/UiToggleGroup/UiToggleGroupItem.vue +21 -0
  231. package/src/components/UiToggleGroup/__tests__/UiToggleGroup.test.ts +394 -0
  232. package/src/components/UiToggleGroup/index.ts +3 -0
  233. package/src/components/UiToggleGroup/types.ts +132 -0
  234. package/src/{primitives → components}/UiTooltip/UiTooltip.stories.ts +42 -42
  235. package/src/{primitives → components}/UiTooltip/UiTooltip.vue +1 -1
  236. package/src/components/UiTooltip/index.ts +10 -0
  237. package/src/{primitives → components}/UiTooltip/types.ts +0 -1
  238. package/src/{primitives/shadcn → components/core}/accordion/Accordion.vue +1 -1
  239. package/src/{primitives/shadcn → components/core}/accordion/AccordionItem.vue +1 -1
  240. package/src/{primitives/shadcn → components/core}/accordion/AccordionTrigger.vue +5 -4
  241. package/src/{primitives/shadcn → components/core}/alert/index.ts +2 -2
  242. package/src/{primitives/shadcn → components/core}/alert-dialog/AlertDialogAction.vue +1 -1
  243. package/src/{primitives/shadcn → components/core}/alert-dialog/AlertDialogCancel.vue +1 -1
  244. package/src/{primitives/shadcn → components/core}/alert-dialog/AlertDialogContent.vue +2 -2
  245. package/src/{primitives/shadcn → components/core}/badge/index.ts +1 -1
  246. package/src/{primitives/shadcn → components/core}/button/index.ts +4 -4
  247. package/src/{primitives/shadcn → components/core}/calendar/Calendar.vue +1 -1
  248. package/src/{primitives/shadcn → components/core}/calendar/CalendarCellTrigger.vue +3 -3
  249. package/src/{primitives/shadcn → components/core}/calendar/CalendarNextButton.vue +3 -3
  250. package/src/{primitives/shadcn → components/core}/calendar/CalendarPrevButton.vue +3 -3
  251. package/src/{primitives/shadcn → components/core}/card/Card.vue +1 -1
  252. package/src/{primitives/shadcn → components/core}/checkbox/Checkbox.vue +3 -3
  253. package/src/{primitives/shadcn → components/core}/drawer/DrawerContent.vue +2 -2
  254. package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuCheckboxItem.vue +3 -3
  255. package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuItem.vue +1 -1
  256. package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuRadioItem.vue +1 -1
  257. package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuSubTrigger.vue +3 -3
  258. package/src/{primitives/shadcn → components/core}/field/FieldError.vue +1 -1
  259. package/src/{primitives/shadcn → components/core}/field/FieldLabel.vue +1 -1
  260. package/src/{primitives/shadcn → components/core}/field/FieldSeparator.vue +1 -1
  261. package/src/{primitives/shadcn → components/core}/index.ts +1 -0
  262. package/src/{primitives/shadcn → components/core}/input/Input.vue +1 -1
  263. package/src/components/core/item/Item.vue +33 -0
  264. package/src/components/core/item/ItemActions.vue +14 -0
  265. package/src/components/core/item/ItemContent.vue +17 -0
  266. package/src/components/core/item/ItemDescription.vue +23 -0
  267. package/src/components/core/item/ItemFooter.vue +17 -0
  268. package/src/components/core/item/ItemGroup.vue +18 -0
  269. package/src/components/core/item/ItemHeader.vue +17 -0
  270. package/src/components/core/item/ItemMedia.vue +21 -0
  271. package/src/components/core/item/ItemSeparator.vue +12 -0
  272. package/src/components/core/item/ItemTitle.vue +17 -0
  273. package/src/components/core/item/index.ts +53 -0
  274. package/src/components/core/kbd/Kbd.vue +20 -0
  275. package/src/components/core/kbd/KbdGroup.vue +12 -0
  276. package/src/components/core/kbd/index.ts +2 -0
  277. package/src/components/core/listbox/Listbox.vue +23 -0
  278. package/src/components/core/listbox/ListboxContent.vue +26 -0
  279. package/src/components/core/listbox/ListboxFilter.vue +30 -0
  280. package/src/components/core/listbox/ListboxGroup.vue +26 -0
  281. package/src/components/core/listbox/ListboxGroupLabel.vue +26 -0
  282. package/src/components/core/listbox/ListboxItem.vue +32 -0
  283. package/src/components/core/listbox/ListboxItemIndicator.vue +40 -0
  284. package/src/components/core/listbox/index.ts +7 -0
  285. package/src/{primitives/shadcn → components/core}/native-select/NativeSelect.vue +6 -5
  286. package/src/{primitives/shadcn → components/core}/radio-group/RadioGroupItem.vue +3 -4
  287. package/src/{primitives/shadcn → components/core}/range-calendar/RangeCalendar.vue +1 -1
  288. package/src/{primitives/shadcn → components/core}/range-calendar/RangeCalendarCellTrigger.vue +8 -6
  289. package/src/{primitives/shadcn → components/core}/range-calendar/RangeCalendarHeading.vue +1 -1
  290. package/src/{primitives/shadcn → components/core}/range-calendar/RangeCalendarNextButton.vue +3 -3
  291. package/src/{primitives/shadcn → components/core}/range-calendar/RangeCalendarPrevButton.vue +3 -3
  292. package/src/{primitives/shadcn → components/core}/select/Select.vue +1 -1
  293. package/src/{primitives/shadcn → components/core}/select/SelectItem.vue +3 -3
  294. package/src/{primitives/shadcn → components/core}/select/SelectScrollDownButton.vue +2 -2
  295. package/src/{primitives/shadcn → components/core}/select/SelectScrollUpButton.vue +2 -2
  296. package/src/{primitives/shadcn → components/core}/select/SelectTrigger.vue +3 -3
  297. package/src/components/core/skeleton/Skeleton.vue +10 -0
  298. package/src/components/core/skeleton/index.ts +1 -0
  299. package/src/{primitives/shadcn → components/core}/spinner/Spinner.vue +5 -4
  300. package/src/{primitives/shadcn → components/core}/switch/Switch.vue +1 -1
  301. package/src/{primitives/shadcn → components/core}/table/TableRow.vue +4 -1
  302. package/src/{primitives/shadcn → components/core}/tabs/Tabs.vue +1 -1
  303. package/src/components/core/tabs/TabsTrigger.vue +28 -0
  304. package/src/components/core/tags-input/TagsInput.vue +33 -0
  305. package/src/components/core/tags-input/TagsInputInput.vue +24 -0
  306. package/src/components/core/tags-input/TagsInputItem.vue +31 -0
  307. package/src/components/core/tags-input/TagsInputItemDelete.vue +46 -0
  308. package/src/components/core/tags-input/TagsInputItemText.vue +24 -0
  309. package/src/components/core/tags-input/index.ts +5 -0
  310. package/src/{primitives/shadcn → components/core}/textarea/Textarea.vue +1 -1
  311. package/src/components/core/toggle/Toggle.vue +34 -0
  312. package/src/components/core/toggle/index.ts +26 -0
  313. package/src/components/core/toggle-group/ToggleGroup.vue +38 -0
  314. package/src/components/core/toggle-group/ToggleGroupItem.vue +37 -0
  315. package/src/components/core/toggle-group/context.ts +11 -0
  316. package/src/components/core/toggle-group/index.ts +28 -0
  317. package/src/{primitives/shadcn → components/core}/tooltip/TooltipContent.vue +1 -1
  318. package/src/{primitives → components}/index.ts +13 -5
  319. package/src/index.ts +6 -10
  320. package/src/{compositions → patterns}/UiDataTable/UiDataTable.stories.ts +13 -11
  321. package/src/{compositions → patterns}/UiDataTable/UiDataTable.vue +2 -2
  322. package/src/{compositions → patterns}/UiDataTable/UiDataTableColumnHeader.vue +27 -28
  323. package/src/{compositions → patterns}/UiDataTable/UiDataTablePagination.vue +10 -38
  324. package/src/{compositions → patterns}/UiDataTable/UiDataTableToolbar.vue +4 -29
  325. package/src/{compositions → patterns}/UiDataTable/__tests__/UiDataTable.test.ts +1 -1
  326. package/src/patterns/UiDataTable/types.ts +116 -0
  327. package/src/{compositions → patterns}/UiDatePicker/UiDatePicker.stories.ts +1 -1
  328. package/src/{compositions → patterns}/UiDatePicker/UiDatePicker.vue +7 -7
  329. package/src/{compositions → patterns}/UiDatePicker/types.ts +0 -1
  330. package/src/{foundations → patterns}/UiPlaceholder/types.ts +0 -1
  331. package/src/patterns/index.ts +7 -0
  332. package/src/templates/UiTemplatePlaceholder/types.ts +0 -1
  333. package/src/templates/index.ts +4 -5
  334. package/src/theme/Background.stories.ts +225 -0
  335. package/src/theme/Border.stories.ts +158 -0
  336. package/src/theme/Extended.stories.ts +268 -0
  337. package/src/theme/Flex.stories.ts +313 -0
  338. package/src/theme/Grid.stories.ts +302 -0
  339. package/src/theme/Overlay.stories.ts +124 -0
  340. package/src/theme/Theme.stories.ts +309 -0
  341. package/src/theme/Typography.stories.ts +230 -0
  342. package/tokens.json +11252 -0
  343. package/src/compositions/UiCompositionPlaceholder/UiCompositionPlaceholder.vue +0 -9
  344. package/src/compositions/UiCompositionPlaceholder/index.ts +0 -1
  345. package/src/compositions/UiCompositionPlaceholder/types.ts +0 -8
  346. package/src/compositions/UiDataTable/types.ts +0 -39
  347. package/src/compositions/index.ts +0 -8
  348. package/src/foundations/index.ts +0 -6
  349. package/src/primitives/UiCard/index.ts +0 -7
  350. package/src/primitives/UiIcon/UiIcon.stories.ts +0 -95
  351. package/src/primitives/UiIcon/UiIcon.vue +0 -14
  352. package/src/primitives/UiIcon/__tests__/UiIcon.test.ts +0 -24
  353. package/src/primitives/UiIcon/types.ts +0 -23
  354. package/src/primitives/UiTooltip/index.ts +0 -2
  355. package/src/primitives/shadcn/tabs/TabsTrigger.vue +0 -28
  356. /package/src/{primitives → components}/UiAccordion/__tests__/UiAccordion.test.ts +0 -0
  357. /package/src/{primitives → components}/UiAccordion/index.ts +0 -0
  358. /package/src/{primitives → components}/UiAlert/__tests__/UiAlert.test.ts +0 -0
  359. /package/src/{primitives → components}/UiAlert/constants.ts +0 -0
  360. /package/src/{primitives → components}/UiAlert/index.ts +0 -0
  361. /package/src/{primitives → components}/UiAlertDialog/__tests__/UiAlertDialog.test.ts +0 -0
  362. /package/src/{primitives → components}/UiAvatar/__tests__/UiAvatar.test.ts +0 -0
  363. /package/src/{primitives → components}/UiBadge/constants.ts +0 -0
  364. /package/src/{primitives → components}/UiBadge/index.ts +0 -0
  365. /package/src/{primitives → components}/UiButton/index.ts +0 -0
  366. /package/src/{primitives → components}/UiCalendar/__tests__/UiCalendar.test.ts +0 -0
  367. /package/src/{primitives → components}/UiCalendar/index.ts +0 -0
  368. /package/src/{primitives → components}/UiCard/__tests__/UiCard.test.ts +0 -0
  369. /package/src/{primitives → components}/UiCard/__tests__/UiCardAction.test.ts +0 -0
  370. /package/src/{primitives → components}/UiCard/__tests__/UiCardContent.test.ts +0 -0
  371. /package/src/{primitives → components}/UiCard/__tests__/UiCardDescription.test.ts +0 -0
  372. /package/src/{primitives → components}/UiCard/__tests__/UiCardFooter.test.ts +0 -0
  373. /package/src/{primitives → components}/UiCard/__tests__/UiCardHeader.test.ts +0 -0
  374. /package/src/{primitives → components}/UiCard/__tests__/UiCardTitle.test.ts +0 -0
  375. /package/src/{primitives → components}/UiCheckbox/__tests__/UiCheckbox.test.ts +0 -0
  376. /package/src/{primitives → components}/UiCheckbox/index.ts +0 -0
  377. /package/src/{primitives → components}/UiDrawer/__tests__/UiDrawer.test.ts +0 -0
  378. /package/src/{primitives → components}/UiDropdownMenu/__tests__/UiDropdownMenu.test.ts +0 -0
  379. /package/src/{primitives → components}/UiDropdownMenu/index.ts +0 -0
  380. /package/src/{primitives → components}/UiField/__tests__/UiFieldError.test.ts +0 -0
  381. /package/src/{primitives → components}/UiIconButton/index.ts +0 -0
  382. /package/src/{primitives → components}/UiInput/__tests__/UiInput.test.ts +0 -0
  383. /package/src/{primitives → components}/UiInput/index.ts +0 -0
  384. /package/src/{primitives → components}/UiPopover/__tests__/UiPopover.test.ts +0 -0
  385. /package/src/{primitives → components}/UiProgress/__tests__/UiProgress.test.ts +0 -0
  386. /package/src/{primitives → components}/UiProgress/index.ts +0 -0
  387. /package/src/{primitives → components}/UiRadioGroup/__tests__/UiRadioGroup.test.ts +0 -0
  388. /package/src/{primitives → components}/UiRadioGroup/index.ts +0 -0
  389. /package/src/{primitives → components}/UiRangeCalendar/__tests__/UiRangeCalendar.test.ts +0 -0
  390. /package/src/{primitives → components}/UiRangeCalendar/index.ts +0 -0
  391. /package/src/{primitives → components}/UiSelect/__tests__/UiSelect.test.ts +0 -0
  392. /package/src/{primitives → components}/UiSelect/__tests__/UiSelectContent.test.ts +0 -0
  393. /package/src/{primitives → components}/UiSelect/__tests__/UiSelectGroup.test.ts +0 -0
  394. /package/src/{primitives → components}/UiSelect/__tests__/UiSelectItem.test.ts +0 -0
  395. /package/src/{primitives → components}/UiSelect/__tests__/UiSelectLabel.test.ts +0 -0
  396. /package/src/{primitives → components}/UiSelect/__tests__/UiSelectSeparator.test.ts +0 -0
  397. /package/src/{primitives → components}/UiSelect/__tests__/UiSelectTrigger.test.ts +0 -0
  398. /package/src/{primitives → components}/UiSelect/__tests__/UiSelectValue.test.ts +0 -0
  399. /package/src/{primitives → components}/UiSelect/index.ts +0 -0
  400. /package/src/{primitives → components}/UiSpinner/__tests__/UiSpinner.test.ts +0 -0
  401. /package/src/{primitives → components}/UiSpinner/index.ts +0 -0
  402. /package/src/{primitives → components}/UiSwitch/__tests__/UiSwitch.test.ts +0 -0
  403. /package/src/{primitives → components}/UiSwitch/index.ts +0 -0
  404. /package/src/{primitives → components}/UiTable/__tests__/UiTable.test.ts +0 -0
  405. /package/src/{primitives → components}/UiTable/__tests__/UiTableBody.test.ts +0 -0
  406. /package/src/{primitives → components}/UiTable/__tests__/UiTableCaption.test.ts +0 -0
  407. /package/src/{primitives → components}/UiTable/__tests__/UiTableCell.test.ts +0 -0
  408. /package/src/{primitives → components}/UiTable/__tests__/UiTableEmpty.test.ts +0 -0
  409. /package/src/{primitives → components}/UiTable/__tests__/UiTableFooter.test.ts +0 -0
  410. /package/src/{primitives → components}/UiTable/__tests__/UiTableHead.test.ts +0 -0
  411. /package/src/{primitives → components}/UiTable/__tests__/UiTableHeader.test.ts +0 -0
  412. /package/src/{primitives → components}/UiTable/__tests__/UiTableRow.test.ts +0 -0
  413. /package/src/{primitives → components}/UiTable/index.ts +0 -0
  414. /package/src/{primitives → components}/UiTabs/__tests__/UiTabs.test.ts +0 -0
  415. /package/src/{primitives → components}/UiTabs/index.ts +0 -0
  416. /package/src/{primitives → components}/UiTextarea/__tests__/UiTextarea.test.ts +0 -0
  417. /package/src/{primitives → components}/UiTextarea/index.ts +0 -0
  418. /package/src/{primitives → components}/UiTooltip/__tests__/UiTooltip.test.ts +0 -0
  419. /package/src/{primitives/shadcn → components/core}/accordion/AccordionContent.vue +0 -0
  420. /package/src/{primitives/shadcn → components/core}/accordion/index.ts +0 -0
  421. /package/src/{primitives/shadcn → components/core}/alert/Alert.vue +0 -0
  422. /package/src/{primitives/shadcn → components/core}/alert/AlertDescription.vue +0 -0
  423. /package/src/{primitives/shadcn → components/core}/alert/AlertTitle.vue +0 -0
  424. /package/src/{primitives/shadcn → components/core}/alert-dialog/AlertDialog.vue +0 -0
  425. /package/src/{primitives/shadcn → components/core}/alert-dialog/AlertDialogDescription.vue +0 -0
  426. /package/src/{primitives/shadcn → components/core}/alert-dialog/AlertDialogFooter.vue +0 -0
  427. /package/src/{primitives/shadcn → components/core}/alert-dialog/AlertDialogHeader.vue +0 -0
  428. /package/src/{primitives/shadcn → components/core}/alert-dialog/AlertDialogTitle.vue +0 -0
  429. /package/src/{primitives/shadcn → components/core}/alert-dialog/AlertDialogTrigger.vue +0 -0
  430. /package/src/{primitives/shadcn → components/core}/alert-dialog/index.ts +0 -0
  431. /package/src/{primitives/shadcn → components/core}/avatar/Avatar.vue +0 -0
  432. /package/src/{primitives/shadcn → components/core}/avatar/AvatarFallback.vue +0 -0
  433. /package/src/{primitives/shadcn → components/core}/avatar/AvatarImage.vue +0 -0
  434. /package/src/{primitives/shadcn → components/core}/avatar/index.ts +0 -0
  435. /package/src/{primitives/shadcn → components/core}/badge/Badge.vue +0 -0
  436. /package/src/{primitives/shadcn → components/core}/button/Button.vue +0 -0
  437. /package/src/{primitives/shadcn → components/core}/calendar/CalendarCell.vue +0 -0
  438. /package/src/{primitives/shadcn → components/core}/calendar/CalendarGrid.vue +0 -0
  439. /package/src/{primitives/shadcn → components/core}/calendar/CalendarGridBody.vue +0 -0
  440. /package/src/{primitives/shadcn → components/core}/calendar/CalendarGridHead.vue +0 -0
  441. /package/src/{primitives/shadcn → components/core}/calendar/CalendarGridRow.vue +0 -0
  442. /package/src/{primitives/shadcn → components/core}/calendar/CalendarHeadCell.vue +0 -0
  443. /package/src/{primitives/shadcn → components/core}/calendar/CalendarHeader.vue +0 -0
  444. /package/src/{primitives/shadcn → components/core}/calendar/CalendarHeading.vue +0 -0
  445. /package/src/{primitives/shadcn → components/core}/calendar/index.ts +0 -0
  446. /package/src/{primitives/shadcn → components/core}/card/CardAction.vue +0 -0
  447. /package/src/{primitives/shadcn → components/core}/card/CardContent.vue +0 -0
  448. /package/src/{primitives/shadcn → components/core}/card/CardDescription.vue +0 -0
  449. /package/src/{primitives/shadcn → components/core}/card/CardFooter.vue +0 -0
  450. /package/src/{primitives/shadcn → components/core}/card/CardHeader.vue +0 -0
  451. /package/src/{primitives/shadcn → components/core}/card/CardTitle.vue +0 -0
  452. /package/src/{primitives/shadcn → components/core}/card/index.ts +0 -0
  453. /package/src/{primitives/shadcn → components/core}/checkbox/index.ts +0 -0
  454. /package/src/{primitives/shadcn → components/core}/drawer/Drawer.vue +0 -0
  455. /package/src/{primitives/shadcn → components/core}/drawer/DrawerClose.vue +0 -0
  456. /package/src/{primitives/shadcn → components/core}/drawer/DrawerDescription.vue +0 -0
  457. /package/src/{primitives/shadcn → components/core}/drawer/DrawerFooter.vue +0 -0
  458. /package/src/{primitives/shadcn → components/core}/drawer/DrawerHeader.vue +0 -0
  459. /package/src/{primitives/shadcn → components/core}/drawer/DrawerTitle.vue +0 -0
  460. /package/src/{primitives/shadcn → components/core}/drawer/DrawerTrigger.vue +0 -0
  461. /package/src/{primitives/shadcn → components/core}/drawer/index.ts +0 -0
  462. /package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenu.vue +0 -0
  463. /package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuContent.vue +0 -0
  464. /package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuGroup.vue +0 -0
  465. /package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuLabel.vue +0 -0
  466. /package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuRadioGroup.vue +0 -0
  467. /package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuSeparator.vue +0 -0
  468. /package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuShortcut.vue +0 -0
  469. /package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuSub.vue +0 -0
  470. /package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuSubContent.vue +0 -0
  471. /package/src/{primitives/shadcn → components/core}/dropdown-menu/DropdownMenuTrigger.vue +0 -0
  472. /package/src/{primitives/shadcn → components/core}/dropdown-menu/index.ts +0 -0
  473. /package/src/{primitives/shadcn → components/core}/field/Field.vue +0 -0
  474. /package/src/{primitives/shadcn → components/core}/field/FieldContent.vue +0 -0
  475. /package/src/{primitives/shadcn → components/core}/field/FieldDescription.vue +0 -0
  476. /package/src/{primitives/shadcn → components/core}/field/FieldGroup.vue +0 -0
  477. /package/src/{primitives/shadcn → components/core}/field/FieldLegend.vue +0 -0
  478. /package/src/{primitives/shadcn → components/core}/field/FieldSet.vue +0 -0
  479. /package/src/{primitives/shadcn → components/core}/field/FieldTitle.vue +0 -0
  480. /package/src/{primitives/shadcn → components/core}/field/index.ts +0 -0
  481. /package/src/{primitives/shadcn → components/core}/icon/Icon.vue +0 -0
  482. /package/src/{primitives/shadcn → components/core}/icon/index.ts +0 -0
  483. /package/src/{primitives/shadcn → components/core}/input/index.ts +0 -0
  484. /package/src/{primitives/shadcn → components/core}/label/Label.vue +0 -0
  485. /package/src/{primitives/shadcn → components/core}/label/index.ts +0 -0
  486. /package/src/{primitives/shadcn → components/core}/native-select/NativeSelectOptGroup.vue +0 -0
  487. /package/src/{primitives/shadcn → components/core}/native-select/NativeSelectOption.vue +0 -0
  488. /package/src/{primitives/shadcn → components/core}/native-select/index.ts +0 -0
  489. /package/src/{primitives/shadcn → components/core}/popover/Popover.vue +0 -0
  490. /package/src/{primitives/shadcn → components/core}/popover/PopoverContent.vue +0 -0
  491. /package/src/{primitives/shadcn → components/core}/popover/PopoverTrigger.vue +0 -0
  492. /package/src/{primitives/shadcn → components/core}/popover/index.ts +0 -0
  493. /package/src/{primitives/shadcn → components/core}/progress/Progress.vue +0 -0
  494. /package/src/{primitives/shadcn → components/core}/progress/index.ts +0 -0
  495. /package/src/{primitives/shadcn → components/core}/radio-group/RadioGroup.vue +0 -0
  496. /package/src/{primitives/shadcn → components/core}/radio-group/index.ts +0 -0
  497. /package/src/{primitives/shadcn → components/core}/range-calendar/RangeCalendarCell.vue +0 -0
  498. /package/src/{primitives/shadcn → components/core}/range-calendar/RangeCalendarGrid.vue +0 -0
  499. /package/src/{primitives/shadcn → components/core}/range-calendar/RangeCalendarGridBody.vue +0 -0
  500. /package/src/{primitives/shadcn → components/core}/range-calendar/RangeCalendarGridHead.vue +0 -0
  501. /package/src/{primitives/shadcn → components/core}/range-calendar/RangeCalendarGridRow.vue +0 -0
  502. /package/src/{primitives/shadcn → components/core}/range-calendar/RangeCalendarHeadCell.vue +0 -0
  503. /package/src/{primitives/shadcn → components/core}/range-calendar/RangeCalendarHeader.vue +0 -0
  504. /package/src/{primitives/shadcn → components/core}/range-calendar/index.ts +0 -0
  505. /package/src/{primitives/shadcn → components/core}/select/SelectContent.vue +0 -0
  506. /package/src/{primitives/shadcn → components/core}/select/SelectGroup.vue +0 -0
  507. /package/src/{primitives/shadcn → components/core}/select/SelectItemText.vue +0 -0
  508. /package/src/{primitives/shadcn → components/core}/select/SelectLabel.vue +0 -0
  509. /package/src/{primitives/shadcn → components/core}/select/SelectSeparator.vue +0 -0
  510. /package/src/{primitives/shadcn → components/core}/select/SelectValue.vue +0 -0
  511. /package/src/{primitives/shadcn → components/core}/select/index.ts +0 -0
  512. /package/src/{primitives/shadcn → components/core}/separator/Separator.vue +0 -0
  513. /package/src/{primitives/shadcn → components/core}/separator/index.ts +0 -0
  514. /package/src/{primitives/shadcn → components/core}/slider/Slider.vue +0 -0
  515. /package/src/{primitives/shadcn → components/core}/slider/index.ts +0 -0
  516. /package/src/{primitives/shadcn → components/core}/spinner/index.ts +0 -0
  517. /package/src/{primitives/shadcn → components/core}/switch/index.ts +0 -0
  518. /package/src/{primitives/shadcn → components/core}/table/Table.vue +0 -0
  519. /package/src/{primitives/shadcn → components/core}/table/TableBody.vue +0 -0
  520. /package/src/{primitives/shadcn → components/core}/table/TableCaption.vue +0 -0
  521. /package/src/{primitives/shadcn → components/core}/table/TableCell.vue +0 -0
  522. /package/src/{primitives/shadcn → components/core}/table/TableEmpty.vue +0 -0
  523. /package/src/{primitives/shadcn → components/core}/table/TableFooter.vue +0 -0
  524. /package/src/{primitives/shadcn → components/core}/table/TableHead.vue +0 -0
  525. /package/src/{primitives/shadcn → components/core}/table/TableHeader.vue +0 -0
  526. /package/src/{primitives/shadcn → components/core}/table/index.ts +0 -0
  527. /package/src/{primitives/shadcn → components/core}/table/utils.ts +0 -0
  528. /package/src/{primitives/shadcn → components/core}/tabs/TabsContent.vue +0 -0
  529. /package/src/{primitives/shadcn → components/core}/tabs/TabsList.vue +0 -0
  530. /package/src/{primitives/shadcn → components/core}/tabs/index.ts +0 -0
  531. /package/src/{primitives/shadcn → components/core}/textarea/index.ts +0 -0
  532. /package/src/{primitives/shadcn → components/core}/tooltip/Tooltip.vue +0 -0
  533. /package/src/{primitives/shadcn → components/core}/tooltip/TooltipProvider.vue +0 -0
  534. /package/src/{primitives/shadcn → components/core}/tooltip/TooltipTrigger.vue +0 -0
  535. /package/src/{primitives/shadcn → components/core}/tooltip/index.ts +0 -0
  536. /package/src/{compositions → patterns}/UiDataTable/UiDataTable.mock.ts +0 -0
  537. /package/src/{compositions → patterns}/UiDataTable/__tests__/UiDataTableColumnHeader.test.ts +0 -0
  538. /package/src/{compositions → patterns}/UiDataTable/__tests__/UiDataTablePagination.test.ts +0 -0
  539. /package/src/{compositions → patterns}/UiDataTable/__tests__/UiDataTableToolbar.test.ts +0 -0
  540. /package/src/{compositions → patterns}/UiDataTable/constants.ts +0 -0
  541. /package/src/{compositions → patterns}/UiDataTable/index.ts +0 -0
  542. /package/src/{compositions → patterns}/UiDatePicker/__tests__/UiDatePicker.test.ts +0 -0
  543. /package/src/{compositions → patterns}/UiDatePicker/index.ts +0 -0
  544. /package/src/{foundations → patterns}/UiPlaceholder/UiPlaceholder.vue +0 -0
  545. /package/src/{foundations → patterns}/UiPlaceholder/index.ts +0 -0
@@ -2,10 +2,10 @@
2
2
  import type { RangeCalendarNextProps } from 'reka-ui';
3
3
  import type { HTMLAttributes } from 'vue';
4
4
  import { reactiveOmit } from '@vueuse/core';
5
- import { Icon } from '@/primitives/shadcn/icon';
5
+ import { UiIcon } from '@/components/UiIcon';
6
6
  import { RangeCalendarNext, useForwardProps } from 'reka-ui';
7
7
  import { cn } from '@/lib/utils';
8
- import { buttonVariants } from '@/primitives/shadcn/button';
8
+ import { buttonVariants } from '@/components/core/button';
9
9
 
10
10
  const props = defineProps<RangeCalendarNextProps & { class?: HTMLAttributes['class'] }>();
11
11
 
@@ -28,7 +28,7 @@
28
28
  v-bind="forwardedProps"
29
29
  >
30
30
  <slot>
31
- <Icon icon="i-material-symbols-keyboard-arrow-right" class="text-base" />
31
+ <UiIcon name="chevron-right" :size="16" />
32
32
  </slot>
33
33
  </RangeCalendarNext>
34
34
  </template>
@@ -2,10 +2,10 @@
2
2
  import type { RangeCalendarPrevProps } from 'reka-ui';
3
3
  import type { HTMLAttributes } from 'vue';
4
4
  import { reactiveOmit } from '@vueuse/core';
5
- import { Icon } from '@/primitives/shadcn/icon';
5
+ import { UiIcon } from '@/components/UiIcon';
6
6
  import { RangeCalendarPrev, useForwardProps } from 'reka-ui';
7
7
  import { cn } from '@/lib/utils';
8
- import { buttonVariants } from '@/primitives/shadcn/button';
8
+ import { buttonVariants } from '@/components/core/button';
9
9
 
10
10
  const props = defineProps<RangeCalendarPrevProps & { class?: HTMLAttributes['class'] }>();
11
11
 
@@ -28,7 +28,7 @@
28
28
  v-bind="forwardedProps"
29
29
  >
30
30
  <slot>
31
- <Icon icon="i-material-symbols-keyboard-arrow-left" class="text-base" />
31
+ <UiIcon name="chevron-left" :size="16" />
32
32
  </slot>
33
33
  </RangeCalendarPrev>
34
34
  </template>
@@ -9,7 +9,7 @@
9
9
  </script>
10
10
 
11
11
  <template>
12
- <SelectRoot v-slot="slotProps" data-slot="select" v-bind="forwarded">
12
+ <SelectRoot #default="slotProps" data-slot="select" v-bind="forwarded">
13
13
  <slot v-bind="slotProps" />
14
14
  </SelectRoot>
15
15
  </template>
@@ -2,7 +2,7 @@
2
2
  import type { SelectItemProps } from 'reka-ui';
3
3
  import type { HTMLAttributes } from 'vue';
4
4
  import { reactiveOmit } from '@vueuse/core';
5
- import { Icon } from '@/primitives/shadcn/icon';
5
+ import { UiIcon } from '@/components/UiIcon';
6
6
  import { SelectItem, SelectItemIndicator, SelectItemText, useForwardProps } from 'reka-ui';
7
7
  import { cn } from '@/lib/utils';
8
8
 
@@ -19,7 +19,7 @@
19
19
  v-bind="forwardedProps"
20
20
  :class="
21
21
  cn(
22
- 'focus:bg-accent focus:text-accent-foreground [&_svg:not([class*=\'text-\'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\'size-\'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2',
22
+ 'focus:bg-hover-default focus:text-foreground [&_svg:not([class*=\'text-\'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\'size-\'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2',
23
23
  props.class,
24
24
  )
25
25
  "
@@ -27,7 +27,7 @@
27
27
  <span class="absolute right-2 flex size-3.5 items-center justify-center">
28
28
  <SelectItemIndicator>
29
29
  <slot name="indicator-icon">
30
- <Icon icon="i-material-symbols-check" class="text-base" />
30
+ <UiIcon name="check" :size="16" />
31
31
  </slot>
32
32
  </SelectItemIndicator>
33
33
  </span>
@@ -2,7 +2,7 @@
2
2
  import type { SelectScrollDownButtonProps } from 'reka-ui';
3
3
  import type { HTMLAttributes } from 'vue';
4
4
  import { reactiveOmit } from '@vueuse/core';
5
- import { Icon } from '@/primitives/shadcn/icon';
5
+ import { UiIcon } from '@/components/UiIcon';
6
6
  import { SelectScrollDownButton, useForwardProps } from 'reka-ui';
7
7
  import { cn } from '@/lib/utils';
8
8
 
@@ -20,7 +20,7 @@
20
20
  :class="cn('flex cursor-default items-center justify-center py-1', props.class)"
21
21
  >
22
22
  <slot>
23
- <Icon icon="i-material-symbols-keyboard-arrow-down" class="text-base" />
23
+ <UiIcon name="chevron-down" :size="16" />
24
24
  </slot>
25
25
  </SelectScrollDownButton>
26
26
  </template>
@@ -2,7 +2,7 @@
2
2
  import type { SelectScrollUpButtonProps } from 'reka-ui';
3
3
  import type { HTMLAttributes } from 'vue';
4
4
  import { reactiveOmit } from '@vueuse/core';
5
- import { Icon } from '@/primitives/shadcn/icon';
5
+ import { UiIcon } from '@/components/UiIcon';
6
6
  import { SelectScrollUpButton, useForwardProps } from 'reka-ui';
7
7
  import { cn } from '@/lib/utils';
8
8
 
@@ -20,7 +20,7 @@
20
20
  :class="cn('flex cursor-default items-center justify-center py-1', props.class)"
21
21
  >
22
22
  <slot>
23
- <Icon icon="i-material-symbols-keyboard-arrow-up" class="text-base" />
23
+ <UiIcon name="chevron-up" :size="16" />
24
24
  </slot>
25
25
  </SelectScrollUpButton>
26
26
  </template>
@@ -2,7 +2,7 @@
2
2
  import type { SelectTriggerProps } from 'reka-ui';
3
3
  import type { HTMLAttributes } from 'vue';
4
4
  import { reactiveOmit } from '@vueuse/core';
5
- import { Icon } from '@/primitives/shadcn/icon';
5
+ import { UiIcon } from '@/components/UiIcon';
6
6
  import { SelectIcon, SelectTrigger, useForwardProps } from 'reka-ui';
7
7
  import { cn } from '@/lib/utils';
8
8
 
@@ -24,14 +24,14 @@
24
24
  v-bind="forwardedProps"
25
25
  :class="
26
26
  cn(
27
- 'border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*=\'text-\'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\'size-\'])]:size-4',
27
+ 'border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*=\'text-\'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive flex w-fit items-center justify-between gap-2 rounded-md border bg-input-background px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\'size-\'])]:size-4',
28
28
  props.class,
29
29
  )
30
30
  "
31
31
  >
32
32
  <slot />
33
33
  <SelectIcon as-child>
34
- <Icon icon="i-material-symbols-keyboard-arrow-down" class="text-base opacity-50" />
34
+ <UiIcon name="chevron-down" :size="16" class="opacity-50" />
35
35
  </SelectIcon>
36
36
  </SelectTrigger>
37
37
  </template>
@@ -0,0 +1,10 @@
1
+ <script setup lang="ts">
2
+ import type { HTMLAttributes } from 'vue';
3
+ import { cn } from '@/lib/utils';
4
+
5
+ const props = defineProps<{ class?: HTMLAttributes['class'] }>();
6
+ </script>
7
+
8
+ <template>
9
+ <div data-slot="skeleton" :class="cn('bg-muted animate-pulse rounded-md', props.class)" />
10
+ </template>
@@ -0,0 +1 @@
1
+ export { default as Skeleton } from './Skeleton.vue';
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
2
  import type { HTMLAttributes } from 'vue';
3
- import { Icon } from '@/primitives/shadcn/icon';
3
+ import { UiIcon } from '@/components/UiIcon';
4
4
  import { cn } from '@/lib/utils';
5
5
 
6
6
  const props = defineProps<{
@@ -9,10 +9,11 @@
9
9
  </script>
10
10
 
11
11
  <template>
12
- <Icon
13
- icon="i-material-symbols-progress-activity"
12
+ <UiIcon
13
+ name="loader-circle"
14
+ :size="16"
14
15
  role="status"
15
16
  aria-label="Loading"
16
- :class="cn('text-base animate-spin', props.class)"
17
+ :class="cn('animate-spin', props.class)"
17
18
  />
18
19
  </template>
@@ -21,7 +21,7 @@
21
21
  v-bind="forwarded"
22
22
  :class="
23
23
  cn(
24
- 'peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',
24
+ 'peer data-[state=checked]:bg-accent-default data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',
25
25
  props.class,
26
26
  )
27
27
  "
@@ -13,7 +13,10 @@
13
13
  data-slot="table-row"
14
14
  :data-state="props.dataState"
15
15
  :class="
16
- cn('hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors', props.class)
16
+ cn(
17
+ 'hover:bg-hover-default data-[state=selected]:bg-muted border-b transition-colors',
18
+ props.class,
19
+ )
17
20
  "
18
21
  >
19
22
  <slot />
@@ -14,7 +14,7 @@
14
14
 
15
15
  <template>
16
16
  <TabsRoot
17
- v-slot="slotProps"
17
+ #default="slotProps"
18
18
  data-slot="tabs"
19
19
  v-bind="forwarded"
20
20
  :class="cn('flex flex-col gap-2', props.class)"
@@ -0,0 +1,28 @@
1
+ <script setup lang="ts">
2
+ import type { TabsTriggerProps } from 'reka-ui';
3
+ import type { HTMLAttributes } from 'vue';
4
+ import { reactiveOmit } from '@vueuse/core';
5
+ import { TabsTrigger, useForwardProps } from 'reka-ui';
6
+ import { cn } from '@/lib/utils';
7
+
8
+ const props = defineProps<TabsTriggerProps & { class?: HTMLAttributes['class'] }>();
9
+
10
+ const delegatedProps = reactiveOmit(props, 'class');
11
+
12
+ const forwardedProps = useForwardProps(delegatedProps);
13
+ </script>
14
+
15
+ <template>
16
+ <TabsTrigger
17
+ data-slot="tabs-trigger"
18
+ :class="
19
+ cn(
20
+ 'data-[state=active]:bg-popover dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*=\'size-\'])]:size-4',
21
+ props.class,
22
+ )
23
+ "
24
+ v-bind="forwardedProps"
25
+ >
26
+ <slot />
27
+ </TabsTrigger>
28
+ </template>
@@ -0,0 +1,33 @@
1
+ <script setup lang="ts">
2
+ import type { TagsInputRootEmits, TagsInputRootProps } from 'reka-ui';
3
+ import type { HTMLAttributes } from 'vue';
4
+ import { TagsInputRoot, useForwardPropsEmits } from 'reka-ui';
5
+ import { computed } from 'vue';
6
+ import { cn } from '@/lib/utils';
7
+
8
+ const props = defineProps<TagsInputRootProps & { class?: HTMLAttributes['class'] }>();
9
+ const emits = defineEmits<TagsInputRootEmits>();
10
+
11
+ const delegatedProps = computed(() => {
12
+ const { class: _class, ...delegated } = props;
13
+ return delegated;
14
+ });
15
+
16
+ const forwarded = useForwardPropsEmits(delegatedProps, emits);
17
+ </script>
18
+
19
+ <template>
20
+ <TagsInputRoot
21
+ #default="slotProps"
22
+ data-slot="tags-input"
23
+ :class="
24
+ cn(
25
+ 'border-input focus-within:border-ring focus-within:ring-ring/50 flex min-h-9 w-full flex-wrap items-center gap-1.5 rounded-md border bg-input-background px-3 py-1 text-sm shadow-xs transition-[color,box-shadow] focus-within:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50',
26
+ props.class,
27
+ )
28
+ "
29
+ v-bind="forwarded"
30
+ >
31
+ <slot v-bind="slotProps" />
32
+ </TagsInputRoot>
33
+ </template>
@@ -0,0 +1,24 @@
1
+ <script setup lang="ts">
2
+ import type { TagsInputInputProps } from 'reka-ui';
3
+ import type { HTMLAttributes } from 'vue';
4
+ import { TagsInputInput, useForwardProps } from 'reka-ui';
5
+ import { computed } from 'vue';
6
+ import { cn } from '@/lib/utils';
7
+
8
+ const props = defineProps<TagsInputInputProps & { class?: HTMLAttributes['class'] }>();
9
+
10
+ const delegatedProps = computed(() => {
11
+ const { class: _class, ...delegated } = props;
12
+ return delegated;
13
+ });
14
+
15
+ const forwardedProps = useForwardProps(delegatedProps);
16
+ </script>
17
+
18
+ <template>
19
+ <TagsInputInput
20
+ data-slot="tags-input-input"
21
+ :class="cn('placeholder:text-muted-foreground flex-1 bg-transparent outline-none', props.class)"
22
+ v-bind="forwardedProps"
23
+ />
24
+ </template>
@@ -0,0 +1,31 @@
1
+ <script setup lang="ts">
2
+ import type { TagsInputItemProps } from 'reka-ui';
3
+ import type { HTMLAttributes } from 'vue';
4
+ import { TagsInputItem, useForwardProps } from 'reka-ui';
5
+ import { computed } from 'vue';
6
+ import { cn } from '@/lib/utils';
7
+
8
+ const props = defineProps<TagsInputItemProps & { class?: HTMLAttributes['class'] }>();
9
+
10
+ const delegatedProps = computed(() => {
11
+ const { class: _class, ...delegated } = props;
12
+ return delegated;
13
+ });
14
+
15
+ const forwardedProps = useForwardProps(delegatedProps);
16
+ </script>
17
+
18
+ <template>
19
+ <TagsInputItem
20
+ data-slot="tags-input-item"
21
+ :class="
22
+ cn(
23
+ 'bg-secondary text-secondary-foreground data-[state=active]:border-ring data-[state=active]:ring-ring/50 inline-flex h-6 shrink-0 items-center gap-1 rounded-sm border px-1 text-xs font-medium transition-[color,box-shadow] data-[state=active]:ring-[3px] [&[data-disabled]]:opacity-50 [&>button]:shrink-0',
24
+ props.class,
25
+ )
26
+ "
27
+ v-bind="forwardedProps"
28
+ >
29
+ <slot />
30
+ </TagsInputItem>
31
+ </template>
@@ -0,0 +1,46 @@
1
+ <script setup lang="ts">
2
+ import type { TagsInputItemDeleteProps } from 'reka-ui';
3
+ import type { HTMLAttributes } from 'vue';
4
+ import { TagsInputItemDelete, useForwardProps } from 'reka-ui';
5
+ import { computed } from 'vue';
6
+ import { cn } from '@/lib/utils';
7
+
8
+ const props = defineProps<TagsInputItemDeleteProps & { class?: HTMLAttributes['class'] }>();
9
+
10
+ const delegatedProps = computed(() => {
11
+ const { class: _class, ...delegated } = props;
12
+ return delegated;
13
+ });
14
+
15
+ const forwardedProps = useForwardProps(delegatedProps);
16
+ </script>
17
+
18
+ <template>
19
+ <TagsInputItemDelete
20
+ data-slot="tags-input-item-delete"
21
+ :class="
22
+ cn(
23
+ 'hover:bg-secondary-foreground/20 focus-visible:border-ring focus-visible:ring-ring/50 -mr-0.5 flex size-4 items-center justify-center rounded-sm transition-[color,box-shadow] outline-none focus-visible:ring-[3px]',
24
+ props.class,
25
+ )
26
+ "
27
+ v-bind="forwardedProps"
28
+ >
29
+ <slot>
30
+ <svg
31
+ xmlns="http://www.w3.org/2000/svg"
32
+ width="14"
33
+ height="14"
34
+ viewBox="0 0 24 24"
35
+ fill="none"
36
+ stroke="currentColor"
37
+ stroke-width="2"
38
+ stroke-linecap="round"
39
+ stroke-linejoin="round"
40
+ >
41
+ <path d="M18 6 6 18" />
42
+ <path d="m6 6 12 12" />
43
+ </svg>
44
+ </slot>
45
+ </TagsInputItemDelete>
46
+ </template>
@@ -0,0 +1,24 @@
1
+ <script setup lang="ts">
2
+ import type { TagsInputItemTextProps } from 'reka-ui';
3
+ import type { HTMLAttributes } from 'vue';
4
+ import { TagsInputItemText, useForwardProps } from 'reka-ui';
5
+ import { computed } from 'vue';
6
+ import { cn } from '@/lib/utils';
7
+
8
+ const props = defineProps<TagsInputItemTextProps & { class?: HTMLAttributes['class'] }>();
9
+
10
+ const delegatedProps = computed(() => {
11
+ const { class: _class, ...delegated } = props;
12
+ return delegated;
13
+ });
14
+
15
+ const forwardedProps = useForwardProps(delegatedProps);
16
+ </script>
17
+
18
+ <template>
19
+ <TagsInputItemText
20
+ data-slot="tags-input-item-text"
21
+ :class="cn('px-1', props.class)"
22
+ v-bind="forwardedProps"
23
+ />
24
+ </template>
@@ -0,0 +1,5 @@
1
+ export { default as TagsInput } from './TagsInput.vue';
2
+ export { default as TagsInputInput } from './TagsInputInput.vue';
3
+ export { default as TagsInputItem } from './TagsInputItem.vue';
4
+ export { default as TagsInputItemDelete } from './TagsInputItemDelete.vue';
5
+ export { default as TagsInputItemText } from './TagsInputItemText.vue';
@@ -25,7 +25,7 @@
25
25
  data-slot="textarea"
26
26
  :class="
27
27
  cn(
28
- 'border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',
28
+ 'border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive flex field-sizing-content min-h-16 w-full rounded-md border bg-input-background px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',
29
29
  props.class,
30
30
  )
31
31
  "
@@ -0,0 +1,34 @@
1
+ <script setup lang="ts">
2
+ import type { ToggleEmits, ToggleProps } from 'reka-ui';
3
+ import { Toggle, useForwardPropsEmits } from 'reka-ui';
4
+ import { cn } from '@/lib/utils';
5
+ import { toggleVariants } from '.';
6
+
7
+ const props = withDefaults(
8
+ defineProps<
9
+ ToggleProps & {
10
+ variant?: 'default' | 'outline';
11
+ size?: 'default' | 'sm' | 'lg';
12
+ }
13
+ >(),
14
+ {
15
+ variant: 'default',
16
+ size: 'default',
17
+ disabled: false,
18
+ },
19
+ );
20
+
21
+ const emits = defineEmits<ToggleEmits>();
22
+
23
+ const forwarded = useForwardPropsEmits(props, emits);
24
+ </script>
25
+
26
+ <template>
27
+ <Toggle
28
+ data-slot="toggle"
29
+ v-bind="forwarded"
30
+ :class="cn(toggleVariants({ variant: props.variant, size: props.size }), $attrs.class ?? '')"
31
+ >
32
+ <slot />
33
+ </Toggle>
34
+ </template>
@@ -0,0 +1,26 @@
1
+ import { cva, type VariantProps } from 'class-variance-authority';
2
+
3
+ export { default as Toggle } from './Toggle.vue';
4
+
5
+ export const toggleVariants = cva(
6
+ 'inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium transition-colors hover:bg-hover-default outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent-default data-[state=on]:text-accent-default-foreground data-[state=on]:hover:bg-accent-default data-[state=on]:hover:text-accent-default-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',
7
+ {
8
+ variants: {
9
+ variant: {
10
+ default: 'bg-transparent',
11
+ outline: 'border border-input bg-transparent shadow-sm focus-visible:border-ring',
12
+ },
13
+ size: {
14
+ default: 'h-9 px-2 min-w-9',
15
+ sm: 'h-8 px-1.5 min-w-8',
16
+ lg: 'h-10 px-2.5 min-w-10',
17
+ },
18
+ },
19
+ defaultVariants: {
20
+ variant: 'default',
21
+ size: 'default',
22
+ },
23
+ },
24
+ );
25
+
26
+ export type ToggleVariants = VariantProps<typeof toggleVariants>;
@@ -0,0 +1,38 @@
1
+ <script setup lang="ts">
2
+ import type { ToggleGroupRootEmits, ToggleGroupRootProps } from 'reka-ui';
3
+ import { ToggleGroupRoot, useForwardPropsEmits } from 'reka-ui';
4
+ import { provide, toRefs } from 'vue';
5
+ import { cn } from '@/lib/utils';
6
+ import type { ToggleGroupVariants } from '.';
7
+ import { toggleGroupContextKey } from './context';
8
+
9
+ const props = withDefaults(
10
+ defineProps<
11
+ ToggleGroupRootProps & {
12
+ variant?: ToggleGroupVariants['variant'];
13
+ size?: ToggleGroupVariants['size'];
14
+ }
15
+ >(),
16
+ {
17
+ variant: 'default',
18
+ size: 'default',
19
+ },
20
+ );
21
+
22
+ const emits = defineEmits<ToggleGroupRootEmits>();
23
+
24
+ const forwarded = useForwardPropsEmits(props, emits);
25
+
26
+ const { variant, size } = toRefs(props);
27
+ provide(toggleGroupContextKey, { variant, size });
28
+ </script>
29
+
30
+ <template>
31
+ <ToggleGroupRoot
32
+ data-slot="toggle-group"
33
+ v-bind="forwarded"
34
+ :class="cn('flex items-center justify-center gap-1', $attrs.class ?? '')"
35
+ >
36
+ <slot />
37
+ </ToggleGroupRoot>
38
+ </template>
@@ -0,0 +1,37 @@
1
+ <script setup lang="ts">
2
+ import type { ToggleGroupItemProps } from 'reka-ui';
3
+ import { ToggleGroupItem, useForwardProps } from 'reka-ui';
4
+ import { inject } from 'vue';
5
+ import { cn } from '@/lib/utils';
6
+ import { toggleGroupVariants, type ToggleGroupVariants } from '.';
7
+ import { toggleGroupContextKey } from './context';
8
+
9
+ const props = defineProps<
10
+ ToggleGroupItemProps & {
11
+ variant?: ToggleGroupVariants['variant'];
12
+ size?: ToggleGroupVariants['size'];
13
+ }
14
+ >();
15
+
16
+ const context = inject(toggleGroupContextKey);
17
+
18
+ const forwarded = useForwardProps(props);
19
+ </script>
20
+
21
+ <template>
22
+ <ToggleGroupItem
23
+ data-slot="toggle-group-item"
24
+ v-bind="forwarded"
25
+ :class="
26
+ cn(
27
+ toggleGroupVariants({
28
+ variant: props.variant ?? context?.variant?.value,
29
+ size: props.size ?? context?.size?.value,
30
+ }),
31
+ $attrs.class ?? '',
32
+ )
33
+ "
34
+ >
35
+ <slot />
36
+ </ToggleGroupItem>
37
+ </template>
@@ -0,0 +1,11 @@
1
+ import type { InjectionKey, Ref } from 'vue';
2
+ import type { ToggleGroupVariants } from '.';
3
+
4
+ export interface ToggleGroupContext {
5
+ variant: Ref<ToggleGroupVariants['variant']>;
6
+ size: Ref<ToggleGroupVariants['size']>;
7
+ }
8
+
9
+ export const toggleGroupContextKey = Symbol(
10
+ 'toggleGroupContext',
11
+ ) as InjectionKey<ToggleGroupContext>;
@@ -0,0 +1,28 @@
1
+ import { cva, type VariantProps } from 'class-variance-authority';
2
+
3
+ export { default as ToggleGroup } from './ToggleGroup.vue';
4
+ export { default as ToggleGroupItem } from './ToggleGroupItem.vue';
5
+ export { toggleGroupContextKey, type ToggleGroupContext } from './context';
6
+
7
+ export const toggleGroupVariants = cva(
8
+ 'inline-flex items-center justify-center gap-2 rounded-md text-sm font-medium transition-colors hover:bg-hover-default outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent-default data-[state=on]:text-accent-default-foreground data-[state=on]:hover:bg-accent-default data-[state=on]:hover:text-accent-default-foreground [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',
9
+ {
10
+ variants: {
11
+ variant: {
12
+ default: 'bg-transparent',
13
+ outline: 'border border-input bg-transparent shadow-sm focus-visible:border-ring',
14
+ },
15
+ size: {
16
+ default: 'h-9 px-2 min-w-9',
17
+ sm: 'h-8 px-1.5 min-w-8',
18
+ lg: 'h-10 px-2.5 min-w-10',
19
+ },
20
+ },
21
+ defaultVariants: {
22
+ variant: 'default',
23
+ size: 'default',
24
+ },
25
+ },
26
+ );
27
+
28
+ export type ToggleGroupVariants = VariantProps<typeof toggleGroupVariants>;
@@ -29,7 +29,7 @@
29
29
  v-bind="{ ...forwarded, ...$attrs }"
30
30
  :class="
31
31
  cn(
32
- 'z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',
32
+ 'z-50 overflow-hidden rounded-md bg-inverse px-3 py-1.5 text-xs text-inverse-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',
33
33
  props.class,
34
34
  )
35
35
  "