@matta-trade/ui 0.0.0-stage → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (472) hide show
  1. package/DESIGN.md +217 -0
  2. package/README.md +91 -2
  3. package/dist/alert/Alert.vue.d.ts +19 -0
  4. package/dist/alert/AlertDescription.vue.d.ts +17 -0
  5. package/dist/alert/AlertTitle.vue.d.ts +17 -0
  6. package/dist/alert/index.d.ts +8 -0
  7. package/dist/alert/index.js +62 -0
  8. package/dist/alert-dialog/AlertDialog.vue.d.ts +18 -0
  9. package/dist/alert-dialog/AlertDialogAction.vue.d.ts +18 -0
  10. package/dist/alert-dialog/AlertDialogCancel.vue.d.ts +18 -0
  11. package/dist/alert-dialog/AlertDialogContent.vue.d.ts +32 -0
  12. package/dist/alert-dialog/AlertDialogDescription.vue.d.ts +18 -0
  13. package/dist/alert-dialog/AlertDialogFooter.vue.d.ts +17 -0
  14. package/dist/alert-dialog/AlertDialogHeader.vue.d.ts +17 -0
  15. package/dist/alert-dialog/AlertDialogTitle.vue.d.ts +18 -0
  16. package/dist/alert-dialog/AlertDialogTrigger.vue.d.ts +14 -0
  17. package/dist/alert-dialog/index.d.ts +9 -0
  18. package/dist/alert-dialog/index.js +177 -0
  19. package/dist/avatar/Avatar.vue.d.ts +27 -0
  20. package/dist/avatar/AvatarFallback.vue.d.ts +18 -0
  21. package/dist/avatar/AvatarImage.vue.d.ts +14 -0
  22. package/dist/avatar/index.d.ts +9 -0
  23. package/dist/avatar/index.js +120 -0
  24. package/dist/avatar-colors.d.ts +51 -0
  25. package/dist/badge/Badge.vue.d.ts +20 -0
  26. package/dist/badge/index.d.ts +6 -0
  27. package/dist/badge/index.js +58 -0
  28. package/dist/breadcrumb/Breadcrumb.vue.d.ts +17 -0
  29. package/dist/breadcrumb/BreadcrumbEllipsis.vue.d.ts +17 -0
  30. package/dist/breadcrumb/BreadcrumbItem.vue.d.ts +17 -0
  31. package/dist/breadcrumb/BreadcrumbLink.vue.d.ts +20 -0
  32. package/dist/breadcrumb/BreadcrumbList.vue.d.ts +17 -0
  33. package/dist/breadcrumb/BreadcrumbPage.vue.d.ts +17 -0
  34. package/dist/breadcrumb/BreadcrumbSeparator.vue.d.ts +17 -0
  35. package/dist/breadcrumb/index.d.ts +7 -0
  36. package/dist/breadcrumb/index.js +131 -0
  37. package/dist/button/Button.vue.d.ts +36 -0
  38. package/dist/button/index.d.ts +7 -0
  39. package/dist/button/index.js +2 -0
  40. package/dist/button-group/ButtonGroup.vue.d.ts +19 -0
  41. package/dist/button-group/ButtonGroupSeparator.vue.d.ts +10 -0
  42. package/dist/button-group/ButtonGroupText.vue.d.ts +22 -0
  43. package/dist/button-group/index.d.ts +8 -0
  44. package/dist/button-group/index.js +92 -0
  45. package/dist/calendar/Calendar.vue.d.ts +14 -0
  46. package/dist/calendar/CalendarCell.vue.d.ts +18 -0
  47. package/dist/calendar/CalendarCellTrigger.vue.d.ts +18 -0
  48. package/dist/calendar/CalendarGrid.vue.d.ts +18 -0
  49. package/dist/calendar/CalendarGridBody.vue.d.ts +14 -0
  50. package/dist/calendar/CalendarGridHead.vue.d.ts +14 -0
  51. package/dist/calendar/CalendarGridRow.vue.d.ts +18 -0
  52. package/dist/calendar/CalendarHeadCell.vue.d.ts +18 -0
  53. package/dist/calendar/CalendarHeader.vue.d.ts +18 -0
  54. package/dist/calendar/CalendarHeading.vue.d.ts +19 -0
  55. package/dist/calendar/CalendarNextButton.vue.d.ts +18 -0
  56. package/dist/calendar/CalendarPrevButton.vue.d.ts +18 -0
  57. package/dist/calendar/index.d.ts +12 -0
  58. package/dist/calendar/index.js +303 -0
  59. package/dist/card/Card.vue.d.ts +17 -0
  60. package/dist/card/CardContent.vue.d.ts +17 -0
  61. package/dist/card/CardDescription.vue.d.ts +17 -0
  62. package/dist/card/CardFooter.vue.d.ts +17 -0
  63. package/dist/card/CardHeader.vue.d.ts +17 -0
  64. package/dist/card/CardTitle.vue.d.ts +17 -0
  65. package/dist/card/index.d.ts +6 -0
  66. package/dist/card/index.js +2 -0
  67. package/dist/chart/ChartCrosshair.vue.d.ts +13 -0
  68. package/dist/chart/ChartLegend.vue.d.ts +15 -0
  69. package/dist/chart/ChartSingleTooltip.vue.d.ts +12 -0
  70. package/dist/chart/ChartTooltip.vue.d.ts +11 -0
  71. package/dist/chart/index.d.ts +6 -0
  72. package/dist/chart/index.js +177 -0
  73. package/dist/chart/interface.d.ts +63 -0
  74. package/dist/checkbox/Checkbox.vue.d.ts +22 -0
  75. package/dist/checkbox/index.d.ts +1 -0
  76. package/dist/checkbox/index.js +43 -0
  77. package/dist/chunks/avatar-colors-CCGh54Ve.js +37 -0
  78. package/dist/chunks/button-DcaKfSRM.js +100 -0
  79. package/dist/chunks/card-B9Fm3-hL.js +85 -0
  80. package/dist/chunks/dialog-Df5vNbNz.js +196 -0
  81. package/dist/chunks/input-BgkMak31.js +44 -0
  82. package/dist/chunks/scroll-area-COtrGbKj.js +68 -0
  83. package/dist/chunks/separator-DAL7ppX1.js +31 -0
  84. package/dist/chunks/sheet-tX6r4wAA.js +150 -0
  85. package/dist/chunks/tooltip-C80qPEs9.js +102 -0
  86. package/dist/chunks/utils-CX-Pz5p6.js +8 -0
  87. package/dist/combobox/Combobox.vue.d.ts +29 -0
  88. package/dist/combobox/ComboboxAnchor.vue.d.ts +18 -0
  89. package/dist/combobox/ComboboxEmpty.vue.d.ts +18 -0
  90. package/dist/combobox/ComboboxGroup.vue.d.ts +19 -0
  91. package/dist/combobox/ComboboxInput.vue.d.ts +22 -0
  92. package/dist/combobox/ComboboxItem.vue.d.ts +22 -0
  93. package/dist/combobox/ComboboxList.vue.d.ts +32 -0
  94. package/dist/combobox/ComboboxSeparator.vue.d.ts +18 -0
  95. package/dist/combobox/ComboboxTrigger.vue.d.ts +18 -0
  96. package/dist/combobox/index.d.ts +10 -0
  97. package/dist/combobox/index.js +262 -0
  98. package/dist/command/Command.vue.d.ts +36 -0
  99. package/dist/command/CommandDialog.vue.d.ts +18 -0
  100. package/dist/command/CommandEmpty.vue.d.ts +18 -0
  101. package/dist/command/CommandGroup.vue.d.ts +19 -0
  102. package/dist/command/CommandInput.vue.d.ts +8 -0
  103. package/dist/command/CommandItem.vue.d.ts +22 -0
  104. package/dist/command/CommandList.vue.d.ts +18 -0
  105. package/dist/command/CommandSeparator.vue.d.ts +18 -0
  106. package/dist/command/CommandShortcut.vue.d.ts +17 -0
  107. package/dist/command/index.d.ts +90 -0
  108. package/dist/command/index.js +297 -0
  109. package/dist/dialog/Dialog.vue.d.ts +18 -0
  110. package/dist/dialog/DialogClose.vue.d.ts +14 -0
  111. package/dist/dialog/DialogContent.vue.d.ts +32 -0
  112. package/dist/dialog/DialogDescription.vue.d.ts +18 -0
  113. package/dist/dialog/DialogFooter.vue.d.ts +17 -0
  114. package/dist/dialog/DialogHeader.vue.d.ts +17 -0
  115. package/dist/dialog/DialogScrollContent.vue.d.ts +32 -0
  116. package/dist/dialog/DialogTitle.vue.d.ts +18 -0
  117. package/dist/dialog/DialogTrigger.vue.d.ts +14 -0
  118. package/dist/dialog/index.d.ts +9 -0
  119. package/dist/dialog/index.js +2 -0
  120. package/dist/drawer/Drawer.vue.d.ts +30 -0
  121. package/dist/drawer/DrawerContent.vue.d.ts +32 -0
  122. package/dist/drawer/DrawerDescription.vue.d.ts +18 -0
  123. package/dist/drawer/DrawerFooter.vue.d.ts +17 -0
  124. package/dist/drawer/DrawerHeader.vue.d.ts +17 -0
  125. package/dist/drawer/DrawerOverlay.vue.d.ts +8 -0
  126. package/dist/drawer/DrawerTitle.vue.d.ts +18 -0
  127. package/dist/drawer/index.d.ts +8 -0
  128. package/dist/drawer/index.js +166 -0
  129. package/dist/dropdown-menu/DropdownMenu.vue.d.ts +18 -0
  130. package/dist/dropdown-menu/DropdownMenuContent.vue.d.ts +32 -0
  131. package/dist/dropdown-menu/DropdownMenuItem.vue.d.ts +22 -0
  132. package/dist/dropdown-menu/DropdownMenuLabel.vue.d.ts +18 -0
  133. package/dist/dropdown-menu/DropdownMenuSeparator.vue.d.ts +8 -0
  134. package/dist/dropdown-menu/DropdownMenuTrigger.vue.d.ts +14 -0
  135. package/dist/dropdown-menu/index.d.ts +6 -0
  136. package/dist/dropdown-menu/index.js +149 -0
  137. package/dist/index.d.ts +2 -0
  138. package/dist/index.js +3 -0
  139. package/dist/input/Input.vue.d.ts +19 -0
  140. package/dist/input/index.d.ts +1 -0
  141. package/dist/input/index.js +2 -0
  142. package/dist/label/Label.vue.d.ts +18 -0
  143. package/dist/label/index.d.ts +1 -0
  144. package/dist/label/index.js +29 -0
  145. package/dist/lib/utils.d.ts +2 -0
  146. package/dist/popover/Popover.vue.d.ts +18 -0
  147. package/dist/popover/PopoverContent.vue.d.ts +35 -0
  148. package/dist/popover/PopoverTrigger.vue.d.ts +14 -0
  149. package/dist/popover/index.d.ts +3 -0
  150. package/dist/popover/index.js +96 -0
  151. package/dist/range-calendar/RangeCalendar.vue.d.ts +18 -0
  152. package/dist/range-calendar/RangeCalendarCell.vue.d.ts +18 -0
  153. package/dist/range-calendar/RangeCalendarCellTrigger.vue.d.ts +18 -0
  154. package/dist/range-calendar/RangeCalendarGrid.vue.d.ts +18 -0
  155. package/dist/range-calendar/RangeCalendarGridBody.vue.d.ts +14 -0
  156. package/dist/range-calendar/RangeCalendarGridHead.vue.d.ts +14 -0
  157. package/dist/range-calendar/RangeCalendarGridRow.vue.d.ts +18 -0
  158. package/dist/range-calendar/RangeCalendarHeadCell.vue.d.ts +18 -0
  159. package/dist/range-calendar/RangeCalendarHeader.vue.d.ts +18 -0
  160. package/dist/range-calendar/RangeCalendarHeading.vue.d.ts +19 -0
  161. package/dist/range-calendar/RangeCalendarNextButton.vue.d.ts +18 -0
  162. package/dist/range-calendar/RangeCalendarPrevButton.vue.d.ts +18 -0
  163. package/dist/range-calendar/index.d.ts +12 -0
  164. package/dist/range-calendar/index.js +311 -0
  165. package/dist/scroll-area/ScrollArea.vue.d.ts +19 -0
  166. package/dist/scroll-area/ScrollBar.vue.d.ts +10 -0
  167. package/dist/scroll-area/index.d.ts +2 -0
  168. package/dist/scroll-area/index.js +2 -0
  169. package/dist/select/Select.vue.d.ts +21 -0
  170. package/dist/select/SelectContent.vue.d.ts +28 -0
  171. package/dist/select/SelectGroup.vue.d.ts +18 -0
  172. package/dist/select/SelectItem.vue.d.ts +18 -0
  173. package/dist/select/SelectItemText.vue.d.ts +14 -0
  174. package/dist/select/SelectLabel.vue.d.ts +18 -0
  175. package/dist/select/SelectScrollDownButton.vue.d.ts +18 -0
  176. package/dist/select/SelectScrollUpButton.vue.d.ts +18 -0
  177. package/dist/select/SelectSeparator.vue.d.ts +8 -0
  178. package/dist/select/SelectTrigger.vue.d.ts +18 -0
  179. package/dist/select/SelectValue.vue.d.ts +14 -0
  180. package/dist/select/index.d.ts +11 -0
  181. package/dist/select/index.js +276 -0
  182. package/dist/separator/Separator.vue.d.ts +11 -0
  183. package/dist/separator/index.d.ts +1 -0
  184. package/dist/separator/index.js +2 -0
  185. package/dist/sheet/Sheet.vue.d.ts +18 -0
  186. package/dist/sheet/SheetClose.vue.d.ts +14 -0
  187. package/dist/sheet/SheetContent.vue.d.ts +39 -0
  188. package/dist/sheet/SheetDescription.vue.d.ts +18 -0
  189. package/dist/sheet/SheetHeader.vue.d.ts +17 -0
  190. package/dist/sheet/SheetTitle.vue.d.ts +18 -0
  191. package/dist/sheet/SheetTrigger.vue.d.ts +14 -0
  192. package/dist/sheet/index.d.ts +7 -0
  193. package/dist/sheet/index.js +2 -0
  194. package/dist/sidebar/Sidebar.vue.d.ts +28 -0
  195. package/dist/sidebar/SidebarContent.vue.d.ts +17 -0
  196. package/dist/sidebar/SidebarFooter.vue.d.ts +17 -0
  197. package/dist/sidebar/SidebarGroup.vue.d.ts +17 -0
  198. package/dist/sidebar/SidebarGroupAction.vue.d.ts +20 -0
  199. package/dist/sidebar/SidebarGroupContent.vue.d.ts +17 -0
  200. package/dist/sidebar/SidebarGroupLabel.vue.d.ts +20 -0
  201. package/dist/sidebar/SidebarHeader.vue.d.ts +17 -0
  202. package/dist/sidebar/SidebarInput.vue.d.ts +17 -0
  203. package/dist/sidebar/SidebarInset.vue.d.ts +17 -0
  204. package/dist/sidebar/SidebarMenu.vue.d.ts +17 -0
  205. package/dist/sidebar/SidebarMenuAction.vue.d.ts +21 -0
  206. package/dist/sidebar/SidebarMenuBadge.vue.d.ts +17 -0
  207. package/dist/sidebar/SidebarMenuButton.vue.d.ts +29 -0
  208. package/dist/sidebar/SidebarMenuItem.vue.d.ts +17 -0
  209. package/dist/sidebar/SidebarMenuSub.vue.d.ts +17 -0
  210. package/dist/sidebar/SidebarMenuSubButton.vue.d.ts +23 -0
  211. package/dist/sidebar/SidebarMenuSubItem.vue.d.ts +17 -0
  212. package/dist/sidebar/SidebarProvider.vue.d.ts +26 -0
  213. package/dist/sidebar/SidebarRail.vue.d.ts +7 -0
  214. package/dist/sidebar/SidebarSeparator.vue.d.ts +7 -0
  215. package/dist/sidebar/SidebarTrigger.vue.d.ts +7 -0
  216. package/dist/sidebar/index.d.ts +45 -0
  217. package/dist/sidebar/index.js +595 -0
  218. package/dist/sonner/Sonner.vue.d.ts +4 -0
  219. package/dist/sonner/index.d.ts +1 -0
  220. package/dist/sonner/index.js +59 -0
  221. package/dist/stepper/Stepper.vue.d.ts +17 -0
  222. package/dist/stepper/index.d.ts +1 -0
  223. package/dist/stepper/index.js +57 -0
  224. package/dist/switch/Switch.vue.d.ts +12 -0
  225. package/dist/switch/index.d.ts +1 -0
  226. package/dist/switch/index.js +46 -0
  227. package/dist/table/Table.vue.d.ts +17 -0
  228. package/dist/table/TableBody.vue.d.ts +17 -0
  229. package/dist/table/TableCell.vue.d.ts +17 -0
  230. package/dist/table/TableHead.vue.d.ts +17 -0
  231. package/dist/table/TableHeader.vue.d.ts +17 -0
  232. package/dist/table/TableRow.vue.d.ts +17 -0
  233. package/dist/table/index.d.ts +6 -0
  234. package/dist/table/index.js +84 -0
  235. package/dist/tabs/Tabs.vue.d.ts +19 -0
  236. package/dist/tabs/TabsContent.vue.d.ts +18 -0
  237. package/dist/tabs/TabsList.vue.d.ts +18 -0
  238. package/dist/tabs/TabsTrigger.vue.d.ts +18 -0
  239. package/dist/tabs/index.d.ts +4 -0
  240. package/dist/tabs/index.js +93 -0
  241. package/dist/tags-input/TagsInput.vue.d.ts +28 -0
  242. package/dist/tags-input/TagsInputInput.vue.d.ts +8 -0
  243. package/dist/tags-input/TagsInputItem.vue.d.ts +18 -0
  244. package/dist/tags-input/TagsInputItemDelete.vue.d.ts +18 -0
  245. package/dist/tags-input/TagsInputItemText.vue.d.ts +8 -0
  246. package/dist/tags-input/index.d.ts +5 -0
  247. package/dist/tags-input/index.js +130 -0
  248. package/dist/textarea/Textarea.vue.d.ts +19 -0
  249. package/dist/textarea/index.d.ts +1 -0
  250. package/dist/textarea/index.js +43 -0
  251. package/dist/tooltip/Tooltip.vue.d.ts +18 -0
  252. package/dist/tooltip/TooltipContent.vue.d.ts +26 -0
  253. package/dist/tooltip/TooltipProvider.vue.d.ts +14 -0
  254. package/dist/tooltip/TooltipRoot.vue.d.ts +18 -0
  255. package/dist/tooltip/TooltipTrigger.vue.d.ts +14 -0
  256. package/dist/tooltip/index.d.ts +4 -0
  257. package/dist/tooltip/index.js +2 -0
  258. package/package.json +89 -5
  259. package/src/alert/Alert.vue +17 -0
  260. package/src/alert/AlertDescription.vue +14 -0
  261. package/src/alert/AlertTitle.vue +14 -0
  262. package/src/alert/index.ts +29 -0
  263. package/src/alert-dialog/AlertDialog.vue +15 -0
  264. package/src/alert-dialog/AlertDialogAction.vue +18 -0
  265. package/src/alert-dialog/AlertDialogCancel.vue +18 -0
  266. package/src/alert-dialog/AlertDialogContent.vue +33 -0
  267. package/src/alert-dialog/AlertDialogDescription.vue +17 -0
  268. package/src/alert-dialog/AlertDialogFooter.vue +14 -0
  269. package/src/alert-dialog/AlertDialogHeader.vue +14 -0
  270. package/src/alert-dialog/AlertDialogTitle.vue +17 -0
  271. package/src/alert-dialog/AlertDialogTrigger.vue +12 -0
  272. package/src/alert-dialog/index.ts +9 -0
  273. package/src/avatar/Avatar.vue +76 -0
  274. package/src/avatar/AvatarFallback.vue +18 -0
  275. package/src/avatar/AvatarImage.vue +12 -0
  276. package/src/avatar/index.ts +30 -0
  277. package/src/avatar-colors.ts +24 -0
  278. package/src/badge/Badge.vue +44 -0
  279. package/src/badge/index.ts +33 -0
  280. package/src/breadcrumb/Breadcrumb.vue +13 -0
  281. package/src/breadcrumb/BreadcrumbEllipsis.vue +18 -0
  282. package/src/breadcrumb/BreadcrumbItem.vue +14 -0
  283. package/src/breadcrumb/BreadcrumbLink.vue +16 -0
  284. package/src/breadcrumb/BreadcrumbList.vue +14 -0
  285. package/src/breadcrumb/BreadcrumbPage.vue +14 -0
  286. package/src/breadcrumb/BreadcrumbSeparator.vue +17 -0
  287. package/src/breadcrumb/index.ts +7 -0
  288. package/src/button/Button.vue +64 -0
  289. package/src/button/index.ts +40 -0
  290. package/src/button-group/ButtonGroup.vue +22 -0
  291. package/src/button-group/ButtonGroupSeparator.vue +21 -0
  292. package/src/button-group/ButtonGroupText.vue +34 -0
  293. package/src/button-group/index.ts +23 -0
  294. package/src/calendar/Calendar.vue +57 -0
  295. package/src/calendar/CalendarCell.vue +27 -0
  296. package/src/calendar/CalendarCellTrigger.vue +38 -0
  297. package/src/calendar/CalendarGrid.vue +19 -0
  298. package/src/calendar/CalendarGridBody.vue +12 -0
  299. package/src/calendar/CalendarGridHead.vue +12 -0
  300. package/src/calendar/CalendarGridRow.vue +19 -0
  301. package/src/calendar/CalendarHeadCell.vue +19 -0
  302. package/src/calendar/CalendarHeader.vue +19 -0
  303. package/src/calendar/CalendarHeading.vue +25 -0
  304. package/src/calendar/CalendarNextButton.vue +26 -0
  305. package/src/calendar/CalendarPrevButton.vue +26 -0
  306. package/src/calendar/index.ts +12 -0
  307. package/src/card/Card.vue +14 -0
  308. package/src/card/CardContent.vue +14 -0
  309. package/src/card/CardDescription.vue +14 -0
  310. package/src/card/CardFooter.vue +14 -0
  311. package/src/card/CardHeader.vue +14 -0
  312. package/src/card/CardTitle.vue +14 -0
  313. package/src/card/index.ts +6 -0
  314. package/src/chart/ChartCrosshair.vue +47 -0
  315. package/src/chart/ChartLegend.vue +63 -0
  316. package/src/chart/ChartSingleTooltip.vue +61 -0
  317. package/src/chart/ChartTooltip.vue +35 -0
  318. package/src/chart/index.ts +18 -0
  319. package/src/chart/interface.ts +64 -0
  320. package/src/checkbox/Checkbox.vue +33 -0
  321. package/src/checkbox/index.ts +1 -0
  322. package/src/combobox/Combobox.vue +15 -0
  323. package/src/combobox/ComboboxAnchor.vue +19 -0
  324. package/src/combobox/ComboboxEmpty.vue +17 -0
  325. package/src/combobox/ComboboxGroup.vue +33 -0
  326. package/src/combobox/ComboboxInput.vue +33 -0
  327. package/src/combobox/ComboboxItem.vue +28 -0
  328. package/src/combobox/ComboboxList.vue +36 -0
  329. package/src/combobox/ComboboxSeparator.vue +17 -0
  330. package/src/combobox/ComboboxTrigger.vue +23 -0
  331. package/src/combobox/index.ts +11 -0
  332. package/src/command/Command.vue +85 -0
  333. package/src/command/CommandDialog.vue +23 -0
  334. package/src/command/CommandEmpty.vue +22 -0
  335. package/src/command/CommandGroup.vue +50 -0
  336. package/src/command/CommandInput.vue +42 -0
  337. package/src/command/CommandItem.vue +79 -0
  338. package/src/command/CommandList.vue +25 -0
  339. package/src/command/CommandSeparator.vue +17 -0
  340. package/src/command/CommandShortcut.vue +14 -0
  341. package/src/command/index.ts +25 -0
  342. package/src/dialog/Dialog.vue +15 -0
  343. package/src/dialog/DialogClose.vue +12 -0
  344. package/src/dialog/DialogContent.vue +41 -0
  345. package/src/dialog/DialogDescription.vue +19 -0
  346. package/src/dialog/DialogFooter.vue +12 -0
  347. package/src/dialog/DialogHeader.vue +14 -0
  348. package/src/dialog/DialogScrollContent.vue +49 -0
  349. package/src/dialog/DialogTitle.vue +19 -0
  350. package/src/dialog/DialogTrigger.vue +12 -0
  351. package/src/dialog/index.ts +9 -0
  352. package/src/drawer/Drawer.vue +20 -0
  353. package/src/drawer/DrawerContent.vue +31 -0
  354. package/src/drawer/DrawerDescription.vue +17 -0
  355. package/src/drawer/DrawerFooter.vue +14 -0
  356. package/src/drawer/DrawerHeader.vue +14 -0
  357. package/src/drawer/DrawerOverlay.vue +15 -0
  358. package/src/drawer/DrawerTitle.vue +17 -0
  359. package/src/drawer/index.ts +8 -0
  360. package/src/dropdown-menu/DropdownMenu.vue +26 -0
  361. package/src/dropdown-menu/DropdownMenuContent.vue +28 -0
  362. package/src/dropdown-menu/DropdownMenuItem.vue +23 -0
  363. package/src/dropdown-menu/DropdownMenuLabel.vue +13 -0
  364. package/src/dropdown-menu/DropdownMenuSeparator.vue +11 -0
  365. package/src/dropdown-menu/DropdownMenuTrigger.vue +11 -0
  366. package/src/dropdown-menu/index.ts +6 -0
  367. package/src/index.ts +2 -0
  368. package/src/input/Input.vue +43 -0
  369. package/src/input/index.ts +1 -0
  370. package/src/label/Label.vue +16 -0
  371. package/src/label/index.ts +1 -0
  372. package/src/lib/utils.ts +6 -0
  373. package/src/popover/Popover.vue +15 -0
  374. package/src/popover/PopoverContent.vue +39 -0
  375. package/src/popover/PopoverTrigger.vue +11 -0
  376. package/src/popover/index.ts +3 -0
  377. package/src/range-calendar/RangeCalendar.vue +57 -0
  378. package/src/range-calendar/RangeCalendarCell.vue +27 -0
  379. package/src/range-calendar/RangeCalendarCellTrigger.vue +40 -0
  380. package/src/range-calendar/RangeCalendarGrid.vue +19 -0
  381. package/src/range-calendar/RangeCalendarGridBody.vue +12 -0
  382. package/src/range-calendar/RangeCalendarGridHead.vue +12 -0
  383. package/src/range-calendar/RangeCalendarGridRow.vue +19 -0
  384. package/src/range-calendar/RangeCalendarHeadCell.vue +19 -0
  385. package/src/range-calendar/RangeCalendarHeader.vue +19 -0
  386. package/src/range-calendar/RangeCalendarHeading.vue +25 -0
  387. package/src/range-calendar/RangeCalendarNextButton.vue +26 -0
  388. package/src/range-calendar/RangeCalendarPrevButton.vue +26 -0
  389. package/src/range-calendar/index.ts +12 -0
  390. package/src/scroll-area/ScrollArea.vue +22 -0
  391. package/src/scroll-area/ScrollBar.vue +29 -0
  392. package/src/scroll-area/index.ts +2 -0
  393. package/src/select/Select.vue +15 -0
  394. package/src/select/SelectContent.vue +43 -0
  395. package/src/select/SelectGroup.vue +17 -0
  396. package/src/select/SelectItem.vue +36 -0
  397. package/src/select/SelectItemText.vue +12 -0
  398. package/src/select/SelectLabel.vue +14 -0
  399. package/src/select/SelectScrollDownButton.vue +22 -0
  400. package/src/select/SelectScrollUpButton.vue +22 -0
  401. package/src/select/SelectSeparator.vue +15 -0
  402. package/src/select/SelectTrigger.vue +31 -0
  403. package/src/select/SelectValue.vue +12 -0
  404. package/src/select/index.ts +11 -0
  405. package/src/separator/Separator.vue +21 -0
  406. package/src/separator/index.ts +1 -0
  407. package/src/sheet/Sheet.vue +15 -0
  408. package/src/sheet/SheetClose.vue +11 -0
  409. package/src/sheet/SheetContent.vue +54 -0
  410. package/src/sheet/SheetDescription.vue +13 -0
  411. package/src/sheet/SheetHeader.vue +14 -0
  412. package/src/sheet/SheetTitle.vue +13 -0
  413. package/src/sheet/SheetTrigger.vue +11 -0
  414. package/src/sheet/index.ts +7 -0
  415. package/src/sidebar/Sidebar.vue +101 -0
  416. package/src/sidebar/SidebarContent.vue +21 -0
  417. package/src/sidebar/SidebarFooter.vue +16 -0
  418. package/src/sidebar/SidebarGroup.vue +16 -0
  419. package/src/sidebar/SidebarGroupAction.vue +31 -0
  420. package/src/sidebar/SidebarGroupContent.vue +16 -0
  421. package/src/sidebar/SidebarGroupLabel.vue +31 -0
  422. package/src/sidebar/SidebarHeader.vue +16 -0
  423. package/src/sidebar/SidebarInput.vue +20 -0
  424. package/src/sidebar/SidebarInset.vue +25 -0
  425. package/src/sidebar/SidebarMenu.vue +16 -0
  426. package/src/sidebar/SidebarMenuAction.vue +37 -0
  427. package/src/sidebar/SidebarMenuBadge.vue +29 -0
  428. package/src/sidebar/SidebarMenuButton.vue +64 -0
  429. package/src/sidebar/SidebarMenuItem.vue +16 -0
  430. package/src/sidebar/SidebarMenuSub.vue +25 -0
  431. package/src/sidebar/SidebarMenuSubButton.vue +39 -0
  432. package/src/sidebar/SidebarMenuSubItem.vue +16 -0
  433. package/src/sidebar/SidebarProvider.vue +74 -0
  434. package/src/sidebar/SidebarRail.vue +34 -0
  435. package/src/sidebar/SidebarSeparator.vue +15 -0
  436. package/src/sidebar/SidebarTrigger.vue +28 -0
  437. package/src/sidebar/index.ts +70 -0
  438. package/src/sonner/Sonner.vue +54 -0
  439. package/src/sonner/index.ts +1 -0
  440. package/src/stepper/Stepper.vue +58 -0
  441. package/src/stepper/index.ts +1 -0
  442. package/src/switch/Switch.vue +41 -0
  443. package/src/switch/index.ts +1 -0
  444. package/src/table/Table.vue +16 -0
  445. package/src/table/TableBody.vue +14 -0
  446. package/src/table/TableCell.vue +14 -0
  447. package/src/table/TableHead.vue +14 -0
  448. package/src/table/TableHeader.vue +14 -0
  449. package/src/table/TableRow.vue +14 -0
  450. package/src/table/index.ts +6 -0
  451. package/src/tabs/Tabs.vue +15 -0
  452. package/src/tabs/TabsContent.vue +16 -0
  453. package/src/tabs/TabsList.vue +16 -0
  454. package/src/tabs/TabsTrigger.vue +21 -0
  455. package/src/tabs/index.ts +4 -0
  456. package/src/tags-input/TagsInput.vue +23 -0
  457. package/src/tags-input/TagsInputInput.vue +17 -0
  458. package/src/tags-input/TagsInputItem.vue +27 -0
  459. package/src/tags-input/TagsInputItemDelete.vue +22 -0
  460. package/src/tags-input/TagsInputItemText.vue +17 -0
  461. package/src/tags-input/index.ts +5 -0
  462. package/src/textarea/Textarea.vue +41 -0
  463. package/src/textarea/index.ts +1 -0
  464. package/src/tooltip/Tooltip.vue +15 -0
  465. package/src/tooltip/TooltipContent.vue +37 -0
  466. package/src/tooltip/TooltipProvider.vue +12 -0
  467. package/src/tooltip/TooltipRoot.vue +14 -0
  468. package/src/tooltip/TooltipTrigger.vue +12 -0
  469. package/src/tooltip/index.ts +4 -0
  470. package/styles/kit.css +100 -0
  471. package/styles/theme.css +950 -0
  472. package/styles/typography.css +430 -0
