@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
@@ -0,0 +1,49 @@
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
+ import { ComponentRegistry } from '@object-ui/core';
10
+ import type { EmptySchema } from '@object-ui/types';
11
+ import { InboxIcon } from 'lucide-react';
12
+ import { cn } from '../../lib/utils';
13
+
14
+ ComponentRegistry.register('empty',
15
+ ({ schema, ...props }: { schema: EmptySchema; [key: string]: any }) => {
16
+ const {
17
+ 'data-obj-id': dataObjId,
18
+ 'data-obj-type': dataObjType,
19
+ style,
20
+ ...emptyProps
21
+ } = props;
22
+
23
+ return (
24
+ <div
25
+ className={cn('flex flex-col items-center justify-center p-8 text-center', schema.className)}
26
+ {...emptyProps}
27
+ {...{ 'data-obj-id': dataObjId, 'data-obj-type': dataObjType, style }}
28
+ >
29
+ <InboxIcon className="h-12 w-12 text-muted-foreground mb-4" />
30
+ <h3 className="text-lg font-semibold">{schema.title || 'No data'}</h3>
31
+ {schema.description && (
32
+ <p className="text-sm text-muted-foreground mt-2">{schema.description}</p>
33
+ )}
34
+ </div>
35
+ );
36
+ },
37
+ {
38
+ namespace: 'ui',
39
+ label: 'Empty',
40
+ inputs: [
41
+ { name: 'title', type: 'string', label: 'Title', defaultValue: 'No data' },
42
+ { name: 'description', type: 'string', label: 'Description' },
43
+ { name: 'className', type: 'string', label: 'CSS Class' }
44
+ ],
45
+ defaultProps: {
46
+ title: 'No data'
47
+ }
48
+ }
49
+ );
@@ -1,4 +1,16 @@
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
+
1
9
  import './progress';
2
10
  import './skeleton';
3
11
  import './toaster';
4
12
  import './loading';
13
+ import './toast';
14
+ import './spinner';
15
+ import './empty';
16
+ import './sonner';
@@ -1,6 +1,14 @@
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
+
1
9
  import { ComponentRegistry } from '@object-ui/core';
2
10
  import type { LoadingSchema } from '@object-ui/types';
3
- import { Spinner } from '../../ui';
11
+ import { Spinner } from '../../custom';
4
12
  import { cn } from '../../lib/utils';
5
13
 
6
14
  ComponentRegistry.register('loading',
@@ -42,6 +50,7 @@ ComponentRegistry.register('loading',
42
50
  );
43
51
  },
