@object-ui/components 0.3.0 → 0.5.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 (423) hide show
  1. package/.turbo/turbo-build.log +47 -0
  2. package/CHANGELOG.md +10 -0
  3. package/README.md +32 -1
  4. package/README_SHADCN_SYNC.md +281 -0
  5. package/TESTING.md +335 -0
  6. package/dist/index.css +1 -1
  7. package/dist/index.js +45067 -34357
  8. package/dist/index.umd.cjs +54 -42
  9. package/dist/src/SchemaRenderer.d.ts +3 -0
  10. package/dist/src/{ui → custom}/button-group.d.ts +1 -1
  11. package/dist/src/custom/combobox.d.ts +22 -0
  12. package/dist/src/custom/date-picker.d.ts +15 -0
  13. package/dist/src/custom/field.d.ts +19 -0
  14. package/dist/src/{ui → custom}/filter-builder.d.ts +7 -0
  15. package/dist/src/custom/index.d.ts +12 -0
  16. package/dist/src/custom/input-group.d.ts +14 -0
  17. package/dist/src/{ui → custom}/item.d.ts +8 -1
  18. package/dist/src/{ui → custom}/kbd.d.ts +7 -0
  19. package/dist/src/custom/native-select.d.ts +12 -0
  20. package/dist/src/custom/sort-builder.d.ts +22 -0
  21. package/dist/src/custom/spinner.d.ts +10 -0
  22. package/dist/src/hooks/use-mobile.d.ts +7 -0
  23. package/dist/src/index.d.ts +5 -1
  24. package/dist/src/renderers/basic/button-group.d.ts +8 -0
  25. package/dist/src/renderers/basic/div.d.ts +7 -0
  26. package/dist/src/renderers/basic/html.d.ts +7 -0
  27. package/dist/src/renderers/basic/icon.d.ts +7 -0
  28. package/dist/src/renderers/basic/image.d.ts +7 -0
  29. package/dist/src/renderers/basic/navigation-menu.d.ts +8 -0
  30. package/dist/src/renderers/basic/pagination.d.ts +8 -0
  31. package/dist/src/renderers/basic/separator.d.ts +7 -0
  32. package/dist/src/renderers/basic/span.d.ts +7 -0
  33. package/dist/src/renderers/basic/text.d.ts +7 -0
  34. package/dist/src/renderers/complex/carousel.d.ts +7 -0
  35. package/dist/src/renderers/complex/data-table.d.ts +7 -0
  36. package/dist/src/renderers/complex/filter-builder.d.ts +7 -0
  37. package/dist/src/renderers/complex/resizable.d.ts +7 -0
  38. package/dist/src/renderers/complex/scroll-area.d.ts +7 -0
  39. package/dist/src/renderers/complex/table.d.ts +7 -0
  40. package/dist/src/renderers/data-display/alert.d.ts +7 -0
  41. package/dist/src/renderers/data-display/avatar.d.ts +7 -0
  42. package/dist/src/renderers/data-display/badge.d.ts +7 -0
  43. package/dist/src/renderers/data-display/breadcrumb.d.ts +8 -0
  44. package/dist/src/renderers/data-display/kbd.d.ts +8 -0
  45. package/dist/src/renderers/data-display/list.d.ts +7 -0
  46. package/dist/src/renderers/data-display/statistic.d.ts +7 -0
  47. package/dist/src/renderers/data-display/table.d.ts +8 -0
  48. package/dist/src/renderers/data-display/tree-view.d.ts +7 -0
  49. package/dist/src/renderers/disclosure/accordion.d.ts +7 -0
  50. package/dist/src/renderers/disclosure/collapsible.d.ts +7 -0
  51. package/dist/src/renderers/disclosure/toggle-group.d.ts +8 -0
  52. package/dist/src/renderers/feedback/empty.d.ts +8 -0
  53. package/dist/src/renderers/feedback/loading.d.ts +7 -0
  54. package/dist/src/renderers/feedback/progress.d.ts +7 -0
  55. package/dist/src/renderers/feedback/skeleton.d.ts +7 -0
  56. package/dist/src/renderers/feedback/sonner.d.ts +8 -0
  57. package/dist/src/renderers/feedback/spinner.d.ts +8 -0
  58. package/dist/src/renderers/feedback/toast.d.ts +8 -0
  59. package/dist/src/renderers/feedback/toaster.d.ts +7 -0
  60. package/dist/src/renderers/form/button.d.ts +7 -0
  61. package/dist/src/renderers/form/calendar.d.ts +7 -0
  62. package/dist/src/renderers/form/checkbox.d.ts +7 -0
  63. package/dist/src/renderers/form/combobox.d.ts +8 -0
  64. package/dist/src/renderers/form/command.d.ts +8 -0
  65. package/dist/src/renderers/form/date-picker.d.ts +7 -0
  66. package/dist/src/renderers/form/file-upload.d.ts +7 -0
  67. package/dist/src/renderers/form/form.d.ts +7 -0
  68. package/dist/src/renderers/form/input-otp.d.ts +7 -0
  69. package/dist/src/renderers/form/input.d.ts +7 -0
  70. package/dist/src/renderers/form/label.d.ts +7 -0
  71. package/dist/src/renderers/form/radio-group.d.ts +7 -0
  72. package/dist/src/renderers/form/select.d.ts +7 -0
  73. package/dist/src/renderers/form/slider.d.ts +7 -0
  74. package/dist/src/renderers/form/switch.d.ts +7 -0
  75. package/dist/src/renderers/form/textarea.d.ts +7 -0
  76. package/dist/src/renderers/form/toggle.d.ts +7 -0
  77. package/dist/src/renderers/layout/aspect-ratio.d.ts +8 -0
  78. package/dist/src/renderers/layout/card.d.ts +7 -0
  79. package/dist/src/renderers/layout/container.d.ts +7 -0
  80. package/dist/src/renderers/layout/flex.d.ts +7 -0
  81. package/dist/src/renderers/layout/grid.d.ts +7 -0
  82. package/dist/src/renderers/layout/page.d.ts +1 -1
  83. package/dist/src/renderers/layout/semantic.d.ts +7 -0
  84. package/dist/src/renderers/layout/stack.d.ts +7 -0
  85. package/dist/src/renderers/layout/tabs.d.ts +7 -0
  86. package/dist/src/renderers/navigation/header-bar.d.ts +7 -0
  87. package/dist/src/renderers/navigation/sidebar.d.ts +7 -0
  88. package/dist/src/renderers/overlay/alert-dialog.d.ts +7 -0
  89. package/dist/src/renderers/overlay/context-menu.d.ts +7 -0
  90. package/dist/src/renderers/overlay/dialog.d.ts +7 -0
  91. package/dist/src/renderers/overlay/drawer.d.ts +7 -0
  92. package/dist/src/renderers/overlay/dropdown-menu.d.ts +7 -0
  93. package/dist/src/renderers/overlay/hover-card.d.ts +7 -0
  94. package/dist/src/renderers/overlay/menubar.d.ts +8 -0
  95. package/dist/src/renderers/overlay/popover.d.ts +7 -0
  96. package/dist/src/renderers/overlay/sheet.d.ts +7 -0
  97. package/dist/src/renderers/overlay/tooltip.d.ts +7 -0
  98. package/dist/src/renderers/placeholders.d.ts +9 -0
  99. package/dist/src/ui/accordion.d.ts +11 -4
  100. package/dist/src/ui/alert-dialog.d.ts +24 -11
  101. package/dist/src/ui/alert.d.ts +11 -5
  102. package/dist/src/ui/aspect-ratio.d.ts +8 -1
  103. package/dist/src/ui/avatar.d.ts +10 -3
  104. package/dist/src/ui/badge.d.ts +10 -3
  105. package/dist/src/ui/breadcrumb.d.ts +23 -8
  106. package/dist/src/ui/button.d.ts +10 -5
  107. package/dist/src/ui/calendar.d.ts +8 -1
  108. package/dist/src/ui/card.d.ts +14 -8
  109. package/dist/src/ui/carousel.d.ts +12 -6
  110. package/dist/src/ui/chart.d.ts +62 -0
  111. package/dist/src/ui/checkbox.d.ts +8 -1
  112. package/dist/src/ui/collapsible.d.ts +10 -3
  113. package/dist/src/ui/command.d.ts +85 -16
  114. package/dist/src/ui/context-menu.d.ts +21 -12
  115. package/dist/src/ui/dialog.d.ts +24 -13
  116. package/dist/src/ui/drawer.d.ts +26 -10
  117. package/dist/src/ui/dropdown-menu.d.ts +27 -18
  118. package/dist/src/ui/form.d.ts +13 -7
  119. package/dist/src/ui/hover-card.d.ts +10 -3
  120. package/dist/src/ui/index.d.ts +10 -11
  121. package/dist/src/ui/input-otp.d.ts +37 -7
  122. package/dist/src/ui/input.d.ts +7 -0
  123. package/dist/src/ui/label.d.ts +9 -1
  124. package/dist/src/ui/menubar.d.ts +26 -17
  125. package/dist/src/ui/navigation-menu.d.ts +16 -11
  126. package/dist/src/ui/pagination.d.ts +32 -10
  127. package/dist/src/ui/popover.d.ts +11 -5
  128. package/dist/src/ui/progress.d.ts +8 -1
  129. package/dist/src/ui/radio-group.d.ts +9 -2
  130. package/dist/src/ui/resizable.d.ts +12 -8
  131. package/dist/src/ui/scroll-area.d.ts +9 -2
  132. package/dist/src/ui/select.d.ts +18 -13
  133. package/dist/src/ui/separator.d.ts +7 -0
  134. package/dist/src/ui/sheet.d.ts +30 -11
  135. package/dist/src/ui/sidebar.d.ts +41 -38
  136. package/dist/src/ui/skeleton.d.ts +8 -1
  137. package/dist/src/ui/slider.d.ts +8 -1
  138. package/dist/src/ui/sonner.d.ts +2 -1
  139. package/dist/src/ui/switch.d.ts +9 -2
  140. package/dist/src/ui/table.d.ts +15 -8
  141. package/dist/src/ui/tabs.d.ts +8 -1
  142. package/dist/src/ui/textarea.d.ts +8 -1
  143. package/dist/src/ui/toast.d.ts +22 -0
  144. package/dist/src/ui/toggle-group.d.ts +15 -5
  145. package/dist/src/ui/toggle.d.ts +11 -1
  146. package/dist/src/ui/tooltip.d.ts +11 -4
  147. package/dist/src/ui/typography.d.ts +21 -0
  148. package/metadata/ObjectGrid.component.yml +72 -0
  149. package/package.json +35 -13
  150. package/postcss.config.js +9 -1
  151. package/shadcn-components.json +315 -0
  152. package/src/SchemaRenderer.tsx +28 -0
  153. package/src/__tests__/PageRendererRegions.test.tsx +59 -0
  154. package/src/__tests__/README.md +124 -0
  155. package/src/__tests__/Registry.test.ts +21 -0
  156. package/src/__tests__/basic-renderers.test.tsx +255 -0
  157. package/src/__tests__/complex-disclosure-renderers.test.tsx +302 -0
  158. package/src/__tests__/feedback-overlay-renderers.test.tsx +349 -0
  159. package/src/__tests__/form-renderers.test.tsx +364 -0
  160. package/src/__tests__/layout-data-renderers.test.tsx +340 -0
  161. package/src/__tests__/test-utils.tsx +190 -0
  162. package/src/{ui → custom}/button-group.tsx +9 -1
  163. package/src/custom/combobox.tsx +104 -0
  164. package/src/custom/date-picker.tsx +61 -0
  165. package/src/{ui → custom}/empty.tsx +8 -0
  166. package/src/custom/field.tsx +81 -0
  167. package/src/{ui → custom}/filter-builder.tsx +11 -3
  168. package/src/custom/index.ts +12 -0
  169. package/src/custom/input-group.tsx +53 -0
  170. package/src/{ui → custom}/item.tsx +9 -1
  171. package/src/{ui → custom}/kbd.tsx +8 -0
  172. package/src/custom/native-select.tsx +33 -0
  173. package/src/custom/sort-builder.tsx +129 -0
  174. package/src/custom/spinner.tsx +26 -0
  175. package/src/hooks/use-mobile.tsx +8 -0
  176. package/src/index.css +105 -54
  177. package/src/index.test.ts +8 -0
  178. package/src/index.ts +22 -1
  179. package/src/lib/utils.tsx +8 -0
  180. package/src/new-components.test.ts +8 -9
  181. package/src/renderers/basic/button-group.tsx +79 -0
  182. package/src/renderers/basic/div.tsx +21 -2
  183. package/src/renderers/basic/html.tsx +9 -0
  184. package/src/renderers/basic/icon.tsx +67 -3
  185. package/src/renderers/basic/image.tsx +13 -1
  186. package/src/renderers/basic/index.ts +11 -0
  187. package/src/renderers/basic/navigation-menu.tsx +81 -0
  188. package/src/renderers/basic/pagination.tsx +109 -0
  189. package/src/renderers/basic/separator.tsx +10 -1
  190. package/src/renderers/basic/span.tsx +21 -2
  191. package/src/renderers/basic/text.tsx +12 -2
  192. package/src/renderers/complex/__tests__/data-table.test.ts +8 -0
  193. package/src/renderers/complex/carousel.tsx +12 -3
  194. package/src/renderers/complex/data-table.tsx +150 -96
  195. package/src/renderers/complex/filter-builder.tsx +10 -1
  196. package/src/renderers/complex/index.ts +9 -3
  197. package/src/renderers/complex/resizable.tsx +10 -1
  198. package/src/renderers/complex/scroll-area.tsx +33 -7
  199. package/src/renderers/complex/table.tsx +11 -2
  200. package/src/renderers/data-display/alert.tsx +9 -0
  201. package/src/renderers/data-display/avatar.tsx +9 -0
  202. package/src/renderers/data-display/badge.tsx +9 -0
  203. package/src/renderers/data-display/breadcrumb.tsx +60 -0
  204. package/src/renderers/data-display/index.ts +12 -0
  205. package/src/renderers/data-display/kbd.tsx +50 -0
  206. package/src/renderers/data-display/list.tsx +29 -49
  207. package/src/renderers/data-display/statistic.tsx +45 -48
  208. package/src/renderers/data-display/table.tsx +78 -0
  209. package/src/renderers/data-display/tree-view.tsx +32 -37
  210. package/src/renderers/disclosure/accordion.tsx +9 -0
  211. package/src/renderers/disclosure/collapsible.tsx +9 -0
  212. package/src/renderers/disclosure/index.ts +9 -0
  213. package/src/renderers/disclosure/toggle-group.tsx +79 -0
  214. package/src/renderers/feedback/empty.tsx +49 -0
  215. package/src/renderers/feedback/index.ts +12 -0
  216. package/src/renderers/feedback/loading.tsx +10 -1
  217. package/src/renderers/feedback/progress.tsx +9 -0
  218. package/src/renderers/feedback/skeleton.tsx +9 -0
  219. package/src/renderers/feedback/sonner.tsx +56 -0
  220. package/src/renderers/feedback/spinner.tsx +55 -0
  221. package/src/renderers/feedback/toast.tsx +59 -0
  222. package/src/renderers/feedback/toaster.tsx +14 -17
  223. package/src/renderers/form/button.tsx +43 -1
  224. package/src/renderers/form/calendar.tsx +9 -0
  225. package/src/renderers/form/checkbox.tsx +46 -16
  226. package/src/renderers/form/combobox.tsx +48 -0
  227. package/src/renderers/form/command.tsx +58 -0
  228. package/src/renderers/form/date-picker.tsx +11 -2
  229. package/src/renderers/form/file-upload.tsx +11 -2
  230. package/src/renderers/form/form.tsx +104 -18
  231. package/src/renderers/form/index.ts +10 -0
  232. package/src/renderers/form/input-otp.tsx +35 -15
  233. package/src/renderers/form/input.tsx +92 -50
  234. package/src/renderers/form/label.tsx +9 -0
  235. package/src/renderers/form/radio-group.tsx +9 -0
  236. package/src/renderers/form/select.tsx +43 -15
  237. package/src/renderers/form/slider.tsx +17 -1
  238. package/src/renderers/form/switch.tsx +9 -0
  239. package/src/renderers/form/textarea.tsx +58 -27
  240. package/src/renderers/form/toggle.tsx +11 -45
  241. package/src/renderers/index.ts +8 -0
  242. package/src/renderers/layout/aspect-ratio.tsx +51 -0
  243. package/src/renderers/layout/card.tsx +18 -2
  244. package/src/renderers/layout/container.tsx +21 -12
  245. package/src/renderers/layout/flex.tsx +17 -8
  246. package/src/renderers/layout/grid.tsx +31 -8
  247. package/src/renderers/layout/index.ts +9 -0
  248. package/src/renderers/layout/page.tsx +44 -24
  249. package/src/renderers/layout/semantic.tsx +9 -0
  250. package/src/renderers/layout/stack.tsx +18 -9
  251. package/src/renderers/layout/tabs.tsx +51 -17
  252. package/src/renderers/navigation/header-bar.tsx +10 -1
  253. package/src/renderers/navigation/index.ts +8 -0
  254. package/src/renderers/navigation/sidebar.tsx +13 -0
  255. package/src/renderers/overlay/alert-dialog.tsx +9 -0
  256. package/src/renderers/overlay/context-menu.tsx +10 -1
  257. package/src/renderers/overlay/dialog.tsx +9 -0
  258. package/src/renderers/overlay/drawer.tsx +9 -0
  259. package/src/renderers/overlay/dropdown-menu.tsx +9 -0
  260. package/src/renderers/overlay/hover-card.tsx +9 -0
  261. package/src/renderers/overlay/index.ts +9 -0
  262. package/src/renderers/overlay/menubar.tsx +76 -0
  263. package/src/renderers/overlay/popover.tsx +9 -0
  264. package/src/renderers/overlay/sheet.tsx +9 -0
  265. package/src/renderers/overlay/tooltip.tsx +9 -0
  266. package/src/renderers/placeholders.tsx +107 -0
  267. package/src/stories/CRMApp.stories.tsx +706 -0
  268. package/src/stories/Guide.mdx +55 -0
  269. package/src/stories/Introduction.mdx +34 -0
  270. package/src/stories/MockedData.stories.tsx +71 -0
  271. package/src/stories/assets/accessibility.png +0 -0
  272. package/src/stories/assets/accessibility.svg +1 -0
  273. package/src/stories/assets/addon-library.png +0 -0
  274. package/src/stories/assets/assets.png +0 -0
  275. package/src/stories/assets/avif-test-image.avif +0 -0
  276. package/src/stories/assets/context.png +0 -0
  277. package/src/stories/assets/discord.svg +1 -0
  278. package/src/stories/assets/docs.png +0 -0
  279. package/src/stories/assets/figma-plugin.png +0 -0
  280. package/src/stories/assets/github.svg +1 -0
  281. package/src/stories/assets/share.png +0 -0
  282. package/src/stories/assets/styling.png +0 -0
  283. package/src/stories/assets/testing.png +0 -0
  284. package/src/stories/assets/theming.png +0 -0
  285. package/src/stories/assets/tutorials.svg +1 -0
  286. package/src/stories/assets/youtube.svg +1 -0
  287. package/src/stories/button.css +30 -0
  288. package/src/stories/header.css +32 -0
  289. package/src/stories/page.css +68 -0
  290. package/src/stories-json/accordion.stories.tsx +43 -0
  291. package/src/stories-json/aggrid.stories.tsx +103 -0
  292. package/src/stories-json/alert.stories.tsx +39 -0
  293. package/src/stories-json/aspect-ratio.stories.tsx +34 -0
  294. package/src/stories-json/avatar.stories.tsx +38 -0
  295. package/src/stories-json/badge.stories.tsx +53 -0
  296. package/src/stories-json/breadcrumb.stories.tsx +30 -0
  297. package/src/stories-json/button-group.stories.tsx +43 -0
  298. package/src/stories-json/button.stories.tsx +73 -0
  299. package/src/stories-json/calendar.stories.tsx +85 -0
  300. package/src/stories-json/card.stories.tsx +48 -0
  301. package/src/stories-json/carousel.stories.tsx +33 -0
  302. package/src/stories-json/charts.stories.tsx +195 -0
  303. package/src/stories-json/chatbot.stories.tsx +248 -0
  304. package/src/stories-json/code-editor.stories.tsx +92 -0
  305. package/src/stories-json/collapsible.stories.tsx +40 -0
  306. package/src/stories-json/controls.stories.tsx +36 -0
  307. package/src/stories-json/dashboard.stories.tsx +318 -0
  308. package/src/stories-json/data-table.stories.tsx +60 -0
  309. package/src/stories-json/data_display_extras.stories.tsx +102 -0
  310. package/src/stories-json/date-picker.stories.tsx +28 -0
  311. package/src/stories-json/detail-view.stories.tsx +258 -0
  312. package/src/stories-json/dialog.stories.tsx +43 -0
  313. package/src/stories-json/feedback_extras.stories.tsx +40 -0
  314. package/src/stories-json/feedback_others.stories.tsx +46 -0
  315. package/src/stories-json/form_advanced.stories.tsx +117 -0
  316. package/src/stories-json/form_extras.stories.tsx +123 -0
  317. package/src/stories-json/grid.stories.tsx +56 -0
  318. package/src/stories-json/icon.stories.tsx +36 -0
  319. package/src/stories-json/input.stories.tsx +52 -0
  320. package/src/stories-json/kanban.stories.tsx +295 -0
  321. package/src/stories-json/layout_extended.stories.tsx +76 -0
  322. package/src/stories-json/layout_flex.stories.tsx +107 -0
  323. package/src/stories-json/list-view.stories.tsx +97 -0
  324. package/src/stories-json/markdown.stories.tsx +129 -0
  325. package/src/stories-json/menus.stories.tsx +63 -0
  326. package/src/stories-json/metric-card.stories.tsx +143 -0
  327. package/src/stories-json/navigation-menu.stories.tsx +37 -0
  328. package/src/stories-json/object-aggrid.stories.tsx +252 -0
  329. package/src/stories-json/object-form.stories.tsx +130 -0
  330. package/src/stories-json/object-gantt.stories.tsx +114 -0
  331. package/src/stories-json/object-grid.stories.tsx +157 -0
  332. package/src/stories-json/object-map.stories.tsx +116 -0
  333. package/src/stories-json/object-view.stories.tsx +118 -0
  334. package/src/stories-json/overlay_extras.stories.tsx +113 -0
  335. package/src/stories-json/overlay_others.stories.tsx +76 -0
  336. package/src/stories-json/page.stories.tsx +55 -0
  337. package/src/stories-json/reports.stories.tsx +163 -0
  338. package/src/stories-json/resizable.stories.tsx +44 -0
  339. package/src/stories-json/select.stories.tsx +34 -0
  340. package/src/stories-json/separator.stories.tsx +41 -0
  341. package/src/stories-json/sidebar.stories.tsx +147 -0
  342. package/src/stories-json/statistic.stories.tsx +44 -0
  343. package/src/stories-json/tabs.stories.tsx +51 -0
  344. package/src/stories-json/timeline.stories.tsx +188 -0
  345. package/src/stories-json/typography.stories.tsx +45 -0
  346. package/src/ui/accordion.tsx +55 -53
  347. package/src/ui/alert-dialog.tsx +111 -117
  348. package/src/ui/alert.tsx +46 -57
  349. package/src/ui/aspect-ratio.tsx +9 -5
  350. package/src/ui/avatar.tsx +49 -42
  351. package/src/ui/badge.tsx +18 -20
  352. package/src/ui/breadcrumb.tsx +89 -75
  353. package/src/ui/button.tsx +38 -37
  354. package/src/ui/calendar.tsx +37 -53
  355. package/src/ui/card.tsx +59 -110
  356. package/src/ui/carousel.tsx +144 -113
  357. package/src/ui/chart.tsx +367 -0
  358. package/src/ui/checkbox.tsx +28 -22
  359. package/src/ui/collapsible.tsx +13 -25
  360. package/src/ui/command.tsx +114 -135
  361. package/src/ui/context-menu.tsx +77 -116
  362. package/src/ui/dialog.tsx +102 -113
  363. package/src/ui/drawer.tsx +90 -99
  364. package/src/ui/dropdown-menu.tsx +142 -188
  365. package/src/ui/form.tsx +59 -40
  366. package/src/ui/hover-card.tsx +26 -33
  367. package/src/ui/index.ts +11 -11
  368. package/src/ui/input-otp.tsx +53 -55
  369. package/src/ui/input.tsx +21 -15
  370. package/src/ui/label.tsx +25 -15
  371. package/src/ui/menubar.tsx +196 -206
  372. package/src/ui/navigation-menu.tsx +104 -136
  373. package/src/ui/pagination.tsx +94 -96
  374. package/src/ui/popover.tsx +29 -38
  375. package/src/ui/progress.tsx +29 -34
  376. package/src/ui/radio-group.tsx +27 -20
  377. package/src/ui/resizable.tsx +40 -42
  378. package/src/ui/scroll-area.tsx +46 -48
  379. package/src/ui/select.tsx +140 -160
  380. package/src/ui/separator.tsx +10 -2
  381. package/src/ui/sheet.tsx +118 -107
  382. package/src/ui/sidebar.tsx +471 -418
  383. package/src/ui/skeleton.tsx +14 -11
  384. package/src/ui/slider.tsx +27 -54
  385. package/src/ui/sonner.tsx +29 -19
  386. package/src/ui/switch.tsx +27 -21
  387. package/src/ui/table.tsx +102 -97
  388. package/src/ui/tabs.tsx +14 -37
  389. package/src/ui/textarea.tsx +16 -4
  390. package/src/ui/toast.tsx +137 -0
  391. package/src/ui/toggle-group.tsx +37 -55
  392. package/src/ui/toggle.tsx +30 -27
  393. package/src/ui/tooltip.tsx +29 -52
  394. package/src/ui/typography.tsx +85 -0
  395. package/tsconfig.json +2 -1
  396. package/vite.config.ts +20 -2
  397. package/vitest.config.ts +5 -0
  398. package/dist/src/index.test.d.ts +0 -1
  399. package/dist/src/new-components.test.d.ts +0 -1
  400. package/dist/src/renderers/complex/__tests__/data-table.test.d.ts +0 -0
  401. package/dist/src/renderers/complex/calendar-view.d.ts +0 -1
  402. package/dist/src/renderers/complex/chatbot.d.ts +0 -1
  403. package/dist/src/renderers/complex/chatbot.test.d.ts +0 -1
  404. package/dist/src/renderers/complex/timeline.d.ts +0 -1
  405. package/dist/src/ui/calendar-view.d.ts +0 -21
  406. package/dist/src/ui/chatbot.d.ts +0 -36
  407. package/dist/src/ui/field.d.ts +0 -24
  408. package/dist/src/ui/input-group.d.ts +0 -16
  409. package/dist/src/ui/spinner.d.ts +0 -3
  410. package/dist/src/ui/timeline.d.ts +0 -25
  411. package/metadata/ObjectTable.component.yml +0 -41
  412. package/src/renderers/complex/calendar-view.tsx +0 -219
  413. package/src/renderers/complex/chatbot.test.ts +0 -44
  414. package/src/renderers/complex/chatbot.tsx +0 -185
  415. package/src/renderers/complex/timeline.tsx +0 -466
  416. package/src/ui/calendar-view.tsx +0 -503
  417. package/src/ui/chatbot.tsx +0 -240
  418. package/src/ui/field.tsx +0 -246
  419. package/src/ui/input-group.tsx +0 -170
  420. package/src/ui/spinner.tsx +0 -38
  421. package/src/ui/timeline.tsx +0 -266
  422. package/tailwind.config.js +0 -75
  423. /package/dist/src/{ui → custom}/empty.d.ts +0 -0
