@object-ui/components 0.3.0 → 0.3.1
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/CHANGELOG.md +10 -0
- package/ISSUES_FOUND.md +128 -0
- package/README.md +19 -1
- package/README_SHADCN_SYNC.md +281 -0
- package/TESTING.md +335 -0
- package/dist/index.css +1 -1
- package/dist/index.js +30981 -30027
- package/dist/index.umd.cjs +30 -39
- package/dist/src/hooks/use-mobile.d.ts +7 -0
- package/dist/src/index.d.ts +4 -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/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 +7 -0
- package/dist/src/ui/alert-dialog.d.ts +7 -0
- package/dist/src/ui/alert.d.ts +7 -0
- package/dist/src/ui/aspect-ratio.d.ts +7 -0
- package/dist/src/ui/avatar.d.ts +7 -0
- package/dist/src/ui/badge.d.ts +7 -0
- package/dist/src/ui/breadcrumb.d.ts +7 -0
- package/dist/src/ui/button.d.ts +10 -5
- package/dist/src/ui/calendar.d.ts +14 -7
- package/dist/src/ui/card.d.ts +7 -0
- package/dist/src/ui/carousel.d.ts +7 -0
- package/dist/src/ui/checkbox.d.ts +7 -0
- package/dist/src/ui/collapsible.d.ts +7 -0
- package/dist/src/ui/combobox.d.ts +22 -0
- package/dist/src/ui/command.d.ts +7 -0
- package/dist/src/ui/context-menu.d.ts +7 -0
- package/dist/src/ui/date-picker.d.ts +15 -0
- package/dist/src/ui/dialog.d.ts +7 -0
- package/dist/src/ui/drawer.d.ts +7 -0
- package/dist/src/ui/dropdown-menu.d.ts +7 -0
- package/dist/src/ui/filter-builder.d.ts +7 -0
- package/dist/src/ui/form.d.ts +7 -0
- package/dist/src/ui/hover-card.d.ts +7 -0
- package/dist/src/ui/index.d.ts +10 -5
- package/dist/src/ui/input-otp.d.ts +7 -0
- package/dist/src/ui/input.d.ts +7 -0
- package/dist/src/ui/item.d.ts +7 -0
- package/dist/src/ui/kbd.d.ts +7 -0
- package/dist/src/ui/label.d.ts +7 -0
- package/dist/src/ui/menubar.d.ts +7 -0
- package/dist/src/ui/navigation-menu.d.ts +7 -0
- package/dist/src/ui/pagination.d.ts +7 -0
- package/dist/src/ui/popover.d.ts +7 -0
- package/dist/src/ui/progress.d.ts +7 -0
- package/dist/src/ui/radio-group.d.ts +7 -0
- package/dist/src/ui/resizable.d.ts +7 -0
- package/dist/src/ui/scroll-area.d.ts +7 -0
- package/dist/src/ui/select.d.ts +9 -2
- package/dist/src/ui/separator.d.ts +7 -0
- package/dist/src/ui/sheet.d.ts +7 -0
- package/dist/src/ui/sidebar.d.ts +14 -9
- package/dist/src/ui/skeleton.d.ts +7 -0
- package/dist/src/ui/slider.d.ts +7 -0
- package/dist/src/ui/spinner.d.ts +7 -0
- package/dist/src/ui/switch.d.ts +7 -0
- package/dist/src/ui/table.d.ts +15 -8
- package/dist/src/ui/tabs.d.ts +7 -0
- package/dist/src/ui/textarea.d.ts +7 -0
- package/dist/src/ui/toggle-group.d.ts +8 -3
- package/dist/src/ui/toggle.d.ts +7 -0
- package/dist/src/ui/tooltip.d.ts +7 -0
- package/metadata/ObjectGrid.component.yml +72 -0
- package/package.json +23 -11
- package/postcss.config.js +9 -1
- package/shadcn-components.json +310 -0
- package/src/__tests__/README.md +124 -0
- package/src/__tests__/basic-renderers.test.tsx +255 -0
- package/src/__tests__/complex-disclosure-renderers.test.tsx +301 -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/hooks/use-mobile.tsx +8 -0
- package/src/index.css +86 -54
- package/src/index.test.ts +8 -0
- package/src/index.ts +21 -1
- package/src/lib/utils.tsx +8 -0
- package/src/new-components.test.ts +8 -9
- package/src/renderers/basic/button-group.tsx +78 -0
- package/src/renderers/basic/div.tsx +9 -1
- package/src/renderers/basic/html.tsx +8 -0
- package/src/renderers/basic/icon.tsx +66 -3
- package/src/renderers/basic/image.tsx +12 -1
- package/src/renderers/basic/index.ts +11 -0
- package/src/renderers/basic/navigation-menu.tsx +80 -0
- package/src/renderers/basic/pagination.tsx +82 -0
- package/src/renderers/basic/separator.tsx +9 -1
- package/src/renderers/basic/span.tsx +9 -1
- package/src/renderers/basic/text.tsx +8 -0
- package/src/renderers/complex/__tests__/data-table.test.ts +8 -0
- package/src/renderers/complex/carousel.tsx +11 -3
- package/src/renderers/complex/data-table.tsx +19 -4
- package/src/renderers/complex/filter-builder.tsx +8 -0
- package/src/renderers/complex/index.ts +9 -3
- package/src/renderers/complex/resizable.tsx +8 -0
- package/src/renderers/complex/scroll-area.tsx +8 -0
- package/src/renderers/complex/table.tsx +10 -2
- package/src/renderers/data-display/alert.tsx +8 -0
- package/src/renderers/data-display/avatar.tsx +8 -0
- package/src/renderers/data-display/badge.tsx +8 -0
- package/src/renderers/data-display/breadcrumb.tsx +59 -0
- package/src/renderers/data-display/index.ts +12 -0
- package/src/renderers/data-display/kbd.tsx +49 -0
- package/src/renderers/data-display/list.tsx +8 -0
- package/src/renderers/data-display/statistic.tsx +24 -43
- package/src/renderers/data-display/table.tsx +68 -0
- package/src/renderers/data-display/tree-view.tsx +26 -37
- package/src/renderers/disclosure/accordion.tsx +8 -0
- package/src/renderers/disclosure/collapsible.tsx +8 -0
- package/src/renderers/disclosure/index.ts +9 -0
- package/src/renderers/disclosure/toggle-group.tsx +77 -0
- package/src/renderers/feedback/empty.tsx +48 -0
- package/src/renderers/feedback/index.ts +12 -0
- package/src/renderers/feedback/loading.tsx +8 -0
- package/src/renderers/feedback/progress.tsx +8 -0
- package/src/renderers/feedback/skeleton.tsx +8 -0
- package/src/renderers/feedback/sonner.tsx +55 -0
- package/src/renderers/feedback/spinner.tsx +54 -0
- package/src/renderers/feedback/toast.tsx +58 -0
- package/src/renderers/feedback/toaster.tsx +13 -17
- package/src/renderers/form/button.tsx +8 -0
- package/src/renderers/form/calendar.tsx +8 -0
- package/src/renderers/form/checkbox.tsx +8 -0
- package/src/renderers/form/combobox.tsx +47 -0
- package/src/renderers/form/command.tsx +57 -0
- package/src/renderers/form/date-picker.tsx +10 -2
- package/src/renderers/form/file-upload.tsx +10 -2
- package/src/renderers/form/form.tsx +12 -3
- package/src/renderers/form/index.ts +10 -0
- package/src/renderers/form/input-otp.tsx +34 -15
- package/src/renderers/form/input.tsx +89 -50
- package/src/renderers/form/label.tsx +8 -0
- package/src/renderers/form/radio-group.tsx +8 -0
- package/src/renderers/form/select.tsx +8 -0
- package/src/renderers/form/slider.tsx +16 -1
- package/src/renderers/form/switch.tsx +8 -0
- package/src/renderers/form/textarea.tsx +8 -0
- package/src/renderers/form/toggle.tsx +8 -0
- package/src/renderers/index.ts +8 -0
- package/src/renderers/layout/aspect-ratio.tsx +50 -0
- package/src/renderers/layout/card.tsx +8 -0
- package/src/renderers/layout/container.tsx +20 -12
- package/src/renderers/layout/flex.tsx +16 -8
- package/src/renderers/layout/grid.tsx +8 -0
- package/src/renderers/layout/index.ts +9 -0
- package/src/renderers/layout/page.tsx +9 -1
- package/src/renderers/layout/semantic.tsx +8 -0
- package/src/renderers/layout/stack.tsx +16 -8
- package/src/renderers/layout/tabs.tsx +8 -0
- package/src/renderers/navigation/header-bar.tsx +9 -1
- package/src/renderers/navigation/index.ts +8 -0
- package/src/renderers/navigation/sidebar.tsx +8 -0
- package/src/renderers/overlay/alert-dialog.tsx +8 -0
- package/src/renderers/overlay/context-menu.tsx +9 -1
- package/src/renderers/overlay/dialog.tsx +8 -0
- package/src/renderers/overlay/drawer.tsx +8 -0
- package/src/renderers/overlay/dropdown-menu.tsx +8 -0
- package/src/renderers/overlay/hover-card.tsx +8 -0
- package/src/renderers/overlay/index.ts +9 -0
- package/src/renderers/overlay/menubar.tsx +75 -0
- package/src/renderers/overlay/popover.tsx +8 -0
- package/src/renderers/overlay/sheet.tsx +8 -0
- package/src/renderers/overlay/tooltip.tsx +8 -0
- package/src/renderers/placeholders.tsx +107 -0
- package/src/ui/accordion.tsx +8 -0
- package/src/ui/alert-dialog.tsx +8 -0
- package/src/ui/alert.tsx +14 -24
- package/src/ui/aspect-ratio.tsx +8 -0
- package/src/ui/avatar.tsx +8 -0
- package/src/ui/badge.tsx +13 -6
- package/src/ui/breadcrumb.tsx +8 -0
- package/src/ui/button-group.tsx +8 -0
- package/src/ui/button.tsx +38 -36
- package/src/ui/calendar.tsx +57 -200
- package/src/ui/card.tsx +8 -0
- package/src/ui/carousel.tsx +8 -0
- package/src/ui/checkbox.tsx +8 -0
- package/src/ui/collapsible.tsx +8 -0
- package/src/ui/combobox.tsx +104 -0
- package/src/ui/command.tsx +8 -0
- package/src/ui/context-menu.tsx +8 -0
- package/src/ui/date-picker.tsx +61 -0
- package/src/ui/dialog.tsx +8 -0
- package/src/ui/drawer.tsx +8 -0
- package/src/ui/dropdown-menu.tsx +8 -0
- package/src/ui/empty.tsx +8 -0
- package/src/ui/filter-builder.tsx +8 -0
- package/src/ui/form.tsx +8 -0
- package/src/ui/hover-card.tsx +8 -0
- package/src/ui/index.ts +11 -5
- package/src/ui/input-otp.tsx +20 -12
- package/src/ui/input.tsx +8 -0
- package/src/ui/item.tsx +8 -0
- package/src/ui/kbd.tsx +8 -0
- package/src/ui/label.tsx +8 -0
- package/src/ui/menubar.tsx +8 -0
- package/src/ui/navigation-menu.tsx +8 -0
- package/src/ui/pagination.tsx +8 -0
- package/src/ui/popover.tsx +9 -1
- package/src/ui/progress.tsx +11 -15
- package/src/ui/radio-group.tsx +8 -0
- package/src/ui/resizable.tsx +8 -0
- package/src/ui/scroll-area.tsx +9 -1
- package/src/ui/select.tsx +17 -9
- package/src/ui/separator.tsx +8 -0
- package/src/ui/sheet.tsx +8 -0
- package/src/ui/sidebar.tsx +34 -15
- package/src/ui/skeleton.tsx +8 -0
- package/src/ui/slider.tsx +8 -0
- package/src/ui/sonner.tsx +12 -20
- package/src/ui/spinner.tsx +11 -23
- package/src/ui/switch.tsx +8 -0
- package/src/ui/table.tsx +102 -97
- package/src/ui/tabs.tsx +8 -0
- package/src/ui/textarea.tsx +8 -0
- package/src/ui/toggle-group.tsx +12 -21
- package/src/ui/toggle.tsx +15 -12
- package/src/ui/tooltip.tsx +8 -0
- package/tsconfig.json +2 -1
- package/vite.config.ts +11 -1
- 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/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/timeline.tsx +0 -266
- package/tailwind.config.js +0 -75
package/src/renderers/index.ts
CHANGED
|
@@ -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 './basic';
|
|
2
10
|
import './form';
|
|
3
11
|
import './layout';
|
|
@@ -0,0 +1,50 @@
|
|
|
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 { AspectRatioSchema } from '@object-ui/types';
|
|
11
|
+
import { AspectRatio } from '../../ui/aspect-ratio';
|
|
12
|
+
import { renderChildren } from '../../lib/utils';
|
|
13
|
+
|
|
14
|
+
ComponentRegistry.register('aspect-ratio',
|
|
15
|
+
({ schema, ...props }: { schema: AspectRatioSchema; [key: string]: any }) => {
|
|
16
|
+
const {
|
|
17
|
+
'data-obj-id': dataObjId,
|
|
18
|
+
'data-obj-type': dataObjType,
|
|
19
|
+
style,
|
|
20
|
+
...aspectRatioProps
|
|
21
|
+
} = props;
|
|
22
|
+
|
|
23
|
+
return (
|
|
24
|
+
<AspectRatio
|
|
25
|
+
ratio={schema.ratio || 16 / 9}
|
|
26
|
+
className={schema.className}
|
|
27
|
+
{...aspectRatioProps}
|
|
28
|
+
{...{ 'data-obj-id': dataObjId, 'data-obj-type': dataObjType, style }}
|
|
29
|
+
>
|
|
30
|
+
{schema.image ? (
|
|
31
|
+
<img src={schema.image} alt={schema.alt || ''} className="rounded-md object-cover w-full h-full" />
|
|
32
|
+
) : (
|
|
33
|
+
renderChildren(schema.body)
|
|
34
|
+
)}
|
|
35
|
+
</AspectRatio>
|
|
36
|
+
);
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
label: 'Aspect Ratio',
|
|
40
|
+
inputs: [
|
|
41
|
+
{ name: 'ratio', type: 'number', label: 'Ratio', defaultValue: 16/9 },
|
|
42
|
+
{ name: 'image', type: 'string', label: 'Image URL' },
|
|
43
|
+
{ name: 'alt', type: 'string', label: 'Alt Text' },
|
|
44
|
+
{ name: 'className', type: 'string', label: 'CSS Class' }
|
|
45
|
+
],
|
|
46
|
+
defaultProps: {
|
|
47
|
+
ratio: 16 / 9
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
);
|
|
@@ -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 { CardSchema } from '@object-ui/types';
|
|
3
11
|
import { renderChildren } from '../../lib/utils';
|
|
@@ -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 { ContainerSchema } from '@object-ui/types';
|
|
3
11
|
import { renderChildren } from '../../lib/utils';
|
|
@@ -28,19 +36,19 @@ const ContainerRenderer = forwardRef<HTMLDivElement, { schema: ContainerSchema;
|
|
|
28
36
|
maxWidth === 'screen' && 'max-w-screen-2xl',
|
|
29
37
|
// Centering
|
|
30
38
|
centered && 'mx-auto',
|
|
31
|
-
// Padding
|
|
39
|
+
// Padding - Mobile-first responsive
|
|
32
40
|
padding === 0 && 'p-0',
|
|
33
|
-
padding === 1 && 'p-1',
|
|
34
|
-
padding === 2 && 'p-2',
|
|
35
|
-
padding === 3 && 'p-3',
|
|
36
|
-
padding === 4 && 'p-4',
|
|
37
|
-
padding === 5 && 'p-5',
|
|
38
|
-
padding === 6 && 'p-6',
|
|
39
|
-
padding === 7 && 'p-7',
|
|
40
|
-
padding === 8 && 'p-8',
|
|
41
|
-
padding === 10 && 'p-10',
|
|
42
|
-
padding === 12 && 'p-12',
|
|
43
|
-
padding === 16 && 'p-16',
|
|
41
|
+
padding === 1 && 'p-0.5 sm:p-1',
|
|
42
|
+
padding === 2 && 'p-1 sm:p-2',
|
|
43
|
+
padding === 3 && 'p-2 sm:p-3',
|
|
44
|
+
padding === 4 && 'p-2 sm:p-3 md:p-4',
|
|
45
|
+
padding === 5 && 'p-3 sm:p-4 md:p-5',
|
|
46
|
+
padding === 6 && 'p-3 sm:p-4 md:p-6',
|
|
47
|
+
padding === 7 && 'p-4 sm:p-5 md:p-7',
|
|
48
|
+
padding === 8 && 'p-4 sm:p-6 md:p-8',
|
|
49
|
+
padding === 10 && 'p-5 sm:p-7 md:p-10',
|
|
50
|
+
padding === 12 && 'p-6 sm:p-8 md:p-12',
|
|
51
|
+
padding === 16 && 'p-8 sm:p-10 md:p-16',
|
|
44
52
|
className
|
|
45
53
|
);
|
|
46
54
|
|
|
@@ -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 { FlexSchema } from '@object-ui/types';
|
|
3
11
|
import { renderChildren } from '../../lib/utils';
|
|
@@ -31,16 +39,16 @@ ComponentRegistry.register('flex',
|
|
|
31
39
|
align === 'center' && 'items-center',
|
|
32
40
|
align === 'baseline' && 'items-baseline',
|
|
33
41
|
align === 'stretch' && 'items-stretch',
|
|
34
|
-
// Gap
|
|
42
|
+
// Gap - Mobile-first responsive
|
|
35
43
|
gap === 0 && 'gap-0',
|
|
36
44
|
gap === 1 && 'gap-1',
|
|
37
|
-
gap === 2 && 'gap-2',
|
|
38
|
-
gap === 3 && 'gap-3',
|
|
39
|
-
gap === 4 && 'gap-4',
|
|
40
|
-
gap === 5 && 'gap-5',
|
|
41
|
-
gap === 6 && 'gap-6',
|
|
42
|
-
gap === 7 && 'gap-7',
|
|
43
|
-
gap === 8 && 'gap-8',
|
|
45
|
+
gap === 2 && 'gap-1.5 sm:gap-2',
|
|
46
|
+
gap === 3 && 'gap-2 sm:gap-3',
|
|
47
|
+
gap === 4 && 'gap-2 sm:gap-3 md:gap-4',
|
|
48
|
+
gap === 5 && 'gap-3 sm:gap-4 md:gap-5',
|
|
49
|
+
gap === 6 && 'gap-3 sm:gap-4 md:gap-6',
|
|
50
|
+
gap === 7 && 'gap-4 sm:gap-5 md:gap-7',
|
|
51
|
+
gap === 8 && 'gap-4 sm:gap-6 md:gap-8',
|
|
44
52
|
// Wrap
|
|
45
53
|
wrap && 'flex-wrap',
|
|
46
54
|
className
|
|
@@ -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 { GridSchema } from '@object-ui/types';
|
|
3
11
|
import { renderChildren } from '../../lib/utils';
|
|
@@ -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 './card';
|
|
2
10
|
import './tabs';
|
|
3
11
|
import './grid';
|
|
@@ -6,5 +14,6 @@ import './stack';
|
|
|
6
14
|
import './container';
|
|
7
15
|
import './page';
|
|
8
16
|
import './semantic';
|
|
17
|
+
import './aspect-ratio';
|
|
9
18
|
|
|
10
19
|
|
|
@@ -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 { PageSchema } from '@object-ui/types';
|
|
3
11
|
import { SchemaRenderer } from '@object-ui/react';
|
|
@@ -23,7 +31,7 @@ export const PageRenderer: React.FC<{ schema: PageSchema; className?: string; [k
|
|
|
23
31
|
|
|
24
32
|
return (
|
|
25
33
|
<div
|
|
26
|
-
className={cn("min-h-full w-full bg-background p-
|
|
34
|
+
className={cn("min-h-full w-full bg-background p-4 md:p-6 lg:p-8", className)}
|
|
27
35
|
{...pageProps}
|
|
28
36
|
// Apply designer props
|
|
29
37
|
data-obj-id={dataObjId}
|
|
@@ -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 { renderChildren } from '../../lib/utils';
|
|
3
11
|
import { forwardRef } from 'react';
|
|
@@ -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 { StackSchema } from '@object-ui/types';
|
|
3
11
|
import { renderChildren } from '../../lib/utils';
|
|
@@ -34,16 +42,16 @@ const StackRenderer = forwardRef<HTMLDivElement, { schema: StackSchema; classNam
|
|
|
34
42
|
align === 'center' && 'items-center',
|
|
35
43
|
align === 'baseline' && 'items-baseline',
|
|
36
44
|
align === 'stretch' && 'items-stretch',
|
|
37
|
-
// Gap
|
|
45
|
+
// Gap - Mobile-first responsive
|
|
38
46
|
gap === 0 && 'gap-0',
|
|
39
47
|
gap === 1 && 'gap-1',
|
|
40
|
-
gap === 2 && 'gap-2',
|
|
41
|
-
gap === 3 && 'gap-3',
|
|
42
|
-
gap === 4 && 'gap-4',
|
|
43
|
-
gap === 5 && 'gap-5',
|
|
44
|
-
gap === 6 && 'gap-6',
|
|
45
|
-
gap === 8 && 'gap-8',
|
|
46
|
-
gap === 10 && 'gap-10',
|
|
48
|
+
gap === 2 && 'gap-1.5 sm:gap-2',
|
|
49
|
+
gap === 3 && 'gap-2 sm:gap-3',
|
|
50
|
+
gap === 4 && 'gap-2 sm:gap-3 md:gap-4',
|
|
51
|
+
gap === 5 && 'gap-3 sm:gap-4 md:gap-5',
|
|
52
|
+
gap === 6 && 'gap-3 sm:gap-4 md:gap-6',
|
|
53
|
+
gap === 8 && 'gap-4 sm:gap-6 md:gap-8',
|
|
54
|
+
gap === 10 && 'gap-5 sm:gap-7 md:gap-10',
|
|
47
55
|
// Wrap
|
|
48
56
|
wrap && 'flex-wrap',
|
|
49
57
|
className
|
|
@@ -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';
|
|
@@ -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>
|
|
@@ -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';
|
|
@@ -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 {
|
|
@@ -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 (
|
|
@@ -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 {
|
|
@@ -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 {
|
|
@@ -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 {
|
|
@@ -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 {
|
|
@@ -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,75 @@
|
|
|
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
|
+
label: 'Menubar',
|
|
58
|
+
inputs: [
|
|
59
|
+
{ name: 'className', type: 'string', label: 'CSS Class' }
|
|
60
|
+
],
|
|
61
|
+
defaultProps: {
|
|
62
|
+
menus: [
|
|
63
|
+
{
|
|
64
|
+
label: 'File',
|
|
65
|
+
items: [
|
|
66
|
+
{ label: 'New' },
|
|
67
|
+
{ label: 'Open' },
|
|
68
|
+
{ separator: true },
|
|
69
|
+
{ label: 'Exit' }
|
|
70
|
+
]
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
);
|
|
@@ -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 {
|
|
@@ -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 {
|
|
@@ -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 {
|
|
@@ -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, ...props }: 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', 'view:spreadsheet',
|
|
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
|
+
}
|
package/src/ui/accordion.tsx
CHANGED
|
@@ -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 * as React from "react"
|
|
2
10
|
import * as AccordionPrimitive from "@radix-ui/react-accordion"
|
|
3
11
|
import { ChevronDownIcon } from "lucide-react"
|