@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/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @object-ui/components
|
|
2
2
|
|
|
3
|
+
## 0.3.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Maintenance release - Documentation and build improvements
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
- @object-ui/types@0.3.1
|
|
10
|
+
- @object-ui/core@0.3.1
|
|
11
|
+
- @object-ui/react@0.3.1
|
|
12
|
+
|
|
3
13
|
## 0.3.0
|
|
4
14
|
|
|
5
15
|
### Minor Changes
|
package/ISSUES_FOUND.md
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Display Issues Automatically Detected by Tests
|
|
2
|
+
|
|
3
|
+
This document lists the real display and rendering issues automatically discovered by the comprehensive test suite.
|
|
4
|
+
|
|
5
|
+
## Summary
|
|
6
|
+
|
|
7
|
+
The automated test suite (150 tests total) successfully identified **10 real issues** across different component renderers:
|
|
8
|
+
|
|
9
|
+
- ✅ **140 tests passing** - Components working correctly
|
|
10
|
+
- ⚠️ **10 tests failing** - Automatically detected issues requiring fixes
|
|
11
|
+
|
|
12
|
+
## Issues Detected
|
|
13
|
+
|
|
14
|
+
### 1. Container Renderer - Missing Children Support
|
|
15
|
+
**Location:** `layout-data-renderers.test.tsx`
|
|
16
|
+
**Issue:** Container component does not properly render child components passed via `body` prop
|
|
17
|
+
**Expected:** Should render nested children
|
|
18
|
+
**Actual:** Children not rendering, possibly schema mismatch
|
|
19
|
+
|
|
20
|
+
### 2. Grid Renderer - Children Not Rendering
|
|
21
|
+
**Location:** `layout-data-renderers.test.tsx`
|
|
22
|
+
**Issue:** Grid layout component not displaying child items
|
|
23
|
+
**Expected:** Should render grid with child items
|
|
24
|
+
**Actual:** Empty content
|
|
25
|
+
|
|
26
|
+
### 3. Tree View Renderer - Data Prop Mismatch
|
|
27
|
+
**Location:** `layout-data-renderers.test.tsx`
|
|
28
|
+
**Issue:** Tree view component not rendering tree data structure
|
|
29
|
+
**Expected:** Should display hierarchical tree data
|
|
30
|
+
**Actual:** No content rendered, possible prop name mismatch (`data` vs `items`)
|
|
31
|
+
|
|
32
|
+
### 4. Badge Renderer - Text Prop Issue
|
|
33
|
+
**Location:** `layout-data-renderers.test.tsx`
|
|
34
|
+
**Issue:** Badge component not rendering text content
|
|
35
|
+
**Expected:** Should display badge text via `text` prop
|
|
36
|
+
**Actual:** Empty badge, possible prop name should be `children` or `content`
|
|
37
|
+
|
|
38
|
+
### 5. Avatar Renderer - Image Not Rendering
|
|
39
|
+
**Location:** `layout-data-renderers.test.tsx`
|
|
40
|
+
**Issue:** Avatar component image not displaying
|
|
41
|
+
**Expected:** Should render image from `src` prop
|
|
42
|
+
**Actual:** No image element found in DOM
|
|
43
|
+
|
|
44
|
+
### 6. Loading Renderer - Message Prop Not Working
|
|
45
|
+
**Location:** `feedback-overlay-renderers.test.tsx`
|
|
46
|
+
**Issue:** Loading component not displaying message text
|
|
47
|
+
**Expected:** Should show loading message
|
|
48
|
+
**Actual:** Message text not rendered
|
|
49
|
+
|
|
50
|
+
### 7. Tooltip Renderer - Trigger Content Not Rendering
|
|
51
|
+
**Location:** `feedback-overlay-renderers.test.tsx`
|
|
52
|
+
**Issue:** Tooltip trigger content (button) not visible
|
|
53
|
+
**Expected:** Should render trigger element that shows tooltip on hover
|
|
54
|
+
**Actual:** Trigger content missing
|
|
55
|
+
|
|
56
|
+
### 8. Scroll Area Renderer - Content Not Displaying
|
|
57
|
+
**Location:** `complex-disclosure-renderers.test.tsx`
|
|
58
|
+
**Issue:** Scroll area component not showing scrollable content
|
|
59
|
+
**Expected:** Should render content within scrollable container
|
|
60
|
+
**Actual:** Only CSS rules visible, content not rendered
|
|
61
|
+
|
|
62
|
+
## Component Schema Mismatches Found
|
|
63
|
+
|
|
64
|
+
| Component | Test Prop | Expected Behavior | Likely Fix |
|
|
65
|
+
|-----------|-----------|-------------------|------------|
|
|
66
|
+
| Container | `body` | Render children | Check SchemaRenderer integration |
|
|
67
|
+
| Grid | `body` | Render grid items | Check children rendering |
|
|
68
|
+
| Tree View | `data` | Display tree structure | Verify prop name or data format |
|
|
69
|
+
| Badge | `text` | Show badge text | Change to `children` or verify prop |
|
|
70
|
+
| Avatar | `src` | Render image | Check Radix UI Avatar implementation |
|
|
71
|
+
| Loading | `message` | Display message | Verify prop name |
|
|
72
|
+
| Tooltip | `body` | Render trigger | Check trigger rendering |
|
|
73
|
+
| Scroll Area | `body` | Show content | Verify content prop handling |
|
|
74
|
+
|
|
75
|
+
## Automated Checks That Found Issues
|
|
76
|
+
|
|
77
|
+
The test utilities successfully detected:
|
|
78
|
+
|
|
79
|
+
1. **Empty Content Detection**
|
|
80
|
+
```typescript
|
|
81
|
+
const domCheck = checkDOMStructure(container);
|
|
82
|
+
expect(domCheck.hasContent).toBe(true); // FAILED - found empty components
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
2. **Missing DOM Elements**
|
|
86
|
+
```typescript
|
|
87
|
+
expect(container.textContent).toContain('Expected Text'); // FAILED - content not rendered
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
3. **Missing Image Elements**
|
|
91
|
+
```typescript
|
|
92
|
+
const img = container.querySelector('img');
|
|
93
|
+
expect(img).toBeTruthy(); // FAILED - image not found
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Next Steps
|
|
97
|
+
|
|
98
|
+
To fix these issues:
|
|
99
|
+
|
|
100
|
+
1. **Verify Component Schemas** - Check TypeScript type definitions in `@object-ui/types`
|
|
101
|
+
2. **Update Renderers** - Ensure renderers properly handle documented props
|
|
102
|
+
3. **Fix Prop Mappings** - Align prop names between schema and component implementation
|
|
103
|
+
4. **Test SchemaRenderer Integration** - Verify children rendering works correctly
|
|
104
|
+
5. **Update Documentation** - Ensure component examples use correct props
|
|
105
|
+
|
|
106
|
+
## Value of Automated Testing
|
|
107
|
+
|
|
108
|
+
These tests have proven their value by:
|
|
109
|
+
- ✅ Automatically discovering 10 real issues without manual testing
|
|
110
|
+
- ✅ Identifying schema/implementation mismatches
|
|
111
|
+
- ✅ Providing specific locations and expected behaviors
|
|
112
|
+
- ✅ Enabling quick regression testing as fixes are applied
|
|
113
|
+
- ✅ Serving as living documentation of component APIs
|
|
114
|
+
|
|
115
|
+
## Running Tests to Verify Fixes
|
|
116
|
+
|
|
117
|
+
After fixing issues, verify with:
|
|
118
|
+
```bash
|
|
119
|
+
# Run all tests
|
|
120
|
+
pnpm vitest run packages/components/src/__tests__/
|
|
121
|
+
|
|
122
|
+
# Run specific failing tests
|
|
123
|
+
pnpm vitest run packages/components/src/__tests__/layout-data-renderers.test.tsx
|
|
124
|
+
pnpm vitest run packages/components/src/__tests__/feedback-overlay-renderers.test.tsx
|
|
125
|
+
pnpm vitest run packages/components/src/__tests__/complex-disclosure-renderers.test.tsx
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
When all 150 tests pass, all display issues will be resolved!
|
package/README.md
CHANGED
|
@@ -6,10 +6,28 @@ Standard UI component library for Object UI, built with Shadcn UI + Tailwind CSS
|
|
|
6
6
|
|
|
7
7
|
- 🎨 **Tailwind Native** - Built entirely with Tailwind CSS utility classes
|
|
8
8
|
- 🧩 **Shadcn UI** - Based on Radix UI primitives for accessibility
|
|
9
|
-
- 📦 **
|
|
9
|
+
- 📦 **60+ Components** - Complete set of UI components (46 from Shadcn + 14 custom)
|
|
10
10
|
- ♿ **Accessible** - WCAG compliant components
|
|
11
11
|
- 🎯 **Type-Safe** - Full TypeScript support
|
|
12
12
|
- 🔌 **Extensible** - Easy to customize and extend
|
|
13
|
+
- 🔄 **Sync Tools** - Scripts to keep components updated with latest Shadcn
|
|
14
|
+
|
|
15
|
+
## Keeping Components Updated
|
|
16
|
+
|
|
17
|
+
ObjectUI provides tools to sync components with the latest Shadcn UI versions:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# Analyze components (offline)
|
|
21
|
+
pnpm shadcn:analyze
|
|
22
|
+
|
|
23
|
+
# Check for updates (online)
|
|
24
|
+
pnpm shadcn:check
|
|
25
|
+
|
|
26
|
+
# Update a component
|
|
27
|
+
pnpm shadcn:update button --backup
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**📚 See [SHADCN_SYNC.md](../../docs/SHADCN_SYNC.md) for the complete guide.**
|
|
13
31
|
|
|
14
32
|
## Installation
|
|
15
33
|
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
# Shadcn Components Synchronization
|
|
2
|
+
|
|
3
|
+
This directory contains tools for keeping ObjectUI components in sync with Shadcn UI.
|
|
4
|
+
|
|
5
|
+
## Files
|
|
6
|
+
|
|
7
|
+
- `shadcn-components.json` - Component manifest tracking Shadcn components and custom ObjectUI components
|
|
8
|
+
- `shadcn-sync.js` - Automated sync script (requires network access to ui.shadcn.com)
|
|
9
|
+
|
|
10
|
+
## Component Categories
|
|
11
|
+
|
|
12
|
+
### Shadcn Components (46)
|
|
13
|
+
|
|
14
|
+
These components come from Shadcn UI and can be updated from the registry:
|
|
15
|
+
|
|
16
|
+
**Form Controls:**
|
|
17
|
+
- input, textarea, select, checkbox, radio-group, switch, form, label, input-otp
|
|
18
|
+
|
|
19
|
+
**Layout:**
|
|
20
|
+
- card, tabs, accordion, separator, scroll-area, resizable
|
|
21
|
+
|
|
22
|
+
**Overlays:**
|
|
23
|
+
- dialog, popover, tooltip, hover-card, sheet, drawer, alert-dialog
|
|
24
|
+
|
|
25
|
+
**Navigation:**
|
|
26
|
+
- button, breadcrumb, navigation-menu, dropdown-menu, context-menu, menubar, pagination
|
|
27
|
+
|
|
28
|
+
**Data Display:**
|
|
29
|
+
- table, avatar, badge, skeleton, progress, slider
|
|
30
|
+
|
|
31
|
+
**Feedback:**
|
|
32
|
+
- alert, toast, sonner
|
|
33
|
+
|
|
34
|
+
**Advanced:**
|
|
35
|
+
- command, carousel, sidebar, collapsible, calendar, aspect-ratio, toggle, toggle-group
|
|
36
|
+
|
|
37
|
+
### Custom ObjectUI Components (14)
|
|
38
|
+
|
|
39
|
+
These are custom to ObjectUI and should NOT be auto-updated:
|
|
40
|
+
|
|
41
|
+
- `button-group` - Button group wrapper
|
|
42
|
+
- `calendar-view` - Full calendar implementation
|
|
43
|
+
- `chatbot` - Chatbot UI interface
|
|
44
|
+
- `combobox` - Combined select/input component
|
|
45
|
+
- `date-picker` - Date picker with calendar
|
|
46
|
+
- `empty` - Empty state component
|
|
47
|
+
- `field` - Form field wrapper with validation
|
|
48
|
+
- `filter-builder` - Advanced query builder
|
|
49
|
+
- `input-group` - Input with prefix/suffix
|
|
50
|
+
- `item` - Generic item display
|
|
51
|
+
- `kbd` - Keyboard shortcut display
|
|
52
|
+
- `spinner` - Loading spinner
|
|
53
|
+
- `timeline` - Timeline/activity feed
|
|
54
|
+
- `toaster` - Toast notification manager
|
|
55
|
+
|
|
56
|
+
## Usage
|
|
57
|
+
|
|
58
|
+
### Automated Sync (Requires Internet)
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# Check component status
|
|
62
|
+
pnpm shadcn:check
|
|
63
|
+
|
|
64
|
+
# Update a specific component
|
|
65
|
+
pnpm shadcn:update button
|
|
66
|
+
|
|
67
|
+
# Update all components
|
|
68
|
+
pnpm shadcn:update-all
|
|
69
|
+
|
|
70
|
+
# Show diff for a component
|
|
71
|
+
pnpm shadcn:diff button
|
|
72
|
+
|
|
73
|
+
# List all components
|
|
74
|
+
pnpm shadcn:list
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Manual Sync Process
|
|
78
|
+
|
|
79
|
+
If you don't have network access or prefer manual control:
|
|
80
|
+
|
|
81
|
+
1. **Visit Shadcn UI Documentation**
|
|
82
|
+
- Go to https://ui.shadcn.com/docs/components/[component-name]
|
|
83
|
+
- Click "View Code" to see the latest implementation
|
|
84
|
+
|
|
85
|
+
2. **Compare with Local Version**
|
|
86
|
+
```bash
|
|
87
|
+
# View local component
|
|
88
|
+
cat packages/components/src/ui/button.tsx
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
3. **Copy Latest Version**
|
|
92
|
+
- Copy the component code from Shadcn docs
|
|
93
|
+
- Paste into a temporary file
|
|
94
|
+
|
|
95
|
+
4. **Adjust Imports**
|
|
96
|
+
Replace Shadcn imports:
|
|
97
|
+
```typescript
|
|
98
|
+
// FROM:
|
|
99
|
+
import { cn } from "@/lib/utils"
|
|
100
|
+
import { Button } from "@/components/ui/button"
|
|
101
|
+
|
|
102
|
+
// TO:
|
|
103
|
+
import { cn } from "../lib/utils"
|
|
104
|
+
import { Button } from "./button"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
5. **Add ObjectUI Header**
|
|
108
|
+
```typescript
|
|
109
|
+
/**
|
|
110
|
+
* ObjectUI
|
|
111
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
112
|
+
*
|
|
113
|
+
* This source code is licensed under the MIT license found in the
|
|
114
|
+
* LICENSE file in the root directory of this source tree.
|
|
115
|
+
*/
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
6. **Preserve Customizations**
|
|
119
|
+
- Keep any `data-slot` attributes
|
|
120
|
+
- Keep ObjectUI-specific variants
|
|
121
|
+
- Keep dark mode enhancements
|
|
122
|
+
- Keep accessibility improvements
|
|
123
|
+
|
|
124
|
+
7. **Test the Component**
|
|
125
|
+
```bash
|
|
126
|
+
pnpm --filter @object-ui/components build
|
|
127
|
+
pnpm --filter @object-ui/components test
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Using Official Shadcn CLI
|
|
131
|
+
|
|
132
|
+
You can also use the official Shadcn CLI:
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
# Install Shadcn CLI
|
|
136
|
+
npm install -g shadcn@latest
|
|
137
|
+
|
|
138
|
+
# Initialize (if not done)
|
|
139
|
+
cd packages/components
|
|
140
|
+
npx shadcn@latest init
|
|
141
|
+
|
|
142
|
+
# Add/update a component
|
|
143
|
+
npx shadcn@latest add button --overwrite
|
|
144
|
+
|
|
145
|
+
# Add all components
|
|
146
|
+
npx shadcn@latest add --all --overwrite
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
**⚠️ Warning:** This will overwrite all ObjectUI customizations! You'll need to:
|
|
150
|
+
|
|
151
|
+
1. Review the diff carefully: `git diff src/ui/`
|
|
152
|
+
2. Restore ObjectUI copyright headers
|
|
153
|
+
3. Re-add any custom variants or styling
|
|
154
|
+
4. Re-add data-slot attributes
|
|
155
|
+
5. Test thoroughly
|
|
156
|
+
|
|
157
|
+
## Checking for Updates
|
|
158
|
+
|
|
159
|
+
### Manual Check
|
|
160
|
+
|
|
161
|
+
1. Visit [Shadcn UI GitHub](https://github.com/shadcn-ui/ui/tree/main/apps/www/registry/default/ui)
|
|
162
|
+
2. Compare file dates with last update
|
|
163
|
+
3. Check [Shadcn Releases](https://github.com/shadcn-ui/ui/releases) for changelog
|
|
164
|
+
|
|
165
|
+
### Compare Dependencies
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
# Check Radix UI versions
|
|
169
|
+
cat packages/components/package.json | grep @radix-ui
|
|
170
|
+
|
|
171
|
+
# Check latest versions
|
|
172
|
+
npm view @radix-ui/react-dialog version
|
|
173
|
+
npm view @radix-ui/react-select version
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Review Breaking Changes
|
|
177
|
+
|
|
178
|
+
Check Shadcn's changelog:
|
|
179
|
+
- [UI Changelog](https://github.com/shadcn-ui/ui/releases)
|
|
180
|
+
- [Radix UI Releases](https://github.com/radix-ui/primitives/releases)
|
|
181
|
+
|
|
182
|
+
## Common Customizations in ObjectUI
|
|
183
|
+
|
|
184
|
+
When updating components, preserve these ObjectUI patterns:
|
|
185
|
+
|
|
186
|
+
### 1. Copyright Headers
|
|
187
|
+
|
|
188
|
+
```typescript
|
|
189
|
+
/**
|
|
190
|
+
* ObjectUI
|
|
191
|
+
* Copyright (c) 2024-present ObjectStack Inc.
|
|
192
|
+
*
|
|
193
|
+
* This source code is licensed under the MIT license found in the
|
|
194
|
+
* LICENSE file in the root directory of this source tree.
|
|
195
|
+
*/
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### 2. Data Slot Attributes
|
|
199
|
+
|
|
200
|
+
```typescript
|
|
201
|
+
<div data-slot="card-header" className={...}>
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### 3. Additional Variants
|
|
205
|
+
|
|
206
|
+
```typescript
|
|
207
|
+
const buttonVariants = cva(
|
|
208
|
+
"...",
|
|
209
|
+
{
|
|
210
|
+
variants: {
|
|
211
|
+
// ObjectUI-specific variants
|
|
212
|
+
size: {
|
|
213
|
+
"icon-sm": "h-8 w-8", // Extra size variant
|
|
214
|
+
"icon-lg": "h-10 w-10", // Extra size variant
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
)
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### 4. Enhanced Dark Mode
|
|
222
|
+
|
|
223
|
+
ObjectUI may have enhanced dark mode styles:
|
|
224
|
+
|
|
225
|
+
```typescript
|
|
226
|
+
className="... dark:bg-background/95 dark:backdrop-blur-sm"
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
## Testing After Updates
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
# Type check
|
|
233
|
+
pnpm --filter @object-ui/components type-check
|
|
234
|
+
|
|
235
|
+
# Build
|
|
236
|
+
pnpm --filter @object-ui/components build
|
|
237
|
+
|
|
238
|
+
# Run tests
|
|
239
|
+
pnpm --filter @object-ui/components test
|
|
240
|
+
|
|
241
|
+
# Visual regression (if available)
|
|
242
|
+
pnpm --filter @object-ui/components storybook
|
|
243
|
+
|
|
244
|
+
# Integration test
|
|
245
|
+
pnpm test
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
## Rollback
|
|
249
|
+
|
|
250
|
+
If an update causes issues:
|
|
251
|
+
|
|
252
|
+
```bash
|
|
253
|
+
# Revert specific file
|
|
254
|
+
git checkout HEAD -- packages/components/src/ui/button.tsx
|
|
255
|
+
|
|
256
|
+
# Revert all UI components
|
|
257
|
+
git checkout HEAD -- packages/components/src/ui/
|
|
258
|
+
|
|
259
|
+
# Restore from backup (if created)
|
|
260
|
+
cp packages/components/.backup/button.tsx.* packages/components/src/ui/button.tsx
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
## Contributing
|
|
264
|
+
|
|
265
|
+
When you update a component:
|
|
266
|
+
|
|
267
|
+
1. Document the changes in CHANGELOG.md
|
|
268
|
+
2. Update the version in shadcn-components.json (add lastUpdated field)
|
|
269
|
+
3. Test with all examples
|
|
270
|
+
4. Create a PR with:
|
|
271
|
+
- Component name in title
|
|
272
|
+
- Reason for update
|
|
273
|
+
- Breaking changes (if any)
|
|
274
|
+
- Screenshots (if visual changes)
|
|
275
|
+
|
|
276
|
+
## Resources
|
|
277
|
+
|
|
278
|
+
- [Shadcn UI Docs](https://ui.shadcn.com)
|
|
279
|
+
- [Radix UI Docs](https://www.radix-ui.com)
|
|
280
|
+
- [Tailwind CSS Docs](https://tailwindcss.com)
|
|
281
|
+
- [CVA (Class Variance Authority)](https://cva.style)
|