Mercurial
view design_system/README.md @ 279:b3b547563ec7
Add Google connector service and agent wiki
Implement the C/Seobeo Google Drive and Gmail connector with encrypted OAuth storage, Zenbu authentication, browser testing, AI tool discovery, chunked HTTP decoding, and Bazel coverage. Consolidate repository guidance into progressive wiki documentation and enforce arena-first allocation for new first-party C code.
Co-authored-by: Copilot <[email protected]>
Copilot-Session: 84c338fd-0939-4bb3-b7f3-1062eb213e5d
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Mon, 17 Aug 2026 22:22:36 -0700 |
| parents | 60a876c4587a |
| children |
line wrap: on
line source
# Zenbu UI design system Zenbu UI is a dependency-free set of light-DOM Web Components and CSS tokens. It stays close to ordinary HTML: components wrap native controls and sectioning elements instead of replacing their semantics. The catalog includes native Zenbu component concepts and composition patterns. They are original dependency-free Web Components using Zenbu tokens. See [`COMPONENTS.md`](COMPONENTS.md) for the complete mapping and HTML contracts. Future HTML work follows the [`Zenbu UI wiki`](wiki/README.md). ## Catalog Run the Seobeo-backed component catalog: ```bash bazel run //design_system:dev ``` Open `http://127.0.0.1:6980`. Override the port with `DESIGN_SYSTEM_PORT`. The first-party catalog renders stories declared as HTML templates: ```html <zen-story name="Primary button"> <template> <zen-button> <button type="button">Save</button> </zen-button> </template> </zen-story> ``` The story component renders the example and its source side by side. ## Reuse Reusable assets are public Bazel targets: ```text //design_system:components //design_system:styles //design_system:web_assets ``` Applications should copy the assets while preserving `components/` and `styles/`, then load: ```html <link rel="stylesheet" href="/design-system/styles/tokens.css"> <link rel="stylesheet" href="/design-system/styles/components.css"> <script type="module" src="/design-system/components/index.js"></script> ``` Canonical tokens use the layered [`--zenbu-ref-*` / `--zenbu-sys-*` architecture](TOKENS.md) and can be overridden at an application boundary; older `--zen-*` names remain compatibility aliases. See [`COLORS.md`](COLORS.md) for color roles and theme behavior. Named [`themes`](THEMES.md) compose those tokens as Paper, Ink, and Playful experiences in addition to automatic system light/dark behavior. The [`sizing scale`](SIZING.md) defines shared `xs` through `xl` typography, control, icon, gap, and padding primitives. Use [`zen-icon`](ICONS.md) for all interface iconography. Design-system source does not use emoji, ad hoc SVG, icon fonts, or third-party icon packages. All exported JavaScript APIs use Google-style JSDoc. The policy target checks the documentation contract along with token-only colors and first-party icons. The catalog navigation is searchable with `/`, and every route is exercised at desktop and mobile widths. Form controls reset browser chrome; date selection uses Zenbu's first-party keyboard calendar. ## Native HTML contract | Component family | Native content | Attributes | Events | | --- | --- | --- | --- | | `zen-button` | direct `button` or `a` | `appearance`, `variant`, `loading`, `disabled` | native click/form events | | `zen-card` | direct `article` or `section` | `appearance`, `interactive` | native descendant events | | `zen-link` | direct `a` | `effect` | native navigation events | | `zen-alert` | message HTML | `tone`, `dismissible` | `zen-dismiss` | | `zen-field` | direct `label`, form control, help text | `appearance`, native control attributes | native input/change/invalid | | `zen-notifications` | descendant event producers | `aria-label`, `dismiss-label` | `zen-notification-action`, `zen-notification-removed` | | `zen-stack` | any HTML | `direction`, `gap` | native descendant events | | Disclosure and tabs | `details`, `summary`, buttons, sections | `multiple`, `activation` | `zen-change` | | Dialogs and menus | native `dialog`, buttons, links | `placement`, native attributes | native click/close | | Form controls | native input, select, textarea, fieldset | native control attributes | native form events | | Collections | table, article, section, scroll containers | component-specific data hooks | `zen-change`, `zen-sort`, `zen-resize` | Do not put business state into the design-system components. They provide presentation, small accessibility wiring, and interaction affordances while applications retain data and workflow ownership. Use `appearance="plain"` when an application needs component behavior without the Zenbu visual recipe. Plain buttons remove browser chrome, plain cards add no surface treatment, and plain fields keep label/validity wiring while leaving the application's control CSS untouched. `zen-link effect="paw"` adds the first-party paw decoration and hover motion while preserving the native anchor and all application-authored link styles. ### Notifications See [`NOTIFICATIONS.md`](NOTIFICATIONS.md) for the complete event contract, queue semantics, actions, timing, and accessibility behavior. Place one scope around the part of the application that owns notifications: ```html <zen-notifications aria-label="Notifications"> <main id="application"></main> </zen-notifications> ``` Any descendant can dispatch a non-composed bubbling event: ```js source.dispatchEvent(new CustomEvent("zen-notify", { bubbles: true, composed: false, detail: { version: 1, id: "deployment-complete", tone: "success", message: "Deployment complete", announcement: "polite", durationMs: 5000, }, })); ``` Use `zen-dismiss-notification` with `{ version: 1, id }` to dismiss by ID. Actions contain only an opaque token and label; clicking dispatches `zen-notification-action`. Tokens are held in private component state and never written to DOM attributes. The component renders three records and retains up to 20 additional queued records. ## Tests ```bash bazel test //design_system/test:catalog_test bazel build //design_system:design_system_server_bundle ```