@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
|
@@ -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 './div';
|
|
2
10
|
import './text';
|
|
3
11
|
import './span';
|
|
@@ -5,3 +13,6 @@ import './separator';
|
|
|
5
13
|
import './image';
|
|
6
14
|
import './icon';
|
|
7
15
|
import './html';
|
|
16
|
+
import './button-group';
|
|
17
|
+
import './pagination';
|
|
18
|
+
import './navigation-menu';
|
|
@@ -0,0 +1,80 @@
|
|
|
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 { NavigationMenuSchema } from '@object-ui/types';
|
|
11
|
+
import { NavigationMenu, NavigationMenuList, NavigationMenuItem, NavigationMenuTrigger, NavigationMenuContent, NavigationMenuLink } from '../../ui/navigation-menu';
|
|
12
|
+
import { cn } from '../../lib/utils';
|
|
13
|
+
|
|
14
|
+
ComponentRegistry.register('navigation-menu',
|
|
15
|
+
({ schema, ...props }: { schema: NavigationMenuSchema; [key: string]: any }) => {
|
|
16
|
+
const {
|
|
17
|
+
'data-obj-id': dataObjId,
|
|
18
|
+
'data-obj-type': dataObjType,
|
|
19
|
+
style,
|
|
20
|
+
...navigationMenuProps
|
|
21
|
+
} = props;
|
|
22
|
+
|
|
23
|
+
return (
|
|
24
|
+
<NavigationMenu
|
|
25
|
+
className={schema.className}
|
|
26
|
+
{...navigationMenuProps}
|
|
27
|
+
{...{ 'data-obj-id': dataObjId, 'data-obj-type': dataObjType, style }}
|
|
28
|
+
>
|
|
29
|
+
<NavigationMenuList>
|
|
30
|
+
{schema.items?.map((item, idx) => (
|
|
31
|
+
<NavigationMenuItem key={idx}>
|
|
32
|
+
{item.children ? (
|
|
33
|
+
<>
|
|
34
|
+
<NavigationMenuTrigger>{item.label}</NavigationMenuTrigger>
|
|
35
|
+
<NavigationMenuContent>
|
|
36
|
+
<ul className="grid w-full gap-3 p-4 sm:w-[400px] md:w-[500px] md:grid-cols-2 lg:w-[600px]">
|
|
37
|
+
{item.children.map((child, childIdx) => (
|
|
38
|
+
<li key={childIdx}>
|
|
39
|
+
<NavigationMenuLink asChild>
|
|
40
|
+
<a
|
|
41
|
+
className={cn(
|
|
42
|
+
"block select-none space-y-1 rounded-md p-3 leading-none no-underline outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground"
|
|
43
|
+
)}
|
|
44
|
+
href={child.href}
|
|
45
|
+
>
|
|
46
|
+
<div className="text-sm font-medium leading-none">{child.label}</div>
|
|
47
|
+
{child.description && (
|
|
48
|
+
<p className="line-clamp-2 text-sm leading-snug text-muted-foreground">
|
|
49
|
+
{child.description}
|
|
50
|
+
</p>
|
|
51
|
+
)}
|
|
52
|
+
</a>
|
|
53
|
+
</NavigationMenuLink>
|
|
54
|
+
</li>
|
|
55
|
+
))}
|
|
56
|
+
</ul>
|
|
57
|
+
</NavigationMenuContent>
|
|
58
|
+
</>
|
|
59
|
+
) : (
|
|
60
|
+
<NavigationMenuLink href={item.href}>{item.label}</NavigationMenuLink>
|
|
61
|
+
)}
|
|
62
|
+
</NavigationMenuItem>
|
|
63
|
+
))}
|
|
64
|
+
</NavigationMenuList>
|
|
65
|
+
</NavigationMenu>
|
|
66
|
+
);
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
label: 'Navigation Menu',
|
|
70
|
+
inputs: [
|
|
71
|
+
{ name: 'className', type: 'string', label: 'CSS Class' }
|
|
72
|
+
],
|
|
73
|
+
defaultProps: {
|
|
74
|
+
items: [
|
|
75
|
+
{ label: 'Home', href: '/' },
|
|
76
|
+
{ label: 'About', href: '/about' }
|
|
77
|
+
]
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
);
|
|
@@ -0,0 +1,82 @@
|
|
|
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 { PaginationSchema } from '@object-ui/types';
|
|
11
|
+
import { Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious } from '../../ui/pagination';
|
|
12
|
+
|
|
13
|
+
ComponentRegistry.register('pagination',
|
|
14
|
+
({ schema, ...props }: { schema: PaginationSchema; [key: string]: any }) => {
|
|
15
|
+
const {
|
|
16
|
+
'data-obj-id': dataObjId,
|
|
17
|
+
'data-obj-type': dataObjType,
|
|
18
|
+
style,
|
|
19
|
+
...paginationProps
|
|
20
|
+
} = props;
|
|
21
|
+
|
|
22
|
+
const currentPage = schema.currentPage || schema.page || 1;
|
|
23
|
+
const totalPages = schema.totalPages || 1;
|
|
24
|
+
const showEllipsis = totalPages > 7;
|
|
25
|
+
|
|
26
|
+
const getPageNumbers = () => {
|
|
27
|
+
if (totalPages <= 7) {
|
|
28
|
+
return Array.from({ length: totalPages }, (_, i) => i + 1);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (currentPage <= 3) {
|
|
32
|
+
return [1, 2, 3, 4, 5, -1, totalPages];
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (currentPage >= totalPages - 2) {
|
|
36
|
+
return [1, -1, totalPages - 4, totalPages - 3, totalPages - 2, totalPages - 1, totalPages];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return [1, -1, currentPage - 1, currentPage, currentPage + 1, -1, totalPages];
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
return (
|
|
43
|
+
<Pagination
|
|
44
|
+
className={schema.className}
|
|
45
|
+
{...paginationProps}
|
|
46
|
+
{...{ 'data-obj-id': dataObjId, 'data-obj-type': dataObjType, style }}
|
|
47
|
+
>
|
|
48
|
+
<PaginationContent>
|
|
49
|
+
<PaginationItem>
|
|
50
|
+
<PaginationPrevious href="#" />
|
|
51
|
+
</PaginationItem>
|
|
52
|
+
{getPageNumbers().map((page, idx) => (
|
|
53
|
+
<PaginationItem key={idx}>
|
|
54
|
+
{page === -1 ? (
|
|
55
|
+
<PaginationEllipsis />
|
|
56
|
+
) : (
|
|
57
|
+
<PaginationLink href="#" isActive={page === currentPage}>
|
|
58
|
+
{page}
|
|
59
|
+
</PaginationLink>
|
|
60
|
+
)}
|
|
61
|
+
</PaginationItem>
|
|
62
|
+
))}
|
|
63
|
+
<PaginationItem>
|
|
64
|
+
<PaginationNext href="#" />
|
|
65
|
+
</PaginationItem>
|
|
66
|
+
</PaginationContent>
|
|
67
|
+
</Pagination>
|
|
68
|
+
);
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
label: 'Pagination',
|
|
72
|
+
inputs: [
|
|
73
|
+
{ name: 'currentPage', type: 'number', label: 'Current Page', defaultValue: 1 },
|
|
74
|
+
{ name: 'totalPages', type: 'number', label: 'Total Pages', defaultValue: 10 },
|
|
75
|
+
{ name: 'className', type: 'string', label: 'CSS Class' }
|
|
76
|
+
],
|
|
77
|
+
defaultProps: {
|
|
78
|
+
currentPage: 1,
|
|
79
|
+
totalPages: 10
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
);
|
|
@@ -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 { SeparatorSchema } from '@object-ui/types';
|
|
3
11
|
import { Separator } from '../../ui';
|
|
@@ -42,7 +50,7 @@ ComponentRegistry.register('separator',
|
|
|
42
50
|
],
|
|
43
51
|
defaultProps: {
|
|
44
52
|
orientation: 'horizontal',
|
|
45
|
-
className: 'my-4'
|
|
53
|
+
className: 'my-2 sm:my-4'
|
|
46
54
|
}
|
|
47
55
|
}
|
|
48
56
|
);
|
|
@@ -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 { SpanSchema } from '@object-ui/types';
|
|
3
11
|
import { renderChildren } from '../../lib/utils';
|
|
@@ -35,7 +43,7 @@ ComponentRegistry.register('span',
|
|
|
35
43
|
{ name: 'className', type: 'string', label: 'CSS Class' }
|
|
36
44
|
],
|
|
37
45
|
defaultProps: {
|
|
38
|
-
className: 'px-2 py-1'
|
|
46
|
+
className: 'px-1.5 py-0.5 sm:px-2 sm:py-1'
|
|
39
47
|
},
|
|
40
48
|
defaultChildren: [
|
|
41
49
|
{ type: 'text', content: 'Inline text' }
|
|
@@ -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 { TextSchema } from '@object-ui/types';
|
|
3
11
|
|
|
@@ -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 { describe, it, expect, beforeAll } from 'vitest';
|
|
2
10
|
import { ComponentRegistry } from '@object-ui/core';
|
|
3
11
|
|
|
@@ -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 { CarouselSchema } from '@object-ui/types';
|
|
3
11
|
import {
|
|
@@ -50,9 +58,9 @@ ComponentRegistry.register('carousel',
|
|
|
50
58
|
orientation: 'horizontal',
|
|
51
59
|
showArrows: true,
|
|
52
60
|
items: [
|
|
53
|
-
[{ type: 'div', className: 'p-8 border rounded bg-slate-50', body: [{ type: 'text', content: 'Slide 1' }] }],
|
|
54
|
-
[{ type: 'div', className: 'p-8 border rounded bg-slate-50', body: [{ type: 'text', content: 'Slide 2' }] }],
|
|
55
|
-
[{ type: 'div', className: 'p-8 border rounded bg-slate-50', body: [{ type: 'text', content: 'Slide 3' }] }]
|
|
61
|
+
[{ type: 'div', className: 'p-4 sm:p-6 md:p-8 border rounded bg-slate-50', body: [{ type: 'text', content: 'Slide 1' }] }],
|
|
62
|
+
[{ type: 'div', className: 'p-4 sm:p-6 md:p-8 border rounded bg-slate-50', body: [{ type: 'text', content: 'Slide 2' }] }],
|
|
63
|
+
[{ type: 'div', className: 'p-4 sm:p-6 md:p-8 border rounded bg-slate-50', body: [{ type: 'text', content: 'Slide 3' }] }]
|
|
56
64
|
],
|
|
57
65
|
className: 'w-full max-w-xs'
|
|
58
66
|
}
|
|
@@ -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
|
// Enterprise-level DataTable Component (Airtable-like)
|
|
2
10
|
import React, { useState, useMemo, useRef, useEffect } from 'react';
|
|
3
11
|
import { ComponentRegistry } from '@object-ui/core';
|
|
@@ -77,7 +85,7 @@ type SortDirection = 'asc' | 'desc' | null;
|
|
|
77
85
|
const DataTableRenderer = ({ schema }: { schema: DataTableSchema }) => {
|
|
78
86
|
const {
|
|
79
87
|
caption,
|
|
80
|
-
columns:
|
|
88
|
+
columns: rawColumns = [],
|
|
81
89
|
data = [],
|
|
82
90
|
pagination = true,
|
|
83
91
|
pageSize: initialPageSize = 10,
|
|
@@ -91,6 +99,15 @@ const DataTableRenderer = ({ schema }: { schema: DataTableSchema }) => {
|
|
|
91
99
|
className,
|
|
92
100
|
} = schema;
|
|
93
101
|
|
|
102
|
+
// Normalize columns to support legacy keys (label/name) from existing JSONs
|
|
103
|
+
const initialColumns = useMemo(() => {
|
|
104
|
+
return rawColumns.map((col: any) => ({
|
|
105
|
+
...col,
|
|
106
|
+
header: col.header || col.label,
|
|
107
|
+
accessorKey: col.accessorKey || col.name
|
|
108
|
+
}));
|
|
109
|
+
}, [rawColumns]);
|
|
110
|
+
|
|
94
111
|
// State management
|
|
95
112
|
const [searchQuery, setSearchQuery] = useState('');
|
|
96
113
|
const [sortColumn, setSortColumn] = useState<string | null>(null);
|
|
@@ -386,8 +403,7 @@ const DataTableRenderer = ({ schema }: { schema: DataTableSchema }) => {
|
|
|
386
403
|
</div>
|
|
387
404
|
|
|
388
405
|
{/* Table */}
|
|
389
|
-
<
|
|
390
|
-
<Table>
|
|
406
|
+
<Table>
|
|
391
407
|
{caption && <TableCaption>{caption}</TableCaption>}
|
|
392
408
|
<TableHeader>
|
|
393
409
|
<TableRow>
|
|
@@ -511,7 +527,6 @@ const DataTableRenderer = ({ schema }: { schema: DataTableSchema }) => {
|
|
|
511
527
|
)}
|
|
512
528
|
</TableBody>
|
|
513
529
|
</Table>
|
|
514
|
-
</div>
|
|
515
530
|
|
|
516
531
|
{/* Pagination */}
|
|
517
532
|
{pagination && sortedData.length > 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 { FilterBuilderSchema, FilterGroup } from '@object-ui/types';
|
|
3
11
|
import { FilterBuilder } from '../../ui/filter-builder';
|
|
@@ -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';
|
|
@@ -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 { ScrollAreaSchema } from '@object-ui/types';
|
|
3
11
|
import { ScrollArea, ScrollBar } from '../../ui';
|
|
@@ -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>
|
|
@@ -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';
|
|
@@ -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 {
|
|
@@ -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';
|
|
@@ -0,0 +1,59 @@
|
|
|
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
|
+
label: 'Breadcrumb',
|
|
48
|
+
inputs: [
|
|
49
|
+
{ name: 'className', type: 'string', label: 'CSS Class' }
|
|
50
|
+
],
|
|
51
|
+
defaultProps: {
|
|
52
|
+
items: [
|
|
53
|
+
{ label: 'Home', href: '/' },
|
|
54
|
+
{ label: 'Products', href: '/products' },
|
|
55
|
+
{ label: 'Product' }
|
|
56
|
+
]
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
);
|
|
@@ -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
|
+
|
|
@@ -0,0 +1,49 @@
|
|
|
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 { KbdSchema } from '@object-ui/types';
|
|
11
|
+
import { cn } from '../../lib/utils';
|
|
12
|
+
|
|
13
|
+
ComponentRegistry.register('kbd',
|
|
14
|
+
({ schema, ...props }: { schema: KbdSchema; [key: string]: any }) => {
|
|
15
|
+
const {
|
|
16
|
+
'data-obj-id': dataObjId,
|
|
17
|
+
'data-obj-type': dataObjType,
|
|
18
|
+
style,
|
|
19
|
+
...kbdProps
|
|
20
|
+
} = props;
|
|
21
|
+
|
|
22
|
+
const keys = Array.isArray(schema.keys) ? schema.keys : [schema.keys || schema.label || 'K'];
|
|
23
|
+
|
|
24
|
+
return (
|
|
25
|
+
<div className={cn('inline-flex flex-wrap gap-1', schema.className)}>
|
|
26
|
+
{keys.map((key, idx) => (
|
|
27
|
+
<kbd
|
|
28
|
+
key={idx}
|
|
29
|
+
className="pointer-events-none inline-flex h-5 select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono text-[10px] font-medium text-muted-foreground opacity-100"
|
|
30
|
+
{...kbdProps}
|
|
31
|
+
{...(idx === 0 ? { 'data-obj-id': dataObjId, 'data-obj-type': dataObjType, style } : {})}
|
|
32
|
+
>
|
|
33
|
+
{key}
|
|
34
|
+
</kbd>
|
|
35
|
+
))}
|
|
36
|
+
</div>
|
|
37
|
+
);
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
label: 'Keyboard Key',
|
|
41
|
+
inputs: [
|
|
42
|
+
{ name: 'label', type: 'string', label: 'Label' },
|
|
43
|
+
{ name: 'className', type: 'string', label: 'CSS Class' }
|
|
44
|
+
],
|
|
45
|
+
defaultProps: {
|
|
46
|
+
label: 'K'
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
);
|
|
@@ -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 { ListSchema } from '@object-ui/types';
|
|
3
11
|
import { renderChildren } from '../../lib/utils';
|