@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,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 { TabsSchema } from '@object-ui/types';
|
|
3
11
|
import { renderChildren } from '../../lib/utils';
|
|
@@ -7,39 +15,65 @@ import {
|
|
|
7
15
|
TabsTrigger,
|
|
8
16
|
TabsContent
|
|
9
17
|
} from '../../ui';
|
|
18
|
+
import { cn } from '../../lib/utils';
|
|
19
|
+
import React from 'react';
|
|
20
|
+
|
|
21
|
+
const TabsRenderer = ({ schema, className, onChange, value, ...props }: { schema: TabsSchema; className?: string; onChange?: (val: string) => void; value?: string; [key: string]: any }) => {
|
|
22
|
+
// Extract designer-related props
|
|
23
|
+
const {
|
|
24
|
+
'data-obj-id': dataObjId,
|
|
25
|
+
'data-obj-type': dataObjType,
|
|
26
|
+
style,
|
|
27
|
+
...tabsProps
|
|
28
|
+
} = props;
|
|
10
29
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
'data-obj-type': dataObjType,
|
|
17
|
-
style,
|
|
18
|
-
...tabsProps
|
|
19
|
-
} = props;
|
|
30
|
+
const handleValueChange = (val: string) => {
|
|
31
|
+
if (onChange) {
|
|
32
|
+
onChange(val);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
20
35
|
|
|
21
|
-
|
|
36
|
+
const isVertical = schema.orientation === 'vertical';
|
|
37
|
+
|
|
38
|
+
return (
|
|
22
39
|
<Tabs
|
|
23
|
-
defaultValue={schema.defaultValue}
|
|
24
|
-
|
|
40
|
+
defaultValue={value === undefined ? schema.defaultValue : undefined}
|
|
41
|
+
value={value ?? schema.value}
|
|
42
|
+
onValueChange={handleValueChange}
|
|
43
|
+
orientation={schema.orientation || 'horizontal'}
|
|
44
|
+
className={cn(className, isVertical && "flex gap-2")}
|
|
25
45
|
{...tabsProps}
|
|
26
46
|
// Apply designer props
|
|
27
47
|
{...{ 'data-obj-id': dataObjId, 'data-obj-type': dataObjType, style }}
|
|
28
48
|
>
|
|
29
|
-
<TabsList>
|
|
49
|
+
<TabsList className={cn(isVertical && "flex-col h-auto items-stretch bg-muted/50 p-1")}>
|
|
30
50
|
{schema.items?.map((item) => (
|
|
31
|
-
<TabsTrigger
|
|
51
|
+
<TabsTrigger
|
|
52
|
+
key={item.value}
|
|
53
|
+
value={item.value}
|
|
54
|
+
disabled={item.disabled}
|
|
55
|
+
className={cn(isVertical && "justify-start")}
|
|
56
|
+
>
|
|
57
|
+
{item.label}
|
|
58
|
+
</TabsTrigger>
|
|
32
59
|
))}
|
|
33
60
|
</TabsList>
|
|
34
61
|
{schema.items?.map((item) => (
|
|
35
|
-
<TabsContent
|
|
36
|
-
{
|
|
62
|
+
<TabsContent
|
|
63
|
+
key={item.value}
|
|
64
|
+
value={item.value}
|
|
65
|
+
className={cn("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2", isVertical && "mt-0 flex-1")}
|
|
66
|
+
>
|
|
67
|
+
{renderChildren(item.content || (item as any).body)}
|
|
37
68
|
</TabsContent>
|
|
38
69
|
))}
|
|
39
70
|
</Tabs>
|
|
40
71
|
);
|
|
41
|
-
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
ComponentRegistry.register('tabs', TabsRenderer,
|
|
42
75
|
{
|
|
76
|
+
namespace: 'ui',
|
|
43
77
|
label: 'Tabs',
|
|
44
78
|
inputs: [
|
|
45
79
|
{ name: 'defaultValue', type: 'string', label: 'Default Value', 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 React from 'react';
|
|
2
10
|
import { ComponentRegistry } from '@object-ui/core';
|
|
3
11
|
import type { HeaderBarSchema } from '@object-ui/types';
|
|
@@ -14,7 +22,7 @@ import {
|
|
|
14
22
|
|
|
15
23
|
ComponentRegistry.register('header-bar',
|
|
16
24
|
({ schema }: { schema: HeaderBarSchema }) => (
|
|
17
|
-
<header className="flex h-16 shrink-0 items-center gap-2 border-b px-4">
|
|
25
|
+
<header className="flex h-14 sm:h-16 shrink-0 items-center gap-2 border-b px-3 sm:px-4">
|
|
18
26
|
<SidebarTrigger />
|
|
19
27
|
<Separator orientation="vertical" className="mr-2 h-4" />
|
|
20
28
|
<Breadcrumb>
|
|
@@ -36,6 +44,7 @@ ComponentRegistry.register('header-bar',
|
|
|
36
44
|
</header>
|
|
37
45
|
),
|
|
38
46
|
{
|
|
47
|
+
namespace: 'ui',
|
|
39
48
|
label: 'Header Bar',
|
|
40
49
|
inputs: [
|
|
41
50
|
{ name: 'crumbs', type: 'array', label: 'Breadcrumbs' }
|
|
@@ -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 { SidebarSchema } from '@object-ui/types';
|
|
3
11
|
import { renderChildren } from '../../lib/utils';
|
|
@@ -22,6 +30,7 @@ ComponentRegistry.register('sidebar-provider',
|
|
|
22
30
|
<SidebarProvider {...props}>{renderChildren(schema.body)}</SidebarProvider>
|
|
23
31
|
),
|
|
24
32
|
{
|
|
33
|
+
namespace: 'ui',
|
|
25
34
|
label: 'Sidebar Provider',
|
|
26
35
|
inputs: [
|
|
27
36
|
{ name: 'defaultOpen', type: 'boolean', label: 'Default Open', defaultValue: true }
|
|
@@ -41,6 +50,7 @@ ComponentRegistry.register('sidebar',
|
|
|
41
50
|
<Sidebar {...props}>{renderChildren(schema.body)}</Sidebar>
|
|
42
51
|
),
|
|
43
52
|
{
|
|
53
|
+
namespace: 'ui',
|
|
44
54
|
label: 'Sidebar',
|
|
45
55
|
inputs: [
|
|
46
56
|
{ name: 'collapsible', type: 'enum', enum: ['offcanvas', 'icon', 'none'], defaultValue: 'icon', label: 'Collapsible' },
|
|
@@ -94,6 +104,7 @@ ComponentRegistry.register('sidebar-group',
|
|
|
94
104
|
</SidebarGroup>
|
|
95
105
|
),
|
|
96
106
|
{
|
|
107
|
+
namespace: 'ui',
|
|
97
108
|
label: 'Sidebar Group',
|
|
98
109
|
inputs: [
|
|
99
110
|
{ name: 'label', type: 'string', label: 'Label' }
|
|
@@ -139,6 +150,7 @@ ComponentRegistry.register('sidebar-menu-button',
|
|
|
139
150
|
</SidebarMenuButton>
|
|
140
151
|
),
|
|
141
152
|
{
|
|
153
|
+
namespace: 'ui',
|
|
142
154
|
label: 'Sidebar Menu Button',
|
|
143
155
|
inputs: [
|
|
144
156
|
{ name: 'active', type: 'boolean', label: 'Active', defaultValue: false },
|
|
@@ -183,6 +195,7 @@ ComponentRegistry.register('sidebar-trigger',
|
|
|
183
195
|
<SidebarTrigger className={className} {...props} />
|
|
184
196
|
),
|
|
185
197
|
{
|
|
198
|
+
namespace: 'ui',
|
|
186
199
|
label: 'Sidebar Trigger',
|
|
187
200
|
inputs: [{ name: 'className', type: 'string', label: 'CSS Class' }]
|
|
188
201
|
}
|
|
@@ -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 { AlertDialogSchema } from '@object-ui/types';
|
|
3
11
|
import {
|
|
@@ -33,6 +41,7 @@ ComponentRegistry.register('alert-dialog',
|
|
|
33
41
|
</AlertDialog>
|
|
34
42
|
),
|
|
35
43
|
{
|
|
44
|
+
namespace: 'ui',
|
|
36
45
|
label: 'Alert Dialog',
|
|
37
46
|
inputs: [
|
|
38
47
|
{ name: 'title', type: 'string', label: 'Title' },
|
|
@@ -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 { ContextMenuSchema } from '@object-ui/types';
|
|
3
11
|
import {
|
|
@@ -45,7 +53,7 @@ const renderContextMenuItems = (items: any[]) => {
|
|
|
45
53
|
ComponentRegistry.register('context-menu',
|
|
46
54
|
({ schema, className, ...props }: { schema: ContextMenuSchema; className?: string; [key: string]: any }) => {
|
|
47
55
|
// Determine classes
|
|
48
|
-
const triggerClass = schema.triggerClassName || className || (schema.className as string) || "h-[150px] w-[300px] border border-dashed text-sm flex items-center justify-center";
|
|
56
|
+
const triggerClass = schema.triggerClassName || className || (schema.className as string) || "h-[120px] w-full sm:h-[150px] sm:w-[300px] border border-dashed text-sm flex items-center justify-center";
|
|
49
57
|
const contentClass = schema.contentClassName;
|
|
50
58
|
|
|
51
59
|
return (
|
|
@@ -62,6 +70,7 @@ ComponentRegistry.register('context-menu',
|
|
|
62
70
|
</ContextMenu>
|
|
63
71
|
)},
|
|
64
72
|
{
|
|
73
|
+
namespace: 'ui',
|
|
65
74
|
label: 'Context Menu',
|
|
66
75
|
inputs: [
|
|
67
76
|
{
|
|
@@ -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 { DialogSchema } from '@object-ui/types';
|
|
3
11
|
import {
|
|
@@ -32,6 +40,7 @@ ComponentRegistry.register('dialog',
|
|
|
32
40
|
</Dialog>
|
|
33
41
|
),
|
|
34
42
|
{
|
|
43
|
+
namespace: 'ui',
|
|
35
44
|
label: 'Dialog',
|
|
36
45
|
inputs: [
|
|
37
46
|
{ name: 'title', type: 'string', label: 'Title' },
|
|
@@ -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 { DrawerSchema } from '@object-ui/types';
|
|
3
11
|
import {
|
|
@@ -34,6 +42,7 @@ ComponentRegistry.register('drawer',
|
|
|
34
42
|
</Drawer>
|
|
35
43
|
),
|
|
36
44
|
{
|
|
45
|
+
namespace: 'ui',
|
|
37
46
|
label: 'Drawer',
|
|
38
47
|
inputs: [
|
|
39
48
|
{ name: 'title', type: 'string', label: 'Title' },
|
|
@@ -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 { DropdownMenuSchema } from '@object-ui/types';
|
|
3
11
|
import {
|
|
@@ -57,6 +65,7 @@ ComponentRegistry.register('dropdown-menu',
|
|
|
57
65
|
</DropdownMenu>
|
|
58
66
|
),
|
|
59
67
|
{
|
|
68
|
+
namespace: 'ui',
|
|
60
69
|
label: 'Dropdown Menu',
|
|
61
70
|
inputs: [
|
|
62
71
|
{ name: 'label', type: 'string', label: 'Menu Label' },
|
|
@@ -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 { HoverCardSchema } from '@object-ui/types';
|
|
3
11
|
import {
|
|
@@ -19,6 +27,7 @@ ComponentRegistry.register('hover-card',
|
|
|
19
27
|
</HoverCard>
|
|
20
28
|
),
|
|
21
29
|
{
|
|
30
|
+
namespace: 'ui',
|
|
22
31
|
label: 'Hover Card',
|
|
23
32
|
inputs: [
|
|
24
33
|
{ name: 'openDelay', type: 'number', label: 'Open Delay' },
|
|
@@ -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 './dialog';
|
|
2
10
|
import './sheet';
|
|
3
11
|
import './popover';
|
|
@@ -7,3 +15,4 @@ import './drawer';
|
|
|
7
15
|
import './hover-card';
|
|
8
16
|
import './dropdown-menu';
|
|
9
17
|
import './context-menu';
|
|
18
|
+
import './menubar';
|
|
@@ -0,0 +1,76 @@
|
|
|
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 { MenubarSchema } from '@object-ui/types';
|
|
11
|
+
import { Menubar, MenubarMenu, MenubarTrigger, MenubarContent, MenubarItem, MenubarSeparator, MenubarSub, MenubarSubTrigger, MenubarSubContent } from '../../ui/menubar';
|
|
12
|
+
|
|
13
|
+
ComponentRegistry.register('menubar',
|
|
14
|
+
({ schema, ...props }: { schema: MenubarSchema; [key: string]: any }) => {
|
|
15
|
+
const {
|
|
16
|
+
'data-obj-id': dataObjId,
|
|
17
|
+
'data-obj-type': dataObjType,
|
|
18
|
+
style,
|
|
19
|
+
...menubarProps
|
|
20
|
+
} = props;
|
|
21
|
+
|
|
22
|
+
return (
|
|
23
|
+
<Menubar
|
|
24
|
+
className={schema.className}
|
|
25
|
+
{...menubarProps}
|
|
26
|
+
{...{ 'data-obj-id': dataObjId, 'data-obj-type': dataObjType, style }}
|
|
27
|
+
>
|
|
28
|
+
{schema.menus?.map((menu, idx) => (
|
|
29
|
+
<MenubarMenu key={idx}>
|
|
30
|
+
<MenubarTrigger>{menu.label}</MenubarTrigger>
|
|
31
|
+
<MenubarContent>
|
|
32
|
+
{menu.items?.map((item, itemIdx) => (
|
|
33
|
+
item.separator ? (
|
|
34
|
+
<MenubarSeparator key={itemIdx} />
|
|
35
|
+
) : item.children ? (
|
|
36
|
+
<MenubarSub key={itemIdx}>
|
|
37
|
+
<MenubarSubTrigger>{item.label}</MenubarSubTrigger>
|
|
38
|
+
<MenubarSubContent>
|
|
39
|
+
{item.children.map((child, childIdx) => (
|
|
40
|
+
<MenubarItem key={childIdx}>{child.label}</MenubarItem>
|
|
41
|
+
))}
|
|
42
|
+
</MenubarSubContent>
|
|
43
|
+
</MenubarSub>
|
|
44
|
+
) : (
|
|
45
|
+
<MenubarItem key={itemIdx} disabled={item.disabled}>
|
|
46
|
+
{item.label}
|
|
47
|
+
</MenubarItem>
|
|
48
|
+
)
|
|
49
|
+
))}
|
|
50
|
+
</MenubarContent>
|
|
51
|
+
</MenubarMenu>
|
|
52
|
+
))}
|
|
53
|
+
</Menubar>
|
|
54
|
+
);
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
namespace: 'ui',
|
|
58
|
+
label: 'Menubar',
|
|
59
|
+
inputs: [
|
|
60
|
+
{ name: 'className', type: 'string', label: 'CSS Class' }
|
|
61
|
+
],
|
|
62
|
+
defaultProps: {
|
|
63
|
+
menus: [
|
|
64
|
+
{
|
|
65
|
+
label: 'File',
|
|
66
|
+
items: [
|
|
67
|
+
{ label: 'New' },
|
|
68
|
+
{ label: 'Open' },
|
|
69
|
+
{ separator: true },
|
|
70
|
+
{ label: 'Exit' }
|
|
71
|
+
]
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
);
|
|
@@ -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 { PopoverSchema } from '@object-ui/types';
|
|
3
11
|
import {
|
|
@@ -19,6 +27,7 @@ ComponentRegistry.register('popover',
|
|
|
19
27
|
</Popover>
|
|
20
28
|
),
|
|
21
29
|
{
|
|
30
|
+
namespace: 'ui',
|
|
22
31
|
label: 'Popover',
|
|
23
32
|
inputs: [
|
|
24
33
|
{ name: 'modal', type: 'boolean', label: 'Modal' },
|
|
@@ -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 { SheetSchema } from '@object-ui/types';
|
|
3
11
|
import {
|
|
@@ -32,6 +40,7 @@ ComponentRegistry.register('sheet',
|
|
|
32
40
|
</Sheet>
|
|
33
41
|
),
|
|
34
42
|
{
|
|
43
|
+
namespace: 'ui',
|
|
35
44
|
label: 'Sheet',
|
|
36
45
|
inputs: [
|
|
37
46
|
{ name: 'title', type: 'string', label: 'Title' },
|
|
@@ -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 { TooltipSchema } from '@object-ui/types';
|
|
3
11
|
import {
|
|
@@ -26,6 +34,7 @@ ComponentRegistry.register('tooltip',
|
|
|
26
34
|
</TooltipProvider>
|
|
27
35
|
),
|
|
28
36
|
{
|
|
37
|
+
namespace: 'ui',
|
|
29
38
|
label: 'Tooltip',
|
|
30
39
|
inputs: [
|
|
31
40
|
{ name: 'delayDuration', type: 'number', label: 'Delay Duration', defaultValue: 700 },
|
|
@@ -0,0 +1,107 @@
|
|
|
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 React from 'react';
|
|
10
|
+
import { ComponentRegistry } from '@object-ui/core';
|
|
11
|
+
import { cn } from '../lib/utils';
|
|
12
|
+
import { Box, FileQuestion } from 'lucide-react';
|
|
13
|
+
|
|
14
|
+
export const PlaceholderRenderer = ({ schema, className }: any) => {
|
|
15
|
+
const type = schema.type;
|
|
16
|
+
const isView = type.startsWith('view:');
|
|
17
|
+
const isWidget = type.startsWith('widget:');
|
|
18
|
+
const isField = type.startsWith('field:');
|
|
19
|
+
|
|
20
|
+
return (
|
|
21
|
+
<div className={cn(
|
|
22
|
+
"flex flex-col items-center justify-center p-6 border-2 border-dashed rounded-lg bg-muted/30 transition-colors hover:bg-muted/50",
|
|
23
|
+
isView && "border-blue-300 bg-blue-50/50 min-h-[200px]",
|
|
24
|
+
isWidget && "border-purple-300 bg-purple-50/50 min-h-[150px]",
|
|
25
|
+
isField && "border-yellow-300 bg-yellow-50/50 p-2 min-h-[40px] flex-row gap-2 justify-start",
|
|
26
|
+
className
|
|
27
|
+
)}>
|
|
28
|
+
<div className={cn("flex items-center gap-2 text-muted-foreground", isField && "text-sm")}>
|
|
29
|
+
{isField ? <Box className="h-4 w-4" /> : <FileQuestion className="h-8 w-8 mb-2 opacity-50" />}
|
|
30
|
+
<div className="flex flex-col items-center text-center">
|
|
31
|
+
<span className="font-mono font-medium text-foreground">{type}</span>
|
|
32
|
+
{!isField && <span className="text-xs">Component Placeholder</span>}
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
{schema.props && !isField && (
|
|
36
|
+
<div className="mt-4 w-full text-xs text-muted-foreground bg-background/50 p-2 rounded overflow-hidden">
|
|
37
|
+
<div className="opacity-70">Properties:</div>
|
|
38
|
+
<pre className="mt-1 truncate">{JSON.stringify(schema.props, null, 0)}</pre>
|
|
39
|
+
</div>
|
|
40
|
+
)}
|
|
41
|
+
</div>
|
|
42
|
+
);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
// List of all protocol-defined components that need placeholders
|
|
46
|
+
const PROTOCOL_COMPONENTS = [
|
|
47
|
+
// 1. Views (List)
|
|
48
|
+
'view:grid', 'view:kanban', 'view:map', 'view:calendar', 'view:gantt',
|
|
49
|
+
'view:timeline', 'view:gallery',
|
|
50
|
+
|
|
51
|
+
// 2. Views (Form)
|
|
52
|
+
'view:simple', 'view:wizard', 'view:tabbed', 'view:drawer', 'view:modal', 'view:split',
|
|
53
|
+
|
|
54
|
+
// 3. Fields (Textual)
|
|
55
|
+
'field:text', 'field:textarea', 'field:password', 'field:email', 'field:url', 'field:phone',
|
|
56
|
+
|
|
57
|
+
// 4. Fields (Rich)
|
|
58
|
+
'field:markdown', 'field:html', 'field:code',
|
|
59
|
+
|
|
60
|
+
// 5. Fields (Numeric)
|
|
61
|
+
'field:number', 'field:currency', 'field:percent', 'field:slider',
|
|
62
|
+
|
|
63
|
+
// 6. Fields (Selection)
|
|
64
|
+
'field:boolean', 'field:checkboxes', 'field:select', 'field:multiselect', 'field:radio',
|
|
65
|
+
|
|
66
|
+
// 7. Fields (Date/Time)
|
|
67
|
+
'field:date', 'field:datetime', 'field:time', 'field:duration',
|
|
68
|
+
|
|
69
|
+
// 8. Fields (Relational)
|
|
70
|
+
'field:lookup', 'field:master_detail', 'field:tree',
|
|
71
|
+
|
|
72
|
+
// 9. Fields (Media)
|
|
73
|
+
'field:image', 'field:file', 'field:video', 'field:audio', 'field:avatar',
|
|
74
|
+
|
|
75
|
+
// 10. Fields (Visual)
|
|
76
|
+
'field:color', 'field:rating', 'field:signature', 'field:qrcode', 'field:progress',
|
|
77
|
+
|
|
78
|
+
// 11. Fields (Structure)
|
|
79
|
+
'field:json', 'field:address', 'field:location',
|
|
80
|
+
|
|
81
|
+
// 12. Page Components
|
|
82
|
+
'page:header', 'page-header', // Added headers
|
|
83
|
+
'page:footer', 'page:tabs', 'page:accordion', 'page:card', 'page:sidebar',
|
|
84
|
+
'record:details', 'record:highlights', 'record:related_list', 'record:activity',
|
|
85
|
+
'record:chatter', 'record:path',
|
|
86
|
+
'app:launcher', 'nav:menu', 'nav:breadcrumb',
|
|
87
|
+
'global:search', 'global:notifications', 'user:profile',
|
|
88
|
+
|
|
89
|
+
// 13. Dashboard Widgets
|
|
90
|
+
'widget:metric', 'widget:bar', 'widget:line', 'widget:pie', 'widget:funnel',
|
|
91
|
+
'widget:radar', 'widget:scatter', 'widget:heatmap', 'widget:pivot', 'widget:table', 'widget:text', 'widget:image',
|
|
92
|
+
|
|
93
|
+
// 14. Smart Actions
|
|
94
|
+
'action:button', 'action:group', 'action:menu', 'action:icon',
|
|
95
|
+
|
|
96
|
+
// 15. AI
|
|
97
|
+
'ai:chat_window', 'ai:input', 'ai:suggestion', 'ai:feedback'
|
|
98
|
+
];
|
|
99
|
+
|
|
100
|
+
export function registerPlaceholders() {
|
|
101
|
+
PROTOCOL_COMPONENTS.forEach(type => {
|
|
102
|
+
// Only register if not already registered (to avoid overwriting real implementations)
|
|
103
|
+
if (!ComponentRegistry.get(type)) {
|
|
104
|
+
ComponentRegistry.register(type, PlaceholderRenderer);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|