@object-ui/components 0.3.1 → 2.0.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 (326) hide show
  1. package/.turbo/turbo-build.log +34 -0
  2. package/CHANGELOG.md +13 -0
  3. package/README.md +13 -0
  4. package/dist/index.css +1 -1
  5. package/dist/index.js +36430 -25529
  6. package/dist/index.umd.cjs +53 -32
  7. package/dist/src/SchemaRenderer.d.ts +3 -0
  8. package/dist/src/custom/action-param-dialog.d.ts +21 -0
  9. package/dist/src/{ui → custom}/button-group.d.ts +1 -1
  10. package/dist/src/custom/field.d.ts +19 -0
  11. package/dist/src/custom/index.d.ts +14 -0
  12. package/dist/src/custom/input-group.d.ts +14 -0
  13. package/dist/src/{ui → custom}/item.d.ts +1 -1
  14. package/dist/src/custom/native-select.d.ts +12 -0
  15. package/dist/src/custom/navigation-overlay.d.ts +50 -0
  16. package/dist/src/custom/sort-builder.d.ts +22 -0
  17. package/dist/src/index.d.ts +2 -0
  18. package/dist/src/renderers/action/action-button.d.ts +11 -0
  19. package/dist/src/renderers/action/action-group.d.ts +25 -0
  20. package/dist/src/renderers/action/action-icon.d.ts +10 -0
  21. package/dist/src/renderers/action/action-menu.d.ts +19 -0
  22. package/dist/src/renderers/action/index.d.ts +0 -0
  23. package/dist/src/renderers/action/resolve-icon.d.ts +6 -0
  24. package/dist/src/renderers/data-display/table.d.ts +1 -1
  25. package/dist/src/renderers/layout/page.d.ts +1 -1
  26. package/dist/src/renderers/placeholders.d.ts +1 -1
  27. package/dist/src/ui/accordion.d.ts +4 -4
  28. package/dist/src/ui/alert-dialog.d.ts +17 -11
  29. package/dist/src/ui/alert.d.ts +4 -5
  30. package/dist/src/ui/aspect-ratio.d.ts +1 -1
  31. package/dist/src/ui/avatar.d.ts +3 -3
  32. package/dist/src/ui/badge.d.ts +3 -3
  33. package/dist/src/ui/breadcrumb.d.ts +16 -8
  34. package/dist/src/ui/calendar.d.ts +7 -7
  35. package/dist/src/ui/card.d.ts +7 -8
  36. package/dist/src/ui/carousel.d.ts +5 -6
  37. package/dist/src/ui/chart.d.ts +62 -0
  38. package/dist/src/ui/checkbox.d.ts +1 -1
  39. package/dist/src/ui/collapsible.d.ts +3 -3
  40. package/dist/src/ui/command.d.ts +78 -16
  41. package/dist/src/ui/context-menu.d.ts +14 -12
  42. package/dist/src/ui/dialog.d.ts +17 -13
  43. package/dist/src/ui/drawer.d.ts +19 -10
  44. package/dist/src/ui/dropdown-menu.d.ts +20 -18
  45. package/dist/src/ui/form.d.ts +6 -7
  46. package/dist/src/ui/hover-card.d.ts +3 -3
  47. package/dist/src/ui/index.d.ts +2 -8
  48. package/dist/src/ui/input-otp.d.ts +30 -7
  49. package/dist/src/ui/label.d.ts +2 -1
  50. package/dist/src/ui/menubar.d.ts +19 -17
  51. package/dist/src/ui/navigation-menu.d.ts +9 -11
  52. package/dist/src/ui/pagination.d.ts +25 -10
  53. package/dist/src/ui/popover.d.ts +4 -5
  54. package/dist/src/ui/progress.d.ts +1 -1
  55. package/dist/src/ui/radio-group.d.ts +2 -2
  56. package/dist/src/ui/resizable.d.ts +5 -8
  57. package/dist/src/ui/scroll-area.d.ts +2 -2
  58. package/dist/src/ui/select.d.ts +11 -13
  59. package/dist/src/ui/sheet.d.ts +23 -11
  60. package/dist/src/ui/sidebar.d.ts +27 -29
  61. package/dist/src/ui/skeleton.d.ts +1 -1
  62. package/dist/src/ui/slider.d.ts +1 -1
  63. package/dist/src/ui/sonner.d.ts +2 -1
  64. package/dist/src/ui/switch.d.ts +2 -2
  65. package/dist/src/ui/tabs.d.ts +1 -1
  66. package/dist/src/ui/textarea.d.ts +1 -1
  67. package/dist/src/ui/toast.d.ts +22 -0
  68. package/dist/src/ui/toggle-group.d.ts +8 -3
  69. package/dist/src/ui/toggle.d.ts +4 -1
  70. package/dist/src/ui/tooltip.d.ts +4 -4
  71. package/dist/src/ui/typography.d.ts +21 -0
  72. package/package.json +20 -9
  73. package/shadcn-components.json +52 -47
  74. package/src/SchemaRenderer.tsx +28 -0
  75. package/src/__tests__/PageRendererRegions.test.tsx +668 -0
  76. package/src/__tests__/Registry.test.ts +21 -0
  77. package/src/__tests__/basic-renderers.test.tsx +1 -1
  78. package/src/__tests__/complex-disclosure-renderers.test.tsx +3 -2
  79. package/src/__tests__/compliance.test.tsx +72 -0
  80. package/src/__tests__/feedback-overlay-renderers.test.tsx +1 -1
  81. package/src/__tests__/form-renderers.test.tsx +1 -1
  82. package/src/__tests__/layout-data-renderers.test.tsx +1 -1
  83. package/src/__tests__/navigation-overlay.test.tsx +273 -0
  84. package/src/__tests__/view-compliance.test.tsx +153 -0
  85. package/src/custom/action-param-dialog.tsx +264 -0
  86. package/src/{ui → custom}/button-group.tsx +1 -1
  87. package/src/{ui → custom}/combobox.tsx +3 -3
  88. package/src/{ui → custom}/date-picker.tsx +3 -3
  89. package/src/custom/field.tsx +81 -0
  90. package/src/{ui → custom}/filter-builder.tsx +3 -3
  91. package/src/custom/index.ts +14 -0
  92. package/src/custom/input-group.tsx +53 -0
  93. package/src/{ui → custom}/item.tsx +1 -1
  94. package/src/custom/native-select.tsx +33 -0
  95. package/src/custom/navigation-overlay.tsx +296 -0
  96. package/src/custom/sort-builder.tsx +129 -0
  97. package/src/index.css +20 -1
  98. package/src/index.ts +2 -0
  99. package/src/renderers/action/action-button.tsx +147 -0
  100. package/src/renderers/action/action-group.tsx +270 -0
  101. package/src/renderers/action/action-icon.tsx +150 -0
  102. package/src/renderers/action/action-menu.tsx +203 -0
  103. package/src/renderers/action/index.ts +18 -0
  104. package/src/renderers/action/resolve-icon.ts +35 -0
  105. package/src/renderers/basic/button-group.tsx +1 -0
  106. package/src/renderers/basic/div.tsx +12 -1
  107. package/src/renderers/basic/html.tsx +1 -0
  108. package/src/renderers/basic/icon.tsx +1 -0
  109. package/src/renderers/basic/image.tsx +1 -0
  110. package/src/renderers/basic/navigation-menu.tsx +1 -0
  111. package/src/renderers/basic/pagination.tsx +31 -4
  112. package/src/renderers/basic/separator.tsx +1 -0
  113. package/src/renderers/basic/span.tsx +12 -1
  114. package/src/renderers/basic/text.tsx +4 -2
  115. package/src/renderers/complex/__tests__/data-table-batch-editing.test.tsx +275 -0
  116. package/src/renderers/complex/__tests__/data-table-cell-renderer.test.tsx +120 -0
  117. package/src/renderers/complex/__tests__/data-table-editing.test.tsx +221 -0
  118. package/src/renderers/complex/carousel.tsx +1 -0
  119. package/src/renderers/complex/data-table.tsx +355 -95
  120. package/src/renderers/complex/filter-builder.tsx +2 -1
  121. package/src/renderers/complex/resizable.tsx +2 -1
  122. package/src/renderers/complex/scroll-area.tsx +25 -7
  123. package/src/renderers/complex/table.tsx +1 -0
  124. package/src/renderers/data-display/alert.tsx +1 -0
  125. package/src/renderers/data-display/avatar.tsx +1 -0
  126. package/src/renderers/data-display/badge.tsx +1 -0
  127. package/src/renderers/data-display/breadcrumb.tsx +1 -0
  128. package/src/renderers/data-display/kbd.tsx +1 -0
  129. package/src/renderers/data-display/list.tsx +21 -49
  130. package/src/renderers/data-display/statistic.tsx +21 -5
  131. package/src/renderers/data-display/table.tsx +21 -11
  132. package/src/renderers/data-display/tree-view.tsx +7 -1
  133. package/src/renderers/disclosure/accordion.tsx +1 -0
  134. package/src/renderers/disclosure/collapsible.tsx +1 -0
  135. package/src/renderers/disclosure/toggle-group.tsx +2 -0
  136. package/src/renderers/feedback/empty.tsx +1 -0
  137. package/src/renderers/feedback/loading.tsx +2 -1
  138. package/src/renderers/feedback/progress.tsx +1 -0
  139. package/src/renderers/feedback/skeleton.tsx +1 -0
  140. package/src/renderers/feedback/sonner.tsx +1 -0
  141. package/src/renderers/feedback/spinner.tsx +1 -0
  142. package/src/renderers/feedback/toast.tsx +1 -0
  143. package/src/renderers/feedback/toaster.tsx +1 -0
  144. package/src/renderers/form/button.tsx +35 -1
  145. package/src/renderers/form/calendar.tsx +1 -0
  146. package/src/renderers/form/checkbox.tsx +38 -16
  147. package/src/renderers/form/combobox.tsx +2 -1
  148. package/src/renderers/form/command.tsx +1 -0
  149. package/src/renderers/form/date-picker.tsx +1 -0
  150. package/src/renderers/form/file-upload.tsx +1 -0
  151. package/src/renderers/form/form.tsx +115 -19
  152. package/src/renderers/form/input-otp.tsx +1 -0
  153. package/src/renderers/form/input.tsx +3 -0
  154. package/src/renderers/form/label.tsx +1 -0
  155. package/src/renderers/form/radio-group.tsx +1 -0
  156. package/src/renderers/form/select.tsx +35 -15
  157. package/src/renderers/form/slider.tsx +1 -0
  158. package/src/renderers/form/switch.tsx +1 -0
  159. package/src/renderers/form/textarea.tsx +50 -27
  160. package/src/renderers/form/toggle.tsx +3 -45
  161. package/src/renderers/index.ts +1 -0
  162. package/src/renderers/layout/aspect-ratio.tsx +2 -1
  163. package/src/renderers/layout/card.tsx +10 -2
  164. package/src/renderers/layout/container.tsx +1 -0
  165. package/src/renderers/layout/flex.tsx +1 -0
  166. package/src/renderers/layout/grid.tsx +23 -8
  167. package/src/renderers/layout/page.tsx +433 -57
  168. package/src/renderers/layout/semantic.tsx +1 -0
  169. package/src/renderers/layout/stack.tsx +2 -1
  170. package/src/renderers/layout/tabs.tsx +43 -17
  171. package/src/renderers/navigation/header-bar.tsx +1 -0
  172. package/src/renderers/navigation/sidebar.tsx +11 -0
  173. package/src/renderers/overlay/alert-dialog.tsx +1 -0
  174. package/src/renderers/overlay/context-menu.tsx +1 -0
  175. package/src/renderers/overlay/dialog.tsx +1 -0
  176. package/src/renderers/overlay/drawer.tsx +1 -0
  177. package/src/renderers/overlay/dropdown-menu.tsx +1 -0
  178. package/src/renderers/overlay/hover-card.tsx +1 -0
  179. package/src/renderers/overlay/menubar.tsx +1 -0
  180. package/src/renderers/overlay/popover.tsx +1 -0
  181. package/src/renderers/overlay/sheet.tsx +1 -0
  182. package/src/renderers/overlay/tooltip.tsx +1 -0
  183. package/src/renderers/placeholders.tsx +4 -4
  184. package/src/stories/CRMApp.stories.tsx +706 -0
  185. package/src/stories/Guide.mdx +55 -0
  186. package/src/stories/Introduction.mdx +61 -0
  187. package/src/stories/MockedData.stories.tsx +121 -0
  188. package/src/stories/assets/accessibility.png +0 -0
  189. package/src/stories/assets/accessibility.svg +1 -0
  190. package/src/stories/assets/addon-library.png +0 -0
  191. package/src/stories/assets/assets.png +0 -0
  192. package/src/stories/assets/avif-test-image.avif +0 -0
  193. package/src/stories/assets/context.png +0 -0
  194. package/src/stories/assets/discord.svg +1 -0
  195. package/src/stories/assets/docs.png +0 -0
  196. package/src/stories/assets/figma-plugin.png +0 -0
  197. package/src/stories/assets/github.svg +1 -0
  198. package/src/stories/assets/share.png +0 -0
  199. package/src/stories/assets/styling.png +0 -0
  200. package/src/stories/assets/testing.png +0 -0
  201. package/src/stories/assets/theming.png +0 -0
  202. package/src/stories/assets/tutorials.svg +1 -0
  203. package/src/stories/assets/youtube.svg +1 -0
  204. package/src/stories/button.css +30 -0
  205. package/src/stories/header.css +32 -0
  206. package/src/stories/page.css +68 -0
  207. package/src/stories-json/accordion.stories.tsx +43 -0
  208. package/src/stories-json/aggrid.stories.tsx +103 -0
  209. package/src/stories-json/alert.stories.tsx +39 -0
  210. package/src/stories-json/aspect-ratio.stories.tsx +34 -0
  211. package/src/stories-json/avatar.stories.tsx +38 -0
  212. package/src/stories-json/badge.stories.tsx +53 -0
  213. package/src/stories-json/breadcrumb.stories.tsx +30 -0
  214. package/src/stories-json/button-group.stories.tsx +43 -0
  215. package/src/stories-json/button.stories.tsx +73 -0
  216. package/src/stories-json/calendar.stories.tsx +85 -0
  217. package/src/stories-json/card.stories.tsx +48 -0
  218. package/src/stories-json/carousel.stories.tsx +33 -0
  219. package/src/stories-json/charts.stories.tsx +195 -0
  220. package/src/stories-json/chatbot.stories.tsx +248 -0
  221. package/src/stories-json/code-editor.stories.tsx +92 -0
  222. package/src/stories-json/collapsible.stories.tsx +40 -0
  223. package/src/stories-json/controls.stories.tsx +36 -0
  224. package/src/stories-json/crm-live-data.stories.tsx +154 -0
  225. package/src/stories-json/dashboard.stories.tsx +318 -0
  226. package/src/stories-json/data-table.stories.tsx +136 -0
  227. package/src/stories-json/data_display_extras.stories.tsx +102 -0
  228. package/src/stories-json/date-picker.stories.tsx +28 -0
  229. package/src/stories-json/detail-view.stories.tsx +258 -0
  230. package/src/stories-json/dialog.stories.tsx +43 -0
  231. package/src/stories-json/feedback_extras.stories.tsx +40 -0
  232. package/src/stories-json/feedback_others.stories.tsx +46 -0
  233. package/src/stories-json/form-variants.stories.tsx +210 -0
  234. package/src/stories-json/form_advanced.stories.tsx +117 -0
  235. package/src/stories-json/form_extras.stories.tsx +123 -0
  236. package/src/stories-json/grid.stories.tsx +56 -0
  237. package/src/stories-json/icon.stories.tsx +36 -0
  238. package/src/stories-json/input.stories.tsx +52 -0
  239. package/src/stories-json/kanban.stories.tsx +295 -0
  240. package/src/stories-json/layout_extended.stories.tsx +76 -0
  241. package/src/stories-json/layout_flex.stories.tsx +107 -0
  242. package/src/stories-json/list-view.stories.tsx +97 -0
  243. package/src/stories-json/markdown.stories.tsx +129 -0
  244. package/src/stories-json/menus.stories.tsx +63 -0
  245. package/src/stories-json/metric-card.stories.tsx +143 -0
  246. package/src/stories-json/navigation-menu.stories.tsx +37 -0
  247. package/src/stories-json/object-aggrid-advanced.stories.tsx +389 -0
  248. package/src/stories-json/object-aggrid.stories.tsx +252 -0
  249. package/src/stories-json/object-form.stories.tsx +130 -0
  250. package/src/stories-json/object-gantt.stories.tsx +114 -0
  251. package/src/stories-json/object-grid.stories.tsx +315 -0
  252. package/src/stories-json/object-map.stories.tsx +116 -0
  253. package/src/stories-json/object-view.stories.tsx +118 -0
  254. package/src/stories-json/overlay_extras.stories.tsx +113 -0
  255. package/src/stories-json/overlay_others.stories.tsx +76 -0
  256. package/src/stories-json/page.stories.tsx +55 -0
  257. package/src/stories-json/reports.stories.tsx +163 -0
  258. package/src/stories-json/resizable.stories.tsx +44 -0
  259. package/src/stories-json/select.stories.tsx +34 -0
  260. package/src/stories-json/separator.stories.tsx +41 -0
  261. package/src/stories-json/sidebar.stories.tsx +147 -0
  262. package/src/stories-json/statistic.stories.tsx +44 -0
  263. package/src/stories-json/tabs.stories.tsx +51 -0
  264. package/src/stories-json/timeline.stories.tsx +188 -0
  265. package/src/stories-json/typography.stories.tsx +45 -0
  266. package/src/ui/accordion.tsx +47 -53
  267. package/src/ui/alert-dialog.tsx +103 -117
  268. package/src/ui/alert.tsx +35 -36
  269. package/src/ui/aspect-ratio.tsx +1 -5
  270. package/src/ui/avatar.tsx +41 -42
  271. package/src/ui/badge.tsx +6 -15
  272. package/src/ui/breadcrumb.tsx +81 -75
  273. package/src/ui/button.tsx +10 -11
  274. package/src/ui/calendar.tsx +178 -51
  275. package/src/ui/card.tsx +51 -110
  276. package/src/ui/carousel.tsx +136 -113
  277. package/src/ui/chart.tsx +367 -0
  278. package/src/ui/checkbox.tsx +20 -22
  279. package/src/ui/collapsible.tsx +5 -25
  280. package/src/ui/command.tsx +106 -135
  281. package/src/ui/context-menu.tsx +69 -116
  282. package/src/ui/dialog.tsx +94 -113
  283. package/src/ui/drawer.tsx +82 -99
  284. package/src/ui/dropdown-menu.tsx +134 -188
  285. package/src/ui/form.tsx +51 -40
  286. package/src/ui/hover-card.tsx +18 -33
  287. package/src/ui/index.ts +2 -8
  288. package/src/ui/input-otp.tsx +42 -52
  289. package/src/ui/input.tsx +13 -15
  290. package/src/ui/label.tsx +17 -15
  291. package/src/ui/menubar.tsx +188 -206
  292. package/src/ui/navigation-menu.tsx +96 -136
  293. package/src/ui/pagination.tsx +86 -96
  294. package/src/ui/popover.tsx +24 -41
  295. package/src/ui/progress.tsx +21 -22
  296. package/src/ui/radio-group.tsx +19 -20
  297. package/src/ui/resizable.tsx +32 -42
  298. package/src/ui/scroll-area.tsx +38 -48
  299. package/src/ui/select.tsx +129 -157
  300. package/src/ui/separator.tsx +2 -2
  301. package/src/ui/sheet.tsx +110 -107
  302. package/src/ui/sidebar.tsx +442 -408
  303. package/src/ui/skeleton.tsx +6 -11
  304. package/src/ui/slider.tsx +19 -54
  305. package/src/ui/sonner.tsx +19 -1
  306. package/src/ui/switch.tsx +19 -21
  307. package/src/ui/tabs.tsx +6 -37
  308. package/src/ui/textarea.tsx +8 -4
  309. package/src/ui/toast.tsx +137 -0
  310. package/src/ui/toggle-group.tsx +28 -37
  311. package/src/ui/toggle.tsx +19 -19
  312. package/src/ui/tooltip.tsx +21 -52
  313. package/src/ui/typography.tsx +85 -0
  314. package/tsconfig.json +1 -1
  315. package/vite.config.ts +9 -1
  316. package/vitest.config.ts +5 -0
  317. package/ISSUES_FOUND.md +0 -128
  318. /package/dist/src/{ui → custom}/combobox.d.ts +0 -0
  319. /package/dist/src/{ui → custom}/date-picker.d.ts +0 -0
  320. /package/dist/src/{ui → custom}/empty.d.ts +0 -0
  321. /package/dist/src/{ui → custom}/filter-builder.d.ts +0 -0
  322. /package/dist/src/{ui → custom}/kbd.d.ts +0 -0
  323. /package/dist/src/{ui → custom}/spinner.d.ts +0 -0
  324. /package/src/{ui → custom}/empty.tsx +0 -0
  325. /package/src/{ui → custom}/kbd.tsx +0 -0
  326. /package/src/{ui → custom}/spinner.tsx +0 -0