package/DESIGN.md ADDED
@@ -0,0 +1,217 @@
1
+ # Matta design system — House Style (DESIGN.md)
2
+
3
+ _Shared by every Matta admin app. This file ships with the `@matta/ui` package._
4
+
5
+ This file is the design law for every screen built on this design system. Every new screen and component must
6
+ follow it. When a component's default style conflicts with a rule here, the rule wins.
7
+ Add new rules here as they are decided.
8
+
9
+ > **Rewritten 2026-09-25 for Vue 3 + shadcn-vue + Tailwind v4.** The previous version of
10
+ > this file described the React / Untitled UI kit this repo no longer contains — every
11
+ > component it named (`ModalShell`, `FeaturedIcon`, `@/components/base/*`,
12
+ > `@/components/application/*`, `@untitledui/icons`, `getAvatarInitialsColor` at the old
13
+ > path) was removed in the 2026-09-22 Vue migration. Every component named below exists in
14
+ > this package — import it as `@matta/ui/<name>`.
15
+ >
16
+ > Commands, file naming, conventions and the local build environment live in `CLAUDE.md`.
17
+ > This file covers how things must look, not how they are built.
18
+
19
+ ## Page & layout
20
+
21
+ - The page background is the **light grey shell surface**, never plain white: the content
22
+ area carries `bg-gray-50/50 dark:bg-gray-950/80` and cards/tables sit on it as raised
23
+ white surfaces. (This theme has no `gray-25` step — don't reach for one.)
24
+ - Search bars and filter controls sit **on the page, above the card/table** — never inside
25
+ the card itself.
26
+ - Cards and tables are the primary visual units; main content sits in a container with
27
+ consistent horizontal padding.
28
+ - Cards that sit in a row are **uniform height** — content must not stretch one card taller
29
+ than its siblings.
30
+ - Page header: a **short title** (a name, not a sentence) with a one-line subtitle
31
+ underneath, and the primary action button **top-right**.
32
+
33
+ ## Corners & shape
34
+
35
+ - **Cards and tables use `rounded-xl`** — not the kit default `rounded-lg`/`rounded-md`.
36
+ - **Modals use `rounded-lg` (8px)** — modals are deliberately tighter than cards.
37
+ - Fields and buttons use `rounded-lg`; badges are `rounded-full`. Both are the kit default,
38
+ so don't restate them per screen.
39
+ - If a new shape needs its own radius, add the rule here rather than inventing one inline.
40
+
41
+ ## Dividers
42
+
43
+ - Any divider inside a card (a header/footer border, or a manual `border-t`/`border-b`) must
44
+ **touch both edges of the card** — never inset by the card's own padding.
45
+ - A card with a header-then-divider pattern is built as an **outer zero-padding container**
46
+ with the header (its own `px`/`py` + its `border-b`) and the body (its own `p`) as separate
47
+ children — never padding and the divider on the same element inside a padded ancestor.
48
+ (The Matta admin's Overview summary cards are the reference.)
49
+
50
+ ## Fields
51
+
52
+ - Inputs, textareas, selects and combo boxes share **one height: `h-10` (40px)**. Never give
53
+ a field a one-off height on a screen.
54
+ - Reuse the field components the admin apps already provide before building anything new:
55
+ `SearchableSelect` (searchable single select), `TagPickerField` (multi-value picker),
56
+ `FileUploadField` / `BannerUploadField` (uploads), `IconPicker`.
57
+ - Field colours come from the theme: `border-border-primary` at rest,
58
+ `focus-visible:border-border-brand` + `ring-brand-500/20` on focus, `opacity-50` when
59
+ disabled.
60
+ - Transitions stay short (`transition-colors`) — no long or bouncy easing.
61
+
62
+ ## Buttons
63
+
64
+ - Use the kit `Button` with a `variant` — never a hand-styled `<button>` for an action:
65
+ `primary` (default) / `secondary` / `tertiary` / `destructive` / `outline` / `ghost` / `link`.
66
+ - Sizes: `sm` h-8, `md` h-9 (default), `lg` h-10, `xl` h-11. Icon-only actions use
67
+ `size="icon-sm" | "icon-md" | "icon-lg"` rather than a hand-rolled square button.
68
+ - Buttons are **flat — no drop shadow and no ring.** Depth and grouping come from the fill
69
+ and the hover state, not from an edge. Never add `shadow-*` or `ring-1` to make a button
70
+ "look more clickable".
71
+ - `focus-visible:ring-*` is the **keyboard focus** indicator and stays — that is
72
+ accessibility, not decoration.
73
+ - If a button must stand out, change its **colour**, not its elevation or its edge.
74
+
75
+ ## Badges
76
+
77
+ - Always the kit `Badge` (`@matta/ui/badge`) — never hand-build a pill or a coloured
78
+ `<span>`.
79
+ - **Status and variant badges are coloured.** Pick the semantic variant: `brand`, `success`,
80
+ `warning`, `error`, `indigo`, `purple`, `pink`. Grey (`gray`/`secondary`) reads as
81
+ unfinished and is a last resort for a value with genuinely no meaning.
82
+ - **Never place a grey badge on a grey surface** — it disappears into the card instead of
83
+ reading as a distinct element.
84
+ - The `dot` prop renders the leading status dot and inherits the variant's colour.
85
+ - A table row's status is a badge, never bare coloured text.
86
+
87
+ ## Tables
88
+
89
+ - Use the kit `Table` (`@matta/ui/table`).
90
+ - Headers are **`text-xs` / weight 500 (`font-medium`) in `text-quaternary`** — not semibold,
91
+ not body-sized.
92
+ - The row-actions column header omits visible text (`aria-label="Actions"` keeps it
93
+ accessible).
94
+ - **Pagination stays together with the table** — one unit in the same card footer, not
95
+ separate blocks.
96
+ - The **page** (not the table component) owns searching, filtering and paging state.
97
+ - Wide tables scroll horizontally _inside_ their card (`ScrollArea` plus a `min-w-[…]` inner
98
+ wrapper); the card itself never scrolls off the page.
99
+
100
+ ## Tabs
101
+
102
+ - Tabs are the **segmented control**: `TabsList` is `rounded-lg` on `bg-secondary` with `p-1`,
103
+ and the active `TabsTrigger` is a raised `bg-primary` chip. That is the app-wide pattern
104
+ (list pages, detail panels, drawers).
105
+ - There are **no underline tabs** in this kit — don't reintroduce them on one screen.
106
+ - Always import from `@matta/ui/tabs`.
107
+
108
+ ## Avatars
109
+
110
+ - Always the kit `Avatar` (`@matta/ui/avatar`) — never a raw `<img>` and never an
111
+ initials-only circle.
112
+ - Initials fallbacks take a **deterministic colour** from `getAvatarInitialsColor`
113
+ (`@matta/ui`) — same identity, same colour, every render. Never the flat
114
+ grey default.
115
+ - Every avatar slot shows something (photo or coloured initials) — never a blank slot.
116
+
117
+ ## Menus (DropdownMenu)
118
+
119
+ - Item labels are **regular weight** (`text-sm`), not semibold — semibold reads too heavy at
120
+ the sizes this app uses menus at.
121
+ - **Destructive entries take the error colour** (`text-error-primary`), not a `red-*` palette
122
+ class.
123
+ - Row-action kebabs share one item shape across views (`cursor-pointer`, `py-2`, `text-sm`)
124
+ so every table's menu behaves and reads identically.
125
+
126
+ ## Modals, panels & confirmations
127
+
128
+ - **Modal dialog:** `Dialog` / `DialogScrollContent` — overlay, centred card, `rounded-lg`,
129
+ close button top-right.
130
+ - **Destructive or cautionary confirmation:** `AlertDialog` — Cancel plus one coloured confirm
131
+ button — and the description **names the affected record**, so the dialog is unambiguous
132
+ about what it acts on.
133
+ - **Record detail and create/edit flows:** `Sheet` (right-hand drawer) — e.g.
134
+ `OrderDetailsSheet`, `RequestDetailsSheet`, `CustomerProfileSheet`, `CreateOrderDrawer`.
135
+ - The bottom `Drawer` is showcase-only; application screens use `Sheet`.
136
+ - One pattern per job. Don't add a fourth kind of overlay when one of these three fits.
137
+
138
+ ## Icons
139
+
140
+ - **`lucide-vue-next` only**, named imports, `size-4` / `size-5`. Don't add a second icon
141
+ library.
142
+ - No icon beside a document or row title unless explicitly requested.
143
+ - A summary/metric row's leading icon is a lucide icon inside the card's own muted container
144
+ — not a hand-rolled coloured circle.
145
+ - Metric rows above a table are cards in the house shape (`rounded-xl`,
146
+ `border-border-secondary`, `bg-primary`), with the number at `text-2xl`/`text-3xl`
147
+ `font-semibold` and the caption in `text-tertiary` — not loose bare text.
148
+
149
+ ## Components (build rules)
150
+
151
+ - **Compose from the kit (`@matta/ui/<name>`) before building anything new.**
152
+ - When a primitive genuinely doesn't exist, add it with
153
+ `npx shadcn-vue@latest add <name>`, keep it in the kit style (`cn()` + CVA variants), add a
154
+ section for it on the **Design System showcase page**
155
+ (the admin app's `DesignSystemView.vue`) — then reuse it everywhere.
156
+ - **Every component in this package is re-tokenised** to this theme
157
+ (`bg-primary`/`bg-secondary`, `border-border-secondary`, `text-primary`/`text-tertiary`/
158
+ `text-quaternary`, `bg-brand-solid`, …). Re-running `shadcn-vue add` on a primitive that
159
+ already exists **overwrites that mapping and reverts the theme** — use the CLI to add
160
+ _missing_ primitives only, and diff it against the theme before keeping it.
161
+ - Colours come from the semantic tokens in `styles/theme.css` (shipped as
162
+ `@matta/ui/styles/theme.css`): `text-primary` /
163
+ `text-secondary` / `text-tertiary` / `text-quaternary`, `bg-primary` / `bg-secondary`,
164
+ `border-primary` / `border-secondary`, `text-brand-secondary`, `text-error-primary`, and the
165
+ `utility-*` status scales. Two ramps may be named directly: the **brand** ramp
166
+ (`bg-brand-600`, `hover:bg-brand-700` — the Matta blue the primary buttons use) and the
167
+ **flux** ramp (`bg-flux-600`, `hover:bg-flux-700` — the Flux red, base `#E50031`). Nothing
168
+ else. Both ramps run `50` → `950` off the same lightness steps, so the two apps differ by
169
+ palette only.
170
+ - **No raw hex and no arbitrary colour values** (`bg-[#…]`) anywhere. No second component
171
+ library: no Untitled UI, no extra kit.
172
+ - Variants come from CVA; class names are composed with `cn()` from `@matta/ui`.
173
+
174
+ ## Data & mock state
175
+
176
+ - Pages run on in-memory mock data in each app's `src/utils/`, typed from `src/types/`, and reset on
177
+ refresh. Views stay presentation-only; data, formatting and derived figures live in
178
+ `utils/`.
179
+ - **Never present mock data as live data** — no "last synced", no invented timestamps, no
180
+ copy implying a backend that doesn't exist yet.
181
+
182
+ ## Copy
183
+
184
+ - Titles are short; the subtitle says what the page is for in one line.
185
+ - Confirmations and empty states name the thing they are about ("No orders yet", "Reject this
186
+ customer?") rather than using generic wording.
187
+ - Sentence case for labels and buttons; no exclamation marks.
188
+
189
+ ## Open conflicts — the code does not match this document yet
190
+
191
+ Found 2026-09-25 while rewriting this file. Each needs a decision: change the code to match
192
+ the rule, or change the rule to match the code. Nothing here is silently harmonised.
193
+
194
+ 1. **Button elevation.** Rule: flat, no shadow. Code: `@matta/ui/button`
195
+ puts `shadow-xs` on `primary`, `secondary` and `destructive`. `CLAUDE.md` also states
196
+ buttons are flat, so the code is the outlier.
197
+ 2. **Card radius.** Rule: `rounded-xl`. Code: `@matta/ui/card` ships
198
+ `rounded-lg`, **and is used only on the showcase page** — every application screen builds
199
+ its card as a `rounded-xl border border-border-secondary bg-primary` container by hand
200
+ (see `OverviewView.vue`). Either fix the primitive and start using it, or keep the
201
+ hand-built shells and drop the primitive.
202
+ 3. **Modal radius.** Rule: `rounded-lg` (8px). Code:
203
+ `@matta/ui/dialog` ships `rounded-xl` — cards and modals are
204
+ currently swapped.
205
+ 4. **Table header weight.** Rule: `font-medium` (500). Code:
206
+ `@matta/ui/table` ships `font-semibold`.
207
+ 5. **Page background step.** The rule above now states the shell's actual grey
208
+ (`bg-gray-50/50`). This one is only still open because the original spec called for a
209
+ lighter **grey-25** step that this theme doesn't define — decide whether to add a
210
+ `--color-gray-25` token and move the shell onto it, or strike grey-25 from the spec for
211
+ good.
212
+ 6. **Destructive menu items.** Rule: `text-error-primary`. Code: `AgentsView.vue` and
213
+ `CustomersView.vue` hardcode `text-red-600 dark:text-red-400`.
214
+
215
+ Also true today, but a migration state rather than a rule conflict: many views still use raw
216
+ palette greys (`text-gray-900 dark:text-white`, `border-gray-200 dark:border-gray-800`)
217
+ instead of the semantic tokens. New and edited screens use the tokens.
package/README.md CHANGED
@@ -1,3 +1,92 @@
1
- # Temporary Holding Version
1
+ # @matta/ui — the Matta design system
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Vue 3 + shadcn-vue primitives, the design tokens, and the house style, shared by the Matta
4
+ admin apps. **`DESIGN.md` in this repo is the design law** — read it before building a screen.
5
+
6
+ ## What's in here
7
+
8
+ ```
9
+ src/ the kit — one folder per primitive, each with an index.ts barrel
10
+ button/ badge/ table/ sheet/ dialog/ sidebar/ ... -> import { Button } from "@matta/ui/button"
11
+ lib/utils.ts cn()
12
+ avatar-colors.ts getAvatarInitialsColor()
13
+ index.ts root barrel: cn + avatar colors
14
+ styles/
15
+ theme.css design tokens (brand ramp, semantic colours, radii, shadows)
16
+ typography.css type scale
17
+ kit.css the design system's Tailwind layer: @plugin, @custom-variant, @utility
18
+ preview/ local preview app (dev-only; not shipped in the package)
19
+ DESIGN.md house style — the rules every screen must follow
20
+ ```
21
+
22
+ ## Previewing the kit locally
23
+
24
+ ```bash
25
+ npm run dev # http://localhost:3002
26
+ ```
27
+
28
+ `preview/` is a small Vite app that renders the showcase page straight from this repo's
29
+ `src/`, so edits to the kit show up on save. It resolves the kit through the package's own
30
+ name (`@matta/ui/button`), so no install or release is needed to see a change. It is not
31
+ listed in `files`, so none of it is ever shipped to a consuming app.
32
+
33
+ ## Installing it into an admin app
34
+
35
+ ```bash
36
+ npm install @matta-trade/ui
37
+ ```
38
+
39
+ Then in the app's `src/styles/globals.css`:
40
+
41
+ ```css
42
+ @import "tailwindcss";
43
+ @import "@matta-trade/ui/styles/kit.css";
44
+ /* Tailwind scans classes from the built package or source */
45
+ @source "../../node_modules/@matta-trade/ui/dist";
46
+ ```
47
+
48
+ Use it anywhere:
49
+
50
+ ```vue
51
+ <script setup lang="ts">
52
+ import { Button } from "@matta-trade/ui/button";
53
+ import { Badge } from "@matta-trade/ui/badge";
54
+ import { cn, getAvatarInitialsColor } from "@matta-trade/ui";
55
+ </script>
56
+ ```
57
+
58
+ ## Building the package locally
59
+
60
+ ```bash
61
+ npm run build # Compiles src/ to dist/ with .d.ts TypeScript types
62
+ npm run check # Runs vue-tsc type checking
63
+ ```
64
+
65
+ ## Releasing a new version to npm
66
+
67
+ ### Method 1: One-command release from terminal (Recommended)
68
+ Run any of the following:
69
+ ```bash
70
+ npm run release:patch # e.g. 0.2.0 -> 0.2.1
71
+ npm run release:minor # e.g. 0.2.0 -> 0.3.0
72
+ npm run release:major # e.g. 0.2.0 -> 1.0.0
73
+ ```
74
+ This automatically bumps `package.json`, commits, creates the git tag, and pushes to GitHub. The GitHub Actions workflow then automatically builds and publishes to npm.
75
+
76
+ ### Method 2: From GitHub Actions UI (No terminal needed)
77
+ 1. Go to the **Actions** tab in GitHub.
78
+ 2. Select **Publish to npm** from the left sidebar.
79
+ 3. Click **Run workflow**, choose `patch`, `minor`, or `major`, and click **Run workflow**.
80
+
81
+ ### Method 3: Manual Git tag
82
+ ```bash
83
+ git tag v0.2.1
84
+ git push origin v0.2.1
85
+ ```
86
+
87
+ Add a **new** primitive with `npx shadcn-vue@latest add <name>` from this repo, then move the
88
+ generated folder to `src/<name>/` so the subpath export `@matta/ui/<name>` resolves, re-tokenise
89
+ it to `styles/theme.css`, and add a section for it on the app's Design System showcase page.
90
+
91
+ Re-running `shadcn-vue add` on a primitive that already exists here **overwrites the local
92
+ token mapping** — only use it for new components.
@@ -0,0 +1,19 @@
1
+ import { AlertVariants } from '.';
2
+ import { HTMLAttributes } from 'vue';
3
+ type __VLS_Props = {
4
+ class?: HTMLAttributes["class"];
5
+ variant?: AlertVariants["variant"];
6
+ };
7
+ declare var __VLS_1: {};
8
+ type __VLS_Slots = {} & {
9
+ default?: (props: typeof __VLS_1) => any;
10
+ };
11
+ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
12
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
13
+ declare const _default: typeof __VLS_export;
14
+ export default _default;
15
+ type __VLS_WithSlots<T, S> = T & {
16
+ new (): {
17
+ $slots: S;
18
+ };
19
+ };
@@ -0,0 +1,17 @@
1
+ import { HTMLAttributes } from 'vue';
2
+ type __VLS_Props = {
3
+ class?: HTMLAttributes["class"];
4
+ };
5
+ declare var __VLS_1: {};
6
+ type __VLS_Slots = {} & {
7
+ default?: (props: typeof __VLS_1) => any;
8
+ };
9
+ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
10
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
13
+ type __VLS_WithSlots<T, S> = T & {
14
+ new (): {
15
+ $slots: S;
16
+ };
17
+ };
@@ -0,0 +1,17 @@
1
+ import { HTMLAttributes } from 'vue';
2
+ type __VLS_Props = {
3
+ class?: HTMLAttributes["class"];
4
+ };
5
+ declare var __VLS_1: {};
6
+ type __VLS_Slots = {} & {
7
+ default?: (props: typeof __VLS_1) => any;
8
+ };
9
+ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
10
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
13
+ type __VLS_WithSlots<T, S> = T & {
14
+ new (): {
15
+ $slots: S;
16
+ };
17
+ };
@@ -0,0 +1,8 @@
1
+ import { VariantProps } from 'class-variance-authority';
2
+ export { default as Alert } from './Alert.vue';
3
+ export { default as AlertDescription } from './AlertDescription.vue';
4
+ export { default as AlertTitle } from './AlertTitle.vue';
5
+ export declare const alertVariants: (props?: ({
6
+ variant?: "default" | "destructive" | "success" | "warning" | "info" | null | undefined;
7
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
8
+ export type AlertVariants = VariantProps<typeof alertVariants>;
@@ -0,0 +1,62 @@
1
+ import { t as e } from "../chunks/utils-CX-Pz5p6.js";
2
+ import { cva as t } from "class-variance-authority";
3
+ import { createElementBlock as n, defineComponent as r, normalizeClass as i, openBlock as a, renderSlot as o, unref as s } from "vue";
4
+ //#endregion
5
+ //#region src/alert/Alert.vue
6
+ var c = /* @__PURE__ */ r({
7
+ __name: "Alert",
8
+ props: {
9
+ class: { type: [
10
+ Boolean,
11
+ null,
12
+ String,
13
+ Object,
14
+ Array
15
+ ] },
16
+ variant: {}
17
+ },
18
+ setup(t) {
19
+ let r = t;
20
+ return (c, l) => (a(), n("div", {
21
+ class: i(s(e)(s(d)({ variant: t.variant }), r.class)),
22
+ role: "alert"
23
+ }, [o(c.$slots, "default")], 2));
24
+ }
25
+ }), l = /* @__PURE__ */ r({
26
+ __name: "AlertDescription",
27
+ props: { class: { type: [
28
+ Boolean,
29
+ null,
30
+ String,
31
+ Object,
32
+ Array
33
+ ] } },
34
+ setup(t) {
35
+ let r = t;
36
+ return (t, c) => (a(), n("div", { class: i(s(e)("[&_p]:leading-relaxed text-sm", r.class)) }, [o(t.$slots, "default")], 2));
37
+ }
38
+ }), u = /* @__PURE__ */ r({
39
+ __name: "AlertTitle",
40
+ props: { class: { type: [
41
+ Boolean,
42
+ null,
43
+ String,
44
+ Object,
45
+ Array
46
+ ] } },
47
+ setup(t) {
48
+ let r = t;
49
+ return (t, c) => (a(), n("h5", { class: i(s(e)("mb-1 font-medium tracking-tight leading-none", r.class)) }, [o(t.$slots, "default")], 2));
50
+ }
51
+ }), d = t("p-4 [&>svg~*]:pl-7 [&>svg]:left-4 [&>svg]:top-4 [&>svg]:size-4 relative w-full rounded-xl border text-sm [&>svg]:absolute [&>svg+div]:translate-y-[-2px]", {
52
+ variants: { variant: {
53
+ default: "border-border-secondary bg-primary text-primary [&>svg]:text-primary",
54
+ destructive: "dark:bg-utility-red-950 dark:border-utility-red-800 border-utility-red-200 bg-utility-red-50 text-utility-red-700 dark:text-utility-red-300 [&>svg]:text-utility-red-600 dark:[&>svg]:text-utility-red-400",
55
+ success: "border-utility-success-200 bg-utility-success-50 text-utility-success-700 dark:border-utility-success-800 dark:bg-utility-success-950 dark:text-utility-success-300 [&>svg]:text-utility-success-600 dark:[&>svg]:text-utility-success-400",
56
+ warning: "border-utility-warning-200 bg-utility-warning-50 text-utility-warning-700 dark:border-utility-warning-800 dark:bg-utility-warning-950 dark:text-utility-warning-300 [&>svg]:text-utility-warning-600 dark:[&>svg]:text-utility-warning-400",
57
+ info: "dark:bg-utility-brand-950 border-utility-brand-200 bg-utility-brand-50 text-utility-brand-700 dark:border-utility-brand-800 dark:text-utility-brand-300 [&>svg]:text-utility-brand-600 dark:[&>svg]:text-utility-brand-400"
58
+ } },
59
+ defaultVariants: { variant: "default" }
60
+ });
61
+ //#endregion
62
+ export { c as Alert, l as AlertDescription, u as AlertTitle, d as alertVariants };
@@ -0,0 +1,18 @@
1
+ import { AlertDialogProps } from 'reka-ui';
2
+ declare var __VLS_8: {};
3
+ type __VLS_Slots = {} & {
4
+ default?: (props: typeof __VLS_8) => any;
5
+ };
6
+ declare const __VLS_base: import('vue').DefineComponent<AlertDialogProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
7
+ "update:open": (value: boolean) => any;
8
+ }, string, import('vue').PublicProps, Readonly<AlertDialogProps> & Readonly<{
9
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
10
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
11
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
14
+ type __VLS_WithSlots<T, S> = T & {
15
+ new (): {
16
+ $slots: S;
17
+ };
18
+ };
@@ -0,0 +1,18 @@
1
+ import { HTMLAttributes } from 'vue';
2
+ import { AlertDialogActionProps } from 'reka-ui';
3
+ type __VLS_Props = AlertDialogActionProps & {
4
+ class?: HTMLAttributes["class"];
5
+ };
6
+ declare var __VLS_8: {};
7
+ type __VLS_Slots = {} & {
8
+ default?: (props: typeof __VLS_8) => any;
9
+ };
10
+ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
11
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
14
+ type __VLS_WithSlots<T, S> = T & {
15
+ new (): {
16
+ $slots: S;
17
+ };
18
+ };
@@ -0,0 +1,18 @@
1
+ import { HTMLAttributes } from 'vue';
2
+ import { AlertDialogCancelProps } from 'reka-ui';
3
+ type __VLS_Props = AlertDialogCancelProps & {
4
+ class?: HTMLAttributes["class"];
5
+ };
6
+ declare var __VLS_8: {};
7
+ type __VLS_Slots = {} & {
8
+ default?: (props: typeof __VLS_8) => any;
9
+ };
10
+ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
11
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
14
+ type __VLS_WithSlots<T, S> = T & {
15
+ new (): {
16
+ $slots: S;
17
+ };
18
+ };
@@ -0,0 +1,32 @@
1
+ import { HTMLAttributes } from 'vue';
2
+ import { AlertDialogContentProps } from 'reka-ui';
3
+ type __VLS_Props = AlertDialogContentProps & {
4
+ class?: HTMLAttributes["class"];
5
+ };
6
+ declare var __VLS_19: {};
7
+ type __VLS_Slots = {} & {
8
+ default?: (props: typeof __VLS_19) => any;
9
+ };
10
+ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
11
+ escapeKeyDown: (event: KeyboardEvent) => any;
12
+ pointerDownOutside: (event: import('reka-ui').PointerDownOutsideEvent) => any;
13
+ focusOutside: (event: import('reka-ui').FocusOutsideEvent) => any;
14
+ interactOutside: (event: import('reka-ui').PointerDownOutsideEvent | import('reka-ui').FocusOutsideEvent) => any;
15
+ openAutoFocus: (event: Event) => any;
16
+ closeAutoFocus: (event: Event) => any;
17
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
18
+ onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
19
+ onPointerDownOutside?: ((event: import('reka-ui').PointerDownOutsideEvent) => any) | undefined;
20
+ onFocusOutside?: ((event: import('reka-ui').FocusOutsideEvent) => any) | undefined;
21
+ onInteractOutside?: ((event: import('reka-ui').PointerDownOutsideEvent | import('reka-ui').FocusOutsideEvent) => any) | undefined;
22
+ onOpenAutoFocus?: ((event: Event) => any) | undefined;
23
+ onCloseAutoFocus?: ((event: Event) => any) | undefined;
24
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
25
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
26
+ declare const _default: typeof __VLS_export;
27
+ export default _default;
28
+ type __VLS_WithSlots<T, S> = T & {
29
+ new (): {
30
+ $slots: S;
31
+ };
32
+ };
@@ -0,0 +1,18 @@
1
+ import { HTMLAttributes } from 'vue';
2
+ import { AlertDialogDescriptionProps } from 'reka-ui';
3
+ type __VLS_Props = AlertDialogDescriptionProps & {
4
+ class?: HTMLAttributes["class"];
5
+ };
6
+ declare var __VLS_8: {};
7
+ type __VLS_Slots = {} & {
8
+ default?: (props: typeof __VLS_8) => any;
9
+ };
10
+ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
11
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
14
+ type __VLS_WithSlots<T, S> = T & {
15
+ new (): {
16
+ $slots: S;
17
+ };
18
+ };
@@ -0,0 +1,17 @@
1
+ import { HTMLAttributes } from 'vue';
2
+ type __VLS_Props = {
3
+ class?: HTMLAttributes["class"];
4
+ };
5
+ declare var __VLS_1: {};
6
+ type __VLS_Slots = {} & {
7
+ default?: (props: typeof __VLS_1) => any;
8
+ };
9
+ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
10
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
13
+ type __VLS_WithSlots<T, S> = T & {
14
+ new (): {
15
+ $slots: S;
16
+ };
17
+ };
@@ -0,0 +1,17 @@
1
+ import { HTMLAttributes } from 'vue';
2
+ type __VLS_Props = {
3
+ class?: HTMLAttributes["class"];
4
+ };
5
+ declare var __VLS_1: {};
6
+ type __VLS_Slots = {} & {
7
+ default?: (props: typeof __VLS_1) => any;
8
+ };
9
+ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
10
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
13
+ type __VLS_WithSlots<T, S> = T & {
14
+ new (): {
15
+ $slots: S;
16
+ };
17
+ };
@@ -0,0 +1,18 @@
1
+ import { HTMLAttributes } from 'vue';
2
+ import { AlertDialogTitleProps } from 'reka-ui';
3
+ type __VLS_Props = AlertDialogTitleProps & {
4
+ class?: HTMLAttributes["class"];
5
+ };
6
+ declare var __VLS_8: {};
7
+ type __VLS_Slots = {} & {
8
+ default?: (props: typeof __VLS_8) => any;
9
+ };
10
+ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
11
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
12
+ declare const _default: typeof __VLS_export;
13
+ export default _default;
14
+ type __VLS_WithSlots<T, S> = T & {
15
+ new (): {
16
+ $slots: S;
17
+ };
18
+ };
@@ -0,0 +1,14 @@
1
+ import { AlertDialogTriggerProps } from 'reka-ui';
2
+ declare var __VLS_8: {};
3
+ type __VLS_Slots = {} & {
4
+ default?: (props: typeof __VLS_8) => any;
5
+ };
6
+ declare const __VLS_base: import('vue').DefineComponent<AlertDialogTriggerProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<AlertDialogTriggerProps> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
7
+ declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
8
+ declare const _default: typeof __VLS_export;
9
+ export default _default;
10
+ type __VLS_WithSlots<T, S> = T & {
11
+ new (): {
12
+ $slots: S;
13
+ };
14
+ };
@@ -0,0 +1,9 @@
1
+ export { default as AlertDialog } from './AlertDialog.vue';
2
+ export { default as AlertDialogAction } from './AlertDialogAction.vue';
3
+ export { default as AlertDialogCancel } from './AlertDialogCancel.vue';
4
+ export { default as AlertDialogContent } from './AlertDialogContent.vue';
5
+ export { default as AlertDialogDescription } from './AlertDialogDescription.vue';
6
+ export { default as AlertDialogFooter } from './AlertDialogFooter.vue';
7
+ export { default as AlertDialogHeader } from './AlertDialogHeader.vue';
8
+ export { default as AlertDialogTitle } from './AlertDialogTitle.vue';
9
+ export { default as AlertDialogTrigger } from './AlertDialogTrigger.vue';