@object-ui/components 0.3.1 → 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 (299) hide show
  1. package/.turbo/turbo-build.log +47 -0
  2. package/README.md +13 -0
  3. package/dist/index.css +1 -1
  4. package/dist/index.js +34610 -24854
  5. package/dist/index.umd.cjs +53 -32
  6. package/dist/src/SchemaRenderer.d.ts +3 -0
  7. package/dist/src/{ui → custom}/button-group.d.ts +1 -1
  8. package/dist/src/custom/field.d.ts +19 -0
  9. package/dist/src/custom/index.d.ts +12 -0
  10. package/dist/src/custom/input-group.d.ts +14 -0
  11. package/dist/src/{ui → custom}/item.d.ts +1 -1
  12. package/dist/src/custom/native-select.d.ts +12 -0
  13. package/dist/src/custom/sort-builder.d.ts +22 -0
  14. package/dist/src/index.d.ts +1 -0
  15. package/dist/src/renderers/data-display/table.d.ts +1 -1
  16. package/dist/src/renderers/layout/page.d.ts +1 -1
  17. package/dist/src/renderers/placeholders.d.ts +1 -1
  18. package/dist/src/ui/accordion.d.ts +4 -4
  19. package/dist/src/ui/alert-dialog.d.ts +17 -11
  20. package/dist/src/ui/alert.d.ts +4 -5
  21. package/dist/src/ui/aspect-ratio.d.ts +1 -1
  22. package/dist/src/ui/avatar.d.ts +3 -3
  23. package/dist/src/ui/badge.d.ts +3 -3
  24. package/dist/src/ui/breadcrumb.d.ts +16 -8
  25. package/dist/src/ui/calendar.d.ts +7 -7
  26. package/dist/src/ui/card.d.ts +7 -8
  27. package/dist/src/ui/carousel.d.ts +5 -6
  28. package/dist/src/ui/chart.d.ts +62 -0
  29. package/dist/src/ui/checkbox.d.ts +1 -1
  30. package/dist/src/ui/collapsible.d.ts +3 -3
  31. package/dist/src/ui/command.d.ts +78 -16
  32. package/dist/src/ui/context-menu.d.ts +14 -12
  33. package/dist/src/ui/dialog.d.ts +17 -13
  34. package/dist/src/ui/drawer.d.ts +19 -10
  35. package/dist/src/ui/dropdown-menu.d.ts +20 -18
  36. package/dist/src/ui/form.d.ts +6 -7
  37. package/dist/src/ui/hover-card.d.ts +3 -3
  38. package/dist/src/ui/index.d.ts +2 -8
  39. package/dist/src/ui/input-otp.d.ts +30 -7
  40. package/dist/src/ui/label.d.ts +2 -1
  41. package/dist/src/ui/menubar.d.ts +19 -17
  42. package/dist/src/ui/navigation-menu.d.ts +9 -11
  43. package/dist/src/ui/pagination.d.ts +25 -10
  44. package/dist/src/ui/popover.d.ts +4 -5
  45. package/dist/src/ui/progress.d.ts +1 -1
  46. package/dist/src/ui/radio-group.d.ts +2 -2
  47. package/dist/src/ui/resizable.d.ts +5 -8
  48. package/dist/src/ui/scroll-area.d.ts +2 -2
  49. package/dist/src/ui/select.d.ts +11 -13
  50. package/dist/src/ui/sheet.d.ts +23 -11
  51. package/dist/src/ui/sidebar.d.ts +27 -29
  52. package/dist/src/ui/skeleton.d.ts +1 -1
  53. package/dist/src/ui/slider.d.ts +1 -1
  54. package/dist/src/ui/sonner.d.ts +2 -1
  55. package/dist/src/ui/switch.d.ts +2 -2
  56. package/dist/src/ui/tabs.d.ts +1 -1
  57. package/dist/src/ui/textarea.d.ts +1 -1
  58. package/dist/src/ui/toast.d.ts +22 -0
  59. package/dist/src/ui/toggle-group.d.ts +8 -3
  60. package/dist/src/ui/toggle.d.ts +4 -1
  61. package/dist/src/ui/tooltip.d.ts +4 -4
  62. package/dist/src/ui/typography.d.ts +21 -0
  63. package/package.json +17 -7
  64. package/shadcn-components.json +52 -47
  65. package/src/SchemaRenderer.tsx +28 -0
  66. package/src/__tests__/PageRendererRegions.test.tsx +59 -0
  67. package/src/__tests__/Registry.test.ts +21 -0
  68. package/src/__tests__/basic-renderers.test.tsx +1 -1
  69. package/src/__tests__/complex-disclosure-renderers.test.tsx +3 -2
  70. package/src/__tests__/feedback-overlay-renderers.test.tsx +1 -1
  71. package/src/__tests__/form-renderers.test.tsx +1 -1
  72. package/src/__tests__/layout-data-renderers.test.tsx +1 -1
  73. package/src/{ui → custom}/button-group.tsx +1 -1
  74. package/src/{ui → custom}/combobox.tsx +3 -3
  75. package/src/{ui → custom}/date-picker.tsx +3 -3
  76. package/src/custom/field.tsx +81 -0
  77. package/src/{ui → custom}/filter-builder.tsx +3 -3
  78. package/src/custom/index.ts +12 -0
  79. package/src/custom/input-group.tsx +53 -0
  80. package/src/{ui → custom}/item.tsx +1 -1
  81. package/src/custom/native-select.tsx +33 -0
  82. package/src/custom/sort-builder.tsx +129 -0
  83. package/src/index.css +20 -1
  84. package/src/index.ts +1 -0
  85. package/src/renderers/basic/button-group.tsx +1 -0
  86. package/src/renderers/basic/div.tsx +12 -1
  87. package/src/renderers/basic/html.tsx +1 -0
  88. package/src/renderers/basic/icon.tsx +1 -0
  89. package/src/renderers/basic/image.tsx +1 -0
  90. package/src/renderers/basic/navigation-menu.tsx +1 -0
  91. package/src/renderers/basic/pagination.tsx +31 -4
  92. package/src/renderers/basic/separator.tsx +1 -0
  93. package/src/renderers/basic/span.tsx +12 -1
  94. package/src/renderers/basic/text.tsx +4 -2
  95. package/src/renderers/complex/carousel.tsx +1 -0
  96. package/src/renderers/complex/data-table.tsx +134 -95
  97. package/src/renderers/complex/filter-builder.tsx +2 -1
  98. package/src/renderers/complex/resizable.tsx +2 -1
  99. package/src/renderers/complex/scroll-area.tsx +25 -7
  100. package/src/renderers/complex/table.tsx +1 -0
  101. package/src/renderers/data-display/alert.tsx +1 -0
  102. package/src/renderers/data-display/avatar.tsx +1 -0
  103. package/src/renderers/data-display/badge.tsx +1 -0
  104. package/src/renderers/data-display/breadcrumb.tsx +1 -0
  105. package/src/renderers/data-display/kbd.tsx +1 -0
  106. package/src/renderers/data-display/list.tsx +21 -49
  107. package/src/renderers/data-display/statistic.tsx +21 -5
  108. package/src/renderers/data-display/table.tsx +21 -11
  109. package/src/renderers/data-display/tree-view.tsx +7 -1
  110. package/src/renderers/disclosure/accordion.tsx +1 -0
  111. package/src/renderers/disclosure/collapsible.tsx +1 -0
  112. package/src/renderers/disclosure/toggle-group.tsx +2 -0
  113. package/src/renderers/feedback/empty.tsx +1 -0
  114. package/src/renderers/feedback/loading.tsx +2 -1
  115. package/src/renderers/feedback/progress.tsx +1 -0
  116. package/src/renderers/feedback/skeleton.tsx +1 -0
  117. package/src/renderers/feedback/sonner.tsx +1 -0
  118. package/src/renderers/feedback/spinner.tsx +1 -0
  119. package/src/renderers/feedback/toast.tsx +1 -0
  120. package/src/renderers/feedback/toaster.tsx +1 -0
  121. package/src/renderers/form/button.tsx +35 -1
  122. package/src/renderers/form/calendar.tsx +1 -0
  123. package/src/renderers/form/checkbox.tsx +38 -16
  124. package/src/renderers/form/combobox.tsx +2 -1
  125. package/src/renderers/form/command.tsx +1 -0
  126. package/src/renderers/form/date-picker.tsx +1 -0
  127. package/src/renderers/form/file-upload.tsx +1 -0
  128. package/src/renderers/form/form.tsx +92 -15
  129. package/src/renderers/form/input-otp.tsx +1 -0
  130. package/src/renderers/form/input.tsx +3 -0
  131. package/src/renderers/form/label.tsx +1 -0
  132. package/src/renderers/form/radio-group.tsx +1 -0
  133. package/src/renderers/form/select.tsx +35 -15
  134. package/src/renderers/form/slider.tsx +1 -0
  135. package/src/renderers/form/switch.tsx +1 -0
  136. package/src/renderers/form/textarea.tsx +50 -27
  137. package/src/renderers/form/toggle.tsx +3 -45
  138. package/src/renderers/layout/aspect-ratio.tsx +2 -1
  139. package/src/renderers/layout/card.tsx +10 -2
  140. package/src/renderers/layout/container.tsx +1 -0
  141. package/src/renderers/layout/flex.tsx +1 -0
  142. package/src/renderers/layout/grid.tsx +23 -8
  143. package/src/renderers/layout/page.tsx +35 -23
  144. package/src/renderers/layout/semantic.tsx +1 -0
  145. package/src/renderers/layout/stack.tsx +2 -1
  146. package/src/renderers/layout/tabs.tsx +43 -17
  147. package/src/renderers/navigation/header-bar.tsx +1 -0
  148. package/src/renderers/navigation/sidebar.tsx +5 -0
  149. package/src/renderers/overlay/alert-dialog.tsx +1 -0
  150. package/src/renderers/overlay/context-menu.tsx +1 -0
  151. package/src/renderers/overlay/dialog.tsx +1 -0
  152. package/src/renderers/overlay/drawer.tsx +1 -0
  153. package/src/renderers/overlay/dropdown-menu.tsx +1 -0
  154. package/src/renderers/overlay/hover-card.tsx +1 -0
  155. package/src/renderers/overlay/menubar.tsx +1 -0
  156. package/src/renderers/overlay/popover.tsx +1 -0
  157. package/src/renderers/overlay/sheet.tsx +1 -0
  158. package/src/renderers/overlay/tooltip.tsx +1 -0
  159. package/src/renderers/placeholders.tsx +2 -2
  160. package/src/stories/CRMApp.stories.tsx +706 -0
  161. package/src/stories/Guide.mdx +55 -0
  162. package/src/stories/Introduction.mdx +34 -0
  163. package/src/stories/MockedData.stories.tsx +71 -0
  164. package/src/stories/assets/accessibility.png +0 -0
  165. package/src/stories/assets/accessibility.svg +1 -0
  166. package/src/stories/assets/addon-library.png +0 -0
  167. package/src/stories/assets/assets.png +0 -0
  168. package/src/stories/assets/avif-test-image.avif +0 -0
  169. package/src/stories/assets/context.png +0 -0
  170. package/src/stories/assets/discord.svg +1 -0
  171. package/src/stories/assets/docs.png +0 -0
  172. package/src/stories/assets/figma-plugin.png +0 -0
  173. package/src/stories/assets/github.svg +1 -0
  174. package/src/stories/assets/share.png +0 -0
  175. package/src/stories/assets/styling.png +0 -0
  176. package/src/stories/assets/testing.png +0 -0
  177. package/src/stories/assets/theming.png +0 -0
  178. package/src/stories/assets/tutorials.svg +1 -0
  179. package/src/stories/assets/youtube.svg +1 -0
  180. package/src/stories/button.css +30 -0
  181. package/src/stories/header.css +32 -0
  182. package/src/stories/page.css +68 -0
  183. package/src/stories-json/accordion.stories.tsx +43 -0
  184. package/src/stories-json/aggrid.stories.tsx +103 -0
  185. package/src/stories-json/alert.stories.tsx +39 -0
  186. package/src/stories-json/aspect-ratio.stories.tsx +34 -0
  187. package/src/stories-json/avatar.stories.tsx +38 -0
  188. package/src/stories-json/badge.stories.tsx +53 -0
  189. package/src/stories-json/breadcrumb.stories.tsx +30 -0
  190. package/src/stories-json/button-group.stories.tsx +43 -0
  191. package/src/stories-json/button.stories.tsx +73 -0
  192. package/src/stories-json/calendar.stories.tsx +85 -0
  193. package/src/stories-json/card.stories.tsx +48 -0
  194. package/src/stories-json/carousel.stories.tsx +33 -0
  195. package/src/stories-json/charts.stories.tsx +195 -0
  196. package/src/stories-json/chatbot.stories.tsx +248 -0
  197. package/src/stories-json/code-editor.stories.tsx +92 -0
  198. package/src/stories-json/collapsible.stories.tsx +40 -0
  199. package/src/stories-json/controls.stories.tsx +36 -0
  200. package/src/stories-json/dashboard.stories.tsx +318 -0
  201. package/src/stories-json/data-table.stories.tsx +60 -0
  202. package/src/stories-json/data_display_extras.stories.tsx +102 -0
  203. package/src/stories-json/date-picker.stories.tsx +28 -0
  204. package/src/stories-json/detail-view.stories.tsx +258 -0
  205. package/src/stories-json/dialog.stories.tsx +43 -0
  206. package/src/stories-json/feedback_extras.stories.tsx +40 -0
  207. package/src/stories-json/feedback_others.stories.tsx +46 -0
  208. package/src/stories-json/form_advanced.stories.tsx +117 -0
  209. package/src/stories-json/form_extras.stories.tsx +123 -0
  210. package/src/stories-json/grid.stories.tsx +56 -0
  211. package/src/stories-json/icon.stories.tsx +36 -0
  212. package/src/stories-json/input.stories.tsx +52 -0
  213. package/src/stories-json/kanban.stories.tsx +295 -0
  214. package/src/stories-json/layout_extended.stories.tsx +76 -0
  215. package/src/stories-json/layout_flex.stories.tsx +107 -0
  216. package/src/stories-json/list-view.stories.tsx +97 -0
  217. package/src/stories-json/markdown.stories.tsx +129 -0
  218. package/src/stories-json/menus.stories.tsx +63 -0
  219. package/src/stories-json/metric-card.stories.tsx +143 -0
  220. package/src/stories-json/navigation-menu.stories.tsx +37 -0
  221. package/src/stories-json/object-aggrid.stories.tsx +252 -0
  222. package/src/stories-json/object-form.stories.tsx +130 -0
  223. package/src/stories-json/object-gantt.stories.tsx +114 -0
  224. package/src/stories-json/object-grid.stories.tsx +157 -0
  225. package/src/stories-json/object-map.stories.tsx +116 -0
  226. package/src/stories-json/object-view.stories.tsx +118 -0
  227. package/src/stories-json/overlay_extras.stories.tsx +113 -0
  228. package/src/stories-json/overlay_others.stories.tsx +76 -0
  229. package/src/stories-json/page.stories.tsx +55 -0
  230. package/src/stories-json/reports.stories.tsx +163 -0
  231. package/src/stories-json/resizable.stories.tsx +44 -0
  232. package/src/stories-json/select.stories.tsx +34 -0
  233. package/src/stories-json/separator.stories.tsx +41 -0
  234. package/src/stories-json/sidebar.stories.tsx +147 -0
  235. package/src/stories-json/statistic.stories.tsx +44 -0
  236. package/src/stories-json/tabs.stories.tsx +51 -0
  237. package/src/stories-json/timeline.stories.tsx +188 -0
  238. package/src/stories-json/typography.stories.tsx +45 -0
  239. package/src/ui/accordion.tsx +47 -53
  240. package/src/ui/alert-dialog.tsx +103 -117
  241. package/src/ui/alert.tsx +35 -36
  242. package/src/ui/aspect-ratio.tsx +1 -5
  243. package/src/ui/avatar.tsx +41 -42
  244. package/src/ui/badge.tsx +6 -15
  245. package/src/ui/breadcrumb.tsx +81 -75
  246. package/src/ui/button.tsx +10 -11
  247. package/src/ui/calendar.tsx +178 -51
  248. package/src/ui/card.tsx +51 -110
  249. package/src/ui/carousel.tsx +136 -113
  250. package/src/ui/chart.tsx +367 -0
  251. package/src/ui/checkbox.tsx +20 -22
  252. package/src/ui/collapsible.tsx +5 -25
  253. package/src/ui/command.tsx +106 -135
  254. package/src/ui/context-menu.tsx +69 -116
  255. package/src/ui/dialog.tsx +94 -113
  256. package/src/ui/drawer.tsx +82 -99
  257. package/src/ui/dropdown-menu.tsx +134 -188
  258. package/src/ui/form.tsx +51 -40
  259. package/src/ui/hover-card.tsx +18 -33
  260. package/src/ui/index.ts +2 -8
  261. package/src/ui/input-otp.tsx +42 -52
  262. package/src/ui/input.tsx +13 -15
  263. package/src/ui/label.tsx +17 -15
  264. package/src/ui/menubar.tsx +188 -206
  265. package/src/ui/navigation-menu.tsx +96 -136
  266. package/src/ui/pagination.tsx +86 -96
  267. package/src/ui/popover.tsx +24 -41
  268. package/src/ui/progress.tsx +21 -22
  269. package/src/ui/radio-group.tsx +19 -20
  270. package/src/ui/resizable.tsx +32 -42
  271. package/src/ui/scroll-area.tsx +38 -48
  272. package/src/ui/select.tsx +129 -157
  273. package/src/ui/separator.tsx +2 -2
  274. package/src/ui/sheet.tsx +110 -107
  275. package/src/ui/sidebar.tsx +442 -408
  276. package/src/ui/skeleton.tsx +6 -11
  277. package/src/ui/slider.tsx +19 -54
  278. package/src/ui/sonner.tsx +19 -1
  279. package/src/ui/switch.tsx +19 -21
  280. package/src/ui/tabs.tsx +6 -37
  281. package/src/ui/textarea.tsx +8 -4
  282. package/src/ui/toast.tsx +137 -0
  283. package/src/ui/toggle-group.tsx +28 -37
  284. package/src/ui/toggle.tsx +19 -19
  285. package/src/ui/tooltip.tsx +21 -52
  286. package/src/ui/typography.tsx +85 -0
  287. package/tsconfig.json +1 -1
  288. package/vite.config.ts +9 -1
  289. package/vitest.config.ts +5 -0
  290. package/ISSUES_FOUND.md +0 -128
  291. /package/dist/src/{ui → custom}/combobox.d.ts +0 -0
  292. /package/dist/src/{ui → custom}/date-picker.d.ts +0 -0
  293. /package/dist/src/{ui → custom}/empty.d.ts +0 -0
  294. /package/dist/src/{ui → custom}/filter-builder.d.ts +0 -0
  295. /package/dist/src/{ui → custom}/kbd.d.ts +0 -0
  296. /package/dist/src/{ui → custom}/spinner.d.ts +0 -0
  297. /package/src/{ui → custom}/empty.tsx +0 -0
  298. /package/src/{ui → custom}/kbd.tsx +0 -0
  299. /package/src/{ui → custom}/spinner.tsx +0 -0
@@ -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: 'Components/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: 'Components/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: 'Components/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: 'Components/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: 'Components/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: 'Components/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: 'Views/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
+ };