@@ -1,274 +1,264 @@
1
+ /**
2
+ * ObjectUI
3
+ * Copyright (c) 2024-present ObjectStack Inc.
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+
9
+ "use client"
10
+
1
11
  import * as React from "react"
2
12
  import * as MenubarPrimitive from "@radix-ui/react-menubar"
3
- import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react"
13
+ import { Check, ChevronRight, Circle } from "lucide-react"
4
14
 
5
15
  import { cn } from "../lib/utils"
6
16
 
7
- function Menubar({
8
- className,
9
- ...props
10
- }: React.ComponentProps<typeof MenubarPrimitive.Root>) {
11
- return (
12
- <MenubarPrimitive.Root
13
- data-slot="menubar"
14
- className={cn(
15
- "bg-background flex h-9 items-center gap-1 rounded-md border p-1 shadow-xs",
16
- className
17
- )}
18
- {...props}
19
- />
20
- )
21
- }
22
-
23
17
  function MenubarMenu({
24
18
  ...props
25
19
  }: React.ComponentProps<typeof MenubarPrimitive.Menu>) {
26
- return <MenubarPrimitive.Menu data-slot="menubar-menu" {...props} />
20
+ return <MenubarPrimitive.Menu {...props} />
27
21
  }
28
22
 
29
23
  function MenubarGroup({
30
24
  ...props
31
25
  }: React.ComponentProps<typeof MenubarPrimitive.Group>) {
32
- return <MenubarPrimitive.Group data-slot="menubar-group" {...props} />
26
+ return <MenubarPrimitive.Group {...props} />
33
27
  }
34
28
 
35
29
  function MenubarPortal({
36
30
  ...props
37
31
  }: React.ComponentProps<typeof MenubarPrimitive.Portal>) {
38
- return <MenubarPrimitive.Portal data-slot="menubar-portal" {...props} />
32
+ return <MenubarPrimitive.Portal {...props} />
39
33
  }
40
34
 
41
35
  function MenubarRadioGroup({
42
36
  ...props
43
37
  }: React.ComponentProps<typeof MenubarPrimitive.RadioGroup>) {
44
- return (
45
- <MenubarPrimitive.RadioGroup data-slot="menubar-radio-group" {...props} />
46
- )
38
+ return <MenubarPrimitive.RadioGroup {...props} />
47
39
  }
48
40
 
49
- function MenubarTrigger({
50
- className,
41
+ function MenubarSub({
51
42
  ...props
52
- }: React.ComponentProps<typeof MenubarPrimitive.Trigger>) {
53
- return (
54
- <MenubarPrimitive.Trigger
55
- data-slot="menubar-trigger"
56
- className={cn(
57
- "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex items-center rounded-sm px-2 py-1 text-sm font-medium outline-hidden select-none",
58
- className
59
- )}
60
- {...props}
61
- />
62
- )
43
+ }: React.ComponentProps<typeof MenubarPrimitive.Sub>) {
44
+ return <MenubarPrimitive.Sub data-slot="menubar-sub" {...props} />
63
45
  }
64
46
 
65
- function MenubarContent({
66
- className,
67
- align = "start",
68
- alignOffset = -4,
69
- sideOffset = 8,
70
- ...props
71
- }: React.ComponentProps<typeof MenubarPrimitive.Content>) {
72
- return (
73
- <MenubarPortal>
47
+ const Menubar = React.forwardRef<
48
+ React.ElementRef<typeof MenubarPrimitive.Root>,
49
+ React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Root>
50
+ >(({ className, ...props }, ref) => (
51
+ <MenubarPrimitive.Root
52
+ ref={ref}
53
+ className={cn(
54
+ "flex h-10 items-center space-x-1 rounded-md border bg-background p-1",
55
+ className
56
+ )}
57
+ {...props}
58
+ />
59
+ ))
60
+ Menubar.displayName = MenubarPrimitive.Root.displayName
61
+
62
+ const MenubarTrigger = React.forwardRef<
63
+ React.ElementRef<typeof MenubarPrimitive.Trigger>,
64
+ React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Trigger>
65
+ >(({ className, ...props }, ref) => (
66
+ <MenubarPrimitive.Trigger
67
+ ref={ref}
68
+ className={cn(
69
+ "flex cursor-default select-none items-center rounded-sm px-3 py-1.5 text-sm font-medium outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
70
+ className
71
+ )}
72
+ {...props}
73
+ />
74
+ ))
75
+ MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName
76
+
77
+ const MenubarSubTrigger = React.forwardRef<
78
+ React.ElementRef<typeof MenubarPrimitive.SubTrigger>,
79
+ React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubTrigger> & {
80
+ inset?: boolean
81
+ }
82
+ >(({ className, inset, children, ...props }, ref) => (
83
+ <MenubarPrimitive.SubTrigger
84
+ ref={ref}
85
+ className={cn(
86
+ "flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",
87
+ inset && "pl-8",
88
+ className
89
+ )}
90
+ {...props}
91
+ >
92
+ {children}
93
+ <ChevronRight className="ml-auto h-4 w-4" />
94
+ </MenubarPrimitive.SubTrigger>
95
+ ))
96
+ MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName
97
+
98
+ const MenubarSubContent = React.forwardRef<
99
+ React.ElementRef<typeof MenubarPrimitive.SubContent>,
100
+ React.ComponentPropsWithoutRef<typeof MenubarPrimitive.SubContent>
101
+ >(({ className, ...props }, ref) => (
102
+ <MenubarPrimitive.SubContent
103
+ ref={ref}
104
+ className={cn(
105
+ "z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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 origin-[--radix-menubar-content-transform-origin]",
106
+ className
107
+ )}
108
+ {...props}
109
+ />
110
+ ))
111
+ MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName
112
+
113
+ const MenubarContent = React.forwardRef<
114
+ React.ElementRef<typeof MenubarPrimitive.Content>,
115
+ React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Content>
116
+ >(
117
+ (
118
+ { className, align = "start", alignOffset = -4, sideOffset = 8, ...props },
119
+ ref
120
+ ) => (
121
+ <MenubarPrimitive.Portal>
74
122
  <MenubarPrimitive.Content
75
- data-slot="menubar-content"
123
+ ref={ref}
76
124
  align={align}
77
125
  alignOffset={alignOffset}
78
126
  sideOffset={sideOffset}
79
127
  className={cn(
80
- "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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 z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-md",
128
+ "z-50 min-w-[12rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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 origin-[--radix-menubar-content-transform-origin]",
81
129
  className
82
130
  )}
83
131
  {...props}
84
132
  />
85
- </MenubarPortal>
133
+ </MenubarPrimitive.Portal>
86
134
  )
87
- }
135
+ )
136
+ MenubarContent.displayName = MenubarPrimitive.Content.displayName
88
137
 
89
- function MenubarItem({
90
- className,
91
- inset,
92
- variant = "default",
93
- ...props
94
- }: React.ComponentProps<typeof MenubarPrimitive.Item> & {
95
- inset?: boolean
96
- variant?: "default" | "destructive"
97
- }) {
98
- return (
99
- <MenubarPrimitive.Item
100
- data-slot="menubar-item"
101
- data-inset={inset}
102
- data-variant={variant}
103
- className={cn(
104
- "focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
105
- className
106
- )}
107
- {...props}
108
- />
109
- )
110
- }
138
+ const MenubarItem = React.forwardRef<
139
+ React.ElementRef<typeof MenubarPrimitive.Item>,
140
+ React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Item> & {
141
+ inset?: boolean
142
+ }
143
+ >(({ className, inset, ...props }, ref) => (
144
+ <MenubarPrimitive.Item
145
+ ref={ref}
146
+ className={cn(
147
+ "relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
148
+ inset && "pl-8",
149
+ className
150
+ )}
151
+ {...props}
152
+ />
153
+ ))
154
+ MenubarItem.displayName = MenubarPrimitive.Item.displayName
111
155
 
112
- function MenubarCheckboxItem({
113
- className,
114
- children,
115
- checked,
116
- ...props
117
- }: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem>) {
118
- return (
119
- <MenubarPrimitive.CheckboxItem
120
- data-slot="menubar-checkbox-item"
121
- className={cn(
122
- "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 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",
123
- className
124
- )}
125
- checked={checked}
126
- {...props}
127
- >
128
- <span className="pointer-events-none absolute left-2 flex size-3.5 items-center justify-center">
129
- <MenubarPrimitive.ItemIndicator>
130
- <CheckIcon className="size-4" />
131
- </MenubarPrimitive.ItemIndicator>
132
- </span>
133
- {children}
134
- </MenubarPrimitive.CheckboxItem>
135
- )
136
- }
156
+ const MenubarCheckboxItem = React.forwardRef<
157
+ React.ElementRef<typeof MenubarPrimitive.CheckboxItem>,
158
+ React.ComponentPropsWithoutRef<typeof MenubarPrimitive.CheckboxItem>
159
+ >(({ className, children, checked, ...props }, ref) => (
160
+ <MenubarPrimitive.CheckboxItem
161
+ ref={ref}
162
+ className={cn(
163
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
164
+ className
165
+ )}
166
+ checked={checked}
167
+ {...props}
168
+ >
169
+ <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
170
+ <MenubarPrimitive.ItemIndicator>
171
+ <Check className="h-4 w-4" />
172
+ </MenubarPrimitive.ItemIndicator>
173
+ </span>
174
+ {children}
175
+ </MenubarPrimitive.CheckboxItem>
176
+ ))
177
+ MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName
137
178
 
138
- function MenubarRadioItem({
139
- className,
140
- children,
141
- ...props
142
- }: React.ComponentProps<typeof MenubarPrimitive.RadioItem>) {
143
- return (
144
- <MenubarPrimitive.RadioItem
145
- data-slot="menubar-radio-item"
146
- className={cn(
147
- "focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-xs py-1.5 pr-2 pl-8 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",
148
- className
149
- )}
150
- {...props}
151
- >
152
- <span className="pointer-events-none absolute left-2 flex size-3.5 items-center justify-center">
153
- <MenubarPrimitive.ItemIndicator>
154
- <CircleIcon className="size-2 fill-current" />
155
- </MenubarPrimitive.ItemIndicator>
156
- </span>
157
- {children}
158
- </MenubarPrimitive.RadioItem>
159
- )
160
- }
179
+ const MenubarRadioItem = React.forwardRef<
180
+ React.ElementRef<typeof MenubarPrimitive.RadioItem>,
181
+ React.ComponentPropsWithoutRef<typeof MenubarPrimitive.RadioItem>
182
+ >(({ className, children, ...props }, ref) => (
183
+ <MenubarPrimitive.RadioItem
184
+ ref={ref}
185
+ className={cn(
186
+ "relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
187
+ className
188
+ )}
189
+ {...props}
190
+ >
191
+ <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
192
+ <MenubarPrimitive.ItemIndicator>
193
+ <Circle className="h-2 w-2 fill-current" />
194
+ </MenubarPrimitive.ItemIndicator>
195
+ </span>
196
+ {children}
197
+ </MenubarPrimitive.RadioItem>
198
+ ))
199
+ MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName
161
200
 
162
- function MenubarLabel({
163
- className,
164
- inset,
165
- ...props
166
- }: React.ComponentProps<typeof MenubarPrimitive.Label> & {
167
- inset?: boolean
168
- }) {
169
- return (
170
- <MenubarPrimitive.Label
171
- data-slot="menubar-label"
172
- data-inset={inset}
173
- className={cn(
174
- "px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",
175
- className
176
- )}
177
- {...props}
178
- />
179
- )
180
- }
201
+ const MenubarLabel = React.forwardRef<
202
+ React.ElementRef<typeof MenubarPrimitive.Label>,
203
+ React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Label> & {
204
+ inset?: boolean
205
+ }
206
+ >(({ className, inset, ...props }, ref) => (
207
+ <MenubarPrimitive.Label
208
+ ref={ref}
209
+ className={cn(
210
+ "px-2 py-1.5 text-sm font-semibold",
211
+ inset && "pl-8",
212
+ className
213
+ )}
214
+ {...props}
215
+ />
216
+ ))
217
+ MenubarLabel.displayName = MenubarPrimitive.Label.displayName
181
218
 
182
- function MenubarSeparator({
183
- className,
184
- ...props
185
- }: React.ComponentProps<typeof MenubarPrimitive.Separator>) {
186
- return (
187
- <MenubarPrimitive.Separator
188
- data-slot="menubar-separator"
189
- className={cn("bg-border -mx-1 my-1 h-px", className)}
190
- {...props}
191
- />
192
- )
193
- }
219
+ const MenubarSeparator = React.forwardRef<
220
+ React.ElementRef<typeof MenubarPrimitive.Separator>,
221
+ React.ComponentPropsWithoutRef<typeof MenubarPrimitive.Separator>
222
+ >(({ className, ...props }, ref) => (
223
+ <MenubarPrimitive.Separator
224
+ ref={ref}
225
+ className={cn("-mx-1 my-1 h-px bg-muted", className)}
226
+ {...props}
227
+ />
228
+ ))
229
+ MenubarSeparator.displayName = MenubarPrimitive.Separator.displayName
194
230
 
195
- function MenubarShortcut({
231
+ const MenubarShortcut = ({
196
232
  className,
197
233
  ...props
198
- }: React.ComponentProps<"span">) {
234
+ }: React.HTMLAttributes<HTMLSpanElement>) => {
199
235
  return (
200
236
  <span
201
- data-slot="menubar-shortcut"
202
237
  className={cn(
203
- "text-muted-foreground ml-auto text-xs tracking-widest",
204
- className
205
- )}
206
- {...props}
207
- />
208
- )
209
- }
210
-
211
- function MenubarSub({
212
- ...props
213
- }: React.ComponentProps<typeof MenubarPrimitive.Sub>) {
214
- return <MenubarPrimitive.Sub data-slot="menubar-sub" {...props} />
215
- }
216
-
217
- function MenubarSubTrigger({
218
- className,
219
- inset,
220
- children,
221
- ...props
222
- }: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {
223
- inset?: boolean
224
- }) {
225
- return (
226
- <MenubarPrimitive.SubTrigger
227
- data-slot="menubar-sub-trigger"
228
- data-inset={inset}
229
- className={cn(
230
- "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[inset]:pl-8",
231
- className
232
- )}
233
- {...props}
234
- >
235
- {children}
236
- <ChevronRightIcon className="ml-auto h-4 w-4" />
237
- </MenubarPrimitive.SubTrigger>
238
- )
239
- }
240
-
241
- function MenubarSubContent({
242
- className,
243
- ...props
244
- }: React.ComponentProps<typeof MenubarPrimitive.SubContent>) {
245
- return (
246
- <MenubarPrimitive.SubContent
247
- data-slot="menubar-sub-content"
248
- className={cn(
249
- "bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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 z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg",
238
+ "ml-auto text-xs tracking-widest text-muted-foreground",
250
239
  className
251
240
  )}
252
241
  {...props}
253
242
  />
254
243
  )
255
244
  }
245
+ MenubarShortcut.displayname = "MenubarShortcut"
256
246
 
257
247
  export {
258
248
  Menubar,
259
- MenubarPortal,
260
249
  MenubarMenu,
261
250
  MenubarTrigger,
262
251
  MenubarContent,
263
- MenubarGroup,
252
+ MenubarItem,
264
253
  MenubarSeparator,
265
254
  MenubarLabel,
266
- MenubarItem,
267
- MenubarShortcut,
268
255
  MenubarCheckboxItem,
269
256
  MenubarRadioGroup,
270
257
  MenubarRadioItem,
271
- MenubarSub,
272
- MenubarSubTrigger,
258
+ MenubarPortal,
273
259
  MenubarSubContent,
260
+ MenubarSubTrigger,
261
+ MenubarGroup,
262
+ MenubarSub,
263
+ MenubarShortcut,
274
264
  }