Mercurial
annotate design_system/COMPONENTS.md @ 256:30c2196d03d4
[site] Integrate Zenbu themes and components
Co-authored-by: Copilot <[email protected]>
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Tue, 04 Aug 2026 16:49:01 -0700 |
| parents | 2b6e732087ff |
| children | 60a876c4587a |
| rev | line source |
|---|---|
|
254
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
1 # Zenbu UI component contracts |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
2 |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
3 Zenbu UI covers the 65 concepts in the shadcn/ui component catalog without |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
4 copying its React, Radix, or third-party runtime. Every Zenbu component uses |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
5 light DOM and keeps the corresponding native HTML control visible. |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
6 |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
7 ## Inventory |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
8 |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
9 | shadcn/ui concept | Zenbu UI element | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
10 | --- | --- | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
11 | Accordion | `zen-accordion` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
12 | Alert | `zen-alert` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
13 | Alert Dialog | `zen-alert-dialog` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
14 | Aspect Ratio | `zen-aspect-ratio` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
15 | Attachment | `zen-attachment` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
16 | Avatar | `zen-avatar` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
17 | Badge | `zen-badge` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
18 | Breadcrumb | `zen-breadcrumb` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
19 | Bubble | `zen-bubble` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
20 | Button | `zen-button` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
21 | Button Group | `zen-button-group` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
22 | Calendar | `zen-calendar` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
23 | Card | `zen-card` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
24 | Carousel | `zen-carousel` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
25 | Chart | `zen-chart` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
26 | Checkbox | `zen-checkbox` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
27 | Collapsible | `zen-collapsible` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
28 | Combobox | `zen-combobox` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
29 | Command | `zen-command` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
30 | Context Menu | `zen-context-menu` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
31 | Data Table | `zen-data-table` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
32 | Date Picker | `zen-date-picker` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
33 | Dialog | `zen-dialog` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
34 | Direction | `zen-direction` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
35 | Drawer | `zen-drawer` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
36 | Dropdown Menu | `zen-dropdown-menu` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
37 | Empty | `zen-empty` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
38 | Field | `zen-field` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
39 | Form | `zen-form` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
40 | Hover Card | `zen-hover-card` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
41 | Input | `zen-input` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
42 | Input Group | `zen-input-group` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
43 | Input OTP | `zen-input-otp` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
44 | Item | `zen-item` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
45 | Kbd | `zen-kbd` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
46 | Label | `zen-label` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
47 | Marker | `zen-marker` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
48 | Menubar | `zen-menubar` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
49 | Message | `zen-message` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
50 | Message Scroller | `zen-message-scroller` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
51 | Native Select | `zen-native-select` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
52 | Navigation Menu | `zen-navigation-menu` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
53 | Pagination | `zen-pagination` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
54 | Popover | `zen-popover` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
55 | Progress | `zen-progress` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
56 | Radio Group | `zen-radio-group` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
57 | Resizable | `zen-resizable` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
58 | Scroll Area | `zen-scroll-area` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
59 | Select | `zen-select` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
60 | Separator | `zen-separator` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
61 | Sheet | `zen-sheet` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
62 | Sidebar | `zen-sidebar` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
63 | Skeleton | `zen-skeleton` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
64 | Slider | `zen-slider` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
65 | Sonner | `zen-notifications` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
66 | Spinner | `zen-spinner` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
67 | Switch | `zen-switch` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
68 | Table | `zen-table` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
69 | Tabs | `zen-tabs` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
70 | Textarea | `zen-textarea` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
71 | Toast (deprecated) | `zen-notifications` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
72 | Toggle | `zen-toggle` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
73 | Toggle Group | `zen-toggle-group` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
74 | Tooltip | `zen-tooltip` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
75 | Typography | `zen-typography` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
76 |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
77 `zen-stack` remains a Zenbu-specific layout primitive in addition to this |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
78 catalog. |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
79 |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
80 ## Native HTML rules |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
81 |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
82 - Dialog, alert dialog, sheet, and drawer contain a real `dialog`. |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
83 - Accordion and collapsible contain `details` and `summary`. |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
84 - Input, textarea, select, checkbox, radio, switch, and slider contain their |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
85 corresponding native form controls. |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
86 - Calendar and date picker keep a native date value for form submission while |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
87 rendering the first-party keyboard month grid. The browser date-picker chrome |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
88 is not exposed. |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
89 - Table and data table contain a real `table`; pagination and breadcrumbs use |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
90 native links in a `nav`. |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
91 - Button-like components contain native `button` or `a` elements. |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
92 - Components do not own application data, network requests, routing, or |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
93 persistence. |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
94 |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
95 ## Interactive hooks |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
96 |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
97 | Elements | Required light-DOM hooks | Emitted event | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
98 | --- | --- | --- | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
99 | `zen-dialog`, `zen-alert-dialog`, `zen-sheet`, `zen-drawer` | `[data-zen-trigger]`, `dialog`, optional `[data-zen-close]` | native `close` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
100 | `zen-popover`, `zen-hover-card`, `zen-tooltip` | `[data-zen-trigger]`, `[data-zen-content]` | native toggle/focus events | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
101 | Menu elements | `[data-zen-trigger]`, `[role="menu"]`, `[role="menuitem"]` | native click | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
102 | `zen-tabs` | `[role="tablist"]`, `[role="tab"]`, `[role="tabpanel"]` | `zen-change` with `{ value }` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
103 | `zen-toggle` | direct `button` | `zen-change` with `{ pressed }` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
104 | `zen-toggle-group` | direct buttons with `value` | `zen-change` with `{ values }` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
105 | `zen-sidebar` | `[data-zen-sidebar-trigger]`, `[data-zen-sidebar-panel]` | `zen-change` with `{ open }` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
106 | `zen-combobox` | `input`, `[role="listbox"]`, `[role="option"]` | native `input`/`change` and `zen-change` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
107 | `zen-command` | `input`, `[role="menu"]`, `[role="menuitem"]` | `zen-command` with `{ value }` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
108 | `zen-input-otp` | one native input, optional `[data-zen-otp-slots]` | `zen-complete` with `{ value }` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
109 | `zen-calendar`, `zen-date-picker` | native date input plus generated month grid | native `input`/`change` and `zen-change` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
110 | `zen-carousel` | `[data-zen-viewport]`, `[data-zen-prev]`, `[data-zen-next]` | `zen-change` with `{ index }` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
111 | `zen-resizable` | two `[data-zen-panel]` elements and `[data-zen-handle]` | `zen-resize` with `{ percent }` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
112 | `zen-data-table` | `button[data-zen-sort]` and matching cell `data-key` values | `zen-sort` | |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
113 |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
114 All custom events bubble but remain inside their current DOM tree unless a |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
115 component-specific document says otherwise. Application code should listen at |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
116 the nearest owning feature boundary. |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
117 |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
118 ## Catalog |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
119 |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
120 Every inventory row has a route at `/components/<name>`, a rendered example, |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
121 and copyable HTML source in the Seobeo-backed catalog: |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
122 |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
123 ```bash |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
124 bazel run //design_system:dev |
|
2b6e732087ff
[ui] Add complete native component catalog
MrJuneJune <me@mrjunejune.com>
parents:
diff
changeset
|
125 ``` |