@adia-ai/a2ui-corpus 0.4.1 → 0.4.3
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 +28 -0
- package/README.md +8 -0
- package/catalog-a2ui_0_9.json +227 -6
- package/catalog-a2ui_0_9_rules.txt +5 -0
- package/chunks/_index.json +573 -561
- package/chunks/agent-activity-feed.json +3 -3
- package/chunks/agent-canvas-shell.json +3 -3
- package/chunks/agent-reasoning-collapsed.json +3 -3
- package/chunks/auth-account-deleted-actions.json +1 -1
- package/chunks/auth-account-deleted.json +1 -1
- package/chunks/auth-card-content.json +1 -1
- package/chunks/auth-card-header.json +1 -1
- package/chunks/auth-email-entry.json +1 -1
- package/chunks/auth-email-verify-confirm.json +1 -1
- package/chunks/auth-email-verify.json +1 -1
- package/chunks/auth-forbidden-actions.json +1 -1
- package/chunks/auth-forbidden.json +1 -1
- package/chunks/auth-invite-actions.json +1 -1
- package/chunks/auth-invite-team-card.json +1 -1
- package/chunks/auth-link-expired-form.json +1 -1
- package/chunks/auth-link-expired.json +1 -1
- package/chunks/auth-locked-account.json +1 -1
- package/chunks/auth-locked-recovery-options.json +1 -1
- package/chunks/auth-mfa-enrollment-submit.json +1 -1
- package/chunks/auth-mfa-enrollment.json +1 -1
- package/chunks/auth-mfa-fallback-actions.json +1 -1
- package/chunks/auth-mfa-recovery.json +1 -1
- package/chunks/auth-new-password-form.json +1 -1
- package/chunks/auth-new-password.json +1 -1
- package/chunks/auth-oauth-fallback-actions.json +1 -1
- package/chunks/auth-oauth-interstitial.json +1 -1
- package/chunks/auth-password-challenge.json +1 -1
- package/chunks/auth-password-reset-form.json +1 -1
- package/chunks/auth-password-reset.json +1 -1
- package/chunks/auth-profile-form.json +1 -1
- package/chunks/auth-profile-setup.json +1 -1
- package/chunks/auth-reset-sent.json +1 -1
- package/chunks/auth-session-expired-actions.json +1 -1
- package/chunks/auth-session-expired.json +1 -1
- package/chunks/auth-signin-card-email.json +1 -1
- package/chunks/auth-signin-card-magic-link.json +1 -1
- package/chunks/auth-signin-card-mfa.json +1 -1
- package/chunks/auth-signin-card-otp.json +1 -1
- package/chunks/auth-signin-card-password.json +1 -1
- package/chunks/auth-signin-card-recovery.json +1 -1
- package/chunks/auth-signout-actions.json +1 -1
- package/chunks/auth-signout.json +1 -1
- package/chunks/auth-signup-email-entry.json +1 -1
- package/chunks/auth-signup-entry.json +1 -1
- package/chunks/auth-signup-social-auths.json +1 -1
- package/chunks/auth-signup-verify.json +1 -1
- package/chunks/auth-social-auths.json +1 -1
- package/chunks/auth-sso-providers.json +1 -1
- package/chunks/auth-sso-required.json +1 -1
- package/chunks/auth-team-invite.json +1 -1
- package/chunks/chat-page-shell.json +3 -3
- package/chunks/chat-streaming-surface.json +3 -3
- package/chunks/command-palette.json +3 -3
- package/chunks/commerce-pricing-tiers.json +1 -1
- package/chunks/conversion-funnel-6step.json +3 -3
- package/chunks/dashboard-acquisition-panel.json +1 -1
- package/chunks/dashboard-admin-page.json +1 -1
- package/chunks/dashboard-audience-kpis.json +1 -1
- package/chunks/dashboard-audience-panel.json +1 -1
- package/chunks/dashboard-behavior-panel.json +1 -1
- package/chunks/dashboard-chart-recent.json +1 -1
- package/chunks/dashboard-cohort-retention.json +1 -1
- package/chunks/dashboard-conversion-panel.json +1 -1
- package/chunks/dashboard-country-list.json +1 -1
- package/chunks/dashboard-filter-bar.json +1 -1
- package/chunks/dashboard-funnel.json +1 -1
- package/chunks/dashboard-kpi-grid.json +1 -1
- package/chunks/dashboard-notifications-feed.json +1 -1
- package/chunks/dashboard-notifications-panel.json +1 -1
- package/chunks/dashboard-overview-panel.json +1 -1
- package/chunks/dashboard-page-header.json +1 -1
- package/chunks/dashboard-pages-table.json +1 -1
- package/chunks/dashboard-quick-actions.json +1 -1
- package/chunks/dashboard-reports-panel.json +1 -1
- package/chunks/dashboard-reports-table.json +1 -1
- package/chunks/dashboard-spark-cards.json +1 -1
- package/chunks/dashboard-storage-card.json +1 -1
- package/chunks/dashboard-tabs.json +1 -1
- package/chunks/dashboard-team-actions-storage.json +1 -1
- package/chunks/dashboard-team-list.json +1 -1
- package/chunks/dashboard-traffic-channels.json +1 -1
- package/chunks/dashboard-transactions-table.json +1 -1
- package/chunks/destructive-confirm-modal.json +3 -3
- package/chunks/doc-editor-shell.json +3 -3
- package/chunks/drawer-2fa-key.json +1 -1
- package/chunks/drawer-2fa-sms.json +1 -1
- package/chunks/drawer-2fa-totp.json +1 -1
- package/chunks/drawer-cancel-sub.json +1 -1
- package/chunks/drawer-change-plan.json +1 -1
- package/chunks/drawer-custom-roles.json +1 -1
- package/chunks/drawer-data-start.json +1 -1
- package/chunks/drawer-delete-account.json +1 -1
- package/chunks/drawer-delete-workspace.json +1 -1
- package/chunks/drawer-discord.json +1 -1
- package/chunks/drawer-figma.json +1 -1
- package/chunks/drawer-first-dashboard.json +1 -1
- package/chunks/drawer-gcal.json +1 -1
- package/chunks/drawer-github.json +1 -1
- package/chunks/drawer-invite.json +1 -1
- package/chunks/drawer-payment-method.json +1 -1
- package/chunks/drawer-report.json +1 -1
- package/chunks/drawer-revoke-session.json +1 -1
- package/chunks/drawer-role.json +1 -1
- package/chunks/drawer-slack.json +1 -1
- package/chunks/drawer-smtp.json +1 -1
- package/chunks/drawer-source.json +1 -1
- package/chunks/drawer-transaction.json +1 -1
- package/chunks/editor-code-pane.json +3 -3
- package/chunks/editor-page-shell.json +3 -3
- package/chunks/editor-preview-pane.json +3 -3
- package/chunks/error-404-actions.json +1 -1
- package/chunks/error-404.json +1 -1
- package/chunks/error-500-actions.json +1 -1
- package/chunks/error-500.json +1 -1
- package/chunks/error-maintenance-actions.json +1 -1
- package/chunks/error-maintenance.json +1 -1
- package/chunks/error-page-shell.json +3 -3
- package/chunks/form-page-shell.json +3 -3
- package/chunks/gallery-page-shell.json +3 -3
- package/chunks/kanban-board-3col.json +3 -3
- package/chunks/kanban-page-shell.json +3 -3
- package/chunks/marketing-hero-cta.json +3 -3
- package/chunks/marketing-page-shell.json +3 -3
- package/chunks/member-edit-drawer.json +1 -1
- package/chunks/onb-completion.json +1 -1
- package/chunks/onb-extension-install.json +1 -1
- package/chunks/onb-hero-welcome.json +1 -1
- package/chunks/onb-import-picker.json +1 -1
- package/chunks/onb-mobile-handoff.json +1 -1
- package/chunks/onb-notification-prefs.json +1 -1
- package/chunks/onb-persona-picker.json +1 -1
- package/chunks/onb-provider-tiles.json +1 -1
- package/chunks/onb-settings-review.json +1 -1
- package/chunks/onb-step-footer.json +1 -1
- package/chunks/onb-step-header.json +1 -1
- package/chunks/onb-step-progress.json +1 -1
- package/chunks/onb-step-shell.json +1 -1
- package/chunks/onb-story-pane.json +1 -1
- package/chunks/onb-tutorial-steps.json +1 -1
- package/chunks/playground-a2ui.json +1 -1
- package/chunks/playground-app-shell.json +4 -4
- package/chunks/playground-chat.json +4 -4
- package/chunks/playground-construct-canvas.json +4 -6
- package/chunks/playground-gen-ui.json +2 -2
- package/chunks/playground-render-preview.json +1 -1
- package/chunks/playground-streams-bridge.json +1 -1
- package/chunks/playground-table-toolbar.json +3 -3
- package/chunks/reg-address-form.json +1 -1
- package/chunks/reg-billing-card.json +1 -1
- package/chunks/reg-brand-scrape.json +1 -1
- package/chunks/reg-departments-toggle.json +1 -1
- package/chunks/reg-extended-profile.json +1 -1
- package/chunks/reg-final-done.json +1 -1
- package/chunks/reg-helpdesk-grid.json +1 -1
- package/chunks/reg-import-picker.json +1 -1
- package/chunks/reg-integrations-grid.json +1 -1
- package/chunks/reg-invite-form.json +1 -1
- package/chunks/reg-legal-entity.json +1 -1
- package/chunks/reg-org-chart-review.json +1 -1
- package/chunks/reg-profile-identity.json +1 -1
- package/chunks/reg-step-footer.json +1 -1
- package/chunks/reg-step-header.json +1 -1
- package/chunks/reg-step-progress.json +1 -1
- package/chunks/reg-step-shell.json +1 -1
- package/chunks/reg-story-pane.json +1 -1
- package/chunks/reg-success-summary.json +1 -1
- package/chunks/reg-team-size.json +1 -1
- package/chunks/reg-usecase-picker.json +1 -1
- package/chunks/reg-workspace-name.json +1 -1
- package/chunks/settings-appearance.json +26 -0
- package/chunks/settings-billing-plan.json +1 -1
- package/chunks/settings-general-form.json +1 -1
- package/chunks/settings-integrations.json +1 -1
- package/chunks/settings-members-invite.json +1 -1
- package/chunks/settings-notifications.json +3 -3
- package/chunks/settings-page-shell.json +3 -3
- package/chunks/settings-profile-security.json +1 -1
- package/chunks/user-profile-card.json +3 -3
- package/chunks/users-table-badge.json +3 -3
- package/package.json +1 -1
- package/fragments/layout/auth-card-header.json +0 -59
package/CHANGELOG.md
CHANGED
|
@@ -19,6 +19,34 @@ gap registry. Consumed by `@adia-ai/a2ui-retrieval` and
|
|
|
19
19
|
|
|
20
20
|
_No pending changes._
|
|
21
21
|
|
|
22
|
+
## [0.4.3] - 2026-05-11
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
|
|
26
|
+
- **`catalog-a2ui_0_9.json` regenerated** to pick up the new `locale` prop on `<input-ui type="number">` from `@adia-ai/web-components@0.4.3`. The yaml `props:` entry drives retrieval signal for locale-aware numeric-input intents.
|
|
27
|
+
- **`chunks/` re-harvested** (181 files touched). New chunk `settings-appearance.json` — multi-instance record covering both `catalog/ui-patterns/app/settings-appearance/` (primary=card-ui, standalone block pattern composing `<theme-panel>`) and `apps/saas/app/settings-page/` (primary=div, Workspace-level Appearance section). Plus a sweep of `captured_at` timestamps + `source:` field updates from the ADR-0026 reorg follow-up. Harvest now produces 180 unique chunks (was 179 in v0.4.2; +1 from the new `settings-appearance` pattern).
|
|
28
|
+
- **Harvester scope fix** — `scripts/build/harvest-chunks.mjs` `SOURCES = ['site/pages', 'apps']` hadn't been updated after ADR-0026 split `apps/` → `apps/` + `playgrounds/` + `catalog/` on 2026-05-10. Every `npm run harvest:chunks` since silently dropped 26 chunks (179 unique → 152 visible) without warning. Fix adds both new sibling directories to SOURCES. (Note: harvest-chunks.mjs lives in the repo's `scripts/build/` tree, not the package; this corpus regen captures the FULL chunk set restored by the fix. Lesson captured as Category E imperative-drift in user-memory entry `feedback_build_script_sources_list_after_rename.md`.)
|
|
29
|
+
|
|
30
|
+
### Lockstep
|
|
31
|
+
|
|
32
|
+
9-package coordinated PATCH cut to v0.4.3. Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry). Rides alongside `@adia-ai/web-components` v0.4.3 (input-ui locale rewrite) and `@adia-ai/a2ui-compose` + `@adia-ai/a2ui-retrieval` v0.4.3 (process.env browser-compat fix). See root [CHANGELOG.md `## [0.4.3]`](../../../CHANGELOG.md).
|
|
33
|
+
|
|
34
|
+
## [0.4.2] - 2026-05-11
|
|
35
|
+
|
|
36
|
+
### Changed
|
|
37
|
+
|
|
38
|
+
- `catalog-a2ui_0_9.json` regenerated to pick up the 5 new `<input-ui type="number">` examples from `@adia-ai/web-components@0.4.2`: `quantity-stepper`, `price-with-currency`, `weight-with-unit`, `percent-bounded`, `temperature-negative`. The yaml `examples[]` entries drive retrieval signal for numeric-input intents (quantity / price / weight / percent / temperature).
|
|
39
|
+
- `catalog-a2ui_0_9_rules.txt` regenerated alongside.
|
|
40
|
+
- `chunks/` — `playground-app-shell.json` re-harvested after the `<theme-panel>` consumer migration (Phase 3 of theme-panel work): embedded HTML now shows `<theme-panel slot="content" parametric presets scheme-toggle></theme-panel>` instead of the ~30-line inline `<div id="theme-panel">` block. Chunk NAME `playground-app-shell` preserved as a stable retrieval identifier per the 2026-05-10 §22 lesson. 27 additional chunk files touched in this window for `source:` field updates following the ADR-0026 reorg (`apps/<X>/` → `playgrounds/<X>/` or `catalog/<X>/`); chunk NAMES unchanged.
|
|
41
|
+
|
|
42
|
+
### Removed
|
|
43
|
+
|
|
44
|
+
- `fragments/layout/auth-card-header.json` — fragment retired (was the foundational auth-flow chunk header before migration to `<auth-card-content>` + `<auth-card-header>` chunk-level shape; instance_count had reconciled to 0 in v0.4.1, no longer present in any composition). Now archived at `.brain/archive/2026-Q2/retired-fragments/auth-card-header.md` per the v0.4.1 follow-up.
|
|
45
|
+
|
|
46
|
+
### Lockstep
|
|
47
|
+
|
|
48
|
+
9-package coordinated PATCH cut to v0.4.2 (per [`docs/specs/package-architecture.md` § 15](../../../docs/specs/package-architecture.md#15-versioning-policy)). Internal `@adia-ai/*` dep ranges stay at `^0.4.0` (patch-cut asymmetry — `^0.4.0` covers `0.4.x` under semver). Rides alongside `@adia-ai/web-components@0.4.2` (input-ui type=number rewrite) and `@adia-ai/web-modules@0.4.2` (editor-sidebar width mirror). See root [CHANGELOG.md `## [0.4.2]`](../../../CHANGELOG.md) for the cut narrative.
|
|
49
|
+
|
|
22
50
|
## [0.4.1] - 2026-05-10
|
|
23
51
|
|
|
24
52
|
### Changed
|
package/README.md
CHANGED
|
@@ -11,6 +11,14 @@ fixtures. Pure data plus the scripts that maintain it. No runtime.
|
|
|
11
11
|
> registry, streams, wiring),
|
|
12
12
|
> [`@adia-ai/a2ui-mcp`](../mcp) for the MCP server.
|
|
13
13
|
|
|
14
|
+
## Install
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm install @adia-ai/a2ui-corpus
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Pure data — typically consumed transitively by [`@adia-ai/a2ui-compose`](../compose) and [`@adia-ai/a2ui-mcp`](../mcp), which list it as a runtime dependency. Direct installs are useful for offline eval tooling or building bespoke retrieval layers.
|
|
21
|
+
|
|
14
22
|
## Dependency direction
|
|
15
23
|
|
|
16
24
|
```
|
package/catalog-a2ui_0_9.json
CHANGED
|
@@ -7550,7 +7550,7 @@
|
|
|
7550
7550
|
},
|
|
7551
7551
|
"Input": {
|
|
7552
7552
|
"title": "Input",
|
|
7553
|
-
"description": "Text input field with contenteditable
|
|
7553
|
+
"description": "Text input field with contenteditable surface. Supports prefix/suffix icons, label, form participation, and a `type=\"number\"` mode that renders [+]/[-] stepper buttons, numeric input filtering, and ARIA spinbutton semantics — no native `<input type=\"number\">` under the hood. Password type uses a native `<input>` (only path that still wraps native, for `-webkit-text-security` disc masking).",
|
|
7554
7554
|
"type": "object",
|
|
7555
7555
|
"allOf": [
|
|
7556
7556
|
{
|
|
@@ -7562,7 +7562,7 @@
|
|
|
7562
7562
|
],
|
|
7563
7563
|
"properties": {
|
|
7564
7564
|
"type": {
|
|
7565
|
-
"description": "Input type
|
|
7565
|
+
"description": "Input type. `password` wraps a native `<input>` for disc masking; `number` renders a contenteditable + stepper buttons (no native input). All other types use plain contenteditable.",
|
|
7566
7566
|
"type": "string",
|
|
7567
7567
|
"enum": [
|
|
7568
7568
|
"text",
|
|
@@ -7604,11 +7604,26 @@
|
|
|
7604
7604
|
"type": "string",
|
|
7605
7605
|
"default": ""
|
|
7606
7606
|
},
|
|
7607
|
+
"locale": {
|
|
7608
|
+
"description": "BCP-47 locale tag for `type=\"number\"`, e.g. `de-DE`, `fr-FR`, `en-IN`. When set, the input accepts both `.` AND the locale's decimal separator (e.g. `,` in de-DE), uses `Intl.NumberFormat` for display, and groups thousands on blur (e.g. en-US `1,234,567.89`, de-DE `1.234.567,89`). On focus, the input reverts to ungrouped form for easy editing. `.value` always stores the ungrouped, locale-decimal form so `Number(#toCanonical(v))` round-trips. Default empty = en-US-equivalent path (no behavior change).",
|
|
7609
|
+
"type": "string",
|
|
7610
|
+
"default": ""
|
|
7611
|
+
},
|
|
7612
|
+
"max": {
|
|
7613
|
+
"description": "Maximum numeric value. Applies when `type=\"number\"`. Clamps + drives aria-valuemax + the [+] button's disabled state.",
|
|
7614
|
+
"type": "number",
|
|
7615
|
+
"default": null
|
|
7616
|
+
},
|
|
7607
7617
|
"maxlength": {
|
|
7608
7618
|
"description": "Maximum character length for validation",
|
|
7609
7619
|
"type": "number",
|
|
7610
7620
|
"default": null
|
|
7611
7621
|
},
|
|
7622
|
+
"min": {
|
|
7623
|
+
"description": "Minimum numeric value. Applies when `type=\"number\"`. Clamps + drives aria-valuemin + the [-] button's disabled state.",
|
|
7624
|
+
"type": "number",
|
|
7625
|
+
"default": null
|
|
7626
|
+
},
|
|
7612
7627
|
"minlength": {
|
|
7613
7628
|
"description": "Minimum character length for validation",
|
|
7614
7629
|
"type": "number",
|
|
@@ -7629,6 +7644,11 @@
|
|
|
7629
7644
|
"type": "string",
|
|
7630
7645
|
"default": ""
|
|
7631
7646
|
},
|
|
7647
|
+
"precision": {
|
|
7648
|
+
"description": "Decimal places to display + clamp to, when `type=\"number\"`. Overrides the implicit decimal-count from `step` — e.g. `step=1 precision=2` formats \"10.00\".",
|
|
7649
|
+
"type": "number",
|
|
7650
|
+
"default": null
|
|
7651
|
+
},
|
|
7632
7652
|
"prefix": {
|
|
7633
7653
|
"description": "Prefix text or icon rendered before the text surface (e.g., unit label, search icon)",
|
|
7634
7654
|
"type": "string",
|
|
@@ -7644,13 +7664,18 @@
|
|
|
7644
7664
|
"type": "boolean",
|
|
7645
7665
|
"default": false
|
|
7646
7666
|
},
|
|
7667
|
+
"step": {
|
|
7668
|
+
"description": "Stepper increment for `type=\"number\"`. Drives ↑/↓ ArrowUp/Down + [+]/[-] button magnitude. Also determines decimal-count for value formatting unless `precision` is set.",
|
|
7669
|
+
"type": "number",
|
|
7670
|
+
"default": 1
|
|
7671
|
+
},
|
|
7647
7672
|
"suffix": {
|
|
7648
7673
|
"description": "Suffix text rendered after the text surface (e.g., unit like 'kg')",
|
|
7649
7674
|
"type": "string",
|
|
7650
7675
|
"default": ""
|
|
7651
7676
|
},
|
|
7652
7677
|
"value": {
|
|
7653
|
-
"description": "Current input value, synced with contenteditable text surface",
|
|
7678
|
+
"description": "Current input value, synced with contenteditable text surface. For `type=\"number\"`, this is the formatted numeric string; read `el.valueAsNumber` for the parsed Number.",
|
|
7654
7679
|
"type": "string",
|
|
7655
7680
|
"default": ""
|
|
7656
7681
|
}
|
|
@@ -7664,16 +7689,41 @@
|
|
|
7664
7689
|
"category": "input",
|
|
7665
7690
|
"events": {
|
|
7666
7691
|
"change": {
|
|
7667
|
-
"description": "Fired on blur
|
|
7692
|
+
"description": "Fired on blur, Enter, or a stepper-button click (bubbles)"
|
|
7668
7693
|
},
|
|
7669
7694
|
"input": {
|
|
7670
|
-
"description": "Fired on each keystroke
|
|
7695
|
+
"description": "Fired on each keystroke or stepper-button increment (bubbles)"
|
|
7671
7696
|
},
|
|
7672
7697
|
"submit": {
|
|
7673
|
-
"description": "Fired when
|
|
7698
|
+
"description": "Fired when Enter commits the value."
|
|
7674
7699
|
}
|
|
7675
7700
|
},
|
|
7676
7701
|
"examples": [
|
|
7702
|
+
{
|
|
7703
|
+
"description": "Number input with [+]/[-] stepper buttons, min/max bounds, and a quantity label. Use for product quantity, item count, or any bounded integer input.",
|
|
7704
|
+
"a2ui": "[\n {\"id\": \"root\", \"component\": \"Field\", \"label\": \"Quantity\",\n \"children\": [\"qty\"]},\n {\"id\": \"qty\", \"component\": \"Input\", \"type\": \"number\",\n \"name\": \"quantity\", \"value\": \"1\", \"min\": 0, \"max\": 99, \"step\": 1}\n]",
|
|
7705
|
+
"name": "quantity-stepper"
|
|
7706
|
+
},
|
|
7707
|
+
{
|
|
7708
|
+
"description": "Currency number input with $ prefix, 2-decimal precision, and step 0.01. The stepper buttons increment by one cent.",
|
|
7709
|
+
"a2ui": "[\n {\"id\": \"root\", \"component\": \"Field\", \"label\": \"Price\",\n \"children\": [\"price\"]},\n {\"id\": \"price\", \"component\": \"Input\", \"type\": \"number\",\n \"name\": \"price\", \"value\": \"9.99\", \"min\": 0, \"step\": 0.01,\n \"precision\": 2, \"prefix\": \"$\"}\n]",
|
|
7710
|
+
"name": "price-with-currency"
|
|
7711
|
+
},
|
|
7712
|
+
{
|
|
7713
|
+
"description": "Weight number input with a kg suffix and 0.1 step for decigram precision.",
|
|
7714
|
+
"a2ui": "[\n {\"id\": \"root\", \"component\": \"Field\", \"label\": \"Weight\",\n \"children\": [\"weight\"]},\n {\"id\": \"weight\", \"component\": \"Input\", \"type\": \"number\",\n \"name\": \"weight\", \"value\": \"70\", \"min\": 0, \"max\": 500,\n \"step\": 0.1, \"suffix\": \"kg\"}\n]",
|
|
7715
|
+
"name": "weight-with-unit"
|
|
7716
|
+
},
|
|
7717
|
+
{
|
|
7718
|
+
"description": "Percent number input bounded 0..100 with a % suffix.",
|
|
7719
|
+
"a2ui": "[\n {\"id\": \"root\", \"component\": \"Field\", \"label\": \"Discount\",\n \"children\": [\"pct\"]},\n {\"id\": \"pct\", \"component\": \"Input\", \"type\": \"number\",\n \"name\": \"discount\", \"value\": \"25\", \"min\": 0, \"max\": 100,\n \"step\": 5, \"suffix\": \"%\"}\n]",
|
|
7720
|
+
"name": "percent-bounded"
|
|
7721
|
+
},
|
|
7722
|
+
{
|
|
7723
|
+
"description": "Number input allowing negative values, e.g. temperature offset.",
|
|
7724
|
+
"a2ui": "[\n {\"id\": \"root\", \"component\": \"Field\", \"label\": \"Temperature offset\",\n \"children\": [\"temp\"]},\n {\"id\": \"temp\", \"component\": \"Input\", \"type\": \"number\",\n \"name\": \"temp\", \"value\": \"0\", \"min\": -100, \"max\": 100,\n \"step\": 1, \"suffix\": \"°C\"}\n]",
|
|
7725
|
+
"name": "temperature-negative"
|
|
7726
|
+
},
|
|
7677
7727
|
{
|
|
7678
7728
|
"description": "Chat interface with message bubbles containing avatar and text pairs, plus an input footer.",
|
|
7679
7729
|
"a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"children\": [\n \"hdr\",\n \"sec\",\n \"ftr\"\n ]\n },\n {\n \"id\": \"hdr\",\n \"component\": \"Header\",\n \"children\": [\n \"title\"\n ]\n },\n {\n \"id\": \"title\",\n \"component\": \"Text\",\n \"slot\": \"heading\",\n \"textContent\": \"Chat\"\n },\n {\n \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\": [\n \"messages\"\n ]\n },\n {\n \"id\": \"messages\",\n \"component\": \"Column\",\n \"gap\": \"3\",\n \"children\": [\n \"msg1\",\n \"msg2\",\n \"msg3\",\n \"msg4\"\n ]\n },\n {\n \"id\": \"msg1\",\n \"component\": \"Row\",\n \"gap\": \"2\",\n \"children\": [\n \"a1\",\n \"t1\"\n ]\n },\n {\n \"id\": \"a1\",\n \"component\": \"Avatar\",\n \"name\": \"User\",\n \"size\": \"sm\"\n },\n {\n \"id\": \"t1\",\n \"component\": \"Text\",\n \"variant\": \"body\",\n \"textContent\": \"Hello! Can you help me with something?\"\n },\n {\n \"id\": \"msg2\",\n \"component\": \"Row\",\n \"gap\": \"2\",\n \"children\": [\n \"a2\",\n \"t2\"\n ]\n },\n {\n \"id\": \"a2\",\n \"component\": \"Avatar\",\n \"name\": \"Assistant\",\n \"size\": \"sm\"\n },\n {\n \"id\": \"t2\",\n \"component\": \"Text\",\n \"variant\": \"body\",\n \"textContent\": \"Of course! I'd be happy to help. What do you need?\"\n },\n {\n \"id\": \"msg3\",\n \"component\": \"Row\",\n \"gap\": \"2\",\n \"children\": [\n \"a3\",\n \"t3\"\n ]\n },\n {\n \"id\": \"a3\",\n \"component\": \"Avatar\",\n \"name\": \"User\",\n \"size\": \"sm\"\n },\n {\n \"id\": \"t3\",\n \"component\": \"Text\",\n \"variant\": \"body\",\n \"textContent\": \"I need to build a dashboard layout.\"\n },\n {\n \"id\": \"msg4\",\n \"component\": \"Row\",\n \"gap\": \"2\",\n \"children\": [\n \"a4\",\n \"t4\"\n ]\n },\n {\n \"id\": \"a4\",\n \"component\": \"Avatar\",\n \"name\": \"Assistant\",\n \"size\": \"sm\"\n },\n {\n \"id\": \"t4\",\n \"component\": \"Text\",\n \"variant\": \"body\",\n \"textContent\": \"Great choice! Let me suggest some patterns for that.\"\n },\n {\n \"id\": \"ftr\",\n \"component\": \"Footer\",\n \"children\": [\n \"input-row\"\n ]\n },\n {\n \"id\": \"input-row\",\n \"component\": \"Row\",\n \"gap\": \"2\",\n \"children\": [\n \"chat-input\",\n \"send-btn\"\n ]\n },\n {\n \"id\": \"chat-input\",\n \"component\": \"Input\",\n \"placeholder\": \"Type a message...\"\n },\n {\n \"id\": \"send-btn\",\n \"component\": \"Button\",\n \"text\": \"Send\",\n \"icon\": \"send\",\n \"variant\": \"primary\"\n }\n]",
|
|
@@ -13898,6 +13948,177 @@
|
|
|
13898
13948
|
"version": 1
|
|
13899
13949
|
}
|
|
13900
13950
|
},
|
|
13951
|
+
"ThemePanel": {
|
|
13952
|
+
"title": "ThemePanel",
|
|
13953
|
+
"description": "Module-tier appearance-preferences control surface. Owns the three knobs\nof the AdiaUI theming contract: [data-theme=<slug>] named themes,\n--a-density / --a-radius-k parametric overrides, and color-scheme\nlight/dark switching, plus optional localStorage persistence behind a\nsmall attribute API.\n\nDrops into any consumer's <popover-ui slot=\"content\"> (the canonical\ncomposition) or directly into a sidebar section. Eight named themes\nship by default; section visibility flips on/off via boolean attributes\n([parametric], [presets], [scheme-toggle]).\n\nPromoted from the duplicated <div id=\"theme-panel\"> block in site/ and\nplaygrounds/admin-shell/ — see docs/specs/theme-panel-module.md.\n",
|
|
13954
|
+
"type": "object",
|
|
13955
|
+
"allOf": [
|
|
13956
|
+
{
|
|
13957
|
+
"$ref": "#/$defs/ComponentCommon"
|
|
13958
|
+
},
|
|
13959
|
+
{
|
|
13960
|
+
"$ref": "#/$defs/CatalogComponentCommon"
|
|
13961
|
+
}
|
|
13962
|
+
],
|
|
13963
|
+
"properties": {
|
|
13964
|
+
"active-density": {
|
|
13965
|
+
"description": "Reflected — mirrors the current --a-density value on the target\nelement. Stringified number.\n",
|
|
13966
|
+
"type": "string",
|
|
13967
|
+
"default": ""
|
|
13968
|
+
},
|
|
13969
|
+
"active-radius": {
|
|
13970
|
+
"description": "Reflected — mirrors the current --a-radius-k value on the target\nelement. Stringified number.\n",
|
|
13971
|
+
"type": "string",
|
|
13972
|
+
"default": ""
|
|
13973
|
+
},
|
|
13974
|
+
"active-scheme": {
|
|
13975
|
+
"description": "Reflected — the resolved color-scheme (auto collapsed to a\nconcrete value). Either \"light\" or \"dark\".\n",
|
|
13976
|
+
"type": "string",
|
|
13977
|
+
"default": ""
|
|
13978
|
+
},
|
|
13979
|
+
"active-theme": {
|
|
13980
|
+
"description": "Reflected — the currently selected theme slug. Empty string when\nunset (default theme). Read-only externally; use .apply({theme})\nto change.\n",
|
|
13981
|
+
"type": "string",
|
|
13982
|
+
"default": ""
|
|
13983
|
+
},
|
|
13984
|
+
"component": {
|
|
13985
|
+
"const": "ThemePanel"
|
|
13986
|
+
},
|
|
13987
|
+
"parametric": {
|
|
13988
|
+
"description": "Renders the density + radius slider block. Sliders bind to\n--a-density and --a-radius-k on the target element.\n",
|
|
13989
|
+
"type": "boolean",
|
|
13990
|
+
"default": false
|
|
13991
|
+
},
|
|
13992
|
+
"persist": {
|
|
13993
|
+
"description": "Persists selections to localStorage. Defaults to ephemeral so\nplaygrounds and embedded demos do not silently mutate a user's\ndocs-shell preferences.\n",
|
|
13994
|
+
"type": "boolean",
|
|
13995
|
+
"default": false
|
|
13996
|
+
},
|
|
13997
|
+
"presets": {
|
|
13998
|
+
"description": "Renders the compact / reset / spacious preset row. Each preset\napplies a (density, radius) pair; \"default\" also clears the\n[data-theme] attribute.\n",
|
|
13999
|
+
"type": "boolean",
|
|
14000
|
+
"default": false
|
|
14001
|
+
},
|
|
14002
|
+
"scheme": {
|
|
14003
|
+
"description": "Initial color-scheme. \"auto\" follows prefers-color-scheme via a\nmatchMedia listener; user clicks on the scheme toggle promote to\nan explicit light or dark choice.\n",
|
|
14004
|
+
"type": "string",
|
|
14005
|
+
"enum": [
|
|
14006
|
+
"light",
|
|
14007
|
+
"dark",
|
|
14008
|
+
"auto"
|
|
14009
|
+
],
|
|
14010
|
+
"default": "auto"
|
|
14011
|
+
},
|
|
14012
|
+
"scheme-toggle": {
|
|
14013
|
+
"description": "Renders an integrated light/dark <segmented-ui> at the top of the\npanel. When absent, the panel omits scheme entirely — consumers\ncan still drive scheme via the .apply({scheme}) public method.\n",
|
|
14014
|
+
"type": "boolean",
|
|
14015
|
+
"default": false
|
|
14016
|
+
},
|
|
14017
|
+
"storage-prefix": {
|
|
14018
|
+
"description": "Namespace for localStorage keys when [persist] is set. Four keys\nare written: {prefix}theme, {prefix}scheme, {prefix}density,\n{prefix}radius.\n",
|
|
14019
|
+
"type": "string",
|
|
14020
|
+
"default": "adia-theme-"
|
|
14021
|
+
},
|
|
14022
|
+
"target": {
|
|
14023
|
+
"description": "CSS selector for the element that receives [data-theme] and\n--a-density / --a-radius-k writes. Defaults to :root (the\n<html> element). Scoped targets are useful for preview-pane\ndemos.\n",
|
|
14024
|
+
"type": "string",
|
|
14025
|
+
"default": ":root"
|
|
14026
|
+
},
|
|
14027
|
+
"themes": {
|
|
14028
|
+
"description": "Space-separated list of theme slugs to render as buttons. Author\nmay restrict ([themes=\"default ocean\"]) or extend. Tolerant —\nunknown slugs render a button; clicking applies [data-theme=slug]\nregardless of whether themes.css has a matching block.\n",
|
|
14029
|
+
"type": "string",
|
|
14030
|
+
"default": "default ocean forest sunset lavender rose slate midnight"
|
|
14031
|
+
}
|
|
14032
|
+
},
|
|
14033
|
+
"required": [
|
|
14034
|
+
"component"
|
|
14035
|
+
],
|
|
14036
|
+
"unevaluatedProperties": false,
|
|
14037
|
+
"x-adiaui": {
|
|
14038
|
+
"anti_patterns": [],
|
|
14039
|
+
"category": "layout",
|
|
14040
|
+
"events": {
|
|
14041
|
+
"theme-change": {
|
|
14042
|
+
"description": "Bubbles when any user-visible state changes (theme click, slider\ninput, preset click, scheme flip, reset). One event per change.\nNo event on auto-rehydrate-from-storage at boot.\n",
|
|
14043
|
+
"detail": {
|
|
14044
|
+
"theme": "string",
|
|
14045
|
+
"density": "number",
|
|
14046
|
+
"radius": "number",
|
|
14047
|
+
"scheme": "string",
|
|
14048
|
+
"source": "string"
|
|
14049
|
+
}
|
|
14050
|
+
}
|
|
14051
|
+
},
|
|
14052
|
+
"examples": [],
|
|
14053
|
+
"keywords": [
|
|
14054
|
+
"theme",
|
|
14055
|
+
"theme-panel",
|
|
14056
|
+
"palette",
|
|
14057
|
+
"density",
|
|
14058
|
+
"radius",
|
|
14059
|
+
"scheme",
|
|
14060
|
+
"dark-mode",
|
|
14061
|
+
"light-mode",
|
|
14062
|
+
"color-scheme",
|
|
14063
|
+
"preferences",
|
|
14064
|
+
"settings",
|
|
14065
|
+
"color",
|
|
14066
|
+
"appearance",
|
|
14067
|
+
"skin"
|
|
14068
|
+
],
|
|
14069
|
+
"name": "ThemePanel",
|
|
14070
|
+
"related": [
|
|
14071
|
+
"Popover",
|
|
14072
|
+
"Button",
|
|
14073
|
+
"Slider",
|
|
14074
|
+
"Field",
|
|
14075
|
+
"Divider",
|
|
14076
|
+
"Text",
|
|
14077
|
+
"Segmented",
|
|
14078
|
+
"AdminShell"
|
|
14079
|
+
],
|
|
14080
|
+
"slots": {},
|
|
14081
|
+
"states": [
|
|
14082
|
+
{
|
|
14083
|
+
"description": "Default — panel rendered, awaiting input.",
|
|
14084
|
+
"name": "idle"
|
|
14085
|
+
},
|
|
14086
|
+
{
|
|
14087
|
+
"description": "[persist] is set; selections write to localStorage under\n[storage-prefix].\n",
|
|
14088
|
+
"attribute": "persist",
|
|
14089
|
+
"name": "persisted"
|
|
14090
|
+
},
|
|
14091
|
+
{
|
|
14092
|
+
"description": "[scheme=\"auto\"] and no user override this session; a\nprefers-color-scheme listener reapplies on system flip.\n",
|
|
14093
|
+
"name": "scheme-auto"
|
|
14094
|
+
}
|
|
14095
|
+
],
|
|
14096
|
+
"synonyms": {
|
|
14097
|
+
"theme": [
|
|
14098
|
+
"palette",
|
|
14099
|
+
"skin",
|
|
14100
|
+
"appearance"
|
|
14101
|
+
],
|
|
14102
|
+
"density": [
|
|
14103
|
+
"compactness",
|
|
14104
|
+
"spacing-scale"
|
|
14105
|
+
],
|
|
14106
|
+
"radius": [
|
|
14107
|
+
"corner-roundness",
|
|
14108
|
+
"border-radius"
|
|
14109
|
+
],
|
|
14110
|
+
"scheme": [
|
|
14111
|
+
"mode",
|
|
14112
|
+
"color-scheme",
|
|
14113
|
+
"dark-mode"
|
|
14114
|
+
]
|
|
14115
|
+
},
|
|
14116
|
+
"tag": "theme-panel",
|
|
14117
|
+
"tokens": {},
|
|
14118
|
+
"traits": [],
|
|
14119
|
+
"version": 1
|
|
14120
|
+
}
|
|
14121
|
+
},
|
|
13901
14122
|
"Timeline": {
|
|
13902
14123
|
"title": "Timeline",
|
|
13903
14124
|
"description": "Timeline and step wizard. Two modes: timeline (per-item state) and steps (parent-driven).",
|
|
@@ -106,3 +106,8 @@
|
|
|
106
106
|
- simple-shell is the bespoke shell for thin / minimal page surfaces. Use when the page has no nav rail, no chrome bars, no command palette. For full app surfaces use admin-shell; for chat surfaces use chat-shell; for design tools use editor-shell.
|
|
107
107
|
- Compose with <simple-hero> (optional top hero strip) and <simple-content> (main article body). Both are CSS-only structural children — no JS, no state.
|
|
108
108
|
|
|
109
|
+
## ThemePanel
|
|
110
|
+
- theme-panel is the canonical appearance-preferences popover. Compose inside a <popover-ui slot="content"> in the topbar of a shell (admin, chat, editor, simple) when the page exposes user theming. Avoid hardcoding it as a shell child — placement is the consumer's call.
|
|
111
|
+
- Use [persist] for the docs surface or a real product app; omit [persist] for playgrounds and embedded demos so state stays ephemeral. The default is ephemeral.
|
|
112
|
+
- Add boolean attributes [parametric], [presets], [scheme-toggle] to enable sections; the minimum panel is the theme button grid.
|
|
113
|
+
|