@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.
- package/.turbo/turbo-build.log +47 -0
- package/CHANGELOG.md +10 -0
- package/README.md +32 -1
- package/README_SHADCN_SYNC.md +281 -0
- package/TESTING.md +335 -0
- package/dist/index.css +1 -1
- package/dist/index.js +45067 -34357
- package/dist/index.umd.cjs +54 -42
- package/dist/src/SchemaRenderer.d.ts +3 -0
- package/dist/src/{ui → custom}/button-group.d.ts +1 -1
- package/dist/src/custom/combobox.d.ts +22 -0
- package/dist/src/custom/date-picker.d.ts +15 -0
- package/dist/src/custom/field.d.ts +19 -0
- package/dist/src/{ui → custom}/filter-builder.d.ts +7 -0
- package/dist/src/custom/index.d.ts +12 -0
- package/dist/src/custom/input-group.d.ts +14 -0
- package/dist/src/{ui → custom}/item.d.ts +8 -1
- package/dist/src/{ui → custom}/kbd.d.ts +7 -0
- package/dist/src/custom/native-select.d.ts +12 -0
- package/dist/src/custom/sort-builder.d.ts +22 -0
- package/dist/src/custom/spinner.d.ts +10 -0
- package/dist/src/hooks/use-mobile.d.ts +7 -0
- package/dist/src/index.d.ts +5 -1
- package/dist/src/renderers/basic/button-group.d.ts +8 -0
- package/dist/src/renderers/basic/div.d.ts +7 -0
- package/dist/src/renderers/basic/html.d.ts +7 -0
- package/dist/src/renderers/basic/icon.d.ts +7 -0
- package/dist/src/renderers/basic/image.d.ts +7 -0
- package/dist/src/renderers/basic/navigation-menu.d.ts +8 -0
- package/dist/src/renderers/basic/pagination.d.ts +8 -0
- package/dist/src/renderers/basic/separator.d.ts +7 -0
- package/dist/src/renderers/basic/span.d.ts +7 -0
- package/dist/src/renderers/basic/text.d.ts +7 -0
- package/dist/src/renderers/complex/carousel.d.ts +7 -0
- package/dist/src/renderers/complex/data-table.d.ts +7 -0
- package/dist/src/renderers/complex/filter-builder.d.ts +7 -0
- package/dist/src/renderers/complex/resizable.d.ts +7 -0
- package/dist/src/renderers/complex/scroll-area.d.ts +7 -0
- package/dist/src/renderers/complex/table.d.ts +7 -0
- package/dist/src/renderers/data-display/alert.d.ts +7 -0
- package/dist/src/renderers/data-display/avatar.d.ts +7 -0
- package/dist/src/renderers/data-display/badge.d.ts +7 -0
- package/dist/src/renderers/data-display/breadcrumb.d.ts +8 -0
- package/dist/src/renderers/data-display/kbd.d.ts +8 -0
- package/dist/src/renderers/data-display/list.d.ts +7 -0
- package/dist/src/renderers/data-display/statistic.d.ts +7 -0
- package/dist/src/renderers/data-display/table.d.ts +8 -0
- package/dist/src/renderers/data-display/tree-view.d.ts +7 -0
- package/dist/src/renderers/disclosure/accordion.d.ts +7 -0
- package/dist/src/renderers/disclosure/collapsible.d.ts +7 -0
- package/dist/src/renderers/disclosure/toggle-group.d.ts +8 -0
- package/dist/src/renderers/feedback/empty.d.ts +8 -0
- package/dist/src/renderers/feedback/loading.d.ts +7 -0
- package/dist/src/renderers/feedback/progress.d.ts +7 -0
- package/dist/src/renderers/feedback/skeleton.d.ts +7 -0
- package/dist/src/renderers/feedback/sonner.d.ts +8 -0
- package/dist/src/renderers/feedback/spinner.d.ts +8 -0
- package/dist/src/renderers/feedback/toast.d.ts +8 -0
- package/dist/src/renderers/feedback/toaster.d.ts +7 -0
- package/dist/src/renderers/form/button.d.ts +7 -0
- package/dist/src/renderers/form/calendar.d.ts +7 -0
- package/dist/src/renderers/form/checkbox.d.ts +7 -0
- package/dist/src/renderers/form/combobox.d.ts +8 -0
- package/dist/src/renderers/form/command.d.ts +8 -0
- package/dist/src/renderers/form/date-picker.d.ts +7 -0
- package/dist/src/renderers/form/file-upload.d.ts +7 -0
- package/dist/src/renderers/form/form.d.ts +7 -0
- package/dist/src/renderers/form/input-otp.d.ts +7 -0
- package/dist/src/renderers/form/input.d.ts +7 -0
- package/dist/src/renderers/form/label.d.ts +7 -0
- package/dist/src/renderers/form/radio-group.d.ts +7 -0
- package/dist/src/renderers/form/select.d.ts +7 -0
- package/dist/src/renderers/form/slider.d.ts +7 -0
- package/dist/src/renderers/form/switch.d.ts +7 -0
- package/dist/src/renderers/form/textarea.d.ts +7 -0
- package/dist/src/renderers/form/toggle.d.ts +7 -0
- package/dist/src/renderers/layout/aspect-ratio.d.ts +8 -0
- package/dist/src/renderers/layout/card.d.ts +7 -0
- package/dist/src/renderers/layout/container.d.ts +7 -0
- package/dist/src/renderers/layout/flex.d.ts +7 -0
- package/dist/src/renderers/layout/grid.d.ts +7 -0
- package/dist/src/renderers/layout/page.d.ts +1 -1
- package/dist/src/renderers/layout/semantic.d.ts +7 -0
- package/dist/src/renderers/layout/stack.d.ts +7 -0
- package/dist/src/renderers/layout/tabs.d.ts +7 -0
- package/dist/src/renderers/navigation/header-bar.d.ts +7 -0
- package/dist/src/renderers/navigation/sidebar.d.ts +7 -0
- package/dist/src/renderers/overlay/alert-dialog.d.ts +7 -0
- package/dist/src/renderers/overlay/context-menu.d.ts +7 -0
- package/dist/src/renderers/overlay/dialog.d.ts +7 -0
- package/dist/src/renderers/overlay/drawer.d.ts +7 -0
- package/dist/src/renderers/overlay/dropdown-menu.d.ts +7 -0
- package/dist/src/renderers/overlay/hover-card.d.ts +7 -0
- package/dist/src/renderers/overlay/menubar.d.ts +8 -0
- package/dist/src/renderers/overlay/popover.d.ts +7 -0
- package/dist/src/renderers/overlay/sheet.d.ts +7 -0
- package/dist/src/renderers/overlay/tooltip.d.ts +7 -0
- package/dist/src/renderers/placeholders.d.ts +9 -0
- package/dist/src/ui/accordion.d.ts +11 -4
- package/dist/src/ui/alert-dialog.d.ts +24 -11
- package/dist/src/ui/alert.d.ts +11 -5
- package/dist/src/ui/aspect-ratio.d.ts +8 -1
- package/dist/src/ui/avatar.d.ts +10 -3
- package/dist/src/ui/badge.d.ts +10 -3
- package/dist/src/ui/breadcrumb.d.ts +23 -8
- package/dist/src/ui/button.d.ts +10 -5
- package/dist/src/ui/calendar.d.ts +8 -1
- package/dist/src/ui/card.d.ts +14 -8
- package/dist/src/ui/carousel.d.ts +12 -6
- package/dist/src/ui/chart.d.ts +62 -0
- package/dist/src/ui/checkbox.d.ts +8 -1
- package/dist/src/ui/collapsible.d.ts +10 -3
- package/dist/src/ui/command.d.ts +85 -16
- package/dist/src/ui/context-menu.d.ts +21 -12
- package/dist/src/ui/dialog.d.ts +24 -13
- package/dist/src/ui/drawer.d.ts +26 -10
- package/dist/src/ui/dropdown-menu.d.ts +27 -18
- package/dist/src/ui/form.d.ts +13 -7
- package/dist/src/ui/hover-card.d.ts +10 -3
- package/dist/src/ui/index.d.ts +10 -11
- package/dist/src/ui/input-otp.d.ts +37 -7
- package/dist/src/ui/input.d.ts +7 -0
- package/dist/src/ui/label.d.ts +9 -1
- package/dist/src/ui/menubar.d.ts +26 -17
- package/dist/src/ui/navigation-menu.d.ts +16 -11
- package/dist/src/ui/pagination.d.ts +32 -10
- package/dist/src/ui/popover.d.ts +11 -5
- package/dist/src/ui/progress.d.ts +8 -1
- package/dist/src/ui/radio-group.d.ts +9 -2
- package/dist/src/ui/resizable.d.ts +12 -8
- package/dist/src/ui/scroll-area.d.ts +9 -2
- package/dist/src/ui/select.d.ts +18 -13
- package/dist/src/ui/separator.d.ts +7 -0
- package/dist/src/ui/sheet.d.ts +30 -11
- package/dist/src/ui/sidebar.d.ts +41 -38
- package/dist/src/ui/skeleton.d.ts +8 -1
- package/dist/src/ui/slider.d.ts +8 -1
- package/dist/src/ui/sonner.d.ts +2 -1
- package/dist/src/ui/switch.d.ts +9 -2
- package/dist/src/ui/table.d.ts +15 -8
- package/dist/src/ui/tabs.d.ts +8 -1
- package/dist/src/ui/textarea.d.ts +8 -1
- package/dist/src/ui/toast.d.ts +22 -0
- package/dist/src/ui/toggle-group.d.ts +15 -5
- package/dist/src/ui/toggle.d.ts +11 -1
- package/dist/src/ui/tooltip.d.ts +11 -4
- package/dist/src/ui/typography.d.ts +21 -0
- package/metadata/ObjectGrid.component.yml +72 -0
- package/package.json +35 -13
- package/postcss.config.js +9 -1
- package/shadcn-components.json +315 -0
- package/src/SchemaRenderer.tsx +28 -0
- package/src/__tests__/PageRendererRegions.test.tsx +59 -0
- package/src/__tests__/README.md +124 -0
- package/src/__tests__/Registry.test.ts +21 -0
- package/src/__tests__/basic-renderers.test.tsx +255 -0
- package/src/__tests__/complex-disclosure-renderers.test.tsx +302 -0
- package/src/__tests__/feedback-overlay-renderers.test.tsx +349 -0
- package/src/__tests__/form-renderers.test.tsx +364 -0
- package/src/__tests__/layout-data-renderers.test.tsx +340 -0
- package/src/__tests__/test-utils.tsx +190 -0
- package/src/{ui → custom}/button-group.tsx +9 -1
- package/src/custom/combobox.tsx +104 -0
- package/src/custom/date-picker.tsx +61 -0
- package/src/{ui → custom}/empty.tsx +8 -0
- package/src/custom/field.tsx +81 -0
- package/src/{ui → custom}/filter-builder.tsx +11 -3
- package/src/custom/index.ts +12 -0
- package/src/custom/input-group.tsx +53 -0
- package/src/{ui → custom}/item.tsx +9 -1
- package/src/{ui → custom}/kbd.tsx +8 -0
- package/src/custom/native-select.tsx +33 -0
- package/src/custom/sort-builder.tsx +129 -0
- package/src/custom/spinner.tsx +26 -0
- package/src/hooks/use-mobile.tsx +8 -0
- package/src/index.css +105 -54
- package/src/index.test.ts +8 -0
- package/src/index.ts +22 -1
- package/src/lib/utils.tsx +8 -0
- package/src/new-components.test.ts +8 -9
- package/src/renderers/basic/button-group.tsx +79 -0
- package/src/renderers/basic/div.tsx +21 -2
- package/src/renderers/basic/html.tsx +9 -0
- package/src/renderers/basic/icon.tsx +67 -3
- package/src/renderers/basic/image.tsx +13 -1
- package/src/renderers/basic/index.ts +11 -0
- package/src/renderers/basic/navigation-menu.tsx +81 -0
- package/src/renderers/basic/pagination.tsx +109 -0
- package/src/renderers/basic/separator.tsx +10 -1
- package/src/renderers/basic/span.tsx +21 -2
- package/src/renderers/basic/text.tsx +12 -2
- package/src/renderers/complex/__tests__/data-table.test.ts +8 -0
- package/src/renderers/complex/carousel.tsx +12 -3
- package/src/renderers/complex/data-table.tsx +150 -96
- package/src/renderers/complex/filter-builder.tsx +10 -1
- package/src/renderers/complex/index.ts +9 -3
- package/src/renderers/complex/resizable.tsx +10 -1
- package/src/renderers/complex/scroll-area.tsx +33 -7
- package/src/renderers/complex/table.tsx +11 -2
- package/src/renderers/data-display/alert.tsx +9 -0
- package/src/renderers/data-display/avatar.tsx +9 -0
- package/src/renderers/data-display/badge.tsx +9 -0
- package/src/renderers/data-display/breadcrumb.tsx +60 -0
- package/src/renderers/data-display/index.ts +12 -0
- package/src/renderers/data-display/kbd.tsx +50 -0
- package/src/renderers/data-display/list.tsx +29 -49
- package/src/renderers/data-display/statistic.tsx +45 -48
- package/src/renderers/data-display/table.tsx +78 -0
- package/src/renderers/data-display/tree-view.tsx +32 -37
- package/src/renderers/disclosure/accordion.tsx +9 -0
- package/src/renderers/disclosure/collapsible.tsx +9 -0
- package/src/renderers/disclosure/index.ts +9 -0
- package/src/renderers/disclosure/toggle-group.tsx +79 -0
- package/src/renderers/feedback/empty.tsx +49 -0
- package/src/renderers/feedback/index.ts +12 -0
- package/src/renderers/feedback/loading.tsx +10 -1
- package/src/renderers/feedback/progress.tsx +9 -0
- package/src/renderers/feedback/skeleton.tsx +9 -0
- package/src/renderers/feedback/sonner.tsx +56 -0
- package/src/renderers/feedback/spinner.tsx +55 -0
- package/src/renderers/feedback/toast.tsx +59 -0
- package/src/renderers/feedback/toaster.tsx +14 -17
- package/src/renderers/form/button.tsx +43 -1
- package/src/renderers/form/calendar.tsx +9 -0
- package/src/renderers/form/checkbox.tsx +46 -16
- package/src/renderers/form/combobox.tsx +48 -0
- package/src/renderers/form/command.tsx +58 -0
- package/src/renderers/form/date-picker.tsx +11 -2
- package/src/renderers/form/file-upload.tsx +11 -2
- package/src/renderers/form/form.tsx +104 -18
- package/src/renderers/form/index.ts +10 -0
- package/src/renderers/form/input-otp.tsx +35 -15
- package/src/renderers/form/input.tsx +92 -50
- package/src/renderers/form/label.tsx +9 -0
- package/src/renderers/form/radio-group.tsx +9 -0
- package/src/renderers/form/select.tsx +43 -15
- package/src/renderers/form/slider.tsx +17 -1
- package/src/renderers/form/switch.tsx +9 -0
- package/src/renderers/form/textarea.tsx +58 -27
- package/src/renderers/form/toggle.tsx +11 -45
- package/src/renderers/index.ts +8 -0
- package/src/renderers/layout/aspect-ratio.tsx +51 -0
- package/src/renderers/layout/card.tsx +18 -2
- package/src/renderers/layout/container.tsx +21 -12
- package/src/renderers/layout/flex.tsx +17 -8
- package/src/renderers/layout/grid.tsx +31 -8
- package/src/renderers/layout/index.ts +9 -0
- package/src/renderers/layout/page.tsx +44 -24
- package/src/renderers/layout/semantic.tsx +9 -0
- package/src/renderers/layout/stack.tsx +18 -9
- package/src/renderers/layout/tabs.tsx +51 -17
- package/src/renderers/navigation/header-bar.tsx +10 -1
- package/src/renderers/navigation/index.ts +8 -0
- package/src/renderers/navigation/sidebar.tsx +13 -0
- package/src/renderers/overlay/alert-dialog.tsx +9 -0
- package/src/renderers/overlay/context-menu.tsx +10 -1
- package/src/renderers/overlay/dialog.tsx +9 -0
- package/src/renderers/overlay/drawer.tsx +9 -0
- package/src/renderers/overlay/dropdown-menu.tsx +9 -0
- package/src/renderers/overlay/hover-card.tsx +9 -0
- package/src/renderers/overlay/index.ts +9 -0
- package/src/renderers/overlay/menubar.tsx +76 -0
- package/src/renderers/overlay/popover.tsx +9 -0
- package/src/renderers/overlay/sheet.tsx +9 -0
- package/src/renderers/overlay/tooltip.tsx +9 -0
- package/src/renderers/placeholders.tsx +107 -0
- package/src/stories/CRMApp.stories.tsx +706 -0
- package/src/stories/Guide.mdx +55 -0
- package/src/stories/Introduction.mdx +34 -0
- package/src/stories/MockedData.stories.tsx +71 -0
- package/src/stories/assets/accessibility.png +0 -0
- package/src/stories/assets/accessibility.svg +1 -0
- package/src/stories/assets/addon-library.png +0 -0
- package/src/stories/assets/assets.png +0 -0
- package/src/stories/assets/avif-test-image.avif +0 -0
- package/src/stories/assets/context.png +0 -0
- package/src/stories/assets/discord.svg +1 -0
- package/src/stories/assets/docs.png +0 -0
- package/src/stories/assets/figma-plugin.png +0 -0
- package/src/stories/assets/github.svg +1 -0
- package/src/stories/assets/share.png +0 -0
- package/src/stories/assets/styling.png +0 -0
- package/src/stories/assets/testing.png +0 -0
- package/src/stories/assets/theming.png +0 -0
- package/src/stories/assets/tutorials.svg +1 -0
- package/src/stories/assets/youtube.svg +1 -0
- package/src/stories/button.css +30 -0
- package/src/stories/header.css +32 -0
- package/src/stories/page.css +68 -0
- package/src/stories-json/accordion.stories.tsx +43 -0
- package/src/stories-json/aggrid.stories.tsx +103 -0
- package/src/stories-json/alert.stories.tsx +39 -0
- package/src/stories-json/aspect-ratio.stories.tsx +34 -0
- package/src/stories-json/avatar.stories.tsx +38 -0
- package/src/stories-json/badge.stories.tsx +53 -0
- package/src/stories-json/breadcrumb.stories.tsx +30 -0
- package/src/stories-json/button-group.stories.tsx +43 -0
- package/src/stories-json/button.stories.tsx +73 -0
- package/src/stories-json/calendar.stories.tsx +85 -0
- package/src/stories-json/card.stories.tsx +48 -0
- package/src/stories-json/carousel.stories.tsx +33 -0
- package/src/stories-json/charts.stories.tsx +195 -0
- package/src/stories-json/chatbot.stories.tsx +248 -0
- package/src/stories-json/code-editor.stories.tsx +92 -0
- package/src/stories-json/collapsible.stories.tsx +40 -0
- package/src/stories-json/controls.stories.tsx +36 -0
- package/src/stories-json/dashboard.stories.tsx +318 -0
- package/src/stories-json/data-table.stories.tsx +60 -0
- package/src/stories-json/data_display_extras.stories.tsx +102 -0
- package/src/stories-json/date-picker.stories.tsx +28 -0
- package/src/stories-json/detail-view.stories.tsx +258 -0
- package/src/stories-json/dialog.stories.tsx +43 -0
- package/src/stories-json/feedback_extras.stories.tsx +40 -0
- package/src/stories-json/feedback_others.stories.tsx +46 -0
- package/src/stories-json/form_advanced.stories.tsx +117 -0
- package/src/stories-json/form_extras.stories.tsx +123 -0
- package/src/stories-json/grid.stories.tsx +56 -0
- package/src/stories-json/icon.stories.tsx +36 -0
- package/src/stories-json/input.stories.tsx +52 -0
- package/src/stories-json/kanban.stories.tsx +295 -0
- package/src/stories-json/layout_extended.stories.tsx +76 -0
- package/src/stories-json/layout_flex.stories.tsx +107 -0
- package/src/stories-json/list-view.stories.tsx +97 -0
- package/src/stories-json/markdown.stories.tsx +129 -0
- package/src/stories-json/menus.stories.tsx +63 -0
- package/src/stories-json/metric-card.stories.tsx +143 -0
- package/src/stories-json/navigation-menu.stories.tsx +37 -0
- package/src/stories-json/object-aggrid.stories.tsx +252 -0
- package/src/stories-json/object-form.stories.tsx +130 -0
- package/src/stories-json/object-gantt.stories.tsx +114 -0
- package/src/stories-json/object-grid.stories.tsx +157 -0
- package/src/stories-json/object-map.stories.tsx +116 -0
- package/src/stories-json/object-view.stories.tsx +118 -0
- package/src/stories-json/overlay_extras.stories.tsx +113 -0
- package/src/stories-json/overlay_others.stories.tsx +76 -0
- package/src/stories-json/page.stories.tsx +55 -0
- package/src/stories-json/reports.stories.tsx +163 -0
- package/src/stories-json/resizable.stories.tsx +44 -0
- package/src/stories-json/select.stories.tsx +34 -0
- package/src/stories-json/separator.stories.tsx +41 -0
- package/src/stories-json/sidebar.stories.tsx +147 -0
- package/src/stories-json/statistic.stories.tsx +44 -0
- package/src/stories-json/tabs.stories.tsx +51 -0
- package/src/stories-json/timeline.stories.tsx +188 -0
- package/src/stories-json/typography.stories.tsx +45 -0
- package/src/ui/accordion.tsx +55 -53
- package/src/ui/alert-dialog.tsx +111 -117
- package/src/ui/alert.tsx +46 -57
- package/src/ui/aspect-ratio.tsx +9 -5
- package/src/ui/avatar.tsx +49 -42
- package/src/ui/badge.tsx +18 -20
- package/src/ui/breadcrumb.tsx +89 -75
- package/src/ui/button.tsx +38 -37
- package/src/ui/calendar.tsx +37 -53
- package/src/ui/card.tsx +59 -110
- package/src/ui/carousel.tsx +144 -113
- package/src/ui/chart.tsx +367 -0
- package/src/ui/checkbox.tsx +28 -22
- package/src/ui/collapsible.tsx +13 -25
- package/src/ui/command.tsx +114 -135
- package/src/ui/context-menu.tsx +77 -116
- package/src/ui/dialog.tsx +102 -113
- package/src/ui/drawer.tsx +90 -99
- package/src/ui/dropdown-menu.tsx +142 -188
- package/src/ui/form.tsx +59 -40
- package/src/ui/hover-card.tsx +26 -33
- package/src/ui/index.ts +11 -11
- package/src/ui/input-otp.tsx +53 -55
- package/src/ui/input.tsx +21 -15
- package/src/ui/label.tsx +25 -15
- package/src/ui/menubar.tsx +196 -206
- package/src/ui/navigation-menu.tsx +104 -136
- package/src/ui/pagination.tsx +94 -96
- package/src/ui/popover.tsx +29 -38
- package/src/ui/progress.tsx +29 -34
- package/src/ui/radio-group.tsx +27 -20
- package/src/ui/resizable.tsx +40 -42
- package/src/ui/scroll-area.tsx +46 -48
- package/src/ui/select.tsx +140 -160
- package/src/ui/separator.tsx +10 -2
- package/src/ui/sheet.tsx +118 -107
- package/src/ui/sidebar.tsx +471 -418
- package/src/ui/skeleton.tsx +14 -11
- package/src/ui/slider.tsx +27 -54
- package/src/ui/sonner.tsx +29 -19
- package/src/ui/switch.tsx +27 -21
- package/src/ui/table.tsx +102 -97
- package/src/ui/tabs.tsx +14 -37
- package/src/ui/textarea.tsx +16 -4
- package/src/ui/toast.tsx +137 -0
- package/src/ui/toggle-group.tsx +37 -55
- package/src/ui/toggle.tsx +30 -27
- package/src/ui/tooltip.tsx +29 -52
- package/src/ui/typography.tsx +85 -0
- package/tsconfig.json +2 -1
- package/vite.config.ts +20 -2
- package/vitest.config.ts +5 -0
- package/dist/src/index.test.d.ts +0 -1
- package/dist/src/new-components.test.d.ts +0 -1
- package/dist/src/renderers/complex/__tests__/data-table.test.d.ts +0 -0
- package/dist/src/renderers/complex/calendar-view.d.ts +0 -1
- package/dist/src/renderers/complex/chatbot.d.ts +0 -1
- package/dist/src/renderers/complex/chatbot.test.d.ts +0 -1
- package/dist/src/renderers/complex/timeline.d.ts +0 -1
- package/dist/src/ui/calendar-view.d.ts +0 -21
- package/dist/src/ui/chatbot.d.ts +0 -36
- package/dist/src/ui/field.d.ts +0 -24
- package/dist/src/ui/input-group.d.ts +0 -16
- package/dist/src/ui/spinner.d.ts +0 -3
- package/dist/src/ui/timeline.d.ts +0 -25
- package/metadata/ObjectTable.component.yml +0 -41
- package/src/renderers/complex/calendar-view.tsx +0 -219
- package/src/renderers/complex/chatbot.test.ts +0 -44
- package/src/renderers/complex/chatbot.tsx +0 -185
- package/src/renderers/complex/timeline.tsx +0 -466
- package/src/ui/calendar-view.tsx +0 -503
- package/src/ui/chatbot.tsx +0 -240
- package/src/ui/field.tsx +0 -246
- package/src/ui/input-group.tsx +0 -170
- package/src/ui/spinner.tsx +0 -38
- package/src/ui/timeline.tsx +0 -266
- package/tailwind.config.js +0 -75
- /package/dist/src/{ui → custom}/empty.d.ts +0 -0
|
@@ -1,5 +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
|
// Enterprise-level DataTable Component (Airtable-like)
|
|
2
10
|
import React, { useState, useMemo, useRef, useEffect } from 'react';
|
|
11
|
+
import { cn } from '../../lib/utils';
|
|
3
12
|
import { ComponentRegistry } from '@object-ui/core';
|
|
4
13
|
import type { DataTableSchema } from '@object-ui/types';
|
|
5
14
|
import {
|
|
@@ -77,7 +86,7 @@ type SortDirection = 'asc' | 'desc' | null;
|
|
|
77
86
|
const DataTableRenderer = ({ schema }: { schema: DataTableSchema }) => {
|
|
78
87
|
const {
|
|
79
88
|
caption,
|
|
80
|
-
columns:
|
|
89
|
+
columns: rawColumns = [],
|
|
81
90
|
data = [],
|
|
82
91
|
pagination = true,
|
|
83
92
|
pageSize: initialPageSize = 10,
|
|
@@ -91,6 +100,15 @@ const DataTableRenderer = ({ schema }: { schema: DataTableSchema }) => {
|
|
|
91
100
|
className,
|
|
92
101
|
} = schema;
|
|
93
102
|
|
|
103
|
+
// Normalize columns to support legacy keys (label/name) from existing JSONs
|
|
104
|
+
const initialColumns = useMemo(() => {
|
|
105
|
+
return rawColumns.map((col: any) => ({
|
|
106
|
+
...col,
|
|
107
|
+
header: col.header || col.label,
|
|
108
|
+
accessorKey: col.accessorKey || col.name
|
|
109
|
+
}));
|
|
110
|
+
}, [rawColumns]);
|
|
111
|
+
|
|
94
112
|
// State management
|
|
95
113
|
const [searchQuery, setSearchQuery] = useState('');
|
|
96
114
|
const [sortColumn, setSortColumn] = useState<string | null>(null);
|
|
@@ -343,56 +361,60 @@ const DataTableRenderer = ({ schema }: { schema: DataTableSchema }) => {
|
|
|
343
361
|
return selectedRowIds.has(rowId);
|
|
344
362
|
}) && !allPageRowsSelected;
|
|
345
363
|
|
|
364
|
+
const showToolbar = searchable || exportable || (selectable && selectedRowIds.size > 0);
|
|
365
|
+
|
|
346
366
|
return (
|
|
347
|
-
<div className={`
|
|
367
|
+
<div className={`flex flex-col h-full gap-4 ${className || ''}`}>
|
|
348
368
|
{/* Toolbar */}
|
|
349
|
-
|
|
350
|
-
<div className="flex items-center gap-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
<
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
<div className="flex items-center gap-2">
|
|
368
|
-
{exportable && (
|
|
369
|
-
<Button
|
|
370
|
-
variant="outline"
|
|
371
|
-
size="sm"
|
|
372
|
-
onClick={handleExport}
|
|
373
|
-
disabled={sortedData.length === 0}
|
|
374
|
-
>
|
|
375
|
-
<Download className="h-4 w-4 mr-2" />
|
|
376
|
-
Export CSV
|
|
377
|
-
</Button>
|
|
378
|
-
)}
|
|
369
|
+
{showToolbar && (
|
|
370
|
+
<div className="flex items-center justify-between gap-4 flex-none">
|
|
371
|
+
<div className="flex items-center gap-2 flex-1">
|
|
372
|
+
{searchable && (
|
|
373
|
+
<div className="relative max-w-sm flex-1">
|
|
374
|
+
<Search className="absolute left-2 top-1/2 transform -translate-y-1/2 h-4 w-4 text-muted-foreground" />
|
|
375
|
+
<Input
|
|
376
|
+
placeholder="Search..."
|
|
377
|
+
value={searchQuery}
|
|
378
|
+
onChange={(e) => {
|
|
379
|
+
setSearchQuery(e.target.value);
|
|
380
|
+
setCurrentPage(1);
|
|
381
|
+
}}
|
|
382
|
+
className="pl-8"
|
|
383
|
+
/>
|
|
384
|
+
</div>
|
|
385
|
+
)}
|
|
386
|
+
</div>
|
|
379
387
|
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
388
|
+
<div className="flex items-center gap-2">
|
|
389
|
+
{exportable && (
|
|
390
|
+
<Button
|
|
391
|
+
variant="outline"
|
|
392
|
+
size="sm"
|
|
393
|
+
onClick={handleExport}
|
|
394
|
+
disabled={sortedData.length === 0}
|
|
395
|
+
>
|
|
396
|
+
<Download className="h-4 w-4 mr-2" />
|
|
397
|
+
Export CSV
|
|
398
|
+
</Button>
|
|
399
|
+
)}
|
|
400
|
+
|
|
401
|
+
{selectable && selectedRowIds.size > 0 && (
|
|
402
|
+
<div className="text-sm text-muted-foreground">
|
|
403
|
+
{selectedRowIds.size} selected
|
|
404
|
+
</div>
|
|
405
|
+
)}
|
|
406
|
+
</div>
|
|
385
407
|
</div>
|
|
386
|
-
|
|
408
|
+
)}
|
|
387
409
|
|
|
388
410
|
{/* Table */}
|
|
389
|
-
<div className="border
|
|
411
|
+
<div className="rounded-md border flex-1 min-h-0 overflow-auto relative bg-background">
|
|
390
412
|
<Table>
|
|
391
413
|
{caption && <TableCaption>{caption}</TableCaption>}
|
|
392
|
-
<TableHeader>
|
|
414
|
+
<TableHeader className="sticky top-0 bg-background z-10 shadow-sm">
|
|
393
415
|
<TableRow>
|
|
394
416
|
{selectable && (
|
|
395
|
-
<TableHead className="w-12">
|
|
417
|
+
<TableHead className="w-12 bg-background">
|
|
396
418
|
<Checkbox
|
|
397
419
|
checked={allPageRowsSelected ? true : somePageRowsSelected ? 'indeterminate' : false}
|
|
398
420
|
onCheckedChange={handleSelectAll}
|
|
@@ -407,7 +429,7 @@ const DataTableRenderer = ({ schema }: { schema: DataTableSchema }) => {
|
|
|
407
429
|
return (
|
|
408
430
|
<TableHead
|
|
409
431
|
key={col.accessorKey}
|
|
410
|
-
className={`${col.className || ''} ${sortable && col.sortable !== false ? 'cursor-pointer select-none' : ''} ${isDragging ? 'opacity-50' : ''} ${isDragOver ? 'border-l-2 border-primary' : ''} relative group`}
|
|
432
|
+
className={`${col.className || ''} ${sortable && col.sortable !== false ? 'cursor-pointer select-none' : ''} ${isDragging ? 'opacity-50' : ''} ${isDragOver ? 'border-l-2 border-primary' : ''} relative group bg-background`}
|
|
411
433
|
style={{
|
|
412
434
|
width: columnWidth,
|
|
413
435
|
minWidth: columnWidth
|
|
@@ -439,7 +461,7 @@ const DataTableRenderer = ({ schema }: { schema: DataTableSchema }) => {
|
|
|
439
461
|
);
|
|
440
462
|
})}
|
|
441
463
|
{rowActions && (
|
|
442
|
-
<TableHead className="w-24 text-right">Actions</TableHead>
|
|
464
|
+
<TableHead className="w-24 text-right bg-background">Actions</TableHead>
|
|
443
465
|
)}
|
|
444
466
|
</TableRow>
|
|
445
467
|
</TableHeader>
|
|
@@ -448,66 +470,97 @@ const DataTableRenderer = ({ schema }: { schema: DataTableSchema }) => {
|
|
|
448
470
|
<TableRow>
|
|
449
471
|
<TableCell
|
|
450
472
|
colSpan={columns.length + (selectable ? 1 : 0) + (rowActions ? 1 : 0)}
|
|
451
|
-
className="h-
|
|
473
|
+
className="h-96 text-center text-muted-foreground"
|
|
452
474
|
>
|
|
453
|
-
|
|
475
|
+
<div className="flex flex-col items-center justify-center gap-2">
|
|
476
|
+
<Search className="h-8 w-8 text-muted-foreground/50" />
|
|
477
|
+
<p>No results found</p>
|
|
478
|
+
<p className="text-xs text-muted-foreground/50">Try adjusting your filters or search query.</p>
|
|
479
|
+
</div>
|
|
454
480
|
</TableCell>
|
|
455
481
|
</TableRow>
|
|
456
482
|
) : (
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
483
|
+
<>
|
|
484
|
+
{paginatedData.map((row, rowIndex) => {
|
|
485
|
+
const globalIndex = (currentPage - 1) * pageSize + rowIndex;
|
|
486
|
+
const rowId = getRowId(row, globalIndex);
|
|
487
|
+
const isSelected = selectedRowIds.has(rowId);
|
|
488
|
+
|
|
489
|
+
return (
|
|
490
|
+
<TableRow
|
|
491
|
+
key={rowId}
|
|
492
|
+
data-state={isSelected ? 'selected' : undefined}
|
|
493
|
+
className={cn(
|
|
494
|
+
// @ts-expect-error - onRowClick might not be in schema type definition
|
|
495
|
+
schema.onRowClick && "cursor-pointer"
|
|
496
|
+
)}
|
|
497
|
+
onClick={(e) => {
|
|
498
|
+
// @ts-expect-error - onRowClick might not be in schema type definition
|
|
499
|
+
if (schema.onRowClick && !e.defaultPrevented) {
|
|
500
|
+
// Simple heuristic to avoid triggering on interactive elements if they didn't stop propagation
|
|
501
|
+
const target = e.target as HTMLElement;
|
|
502
|
+
if (target.closest('button') || target.closest('[role="checkbox"]') || target.closest('a')) {
|
|
503
|
+
return;
|
|
504
|
+
}
|
|
505
|
+
// @ts-expect-error - onRowClick might not be in schema type definition
|
|
506
|
+
schema.onRowClick(row);
|
|
507
|
+
}
|
|
508
|
+
}}
|
|
509
|
+
>
|
|
510
|
+
{selectable && (
|
|
511
|
+
<TableCell>
|
|
512
|
+
<Checkbox
|
|
513
|
+
checked={isSelected}
|
|
514
|
+
onCheckedChange={(checked) => handleSelectRow(rowId, checked as boolean)}
|
|
515
|
+
/>
|
|
485
516
|
</TableCell>
|
|
486
|
-
)
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
<Button
|
|
499
|
-
variant="ghost"
|
|
500
|
-
size="icon-sm"
|
|
501
|
-
onClick={() => schema.onRowDelete?.(row)}
|
|
517
|
+
)}
|
|
518
|
+
{columns.map((col, colIndex) => {
|
|
519
|
+
const columnWidth = columnWidths[col.accessorKey] || col.width;
|
|
520
|
+
return (
|
|
521
|
+
<TableCell
|
|
522
|
+
key={colIndex}
|
|
523
|
+
className={col.cellClassName}
|
|
524
|
+
style={{
|
|
525
|
+
width: columnWidth,
|
|
526
|
+
minWidth: columnWidth,
|
|
527
|
+
maxWidth: columnWidth
|
|
528
|
+
}}
|
|
502
529
|
>
|
|
503
|
-
|
|
504
|
-
</
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
530
|
+
{row[col.accessorKey]}
|
|
531
|
+
</TableCell>
|
|
532
|
+
);
|
|
533
|
+
})}
|
|
534
|
+
{rowActions && (
|
|
535
|
+
<TableCell className="text-right">
|
|
536
|
+
<div className="flex items-center justify-end gap-1">
|
|
537
|
+
<Button
|
|
538
|
+
variant="ghost"
|
|
539
|
+
size="icon-sm"
|
|
540
|
+
onClick={() => schema.onRowEdit?.(row)}
|
|
541
|
+
>
|
|
542
|
+
<Edit className="h-4 w-4" />
|
|
543
|
+
</Button>
|
|
544
|
+
<Button
|
|
545
|
+
variant="ghost"
|
|
546
|
+
size="icon-sm"
|
|
547
|
+
onClick={() => schema.onRowDelete?.(row)}
|
|
548
|
+
>
|
|
549
|
+
<Trash2 className="h-4 w-4 text-destructive" />
|
|
550
|
+
</Button>
|
|
551
|
+
</div>
|
|
552
|
+
</TableCell>
|
|
553
|
+
)}
|
|
554
|
+
</TableRow>
|
|
555
|
+
);
|
|
556
|
+
})}
|
|
557
|
+
{/* Filler rows to maintain height consistency */}
|
|
558
|
+
{paginatedData.length > 0 && Array.from({ length: Math.max(0, pageSize - paginatedData.length) }).map((_, i) => (
|
|
559
|
+
<TableRow key={`empty-${i}`} className="hover:bg-transparent">
|
|
560
|
+
<TableCell colSpan={columns.length + (selectable ? 1 : 0) + (rowActions ? 1 : 0)} className="h-[52px] p-0" />
|
|
508
561
|
</TableRow>
|
|
509
|
-
)
|
|
510
|
-
|
|
562
|
+
))}
|
|
563
|
+
</>
|
|
511
564
|
)}
|
|
512
565
|
</TableBody>
|
|
513
566
|
</Table>
|
|
@@ -585,6 +638,7 @@ const DataTableRenderer = ({ schema }: { schema: DataTableSchema }) => {
|
|
|
585
638
|
|
|
586
639
|
// Register the component
|
|
587
640
|
ComponentRegistry.register('data-table', DataTableRenderer, {
|
|
641
|
+
namespace: 'ui',
|
|
588
642
|
label: 'Data Table',
|
|
589
643
|
icon: 'table',
|
|
590
644
|
inputs: [
|
|
@@ -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 { FilterBuilderSchema, FilterGroup } from '@object-ui/types';
|
|
3
|
-
import { FilterBuilder } from '../../
|
|
11
|
+
import { FilterBuilder } from '../../custom/filter-builder';
|
|
4
12
|
|
|
5
13
|
ComponentRegistry.register('filter-builder',
|
|
6
14
|
({ schema, className, onChange, ...props }: { schema: FilterBuilderSchema; className?: string; onChange?: (event: any) => void; [key: string]: any }) => {
|
|
@@ -31,6 +39,7 @@ ComponentRegistry.register('filter-builder',
|
|
|
31
39
|
);
|
|
32
40
|
},
|
|
33
41
|
{
|
|
42
|
+
namespace: 'ui',
|
|
34
43
|
label: 'Filter Builder',
|
|
35
44
|
inputs: [
|
|
36
45
|
{ name: 'label', type: 'string', label: 'Label' },
|
|
@@ -1,10 +1,16 @@
|
|
|
1
|
-
|
|
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
|
+
|
|
2
9
|
import './carousel';
|
|
3
10
|
import './filter-builder';
|
|
4
11
|
import './scroll-area';
|
|
5
12
|
import './resizable';
|
|
6
13
|
import './table';
|
|
7
|
-
import './chatbot';
|
|
8
14
|
import './data-table';
|
|
9
|
-
|
|
15
|
+
|
|
10
16
|
|
|
@@ -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 React from 'react';
|
|
2
10
|
import { ComponentRegistry } from '@object-ui/core';
|
|
3
11
|
import type { ResizableSchema } from '@object-ui/types';
|
|
@@ -11,7 +19,7 @@ import { renderChildren } from '../../lib/utils';
|
|
|
11
19
|
ComponentRegistry.register('resizable',
|
|
12
20
|
({ schema, className, ...props }: { schema: ResizableSchema; className?: string; [key: string]: any }) => (
|
|
13
21
|
<ResizablePanelGroup
|
|
14
|
-
|
|
22
|
+
orientation={(schema.direction || 'horizontal') as "horizontal" | "vertical"}
|
|
15
23
|
className={className}
|
|
16
24
|
{...props}
|
|
17
25
|
style={{ minHeight: schema.minHeight || '200px' }}
|
|
@@ -27,6 +35,7 @@ ComponentRegistry.register('resizable',
|
|
|
27
35
|
</ResizablePanelGroup>
|
|
28
36
|
),
|
|
29
37
|
{
|
|
38
|
+
namespace: 'ui',
|
|
30
39
|
label: 'Resizable Panel Group',
|
|
31
40
|
inputs: [
|
|
32
41
|
{ name: 'direction', type: 'enum', enum: ['horizontal', 'vertical'], defaultValue: 'horizontal', label: 'Direction' },
|
|
@@ -1,29 +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
|
+
|
|
1
9
|
import { ComponentRegistry } from '@object-ui/core';
|
|
2
10
|
import type { ScrollAreaSchema } from '@object-ui/types';
|
|
3
11
|
import { ScrollArea, ScrollBar } from '../../ui';
|
|
4
12
|
import { renderChildren } from '../../lib/utils';
|
|
5
13
|
|
|
6
14
|
ComponentRegistry.register('scroll-area',
|
|
7
|
-
({ schema, className, ...props }: { schema: ScrollAreaSchema; className?: string; [key: string]: any }) =>
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
15
|
+
({ schema, className, ...props }: { schema: ScrollAreaSchema; className?: string; [key: string]: any }) => {
|
|
16
|
+
// Extract designer-related props
|
|
17
|
+
const {
|
|
18
|
+
'data-obj-id': dataObjId,
|
|
19
|
+
'data-obj-type': dataObjType,
|
|
20
|
+
style,
|
|
21
|
+
...scrollAreaProps
|
|
22
|
+
} = props;
|
|
23
|
+
|
|
24
|
+
const orientation = schema.orientation || 'vertical';
|
|
25
|
+
|
|
26
|
+
return (
|
|
27
|
+
<ScrollArea
|
|
28
|
+
className={className}
|
|
29
|
+
style={{ height: schema.height, width: schema.width, ...style }}
|
|
30
|
+
{...scrollAreaProps}
|
|
31
|
+
data-obj-id={dataObjId}
|
|
32
|
+
data-obj-type={dataObjType}
|
|
33
|
+
>
|
|
34
|
+
{renderChildren(schema.children)}
|
|
35
|
+
{(orientation === 'horizontal' || orientation === 'both') && <ScrollBar orientation="horizontal" />}
|
|
36
|
+
{(orientation === 'vertical' || orientation === 'both') && <ScrollBar orientation="vertical" />}
|
|
11
37
|
</ScrollArea>
|
|
12
|
-
),
|
|
38
|
+
)},
|
|
13
39
|
{
|
|
40
|
+
namespace: 'ui',
|
|
14
41
|
label: 'Scroll Area',
|
|
15
42
|
inputs: [
|
|
16
43
|
{ name: 'height', type: 'string', label: 'Height (e.g. 200px)' },
|
|
17
44
|
{ name: 'width', type: 'string', label: 'Width' },
|
|
18
45
|
{ name: 'orientation', type: 'enum', enum: ['vertical', 'horizontal', 'both'], defaultValue: 'vertical', label: 'Orientation' },
|
|
19
|
-
{ name: 'content', type: 'slot', label: 'Content' },
|
|
20
46
|
{ name: 'className', type: 'string', label: 'CSS Class' }
|
|
21
47
|
],
|
|
22
48
|
defaultProps: {
|
|
23
49
|
height: '200px',
|
|
24
50
|
width: '100%',
|
|
25
51
|
orientation: 'vertical',
|
|
26
|
-
|
|
52
|
+
children: [
|
|
27
53
|
{ type: 'div', className: 'p-4', body: [{ type: 'text', content: 'Scrollable content goes here. Add more content to see scrolling behavior.' }] }
|
|
28
54
|
],
|
|
29
55
|
className: 'rounded-md border'
|
|
@@ -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
|
// table.tsx implementation
|
|
2
10
|
import { ComponentRegistry } from '@object-ui/core';
|
|
3
11
|
import type { TableSchema } from '@object-ui/types';
|
|
@@ -22,7 +30,7 @@ ComponentRegistry.register('table',
|
|
|
22
30
|
<TableRow>
|
|
23
31
|
{schema.columns?.map((col: any, index: number) => (
|
|
24
32
|
<TableHead key={index} className={col.className} style={{ width: col.width }}>
|
|
25
|
-
{col.header}
|
|
33
|
+
{col.header || col.label}
|
|
26
34
|
</TableHead>
|
|
27
35
|
))}
|
|
28
36
|
</TableRow>
|
|
@@ -32,7 +40,7 @@ ComponentRegistry.register('table',
|
|
|
32
40
|
<TableRow key={rowIndex}>
|
|
33
41
|
{schema.columns?.map((col: any, colIndex: number) => (
|
|
34
42
|
<TableCell key={colIndex} className={col.cellClassName}>
|
|
35
|
-
{row[col.accessorKey]}
|
|
43
|
+
{row[col.accessorKey || col.name]}
|
|
36
44
|
</TableCell>
|
|
37
45
|
))}
|
|
38
46
|
</TableRow>
|
|
@@ -51,6 +59,7 @@ ComponentRegistry.register('table',
|
|
|
51
59
|
</Table>
|
|
52
60
|
),
|
|
53
61
|
{
|
|
62
|
+
namespace: 'ui',
|
|
54
63
|
label: 'Table',
|
|
55
64
|
inputs: [
|
|
56
65
|
{ name: 'caption', type: 'string', label: 'Caption' },
|
|
@@ -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 { AlertSchema } from '@object-ui/types';
|
|
3
11
|
import { renderChildren } from '../../lib/utils';
|
|
@@ -15,6 +23,7 @@ ComponentRegistry.register('alert',
|
|
|
15
23
|
</Alert>
|
|
16
24
|
),
|
|
17
25
|
{
|
|
26
|
+
namespace: 'ui',
|
|
18
27
|
label: 'Alert',
|
|
19
28
|
inputs: [
|
|
20
29
|
{ name: 'title', type: 'string', label: 'Title', required: true },
|
|
@@ -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 { AvatarSchema } from '@object-ui/types';
|
|
3
11
|
import {
|
|
@@ -14,6 +22,7 @@ ComponentRegistry.register('avatar',
|
|
|
14
22
|
</Avatar>
|
|
15
23
|
),
|
|
16
24
|
{
|
|
25
|
+
namespace: 'ui',
|
|
17
26
|
label: 'Avatar',
|
|
18
27
|
inputs: [
|
|
19
28
|
{ name: 'src', type: 'string', label: 'Image URL' },
|
|
@@ -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 { BadgeSchema } from '@object-ui/types';
|
|
3
11
|
import { Badge } from '../../ui';
|
|
@@ -26,6 +34,7 @@ ComponentRegistry.register('badge',
|
|
|
26
34
|
);
|
|
27
35
|
},
|
|
28
36
|
{
|
|
37
|
+
namespace: 'ui',
|
|
29
38
|
label: 'Badge',
|
|
30
39
|
inputs: [
|
|
31
40
|
{ name: 'label', type: 'string', label: 'Label' },
|
|
@@ -0,0 +1,60 @@
|
|
|
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 { BreadcrumbSchema } from '@object-ui/types';
|
|
11
|
+
import { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator } from '../../ui/breadcrumb';
|
|
12
|
+
import { renderChildren } from '../../lib/utils';
|
|
13
|
+
|
|
14
|
+
ComponentRegistry.register('breadcrumb',
|
|
15
|
+
({ schema, ...props }: { schema: BreadcrumbSchema; [key: string]: any }) => {
|
|
16
|
+
const {
|
|
17
|
+
'data-obj-id': dataObjId,
|
|
18
|
+
'data-obj-type': dataObjType,
|
|
19
|
+
style,
|
|
20
|
+
...breadcrumbProps
|
|
21
|
+
} = props;
|
|
22
|
+
|
|
23
|
+
return (
|
|
24
|
+
<Breadcrumb
|
|
25
|
+
className={schema.className}
|
|
26
|
+
{...breadcrumbProps}
|
|
27
|
+
{...{ 'data-obj-id': dataObjId, 'data-obj-type': dataObjType, style }}
|
|
28
|
+
>
|
|
29
|
+
<BreadcrumbList>
|
|
30
|
+
{schema.items?.map((item, idx) => (
|
|
31
|
+
<div key={idx} className="flex items-center">
|
|
32
|
+
<BreadcrumbItem>
|
|
33
|
+
{idx === (schema.items?.length || 0) - 1 ? (
|
|
34
|
+
<BreadcrumbPage>{item.label}</BreadcrumbPage>
|
|
35
|
+
) : (
|
|
36
|
+
<BreadcrumbLink href={item.href}>{item.label}</BreadcrumbLink>
|
|
37
|
+
)}
|
|
38
|
+
</BreadcrumbItem>
|
|
39
|
+
{idx < (schema.items?.length || 0) - 1 && <BreadcrumbSeparator />}
|
|
40
|
+
</div>
|
|
41
|
+
))}
|
|
42
|
+
</BreadcrumbList>
|
|
43
|
+
</Breadcrumb>
|
|
44
|
+
);
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
namespace: 'ui',
|
|
48
|
+
label: 'Breadcrumb',
|
|
49
|
+
inputs: [
|
|
50
|
+
{ name: 'className', type: 'string', label: 'CSS Class' }
|
|
51
|
+
],
|
|
52
|
+
defaultProps: {
|
|
53
|
+
items: [
|
|
54
|
+
{ label: 'Home', href: '/' },
|
|
55
|
+
{ label: 'Products', href: '/products' },
|
|
56
|
+
{ label: 'Product' }
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
);
|
|
@@ -1,6 +1,18 @@
|
|
|
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 './badge';
|
|
2
10
|
import './avatar';
|
|
3
11
|
import './alert';
|
|
4
12
|
import './list';
|
|
5
13
|
import './tree-view';
|
|
6
14
|
import './statistic';
|
|
15
|
+
import './breadcrumb';
|
|
16
|
+
import './kbd';
|
|
17
|
+
import './table';
|
|
18
|
+
|