44
52
  {
53
+ namespace: 'ui',
45
54
  label: 'Loading',
46
55
  inputs: [
47
56
  { name: 'text', type: 'string', label: 'Loading Text' },
@@ -1,3 +1,11 @@
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
+
1
9
  import { ComponentRegistry } from '@object-ui/core';
2
10
  import type { ProgressSchema } from '@object-ui/types';
3
11
  import { Progress } from '../../ui';
@@ -7,6 +15,7 @@ ComponentRegistry.register('progress',
7
15
  <Progress value={schema.value} className={className} {...props} />
8
16
  ),
9
17
  {
18
+ namespace: 'ui',
10
19
  label: 'Progress',
11
20
  inputs: [
12
21
  { name: 'value', type: 'number', label: 'Value', defaultValue: 0 },
@@ -1,3 +1,11 @@
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
+
1
9
  import { ComponentRegistry } from '@object-ui/core';
2
10
  import type { SkeletonSchema } from '@object-ui/types';
3
11
  import { Skeleton } from '../../ui';
@@ -7,6 +15,7 @@ ComponentRegistry.register('skeleton',
7
15
  <Skeleton className={className} {...props} style={{ width: schema.width, height: schema.height }} />
8
16
  ),
9
17
  {
18
+ namespace: 'ui',
10
19
  label: 'Skeleton',
11
20
  inputs: [
12
21
  { name: 'width', type: 'string', label: 'Width' },
@@ -0,0 +1,56 @@
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
+ import { ComponentRegistry } from '@object-ui/core';
10
+ import type { SonnerSchema } from '@object-ui/types';
11
+ import { toast } from 'sonner';
12
+ import { Button } from '../../ui';
13
+
14
+ ComponentRegistry.register('sonner',
15
+ ({ schema, ...props }: { schema: SonnerSchema; [key: string]: any }) => {
16
+ const showToast = () => {
17
+ const toastFn = schema.variant === 'success' ? toast.success :
18
+ schema.variant === 'error' ? toast.error :
19
+ schema.variant === 'warning' ? toast.warning :
20
+ schema.variant === 'info' ? toast.info :
21
+ toast;
22
+
23
+ toastFn(schema.message || schema.title || 'Notification', {
24
+ description: schema.description,
25
+ });
26
+ };
27
+
28
+ return (
29
+ <Button onClick={showToast} variant={schema.buttonVariant} className={schema.className} {...props}>
30
+ {schema.buttonLabel || 'Show Toast'}
31
+ </Button>
32
+ );
33
+ },
34
+ {
35
+ namespace: 'ui',
36
+ label: 'Sonner Toast',
37
+ inputs: [
38
+ { name: 'message', type: 'string', label: 'Message' },
39
+ { name: 'description', type: 'string', label: 'Description' },
40
+ {
41
+ name: 'variant',
42
+ type: 'enum',
43
+ enum: ['default', 'success', 'error', 'warning', 'info'],
44
+ defaultValue: 'default',
45
+ label: 'Variant'
46
+ },
47
+ { name: 'buttonLabel', type: 'string', label: 'Button Label' },
48
+ { name: 'className', type: 'string', label: 'CSS Class' }
49
+ ],
50
+ defaultProps: {
51
+ message: 'Notification',
52
+ buttonLabel: 'Show Toast',
53
+ variant: 'default'
54
+ }
55
+ }
56
+ );
@@ -0,0 +1,55 @@
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
+ import { ComponentRegistry } from '@object-ui/core';
10
+ import type { SpinnerSchema } from '@object-ui/types';
11
+ import { Loader2 } from 'lucide-react';
12
+ import { cn } from '../../lib/utils';
13
+
14
+ ComponentRegistry.register('spinner',
15
+ ({ schema, ...props }: { schema: SpinnerSchema; [key: string]: any }) => {
16
+ const {
17
+ 'data-obj-id': dataObjId,
18
+ 'data-obj-type': dataObjType,
19
+ style,
20
+ ...spinnerProps
21
+ } = props;
22
+
23
+ const sizeClasses = {
24
+ sm: 'h-4 w-4',
25
+ md: 'h-6 w-6',
26
+ lg: 'h-8 w-8',
27
+ xl: 'h-12 w-12'
28
+ };
29
+
30
+ return (
31
+ <Loader2
32
+ className={cn('animate-spin', sizeClasses[schema.size || 'md'], schema.className)}
33
+ {...spinnerProps}
34
+ {...{ 'data-obj-id': dataObjId, 'data-obj-type': dataObjType, style }}
35
+ />
36
+ );
37
+ },
38
+ {
39
+ namespace: 'ui',
40
+ label: 'Spinner',
41
+ inputs: [
42
+ {
43
+ name: 'size',
44
+ type: 'enum',
45
+ enum: ['sm', 'md', 'lg', 'xl'],
46
+ defaultValue: 'md',
47
+ label: 'Size'
48
+ },
49
+ { name: 'className', type: 'string', label: 'CSS Class' }
50
+ ],
51
+ defaultProps: {
52
+ size: 'md'
53
+ }
54
+ }
55
+ );
@@ -0,0 +1,59 @@
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
+ import { ComponentRegistry } from '@object-ui/core';
10
+ import type { ToastSchema } from '@object-ui/types';
11
+ import { toast } from 'sonner';
12
+ import { Button } from '../../ui';
13
+
14
+ ComponentRegistry.register('toast',
15
+ ({ schema }: { schema: ToastSchema }) => {
16
+ const showToast = () => {
17
+ const toastFn = schema.variant === 'success' ? toast.success :
18
+ schema.variant === 'error' ? toast.error :
19
+ schema.variant === 'warning' ? toast.warning :
20
+ schema.variant === 'info' ? toast.info :
21
+ toast;
22
+
23
+ toastFn(schema.title || 'Notification', {
24
+ description: schema.description,
25
+ duration: schema.duration,
26
+ });
27
+ };
28
+
29
+ return (
30
+ <Button onClick={showToast} variant={schema.buttonVariant} className={schema.className}>
31
+ {schema.buttonLabel || 'Show Toast'}
32
+ </Button>
33
+ );
34
+ },
35
+ {
36
+ namespace: 'ui',
37
+ label: 'Toast',
38
+ inputs: [
39
+ { name: 'title', type: 'string', label: 'Title' },
40
+ { name: 'description', type: 'string', label: 'Description' },
41
+ {
42
+ name: 'variant',
43
+ type: 'enum',
44
+ enum: ['default', 'success', 'warning', 'error', 'info'],
45
+ defaultValue: 'default',
46
+ label: 'Variant'
47
+ },
48
+ { name: 'duration', type: 'number', label: 'Duration (ms)' },
49
+ { name: 'buttonLabel', type: 'string', label: 'Button Label' },
50
+ { name: 'className', type: 'string', label: 'CSS Class' }
51
+ ],
52
+ defaultProps: {
53
+ title: 'Notification',
54
+ buttonLabel: 'Show Toast',
55
+ variant: 'default',
56
+ duration: 5000
57
+ }
58
+ }
59
+ );
@@ -1,26 +1,23 @@
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
+
1
9
  import { ComponentRegistry } from '@object-ui/core';
2
10
  import type { ToasterSchema } from '@object-ui/types';
3
- import { Toaster as SonnerToaster } from '../../ui';
4
- import { Toaster as DefaultToaster } from '../../ui';
5
- // Note: In shadcn/ui typical setup, Toaster is exported from 'components/ui/toaster' and 'components/ui/sonner'.
6
- // But in @object-ui/ui index.tsx, we need to check if they are exported.
7
- // Assuming they are exported as Toaster and Sonner (or similar).
8
- // Let's assume standard exports.
11
+ import { Toaster as SonnerToaster } from '../../ui/sonner';
9
12
 
10
13
  ComponentRegistry.register('toaster',
11
- ({ schema }: { schema: ToasterSchema }) => {
12
- if (schema.provider === 'sonner') {
13
- return <SonnerToaster />;
14
- }
15
- return <DefaultToaster />;
14
+ () => {
15
+ return <SonnerToaster />;
16
16
  },
17
17
  {
18
+ namespace: 'ui',
18
19
  label: 'Toaster',
19
- inputs: [
20
- { name: 'provider', type: 'enum', enum: ['default', 'sonner'], defaultValue: 'default', label: 'Provider' }
21
- ],
22
- defaultProps: {
23
- provider: 'default'
24
- }
20
+ inputs: [],
21
+ defaultProps: {}
25
22
  }
26
23
  );
@@ -1,8 +1,30 @@
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
+
1
9
  import { ComponentRegistry } from '@object-ui/core';
2
10
  import type { ButtonSchema } from '@object-ui/types';
3
11
  import { Button } from '../../ui';
4
12
  import { renderChildren } from '../../lib/utils';
5
13
  import { forwardRef } from 'react';
14
+ import { Loader2, icons, type LucideIcon } from 'lucide-react';
15
+
16
+ // Helper to convert icon names to PascalCase (e.g., "arrow-right" -> "ArrowRight")
17
+ function toPascalCase(str: string): string {
18
+ return str
19
+ .split('-')
20
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1))
21
+ .join('');
22
+ }
23
+
24
+ // Map of renamed icons in lucide-react
25
+ const iconNameMap: Record<string, string> = {
26
+ 'Home': 'House',
27
+ };
6
28
 
7
29
  const ButtonRenderer = forwardRef<HTMLButtonElement, { schema: ButtonSchema; [key: string]: any }>(
8
30
  ({ schema, ...props }, ref) => {
@@ -14,17 +36,36 @@ const ButtonRenderer = forwardRef<HTMLButtonElement, { schema: ButtonSchema; [ke
14
36
  ...buttonProps
15
37
  } = props;
16
38
 
39
+ // Resolve icon
40
+ let Icon: LucideIcon | null = null;
41
+ if (schema.icon) {
42
+ const iconName = toPascalCase(schema.icon);
43
+ const mappedIconName = iconNameMap[iconName] || iconName;
44
+ Icon = (icons as any)[mappedIconName] as LucideIcon;
45
+ }
46
+
47
+ // Determine loading state
48
+ const isLoading = schema.loading || props.loading;
49
+
50
+ // Determine disabled state
51
+ const isDisabled = schema.disabled || props.disabled || isLoading;
52
+
17
53
  return (
18
54
  <Button
19
55
  ref={ref}
56
+ type={schema.buttonType || "button"}
20
57
  variant={schema.variant}
21
58
  size={schema.size}
22
59
  className={schema.className}
60
+ disabled={isDisabled}
23
61
  {...buttonProps}
24
62
  // Apply designer props
25
63
  {...{ 'data-obj-id': dataObjId, 'data-obj-type': dataObjType, style }}
26
64
  >
27
- {schema.label || renderChildren(schema.body)}
65
+ {isLoading && <Loader2 className="mr-2 h-4 w-4 animate-spin" />}
66
+ {!isLoading && Icon && schema.iconPosition !== 'right' && <Icon className="mr-2 h-4 w-4" />}
67
+ {schema.label || renderChildren(schema.body || schema.children)}
68
+ {!isLoading && Icon && schema.iconPosition === 'right' && <Icon className="ml-2 h-4 w-4" />}
28
69
  </Button>
29
70
  );
30
71
  }
@@ -33,6 +74,7 @@ ButtonRenderer.displayName = 'ButtonRenderer';
33
74
 
34
75
  ComponentRegistry.register('button', ButtonRenderer,
35
76
  {
77
+ namespace: 'ui',
36
78
  label: 'Button',
37
79
  inputs: [
38
80
  { name: 'label', type: 'string', label: 'Label', defaultValue: 'Button' },
@@ -1,3 +1,11 @@
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
+
1
9
  import { ComponentRegistry } from '@object-ui/core';
2
10
  import type { CalendarSchema } from '@object-ui/types';
3
11
  import { Calendar } from '../../ui';
@@ -12,6 +20,7 @@ ComponentRegistry.register('calendar',
12
20
  />
13
21
  ),
14
22
  {
23
+ namespace: 'ui',
15
24
  label: 'Calendar',
16
25
  inputs: [
17
26
  { name: 'mode', type: 'enum', enum: ['default', 'single', 'multiple', 'range'], defaultValue: 'single', label: 'Mode' },
@@ -1,41 +1,71 @@
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
+
1
9
  import { ComponentRegistry } from '@object-ui/core';
2
10
  import type { CheckboxSchema } from '@object-ui/types';
3
11
  import { Checkbox, Label } from '../../ui';
12
+ import { cn } from '../../lib/utils';
13
+ import React from 'react';
14
+
15
+ const CheckboxRenderer = ({ schema, className, onChange, value, ...props }: { schema: CheckboxSchema; className?: string; onChange?: (val: any) => void; value?: any; [key: string]: any }) => {
16
+ // Extract designer-related props
17
+ const {
18
+ 'data-obj-id': dataObjId,
19
+ 'data-obj-type': dataObjType,
20
+ style,
21
+ ...checkboxProps
22
+ } = props;
4
23
 
5
- ComponentRegistry.register('checkbox',
6
- ({ schema, className, ...props }: { schema: CheckboxSchema; className?: string; [key: string]: any }) => {
7
- // Extract designer-related props
8
- const {
9
- 'data-obj-id': dataObjId,
10
- 'data-obj-type': dataObjType,
11
- style,
12
- ...checkboxProps
13
- } = props;
24
+ const handleCheckedChange = (checked: boolean) => {
25
+ if (onChange) {
26
+ onChange(checked);
27
+ }
28
+ };
14
29
 
15
- return (
30
+ return (
16
31
  <div
17
- className={`flex items-center space-x-2 ${schema.wrapperClass || ''}`}
32
+ className={cn("flex items-center space-x-2", schema.wrapperClass)}
18
33
  data-obj-id={dataObjId}
19
34
  data-obj-type={dataObjType}
20
35
  style={style}
21
36
  >
22
- <Checkbox id={schema.id} className={className} {...checkboxProps} />
23
- <Label htmlFor={schema.id} className="text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70">
37
+ <Checkbox
38
+ id={schema.id}
39
+ className={className}
40
+ checked={value ?? schema.checked ?? false}
41
+ defaultChecked={value === undefined ? schema.defaultChecked : undefined}
42
+ onCheckedChange={handleCheckedChange}
43
+ disabled={schema.disabled}
44
+ required={schema.required}
45
+ name={schema.name}
46
+ {...checkboxProps}
47
+ />
48
+ <Label htmlFor={schema.id} className={cn("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", schema.required && "text-destructive after:content-['*'] after:ml-0.5")}>
24
49
  {schema.label}
25
50
  </Label>
26
51
  </div>
27
52
  );
28
- },
53
+ };
54
+
55
+ ComponentRegistry.register('checkbox', CheckboxRenderer,
29
56
  {
57
+ namespace: 'ui',
30
58
  label: 'Checkbox',
31
59
  inputs: [
32
60
  { name: 'label', type: 'string', label: 'Label', required: true },
33
61
  { name: 'id', type: 'string', label: 'ID', required: true },
34
- { name: 'checked', type: 'boolean', label: 'Checked' }
62
+ { name: 'checked', type: 'boolean', label: 'Checked' },
63
+ { name: 'required', type: 'boolean', label: 'Required' },
64
+ { name: 'disabled', type: 'boolean', label: 'Disabled' }
35
65
  ],
36
66
  defaultProps: {
37
67
  label: 'Checkbox label',
38
- id: 'checkbox-field' // Will be made unique by designer's ensureNodeIds
68
+ id: 'checkbox-field'
39
69
  }
40
70
  }
41
71
  );
@@ -0,0 +1,48 @@
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
+ import { ComponentRegistry } from '@object-ui/core';
10
+ import type { ComboboxSchema } from '@object-ui/types';
11
+ import { Combobox } from '../../custom';
12
+
13
+ ComponentRegistry.register('combobox',
14
+ ({ schema, ...props }: { schema: ComboboxSchema; [key: string]: any }) => {
15
+ const {
16
+ 'data-obj-id': dataObjId,
17
+ 'data-obj-type': dataObjType,
18
+ style,
19
+ ...comboboxProps
20
+ } = props;
21
+
22
+ return (
23
+ <Combobox
24
+ options={schema.options || []}
25
+ placeholder={schema.placeholder}
26
+ value={schema.value}
27
+ disabled={schema.disabled}
28
+ className={schema.className}
29
+ {...comboboxProps}
30
+ {...{ 'data-obj-id': dataObjId, 'data-obj-type': dataObjType, style }}
31
+ />
32
+ );
33
+ },
34
+ {
35
+ namespace: 'ui',
36
+ label: 'Combobox',
37
+ inputs: [
38
+ { name: 'placeholder', type: 'string', label: 'Placeholder' },
39
+ { name: 'value', type: 'string', label: 'Value' },
40
+ { name: 'disabled', type: 'boolean', label: 'Disabled', defaultValue: false },
41
+ { name: 'className', type: 'string', label: 'CSS Class' }
42
+ ],
43
+ defaultProps: {
44
+ placeholder: 'Select option...',
45
+ options: []
46
+ }
47
+ }
48
+ );
@@ -0,0 +1,58 @@
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
+ import { ComponentRegistry } from '@object-ui/core';
10
+ import type { CommandSchema } from '@object-ui/types';
11
+ import { Command, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem } from '../../ui/command';
12
+
13
+ ComponentRegistry.register('command',
14
+ ({ schema, ...props }: { schema: CommandSchema; [key: string]: any }) => {
15
+ const {
16
+ 'data-obj-id': dataObjId,
17
+ 'data-obj-type': dataObjType,
18
+ style,
19
+ ...commandProps
20
+ } = props;
21
+
22
+ return (
23
+ <Command
24
+ className={schema.className}
25
+ {...commandProps}
26
+ {...{ 'data-obj-id': dataObjId, 'data-obj-type': dataObjType, style }}
27
+ >
28
+ <CommandInput placeholder={schema.placeholder || 'Type a command or search...'} />
29
+ <CommandList>
30
+ <CommandEmpty>{schema.emptyText || 'No results found.'}</CommandEmpty>
31
+ {schema.groups?.map((group, idx) => (
32
+ <CommandGroup key={idx} heading={group.heading}>
33
+ {group.items?.map((item, itemIdx) => (
34
+ <CommandItem key={itemIdx} value={item.value}>
35
+ {item.label}
36
+ </CommandItem>
37
+ ))}
38
+ </CommandGroup>
39
+ ))}
40
+ </CommandList>
41
+ </Command>
42
+ );
43
+ },
44
+ {
45
+ namespace: 'ui',
46
+ label: 'Command',
47
+ inputs: [
48
+ { name: 'placeholder', type: 'string', label: 'Placeholder' },
49
+ { name: 'emptyText', type: 'string', label: 'Empty Text' },
50
+ { name: 'className', type: 'string', label: 'CSS Class' }
51
+ ],
52
+ defaultProps: {
53
+ placeholder: 'Type a command or search...',
54
+ emptyText: 'No results found.',
55
+ groups: []
56
+ }
57
+ }
58
+ );
@@ -1,3 +1,11 @@
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
+
1
9
  import { ComponentRegistry } from '@object-ui/core';
2
10
  import type { DatePickerSchema } from '@object-ui/types';
3
11
  import { Calendar, Button, Popover, PopoverTrigger, PopoverContent, Label } from '../../ui';
@@ -35,8 +43,8 @@ ComponentRegistry.register('date-picker',
35
43
  id={schema.id}
36
44
  variant="outline"
37
45
  className={cn(
38
- 'w-full justify-start text-left font-normal transition-all duration-300',
39
- !value ? 'text-muted-foreground' : 'text-cyan-300 font-medium shadow-[0_0_10px_-5px_rgba(6,182,212,0.5)] border-cyan-500/50 bg-cyan-950/20',
46
+ 'w-full justify-start text-left font-normal',
47
+ !value && 'text-muted-foreground',
40
48
  className
41
49
  )}
42
50
  {...triggerProps}
@@ -58,6 +66,7 @@ ComponentRegistry.register('date-picker',
58
66
  );
59
67
  },
60
68
  {
69
+ namespace: 'ui',
61
70
  label: 'Date Picker',
62
71
  inputs: [
63
72
  { name: 'label', type: 'string', label: 'Label' },