@@ -0,0 +1,38 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { SchemaRenderer } from '../SchemaRenderer';
3
+ import type { BaseSchema } from '@object-ui/types';
4
+
5
+ const meta = {
6
+ title: 'Primitives/Data Display/Avatar',
7
+ component: SchemaRenderer,
8
+ parameters: { layout: 'centered' },
9
+ tags: ['autodocs'],
10
+ argTypes: {
11
+ schema: { table: { disable: true } }
12
+ }
13
+ } satisfies Meta<typeof SchemaRenderer>;
14
+
15
+ export default meta;
16
+ type Story = StoryObj<typeof meta>;
17
+
18
+ const renderStory = (args: any) => <SchemaRenderer schema={args as unknown as BaseSchema} />;
19
+
20
+ export const Default: Story = {
21
+ render: renderStory,
22
+ args: {
23
+ type: 'avatar',
24
+ src: 'https://github.com/shadcn.png',
25
+ alt: '@shadcn',
26
+ fallback: 'CN'
27
+ } as any,
28
+ };
29
+
30
+ export const Fallback: Story = {
31
+ render: renderStory,
32
+ args: {
33
+ type: 'avatar',
34
+ src: 'https://broken-link',
35
+ alt: '@shadcn',
36
+ fallback: 'CN'
37
+ } as any,
38
+ };
@@ -0,0 +1,53 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { SchemaRenderer } from '../SchemaRenderer';
3
+ import type { BaseSchema } from '@object-ui/types';
4
+
5
+ const meta = {
6
+ title: 'Primitives/Data Display/Badge',
7
+ component: SchemaRenderer,
8
+ parameters: { layout: 'centered' },
9
+ tags: ['autodocs'],
10
+ argTypes: {
11
+ schema: { table: { disable: true } }
12
+ }
13
+ } satisfies Meta<typeof SchemaRenderer>;
14
+
15
+ export default meta;
16
+ type Story = StoryObj<typeof meta>;
17
+
18
+ const renderStory = (args: any) => <SchemaRenderer schema={args as unknown as BaseSchema} />;
19
+
20
+ export const Badge: Story = {
21
+ render: renderStory,
22
+ args: {
23
+ type: 'badge',
24
+ label: 'Badge'
25
+ } as any,
26
+ };
27
+
28
+ export const Secondary: Story = {
29
+ render: renderStory,
30
+ args: {
31
+ type: 'badge',
32
+ label: 'Secondary',
33
+ variant: 'secondary'
34
+ } as any,
35
+ };
36
+
37
+ export const Destructive: Story = {
38
+ render: renderStory,
39
+ args: {
40
+ type: 'badge',
41
+ label: 'Destructive',
42
+ variant: 'destructive'
43
+ } as any,
44
+ };
45
+
46
+ export const Outline: Story = {
47
+ render: renderStory,
48
+ args: {
49
+ type: 'badge',
50
+ label: 'Outline',
51
+ variant: 'outline'
52
+ } as any,
53
+ };
@@ -0,0 +1,30 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { SchemaRenderer } from '../SchemaRenderer';
3
+ import type { BaseSchema } from '@object-ui/types';
4
+
5
+ const meta = {
6
+ title: 'Primitives/Navigation/Breadcrumb',
7
+ component: SchemaRenderer,
8
+ parameters: { layout: 'centered' },
9
+ tags: ['autodocs'],
10
+ argTypes: {
11
+ schema: { table: { disable: true } }
12
+ }
13
+ } satisfies Meta<typeof SchemaRenderer>;
14
+
15
+ export default meta;
16
+ type Story = StoryObj<typeof meta>;
17
+
18
+ const renderStory = (args: any) => <SchemaRenderer schema={args as unknown as BaseSchema} />;
19
+
20
+ export const Default: Story = {
21
+ render: renderStory,
22
+ args: {
23
+ type: 'breadcrumb',
24
+ items: [
25
+ { label: 'Home', href: '/' },
26
+ { label: 'Components', href: '/components' },
27
+ { label: 'Breadcrumb' }
28
+ ]
29
+ } as any,
30
+ };
@@ -0,0 +1,43 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { SchemaRenderer } from '../SchemaRenderer';
3
+ import type { BaseSchema } from '@object-ui/types';
4
+
5
+ const meta = {
6
+ title: 'Primitives/General/Button Group',
7
+ component: SchemaRenderer,
8
+ parameters: { layout: 'centered' },
9
+ tags: ['autodocs'],
10
+ argTypes: {
11
+ schema: { table: { disable: true } }
12
+ }
13
+ } satisfies Meta<typeof SchemaRenderer>;
14
+
15
+ export default meta;
16
+ type Story = StoryObj<typeof meta>;
17
+
18
+ const renderStory = (args: any) => <SchemaRenderer schema={args as unknown as BaseSchema} />;
19
+
20
+ export const Default: Story = {
21
+ render: renderStory,
22
+ args: {
23
+ type: 'button-group',
24
+ variant: 'outline',
25
+ buttons: [
26
+ { label: 'Years' },
27
+ { label: 'Months' },
28
+ { label: 'Days' }
29
+ ]
30
+ } as any,
31
+ };
32
+
33
+ export const Secondary: Story = {
34
+ render: renderStory,
35
+ args: {
36
+ type: 'button-group',
37
+ variant: 'secondary',
38
+ buttons: [
39
+ { label: 'Save' },
40
+ { label: 'Cancel' }
41
+ ]
42
+ } as any,
43
+ };
@@ -0,0 +1,73 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { SchemaRenderer } from '../SchemaRenderer';
3
+ import type { BaseSchema } from '@object-ui/types';
4
+
5
+ const meta = {
6
+ title: 'Primitives/General/Button',
7
+ component: SchemaRenderer,
8
+ parameters: {
9
+ layout: 'centered',
10
+ },
11
+ tags: ['autodocs'],
12
+ argTypes: {
13
+ schema: { table: { disable: true } },
14
+ type: { control: "text" },
15
+ props: { control: "object" },
16
+ children: { control: "object" }
17
+ },
18
+ } satisfies Meta<any>;
19
+
20
+ export default meta;
21
+ type Story = StoryObj<typeof meta>;
22
+
23
+ export const Default: Story = {
24
+ render: (args) => {
25
+ // Treat args as the schema definition
26
+ return <SchemaRenderer schema={args as unknown as BaseSchema} />;
27
+ },
28
+ args: {
29
+ type: 'button',
30
+ props: {
31
+ variant: 'default',
32
+ },
33
+ // Using children array as per spec
34
+ children: [
35
+ {
36
+ type: 'text',
37
+ content: 'Click Me (JSON)'
38
+ }
39
+ ]
40
+ } as any,
41
+ };
42
+
43
+ export const Outline: Story = {
44
+ render: (args) => <SchemaRenderer schema={args as unknown as BaseSchema} />,
45
+ args: {
46
+ type: 'button',
47
+ props: {
48
+ variant: 'outline',
49
+ },
50
+ children: [
51
+ {
52
+ type: 'text',
53
+ content: 'Outline Button'
54
+ }
55
+ ]
56
+ } as any,
57
+ };
58
+
59
+ export const Destructive: Story = {
60
+ render: (args) => <SchemaRenderer schema={args as unknown as BaseSchema} />,
61
+ args: {
62
+ type: 'button',
63
+ props: {
64
+ variant: 'destructive',
65
+ },
66
+ children: [
67
+ {
68
+ type: 'text',
69
+ content: 'Delete'
70
+ }
71
+ ]
72
+ } as any,
73
+ };
@@ -0,0 +1,85 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { SchemaRenderer } from '../SchemaRenderer';
3
+ import type { BaseSchema } from '@object-ui/types';
4
+
5
+ const meta = {
6
+ title: 'Plugins/Scheduling/Calendar',
7
+ component: SchemaRenderer,
8
+ parameters: {
9
+ layout: 'padded',
10
+ },
11
+ tags: ['autodocs'],
12
+ argTypes: {
13
+ schema: { table: { disable: true } },
14
+ },
15
+ } satisfies Meta<any>;
16
+
17
+ export default meta;
18
+ type Story = StoryObj<typeof meta>;
19
+
20
+ const renderStory = (args: any) => <SchemaRenderer schema={args as unknown as BaseSchema} />;
21
+
22
+ export const CalendarView: Story = {
23
+ render: renderStory,
24
+ args: {
25
+ type: 'calendar-view',
26
+ events: [
27
+ {
28
+ id: '1',
29
+ title: 'Schema/Data Display/Team Meeting',
30
+ start: new Date(new Date().getFullYear(), new Date().getMonth(), 15, 10, 0),
31
+ end: new Date(new Date().getFullYear(), new Date().getMonth(), 15, 11, 0),
32
+ color: '#3b82f6'
33
+ },
34
+ {
35
+ id: '2',
36
+ title: 'Schema/Data Display/Project Deadline',
37
+ start: new Date(new Date().getFullYear(), new Date().getMonth(), 20),
38
+ end: new Date(new Date().getFullYear(), new Date().getMonth(), 20),
39
+ allDay: true,
40
+ color: '#ef4444'
41
+ },
42
+ {
43
+ id: '3',
44
+ title: 'Schema/Data Display/Client Presentation',
45
+ start: new Date(new Date().getFullYear(), new Date().getMonth(), 25, 14, 0),
46
+ end: new Date(new Date().getFullYear(), new Date().getMonth(), 25, 16, 0),
47
+ color: '#10b981'
48
+ }
49
+ ],
50
+ className: 'h-[600px]'
51
+ } as any,
52
+ };
53
+
54
+ export const MonthView: Story = {
55
+ render: renderStory,
56
+ args: {
57
+ type: 'calendar-view',
58
+ defaultView: 'month',
59
+ events: [
60
+ {
61
+ id: '1',
62
+ title: 'Schema/Data Display/Sprint Planning',
63
+ start: new Date(new Date().getFullYear(), new Date().getMonth(), 1, 9, 0),
64
+ end: new Date(new Date().getFullYear(), new Date().getMonth(), 1, 10, 30),
65
+ color: '#8b5cf6'
66
+ },
67
+ {
68
+ id: '2',
69
+ title: 'Schema/Data Display/Code Review',
70
+ start: new Date(new Date().getFullYear(), new Date().getMonth(), 5, 15, 0),
71
+ end: new Date(new Date().getFullYear(), new Date().getMonth(), 5, 16, 0),
72
+ color: '#3b82f6'
73
+ },
74
+ {
75
+ id: '3',
76
+ title: 'Schema/Data Display/Team Building',
77
+ start: new Date(new Date().getFullYear(), new Date().getMonth(), 10),
78
+ end: new Date(new Date().getFullYear(), new Date().getMonth(), 10),
79
+ allDay: true,
80
+ color: '#f59e0b'
81
+ }
82
+ ],
83
+ className: 'h-[600px]'
84
+ } as any,
85
+ };
@@ -0,0 +1,48 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { SchemaRenderer } from '../SchemaRenderer';
3
+ import type { BaseSchema } from '@object-ui/types';
4
+
5
+ const meta = {
6
+ title: 'Primitives/Data Display/Card',
7
+ component: SchemaRenderer,
8
+ parameters: {
9
+ layout: 'padded',
10
+ },
11
+ tags: ['autodocs'],
12
+ argTypes: {
13
+ schema: { table: { disable: true } },
14
+ children: { control: "object" }
15
+ },
16
+ } satisfies Meta<any>;
17
+
18
+ export default meta;
19
+ type Story = StoryObj<typeof meta>;
20
+
21
+ const renderStory = (args: any) => <SchemaRenderer schema={args as unknown as BaseSchema} />;
22
+
23
+ export const Card: Story = {
24
+ render: renderStory,
25
+ args: {
26
+ type: 'card',
27
+ className: "w-[350px]",
28
+ // Using high-level props supported by CardRenderer
29
+ title: 'Schema/Layout/Create Project',
30
+ description: "Deploy your new project in one-click.",
31
+ // Main content (wrapped in CardContent by renderer)
32
+ children: [
33
+ {
34
+ type: 'div',
35
+ className: 'flex flex-col space-y-1.5',
36
+ children: [
37
+ { type: 'label', content: 'Name', props: { htmlFor: 'name' } },
38
+ { type: 'input', props: { id: 'name', placeholder: 'Name of your project' } }
39
+ ]
40
+ }
41
+ ],
42
+ // Footer content
43
+ footer: [
44
+ { type: 'button', props: { variant: 'outline' }, children: [{type:'text', content: 'Cancel'}] },
45
+ { type: 'button', children: [{type: 'text', content: 'Deploy'}] }
46
+ ]
47
+ } as any,
48
+ };
@@ -0,0 +1,33 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { SchemaRenderer } from '../SchemaRenderer';
3
+ import type { BaseSchema } from '@object-ui/types';
4
+
5
+ const meta = {
6
+ title: 'Primitives/Data Display/Carousel',
7
+ component: SchemaRenderer,
8
+ parameters: { layout: 'centered' },
9
+ tags: ['autodocs'],
10
+ argTypes: {
11
+ schema: { table: { disable: true } }
12
+ }
13
+ } satisfies Meta<typeof SchemaRenderer>;
14
+
15
+ export default meta;
16
+ type Story = StoryObj<typeof meta>;
17
+
18
+ const renderStory = (args: any) => <SchemaRenderer schema={args as unknown as BaseSchema} />;
19
+
20
+ export const Default: Story = {
21
+ render: renderStory,
22
+ args: {
23
+ type: 'carousel',
24
+ className: 'w-full max-w-xs',
25
+ items: [
26
+ { type: 'card', className: 'p-6 flex aspect-square items-center justify-center', children: [{type:'text', className:'text-4xl font-semibold', content: '1'}] },
27
+ { type: 'card', className: 'p-6 flex aspect-square items-center justify-center', children: [{type:'text', className:'text-4xl font-semibold', content: '2'}] },
28
+ { type: 'card', className: 'p-6 flex aspect-square items-center justify-center', children: [{type:'text', className:'text-4xl font-semibold', content: '3'}] },
29
+ { type: 'card', className: 'p-6 flex aspect-square items-center justify-center', children: [{type:'text', className:'text-4xl font-semibold', content: '4'}] },
30
+ { type: 'card', className: 'p-6 flex aspect-square items-center justify-center', children: [{type:'text', className:'text-4xl font-semibold', content: '5'}] }
31
+ ]
32
+ } as any,
33
+ };
@@ -0,0 +1,195 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { SchemaRenderer } from '../SchemaRenderer';
3
+ import type { BaseSchema } from '@object-ui/types';
4
+
5
+ const meta = {
6
+ title: 'Plugins/Rich Content/Charts',
7
+ component: SchemaRenderer,
8
+ parameters: {
9
+ layout: 'padded',
10
+ },
11
+ tags: ['autodocs'],
12
+ argTypes: {
13
+ schema: { table: { disable: true } },
14
+ },
15
+ } satisfies Meta<any>;
16
+
17
+ export default meta;
18
+ type Story = StoryObj<typeof meta>;
19
+
20
+ const renderStory = (args: any) => <SchemaRenderer schema={args as unknown as BaseSchema} />;
21
+
22
+ export const BarChart: Story = {
23
+ render: renderStory,
24
+ args: {
25
+ type: 'bar-chart',
26
+ data: [
27
+ { name: 'Jan', value: 400 },
28
+ { name: 'Feb', value: 300 },
29
+ { name: 'Mar', value: 600 },
30
+ { name: 'Apr', value: 800 },
31
+ { name: 'May', value: 500 },
32
+ { name: 'Jun', value: 700 }
33
+ ],
34
+ dataKey: 'value',
35
+ xAxisKey: 'name',
36
+ height: 400,
37
+ color: '#3b82f6'
38
+ } as any,
39
+ };
40
+
41
+ export const MultiSeriesChart: Story = {
42
+ render: renderStory,
43
+ args: {
44
+ type: 'chart',
45
+ chartType: 'bar',
46
+ data: [
47
+ { name: 'Jan', sales: 400, revenue: 240 },
48
+ { name: 'Feb', sales: 300, revenue: 139 },
49
+ { name: 'Mar', sales: 600, revenue: 380 },
50
+ { name: 'Apr', sales: 800, revenue: 430 },
51
+ { name: 'May', sales: 500, revenue: 220 },
52
+ { name: 'Jun', sales: 700, revenue: 350 }
53
+ ],
54
+ config: {
55
+ sales: { label: 'Sales', color: '#3b82f6' },
56
+ revenue: { label: 'Revenue', color: '#10b981' }
57
+ },
58
+ xAxisKey: 'name',
59
+ series: [
60
+ { dataKey: 'sales' },
61
+ { dataKey: 'revenue' }
62
+ ]
63
+ } as any,
64
+ };
65
+
66
+ export const LineChart: Story = {
67
+ render: renderStory,
68
+ args: {
69
+ type: 'chart',
70
+ chartType: 'line',
71
+ data: [
72
+ { month: 'Jan', users: 120, sessions: 450 },
73
+ { month: 'Feb', users: 180, sessions: 620 },
74
+ { month: 'Mar', users: 250, sessions: 890 },
75
+ { month: 'Apr', users: 320, sessions: 1200 },
76
+ { month: 'May', users: 410, sessions: 1560 },
77
+ { month: 'Jun', users: 520, sessions: 1980 }
78
+ ],
79
+ config: {
80
+ users: { label: 'Active Users', color: '#8b5cf6' },
81
+ sessions: { label: 'Sessions', color: '#ec4899' }
82
+ },
83
+ xAxisKey: 'month',
84
+ series: [
85
+ { dataKey: 'users' },
86
+ { dataKey: 'sessions' }
87
+ ]
88
+ } as any,
89
+ };
90
+
91
+ export const AreaChart: Story = {
92
+ render: renderStory,
93
+ args: {
94
+ type: 'chart',
95
+ chartType: 'area',
96
+ data: [
97
+ { date: 'Mon', traffic: 2400 },
98
+ { date: 'Tue', traffic: 1398 },
99
+ { date: 'Wed', traffic: 9800 },
100
+ { date: 'Thu', traffic: 3908 },
101
+ { date: 'Fri', traffic: 4800 },
102
+ { date: 'Sat', traffic: 3800 },
103
+ { date: 'Sun', traffic: 4300 }
104
+ ],
105
+ config: {
106
+ traffic: { label: 'Website Traffic', color: '#06b6d4' }
107
+ },
108
+ xAxisKey: 'date',
109
+ series: [
110
+ { dataKey: 'traffic' }
111
+ ]
112
+ } as any,
113
+ };
114
+
115
+ export const PieChart: Story = {
116
+ render: renderStory,
117
+ args: {
118
+ type: 'pie-chart',
119
+ data: [
120
+ { name: 'Chrome', value: 65 },
121
+ { name: 'Firefox', value: 20 },
122
+ { name: 'Safari', value: 10 },
123
+ { name: 'Edge', value: 5 },
124
+ ],
125
+ xAxisKey: 'name',
126
+ series: [{ dataKey: 'value' }],
127
+ config: {
128
+ Chrome: { label: 'Chrome', color: 'hsl(var(--chart-1))' },
129
+ Firefox: { label: 'Firefox', color: 'hsl(var(--chart-2))' },
130
+ Safari: { label: 'Safari', color: 'hsl(var(--chart-3))' },
131
+ Edge: { label: 'Edge', color: 'hsl(var(--chart-4))' },
132
+ }
133
+ } as any,
134
+ };
135
+
136
+ export const DonutChart: Story = {
137
+ render: renderStory,
138
+ args: {
139
+ type: 'donut-chart',
140
+ data: [
141
+ { category: 'Electronics', revenue: 45000 },
142
+ { category: 'Clothing', revenue: 32000 },
143
+ { category: 'Food', revenue: 28000 },
144
+ { category: 'Books', revenue: 15000 },
145
+ ],
146
+ xAxisKey: 'category',
147
+ series: [{ dataKey: 'revenue' }],
148
+ config: {
149
+ Electronics: { label: 'Electronics', color: '#3b82f6' },
150
+ Clothing: { label: 'Clothing', color: '#10b981' },
151
+ Food: { label: 'Food', color: '#f59e0b' },
152
+ Books: { label: 'Books', color: '#ef4444' },
153
+ }
154
+ } as any,
155
+ };
156
+
157
+ export const RadarChart: Story = {
158
+ render: renderStory,
159
+ args: {
160
+ type: 'radar-chart',
161
+ data: [
162
+ { skill: 'React', score: 90 },
163
+ { skill: 'TypeScript', score: 85 },
164
+ { skill: 'Node.js', score: 80 },
165
+ { skill: 'Python', score: 70 },
166
+ { skill: 'Docker', score: 75 },
167
+ { skill: 'AWS', score: 65 },
168
+ ],
169
+ xAxisKey: 'skill',
170
+ series: [{ dataKey: 'score' }],
171
+ config: {
172
+ score: { label: 'Skill Level', color: 'hsl(var(--chart-1))' }
173
+ }
174
+ } as any,
175
+ };
176
+
177
+ export const ScatterChart: Story = {
178
+ render: renderStory,
179
+ args: {
180
+ type: 'scatter-chart',
181
+ data: [
182
+ { height: 160, weight: 65 },
183
+ { height: 165, weight: 70 },
184
+ { height: 170, weight: 75 },
185
+ { height: 175, weight: 80 },
186
+ { height: 180, weight: 85 },
187
+ { height: 185, weight: 90 },
188
+ ],
189
+ xAxisKey: 'height',
190
+ series: [{ dataKey: 'weight' }],
191
+ config: {
192
+ weight: { label: 'Weight (kg)', color: 'hsl(var(--chart-1))' }
193
+ }
194
+ } as any,
195
+ };