@adia-ai/a2ui-corpus 0.6.36 → 0.6.38
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 +14 -0
- package/catalog-a2ui_0_9.json +1729 -78
- package/catalog-a2ui_0_9_rules.txt +62 -4
- package/chunk-embeddings.json +1 -1
- package/chunks/_index.json +30 -4
- package/chunks/accordion-settings.json +1 -1
- package/chunks/agent-activity-feed.json +1 -1
- package/chunks/agent-canvas-shell.json +1 -1
- package/chunks/agent-command-palette-search.json +1 -1
- package/chunks/agent-reasoning-collapsed.json +1 -1
- package/chunks/agent-tool-call-result.json +1 -1
- package/chunks/agent-trace-timeline.json +1 -1
- package/chunks/ai-streaming-response.json +1 -1
- package/chunks/alert-banner.json +1 -1
- 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/avatar-group-overflow.json +1 -1
- package/chunks/breadcrumb-nav.json +1 -1
- package/chunks/calendar-month-view.json +1 -1
- package/chunks/card-header-with-description.json +1 -1
- package/chunks/chart-with-filter-pills.json +1 -1
- package/chunks/chat-page-shell.json +1 -1
- package/chunks/chat-streaming-surface.json +1 -1
- package/chunks/color-picker-swatches.json +1 -1
- package/chunks/command-palette.json +1 -1
- package/chunks/commerce-pricing-tiers.json +1 -1
- package/chunks/comparison-table.json +1 -1
- package/chunks/conversion-funnel-6step.json +1 -1
- 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/date-time-picker-form.json +1 -1
- package/chunks/destructive-confirm-modal.json +1 -1
- package/chunks/divider-text-label.json +1 -1
- package/chunks/doc-editor-shell.json +1 -1
- 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 +202 -33
- 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 +1 -1
- package/chunks/editor-page-shell.json +1 -1
- package/chunks/editor-preview-pane.json +1 -1
- package/chunks/empty-state-danger.json +1 -1
- package/chunks/empty-state-minimal.json +1 -1
- package/chunks/empty-state-warning.json +1 -1
- package/chunks/empty-state.json +1 -1
- 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 +1 -1
- package/chunks/faq-accordion.json +1 -1
- package/chunks/file-upload-dnd.json +1 -1
- package/chunks/footer-multi-column.json +1 -1
- package/chunks/footer-primary-only.json +1 -1
- package/chunks/form-page-shell.json +1 -1
- package/chunks/gallery-page-shell.json +1 -1
- package/chunks/hero-section-split.json +1 -1
- package/chunks/icon-text-row.json +1 -1
- package/chunks/image-carousel.json +1 -1
- package/chunks/image-tile.json +1 -1
- package/chunks/image-upload-preview.json +1 -1
- package/chunks/import-mapping-flow.json +934 -0
- package/chunks/inventory-list-stock.json +1 -1
- package/chunks/kanban-board-3col.json +1 -1
- package/chunks/kanban-page-shell.json +1 -1
- package/chunks/kbd-shortcuts.json +1 -1
- package/chunks/labeled-textarea.json +1 -1
- package/chunks/leaderboard-table.json +1 -1
- package/chunks/linked-record-row.json +1 -1
- package/chunks/marketing-hero-cta.json +1 -1
- package/chunks/marketing-page-shell.json +1 -1
- package/chunks/masonry-gallery.json +1 -1
- package/chunks/member-edit-drawer.json +1 -1
- package/chunks/metadata-description-list.json +1 -1
- package/chunks/multi-step-wizard.json +1 -1
- package/chunks/notification-toast-row.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/pagination-controls.json +1 -1
- package/chunks/playground-a2ui.json +1 -1
- package/chunks/playground-app-shell.json +1 -1
- package/chunks/playground-chat.json +1 -1
- package/chunks/playground-construct-canvas.json +1 -1
- package/chunks/playground-css-channel.json +1 -1
- package/chunks/playground-gen-ui.json +1 -1
- package/chunks/playground-render-preview.json +1 -1
- package/chunks/playground-streams-bridge.json +1 -1
- package/chunks/playground-table-toolbar.json +1 -1
- package/chunks/popover-with-content.json +1 -1
- package/chunks/progress-tracker-milestones.json +1 -1
- package/chunks/real-time-metrics-dashboard.json +1 -1
- 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/responsive-grid-pattern.json +1 -1
- package/chunks/responsive-kpi-grid.json +1 -1
- package/chunks/responsive-row-pattern.json +1 -1
- package/chunks/responsive-wrap-at-pattern.json +1 -1
- package/chunks/search-with-filters.json +1 -1
- package/chunks/section-with-stack.json +1 -1
- package/chunks/select-multiple-preselected.json +1 -1
- package/chunks/settings-admin-page.json +1 -1
- package/chunks/settings-appearance.json +1 -1
- 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 +1 -1
- package/chunks/settings-page-shell.json +1 -1
- package/chunks/settings-profile-security.json +1 -1
- package/chunks/sidebar-collapsible-nav.json +1 -1
- package/chunks/slider-range-controls.json +1 -1
- package/chunks/tabs-with-panels.json +1 -1
- package/chunks/testimonial-grid.json +1 -1
- package/chunks/text-card.json +1 -1
- package/chunks/timeline-events.json +1 -1
- package/chunks/toolbar-icons.json +1 -1
- package/chunks/toolbar-tooltips.json +1 -1
- package/chunks/user-identity-row.json +1 -1
- package/chunks/user-profile-card.json +1 -1
- package/chunks/users-table-badge.json +1 -1
- package/chunks/video-player-controls.json +1 -1
- package/package.json +1 -1
package/catalog-a2ui_0_9.json
CHANGED
|
@@ -336,6 +336,9 @@
|
|
|
336
336
|
"action": {
|
|
337
337
|
"description": "§206 (v0.5.7): action buttons inside a custom header (e.g. Copy /\nDownload / settings). Children placed at `[slot=\"action\"]` (or\n`[slot=\"actions\"]`, or marked `[data-no-toggle]`) are excluded from\nthe toggle-on-click cascade — clicking them fires their own handler\nwithout also toggling the section."
|
|
338
338
|
},
|
|
339
|
+
"body": {
|
|
340
|
+
"description": "The section's collapsible content. Renders below the header; hidden when `[open]` is unset. Author-fills with prose, lists, embedded forms, or any rich markup the panel needs."
|
|
341
|
+
},
|
|
339
342
|
"header": {
|
|
340
343
|
"description": "Custom header content. By default `[text]` renders as a plain header\nlabel, but a `[slot=\"header\"]` override lets consumers author rich\nheaders (icon + title + action buttons + caret)."
|
|
341
344
|
}
|
|
@@ -418,7 +421,11 @@
|
|
|
418
421
|
"MenuItem",
|
|
419
422
|
"Button"
|
|
420
423
|
],
|
|
421
|
-
"slots": {
|
|
424
|
+
"slots": {
|
|
425
|
+
"icon": {
|
|
426
|
+
"description": "Override the [icon] glyph with a custom slotted element (custom icon-ui, image, avatar). Mutually exclusive with the [icon] attribute — slot child wins."
|
|
427
|
+
}
|
|
428
|
+
},
|
|
422
429
|
"states": [],
|
|
423
430
|
"status": "stable",
|
|
424
431
|
"synonyms": {
|
|
@@ -2829,6 +2836,16 @@
|
|
|
2829
2836
|
"description": "Badge display text. Renderer routes this to the `text` attribute via CSS attr(text) on ::after.",
|
|
2830
2837
|
"$ref": "#/$defs/DynamicString"
|
|
2831
2838
|
},
|
|
2839
|
+
"tone": {
|
|
2840
|
+
"description": "Fill style — orthogonal to [variant]. Badge defaults to `muted`\n(quiet metadata is the primitive's identity — counts, IDs, status\npills in dense rows). Three values:\n - `muted` (default) — tinted bg + scheme-paired text. Same as\n the existing family-variant rules.\n - `solid` — saturated bg + on-strong text. Use for hero badges\n where the badge IS the state (e.g. a single inline error). The\n existing `primary` variant is a shortcut for accent + solid.\n - `outline` — transparent bg + family-colored border + family-\n colored text. Lightest visual weight; good in dense data rows.\nVocabulary mirrors `<tag-ui>` (which defaults to solid, given its\ndifferent role as filter / autocomplete chip).\n",
|
|
2841
|
+
"type": "string",
|
|
2842
|
+
"enum": [
|
|
2843
|
+
"muted",
|
|
2844
|
+
"solid",
|
|
2845
|
+
"outline"
|
|
2846
|
+
],
|
|
2847
|
+
"default": "muted"
|
|
2848
|
+
},
|
|
2832
2849
|
"variant": {
|
|
2833
2850
|
"description": "Semantic color variant.",
|
|
2834
2851
|
"type": "string",
|
|
@@ -3368,6 +3385,125 @@
|
|
|
3368
3385
|
"version": 1
|
|
3369
3386
|
}
|
|
3370
3387
|
},
|
|
3388
|
+
"Blockquote": {
|
|
3389
|
+
"title": "Blockquote",
|
|
3390
|
+
"description": "Styled quotation block with a left visual indicator (border rule) +\nitalic body text + optional `cite` attribution line. Use for pull-quotes,\ntestimonials, or inline citations within prose. The default visual\nfollows the prose typography family — pair with `<text-ui>` body\nvariants inside, or pass raw text in the default slot. The optional\n[cite] attribute (or [slot=cite]) renders a small attribution line\nbelow the quote prefixed with an em-dash. Semantic blockquote element\nwith `role=\"blockquote\"` implied via tag name (do NOT wrap in a native\n`<blockquote>` — that produces nested-blockquote semantics).\n",
|
|
3391
|
+
"type": "object",
|
|
3392
|
+
"allOf": [
|
|
3393
|
+
{
|
|
3394
|
+
"$ref": "#/$defs/ComponentCommon"
|
|
3395
|
+
},
|
|
3396
|
+
{
|
|
3397
|
+
"$ref": "#/$defs/CatalogComponentCommon"
|
|
3398
|
+
}
|
|
3399
|
+
],
|
|
3400
|
+
"properties": {
|
|
3401
|
+
"cite": {
|
|
3402
|
+
"description": "Source attribution shown beneath the quote (small, muted, em-dash\nprefix). For richer attribution (links, multi-line), use the\n`[slot=\"cite\"]` content slot instead — when both are set, the slot\ncontent wins. Plain-string convenience prop for the common case.\n",
|
|
3403
|
+
"type": "string",
|
|
3404
|
+
"default": ""
|
|
3405
|
+
},
|
|
3406
|
+
"component": {
|
|
3407
|
+
"const": "Blockquote"
|
|
3408
|
+
}
|
|
3409
|
+
},
|
|
3410
|
+
"required": [
|
|
3411
|
+
"component"
|
|
3412
|
+
],
|
|
3413
|
+
"unevaluatedProperties": false,
|
|
3414
|
+
"x-adiaui": {
|
|
3415
|
+
"anti_patterns": [],
|
|
3416
|
+
"category": "display",
|
|
3417
|
+
"composes": [],
|
|
3418
|
+
"events": {},
|
|
3419
|
+
"examples": [
|
|
3420
|
+
{
|
|
3421
|
+
"description": "Pull-quote with em-dash attribution.",
|
|
3422
|
+
"a2ui": "[\n {\n \"id\": \"q\",\n \"component\": \"Blockquote\",\n \"cite\": \"Steve Jobs, Stanford Commencement, 2005\",\n \"content\": \"Stay hungry. Stay foolish.\"\n }\n]\n",
|
|
3423
|
+
"name": "default"
|
|
3424
|
+
},
|
|
3425
|
+
{
|
|
3426
|
+
"description": "Blockquote with a linked citation via slot.",
|
|
3427
|
+
"a2ui": "[\n {\n \"id\": \"q\",\n \"component\": \"Blockquote\",\n \"children\": [\"body\", \"src\"]\n },\n {\n \"id\": \"body\",\n \"component\": \"Text\",\n \"textContent\": \"The best way to predict the future is to invent it.\"\n },\n {\n \"id\": \"src\",\n \"component\": \"Link\",\n \"slot\": \"cite\",\n \"href\": \"https://en.wikipedia.org/wiki/Alan_Kay\",\n \"text\": \"Alan Kay (1971)\"\n }\n]\n",
|
|
3428
|
+
"name": "rich-attribution"
|
|
3429
|
+
}
|
|
3430
|
+
],
|
|
3431
|
+
"keywords": [
|
|
3432
|
+
"blockquote",
|
|
3433
|
+
"quote",
|
|
3434
|
+
"pull-quote",
|
|
3435
|
+
"quotation",
|
|
3436
|
+
"testimonial",
|
|
3437
|
+
"citation",
|
|
3438
|
+
"cite"
|
|
3439
|
+
],
|
|
3440
|
+
"name": "UIBlockquote",
|
|
3441
|
+
"related": [
|
|
3442
|
+
"text",
|
|
3443
|
+
"link",
|
|
3444
|
+
"card"
|
|
3445
|
+
],
|
|
3446
|
+
"slots": {
|
|
3447
|
+
"default": {
|
|
3448
|
+
"description": "The quote body. Plain text or composed `<text-ui>` / inline elements."
|
|
3449
|
+
},
|
|
3450
|
+
"cite": {
|
|
3451
|
+
"description": "Optional citation override. Use for rich attribution (linked source,\nperson + role pairing) where [cite] string is insufficient.\n"
|
|
3452
|
+
}
|
|
3453
|
+
},
|
|
3454
|
+
"states": [
|
|
3455
|
+
{
|
|
3456
|
+
"description": "Default, ready for reading.",
|
|
3457
|
+
"name": "idle"
|
|
3458
|
+
}
|
|
3459
|
+
],
|
|
3460
|
+
"status": "stable",
|
|
3461
|
+
"synonyms": {
|
|
3462
|
+
"quote": [
|
|
3463
|
+
"blockquote",
|
|
3464
|
+
"quotation",
|
|
3465
|
+
"pull-quote"
|
|
3466
|
+
],
|
|
3467
|
+
"testimonial": [
|
|
3468
|
+
"blockquote",
|
|
3469
|
+
"quote"
|
|
3470
|
+
]
|
|
3471
|
+
},
|
|
3472
|
+
"tag": "blockquote-ui",
|
|
3473
|
+
"tokens": {
|
|
3474
|
+
"--blockquote-cite-fg": {
|
|
3475
|
+
"description": "Citation text color (muted).",
|
|
3476
|
+
"default": "var(--a-fg-muted)"
|
|
3477
|
+
},
|
|
3478
|
+
"--blockquote-cite-size": {
|
|
3479
|
+
"description": "Citation font size.",
|
|
3480
|
+
"default": "var(--a-ui-sm)"
|
|
3481
|
+
},
|
|
3482
|
+
"--blockquote-fg": {
|
|
3483
|
+
"description": "Quote text color.",
|
|
3484
|
+
"default": "var(--a-fg-subtle)"
|
|
3485
|
+
},
|
|
3486
|
+
"--blockquote-pad-block": {
|
|
3487
|
+
"description": "Vertical padding inside the blockquote.",
|
|
3488
|
+
"default": "var(--a-space-2)"
|
|
3489
|
+
},
|
|
3490
|
+
"--blockquote-pad-inline": {
|
|
3491
|
+
"description": "Inline padding between the rule and the quote text.",
|
|
3492
|
+
"default": "var(--a-space-3)"
|
|
3493
|
+
},
|
|
3494
|
+
"--blockquote-rule-color": {
|
|
3495
|
+
"description": "Color of the left indicator rule.",
|
|
3496
|
+
"default": "var(--a-border-strong)"
|
|
3497
|
+
},
|
|
3498
|
+
"--blockquote-rule-width": {
|
|
3499
|
+
"description": "Width of the left indicator rule.",
|
|
3500
|
+
"default": "2px"
|
|
3501
|
+
}
|
|
3502
|
+
},
|
|
3503
|
+
"traits": [],
|
|
3504
|
+
"version": 1
|
|
3505
|
+
}
|
|
3506
|
+
},
|
|
3371
3507
|
"Breadcrumb": {
|
|
3372
3508
|
"title": "Breadcrumb",
|
|
3373
3509
|
"description": "Breadcrumb trail with auto-inserted separators. Supports a leading icon (first child) and an overflow popover that collapses middle crumbs into a `…` menu.",
|
|
@@ -3899,6 +4035,21 @@
|
|
|
3899
4035
|
"type": "string",
|
|
3900
4036
|
"default": "Select date..."
|
|
3901
4037
|
},
|
|
4038
|
+
"placement": {
|
|
4039
|
+
"description": "Popover placement relative to the trigger. Default `bottom` centers the calendar panel under the trigger (ADR-0034 Rule 2 — calendar panel wider than trigger).",
|
|
4040
|
+
"type": "string",
|
|
4041
|
+
"enum": [
|
|
4042
|
+
"top",
|
|
4043
|
+
"bottom",
|
|
4044
|
+
"left",
|
|
4045
|
+
"right",
|
|
4046
|
+
"top-start",
|
|
4047
|
+
"top-end",
|
|
4048
|
+
"bottom-start",
|
|
4049
|
+
"bottom-end"
|
|
4050
|
+
],
|
|
4051
|
+
"default": "bottom"
|
|
4052
|
+
},
|
|
3902
4053
|
"value": {
|
|
3903
4054
|
"description": "Selected date (ISO string)",
|
|
3904
4055
|
"type": "string",
|
|
@@ -4165,7 +4316,23 @@
|
|
|
4165
4316
|
"alert",
|
|
4166
4317
|
"skeleton"
|
|
4167
4318
|
],
|
|
4168
|
-
"slots": {
|
|
4319
|
+
"slots": {
|
|
4320
|
+
"description": {
|
|
4321
|
+
"description": "Optional descriptive text beneath the heading. Renders in the header slot at body-subtle typography. Use for short metadata lines (timestamp, author, status sentence)."
|
|
4322
|
+
},
|
|
4323
|
+
"action": {
|
|
4324
|
+
"description": "Trailing action cluster in the header (e.g. icon-buttons, menu trigger, more-options). Aligns to the header's flex-end edge."
|
|
4325
|
+
},
|
|
4326
|
+
"action-leading": {
|
|
4327
|
+
"description": "Leading action cluster in the header (e.g. back button, switcher, breadcrumb-context). Aligns to the header's flex-start edge, before the icon/heading column."
|
|
4328
|
+
},
|
|
4329
|
+
"heading": {
|
|
4330
|
+
"description": "Card title. Renders in the header slot with title typography. Typically a short noun phrase or document/object name."
|
|
4331
|
+
},
|
|
4332
|
+
"icon": {
|
|
4333
|
+
"description": "Optional leading icon for the card header (status / brand / type marker). Renders next to the heading. Use `<icon-ui name=\"…\">` or any inline icon element."
|
|
4334
|
+
}
|
|
4335
|
+
},
|
|
4169
4336
|
"states": [
|
|
4170
4337
|
{
|
|
4171
4338
|
"description": "Default, ready for interaction.",
|
|
@@ -6220,7 +6387,7 @@
|
|
|
6220
6387
|
"default": false
|
|
6221
6388
|
},
|
|
6222
6389
|
"placement": {
|
|
6223
|
-
"description": "Popover placement relative to the trigger.",
|
|
6390
|
+
"description": "Popover placement relative to the trigger. Default `bottom` centers the color-picker panel under the swatch button (ADR-0034 Rule 2 — panel wider than trigger).",
|
|
6224
6391
|
"type": "string",
|
|
6225
6392
|
"enum": [
|
|
6226
6393
|
"top",
|
|
@@ -6232,7 +6399,7 @@
|
|
|
6232
6399
|
"bottom-start",
|
|
6233
6400
|
"bottom-end"
|
|
6234
6401
|
],
|
|
6235
|
-
"default": "bottom
|
|
6402
|
+
"default": "bottom"
|
|
6236
6403
|
},
|
|
6237
6404
|
"value": {
|
|
6238
6405
|
"description": "Current color as a string in the active [format].",
|
|
@@ -7249,9 +7416,24 @@
|
|
|
7249
7416
|
"Text"
|
|
7250
7417
|
],
|
|
7251
7418
|
"slots": {
|
|
7419
|
+
"description": {
|
|
7420
|
+
"description": "Override the stamped description line below the heading. Author-fills with richer markup when the [description] attribute isn't enough."
|
|
7421
|
+
},
|
|
7252
7422
|
"default": {
|
|
7253
7423
|
"description": "Optional rich content rendered above the description — supplementary\nlists, hints, or markup the [description] string can't carry.\n"
|
|
7254
7424
|
},
|
|
7425
|
+
"body": {
|
|
7426
|
+
"description": "Dialog body region (between header and footer). For rich content — paragraphs, lists, embedded form fields. Distinct from [slot=\"default\"] which sits above [description] in the header region."
|
|
7427
|
+
},
|
|
7428
|
+
"footer": {
|
|
7429
|
+
"description": "Wholesale override of the stamped footer (Cancel / Confirm action cluster). Use only for full custom-footer markup; otherwise the host's [cancel-text] / [confirm-text] / [confirm-variant] attrs drive the default footer rendering."
|
|
7430
|
+
},
|
|
7431
|
+
"header": {
|
|
7432
|
+
"description": "Wholesale override of the stamped header (icon + heading + description cluster). Use only when full custom-header markup is needed; otherwise prefer the granular icon/heading/description slot overrides."
|
|
7433
|
+
},
|
|
7434
|
+
"heading": {
|
|
7435
|
+
"description": "Override the stamped heading. Author-fillable when richer markup than the plain [text] string is needed (inline links, code spans, etc.)."
|
|
7436
|
+
},
|
|
7255
7437
|
"icon": {
|
|
7256
7438
|
"description": "Override the [icon] glyph with a custom node (e.g. a colored\n<icon-ui>, an image, or arbitrary markup). Mutually exclusive\nwith [icon]; if a slot child is present, the [icon] attribute\nis ignored.\n"
|
|
7257
7439
|
}
|
|
@@ -7306,6 +7488,163 @@
|
|
|
7306
7488
|
"version": 1
|
|
7307
7489
|
}
|
|
7308
7490
|
},
|
|
7491
|
+
"ContextMenu": {
|
|
7492
|
+
"title": "ContextMenu",
|
|
7493
|
+
"description": "Right-click activated menu — the OS-native context-menu pattern as a\nweb component. Distinct from `menu-ui` (which is button-triggered):\nsame item shape (`menu-item-ui` children), different trigger surface\n(`contextmenu` event), and pointer-anchored positioning instead of\nelement-anchored. Pattern: WAI-APG Menu.\n\nTwo binding modes:\n **A. Wrap.** Default-slot child becomes the target:\n `<context-menu-ui><my-table>...</my-table>...items</context-menu-ui>`.\n **B. Selector.** Point at one or more existing elements via [for]:\n `<context-menu-ui for=\"#my-table\">...items</context-menu-ui>`.\n\nOn `contextmenu` event on a target: `preventDefault()`, position the\nmenu at the pointer coords, show via Popover API. Touch long-press\n(configurable via [long-press-ms]) does the same. Shift+F10 / Menu\nkey opens at the focused target's center for keyboard users.\n",
|
|
7494
|
+
"type": "object",
|
|
7495
|
+
"allOf": [
|
|
7496
|
+
{
|
|
7497
|
+
"$ref": "#/$defs/ComponentCommon"
|
|
7498
|
+
},
|
|
7499
|
+
{
|
|
7500
|
+
"$ref": "#/$defs/CatalogComponentCommon"
|
|
7501
|
+
}
|
|
7502
|
+
],
|
|
7503
|
+
"properties": {
|
|
7504
|
+
"component": {
|
|
7505
|
+
"const": "ContextMenu"
|
|
7506
|
+
},
|
|
7507
|
+
"for": {
|
|
7508
|
+
"description": "CSS selector(s) for target element(s). Empty = use default-slot child.",
|
|
7509
|
+
"type": "string",
|
|
7510
|
+
"default": ""
|
|
7511
|
+
},
|
|
7512
|
+
"long-press-ms": {
|
|
7513
|
+
"description": "Long-press duration (ms) on touch devices to open the menu.",
|
|
7514
|
+
"type": "number",
|
|
7515
|
+
"default": 500
|
|
7516
|
+
},
|
|
7517
|
+
"open": {
|
|
7518
|
+
"description": "Programmatic open state. Set true to open at target center.",
|
|
7519
|
+
"type": "boolean",
|
|
7520
|
+
"default": false
|
|
7521
|
+
}
|
|
7522
|
+
},
|
|
7523
|
+
"required": [
|
|
7524
|
+
"component"
|
|
7525
|
+
],
|
|
7526
|
+
"unevaluatedProperties": false,
|
|
7527
|
+
"x-adiaui": {
|
|
7528
|
+
"anti_patterns": [
|
|
7529
|
+
{
|
|
7530
|
+
"fix": "Wrap a target: `<context-menu-ui><my-target></my-target>...items</context-menu-ui>` OR point at one: `<context-menu-ui for=\"#my-target\">...items</context-menu-ui>`.",
|
|
7531
|
+
"why": "No target binding — the menu never opens.",
|
|
7532
|
+
"wrong": "<context-menu-ui>...just items...</context-menu-ui>"
|
|
7533
|
+
}
|
|
7534
|
+
],
|
|
7535
|
+
"category": "container",
|
|
7536
|
+
"composes": [
|
|
7537
|
+
"menu-item-ui"
|
|
7538
|
+
],
|
|
7539
|
+
"events": {
|
|
7540
|
+
"context-menu-close": {
|
|
7541
|
+
"description": "Fired when the menu closes (item-select / outside-click / Escape).",
|
|
7542
|
+
"detail": {
|
|
7543
|
+
"reason": {
|
|
7544
|
+
"description": "\"select\" | \"outside\" | \"escape\"",
|
|
7545
|
+
"type": "string"
|
|
7546
|
+
}
|
|
7547
|
+
}
|
|
7548
|
+
},
|
|
7549
|
+
"context-menu-open": {
|
|
7550
|
+
"description": "Fired when the menu opens (right-click / long-press / keyboard).",
|
|
7551
|
+
"detail": {
|
|
7552
|
+
"target": {
|
|
7553
|
+
"description": "The target element the menu was opened on.",
|
|
7554
|
+
"type": "Element"
|
|
7555
|
+
},
|
|
7556
|
+
"x": {
|
|
7557
|
+
"description": "Pointer x coord (viewport-relative); null for keyboard activation.",
|
|
7558
|
+
"type": "number"
|
|
7559
|
+
},
|
|
7560
|
+
"y": {
|
|
7561
|
+
"description": "Pointer y coord; null for keyboard activation.",
|
|
7562
|
+
"type": "number"
|
|
7563
|
+
}
|
|
7564
|
+
}
|
|
7565
|
+
},
|
|
7566
|
+
"context-menu-select": {
|
|
7567
|
+
"description": "Fired when an item is activated. Same shape as menu-ui's `action` event.",
|
|
7568
|
+
"detail": {
|
|
7569
|
+
"text": {
|
|
7570
|
+
"description": "Selected item's text.",
|
|
7571
|
+
"type": "string"
|
|
7572
|
+
},
|
|
7573
|
+
"value": {
|
|
7574
|
+
"description": "Selected item's value.",
|
|
7575
|
+
"type": "string"
|
|
7576
|
+
}
|
|
7577
|
+
}
|
|
7578
|
+
}
|
|
7579
|
+
},
|
|
7580
|
+
"examples": [
|
|
7581
|
+
{
|
|
7582
|
+
"description": "Right-click a file row for Open / Rename / Delete.",
|
|
7583
|
+
"a2ui": "[\n { \"id\": \"root\", \"component\": \"ContextMenu\", \"children\": [\"target\", \"item-open\", \"item-rename\", \"div\", \"item-delete\"] },\n { \"id\": \"target\", \"component\": \"Text\", \"textContent\": \"Right-click me\" },\n { \"id\": \"item-open\", \"component\": \"MenuItem\", \"value\": \"open\", \"text\": \"Open\" },\n { \"id\": \"item-rename\", \"component\": \"MenuItem\", \"value\": \"rename\", \"text\": \"Rename\" },\n { \"id\": \"div\", \"component\": \"MenuDivider\" },\n { \"id\": \"item-delete\", \"component\": \"MenuItem\", \"value\": \"delete\", \"text\": \"Delete\", \"variant\": \"danger\" }\n]\n",
|
|
7584
|
+
"name": "file-actions"
|
|
7585
|
+
}
|
|
7586
|
+
],
|
|
7587
|
+
"keywords": [
|
|
7588
|
+
"context-menu",
|
|
7589
|
+
"right-click",
|
|
7590
|
+
"menu",
|
|
7591
|
+
"popup-menu"
|
|
7592
|
+
],
|
|
7593
|
+
"name": "UIContextMenu",
|
|
7594
|
+
"related": [
|
|
7595
|
+
"menu",
|
|
7596
|
+
"menu-item",
|
|
7597
|
+
"popover"
|
|
7598
|
+
],
|
|
7599
|
+
"slots": {
|
|
7600
|
+
"default": {
|
|
7601
|
+
"description": "Two-purpose slot: the wrapped target element (mode A — first\nnon-menu-item-ui child) AND the menu-item-ui items. Items are\npromoted to the popover surface on open.\n"
|
|
7602
|
+
}
|
|
7603
|
+
},
|
|
7604
|
+
"states": [
|
|
7605
|
+
{
|
|
7606
|
+
"description": "Default. Menu closed; trigger listeners attached.",
|
|
7607
|
+
"name": "idle"
|
|
7608
|
+
},
|
|
7609
|
+
{
|
|
7610
|
+
"description": "Menu visible at pointer position; focus inside.",
|
|
7611
|
+
"attribute": "open",
|
|
7612
|
+
"name": "open"
|
|
7613
|
+
}
|
|
7614
|
+
],
|
|
7615
|
+
"status": "stable",
|
|
7616
|
+
"synonyms": {
|
|
7617
|
+
"popup-menu": [
|
|
7618
|
+
"menu",
|
|
7619
|
+
"context-menu"
|
|
7620
|
+
],
|
|
7621
|
+
"right-click": [
|
|
7622
|
+
"context-menu"
|
|
7623
|
+
]
|
|
7624
|
+
},
|
|
7625
|
+
"tag": "context-menu-ui",
|
|
7626
|
+
"tokens": {
|
|
7627
|
+
"--context-menu-bg": {
|
|
7628
|
+
"description": "Menu surface background color.",
|
|
7629
|
+
"default": "var(--a-bg-subtle)"
|
|
7630
|
+
},
|
|
7631
|
+
"--context-menu-border": {
|
|
7632
|
+
"description": "Menu surface border color.",
|
|
7633
|
+
"default": "var(--a-border-subtle)"
|
|
7634
|
+
},
|
|
7635
|
+
"--context-menu-radius": {
|
|
7636
|
+
"description": "Menu surface border radius.",
|
|
7637
|
+
"default": "var(--a-radius-md)"
|
|
7638
|
+
},
|
|
7639
|
+
"--context-menu-shadow": {
|
|
7640
|
+
"description": "Menu surface shadow.",
|
|
7641
|
+
"default": "var(--a-shadow-lg)"
|
|
7642
|
+
}
|
|
7643
|
+
},
|
|
7644
|
+
"traits": [],
|
|
7645
|
+
"version": 1
|
|
7646
|
+
}
|
|
7647
|
+
},
|
|
7309
7648
|
"DashboardLayout": {
|
|
7310
7649
|
"title": "DashboardLayout",
|
|
7311
7650
|
"description": "Module-tier dashboard-body composite. Crystallizes the recurring\n\"toolbar + KPI grid + chart area + table\" dashboard layout into a\nsingle primitive with four named regions (toolbar / kpis / charts /\ntable) plus an optional aside column. Each region is filled by\nconsumer-supplied <card-ui>s; the composite owns band sizing,\nresponsive breakpoints, and a [density] knob that propagates to\nevery descendant primitive via the parametric --a-density cascade.\n\nSits inside an <admin-page-body>; replaces the hand-rolled\n<col-ui gap=\"4\"> + nested <grid-ui> + <card-ui> chains every\nanalytics consumer reinvents today. Per ADR-0033 (Light-DOM\nsubstrate) — slot= attributes are decorative metadata; CSS rules\nmatch `:scope > [slot=\"X\"]` to position bands in DOM order.\n\nSpec: docs/specs/implementation-ready/SPEC-018-dashboard-layout.md.\n",
|
|
@@ -7633,6 +7972,21 @@
|
|
|
7633
7972
|
"type": "string",
|
|
7634
7973
|
"default": "Select range"
|
|
7635
7974
|
},
|
|
7975
|
+
"placement": {
|
|
7976
|
+
"description": "Popover placement relative to the trigger. Default `bottom` centers the two-calendar panel under the trigger (ADR-0034 Rule 2 — ~800px panel >> trigger).",
|
|
7977
|
+
"type": "string",
|
|
7978
|
+
"enum": [
|
|
7979
|
+
"top",
|
|
7980
|
+
"bottom",
|
|
7981
|
+
"left",
|
|
7982
|
+
"right",
|
|
7983
|
+
"top-start",
|
|
7984
|
+
"top-end",
|
|
7985
|
+
"bottom-start",
|
|
7986
|
+
"bottom-end"
|
|
7987
|
+
],
|
|
7988
|
+
"default": "bottom"
|
|
7989
|
+
},
|
|
7636
7990
|
"readonly": {
|
|
7637
7991
|
"description": "Block edits; allow keyboard navigation for screen-reader inspection.",
|
|
7638
7992
|
"type": "boolean",
|
|
@@ -8156,19 +8510,34 @@
|
|
|
8156
8510
|
"type": "string",
|
|
8157
8511
|
"default": "Select date and time"
|
|
8158
8512
|
},
|
|
8159
|
-
"
|
|
8160
|
-
"description": "
|
|
8513
|
+
"placement": {
|
|
8514
|
+
"description": "Popover placement relative to the trigger. Default `bottom` centers the calendar+time panel under the trigger (ADR-0034 Rule 2 — ~600px panel >> trigger).",
|
|
8161
8515
|
"type": "string",
|
|
8162
8516
|
"enum": [
|
|
8163
|
-
"
|
|
8164
|
-
"
|
|
8165
|
-
|
|
8166
|
-
|
|
8167
|
-
|
|
8168
|
-
|
|
8169
|
-
|
|
8170
|
-
|
|
8171
|
-
|
|
8517
|
+
"top",
|
|
8518
|
+
"bottom",
|
|
8519
|
+
"left",
|
|
8520
|
+
"right",
|
|
8521
|
+
"top-start",
|
|
8522
|
+
"top-end",
|
|
8523
|
+
"bottom-start",
|
|
8524
|
+
"bottom-end"
|
|
8525
|
+
],
|
|
8526
|
+
"default": "bottom"
|
|
8527
|
+
},
|
|
8528
|
+
"precision": {
|
|
8529
|
+
"description": "Time-pane precision. `minute` (default) emits `HH:mm`; `second` exposes the seconds segment and emits `HH:mm:ss`.",
|
|
8530
|
+
"type": "string",
|
|
8531
|
+
"enum": [
|
|
8532
|
+
"minute",
|
|
8533
|
+
"second"
|
|
8534
|
+
],
|
|
8535
|
+
"default": "minute"
|
|
8536
|
+
},
|
|
8537
|
+
"readonly": {
|
|
8538
|
+
"description": "Block edits; allow keyboard navigation for screen-reader inspection.",
|
|
8539
|
+
"type": "boolean",
|
|
8540
|
+
"default": false
|
|
8172
8541
|
},
|
|
8173
8542
|
"step": {
|
|
8174
8543
|
"description": "Per-Arrow-keypress increment in seconds for the time pane. 60 = minute precision (default), 900 = 15-minute, 1 = second precision.",
|
|
@@ -9825,8 +10194,17 @@
|
|
|
9825
10194
|
"select"
|
|
9826
10195
|
],
|
|
9827
10196
|
"slots": {
|
|
10197
|
+
"description": {
|
|
10198
|
+
"description": "Override slot for the description text. Use for multi-paragraph or richly-marked-up explanatory copy."
|
|
10199
|
+
},
|
|
9828
10200
|
"action": {
|
|
9829
10201
|
"description": "User-provided action element (e.g. button) displayed below the description"
|
|
10202
|
+
},
|
|
10203
|
+
"heading": {
|
|
10204
|
+
"description": "Override slot for the heading text. Use when richer markup than the plain [heading] attribute is needed (line breaks, inline links, bold emphasis)."
|
|
10205
|
+
},
|
|
10206
|
+
"icon": {
|
|
10207
|
+
"description": "Override slot for the [icon] glyph. Use when the attribute-driven Phosphor icon isn't enough (e.g., custom SVG, illustration, or a styled icon-ui with non-default weight). Mutually exclusive with [icon]."
|
|
9830
10208
|
}
|
|
9831
10209
|
},
|
|
9832
10210
|
"states": [
|
|
@@ -9983,6 +10361,11 @@
|
|
|
9983
10361
|
}
|
|
9984
10362
|
],
|
|
9985
10363
|
"properties": {
|
|
10364
|
+
"action": {
|
|
10365
|
+
"description": "Label of an inline action button (the \"deep-link\" / \"undo\" pattern).\nPair with `onAction` callback in `UIFeed.post()` — click invokes the\ncallback then auto-dismisses. Empty string renders no action button.\n",
|
|
10366
|
+
"type": "string",
|
|
10367
|
+
"default": ""
|
|
10368
|
+
},
|
|
9986
10369
|
"component": {
|
|
9987
10370
|
"const": "FeedItem"
|
|
9988
10371
|
},
|
|
@@ -10176,6 +10559,12 @@
|
|
|
10176
10559
|
"action": {
|
|
10177
10560
|
"description": "Button adjacent to the control for inline actions (clear, reset, help popover)."
|
|
10178
10561
|
},
|
|
10562
|
+
"error": {
|
|
10563
|
+
"description": "Override slot for error markup richer than the plain [error] attribute string. Rendered below the control with danger-text styling. Mutually exclusive with [error]."
|
|
10564
|
+
},
|
|
10565
|
+
"hint": {
|
|
10566
|
+
"description": "Override slot for hint markup richer than the plain [hint] attribute string (inline links, code spans, abbreviations). Rendered below the control at body-subtle typography. Mutually exclusive with [hint]."
|
|
10567
|
+
},
|
|
10179
10568
|
"trailing": {
|
|
10180
10569
|
"description": "Secondary text or badge aligned with the label in the stacked layout (right-aligned) or between label and control in the inline layout."
|
|
10181
10570
|
}
|
|
@@ -11273,6 +11662,163 @@
|
|
|
11273
11662
|
"version": 1
|
|
11274
11663
|
}
|
|
11275
11664
|
},
|
|
11665
|
+
"InlineEdit": {
|
|
11666
|
+
"title": "InlineEdit",
|
|
11667
|
+
"description": "Click-to-edit text in place. Renders as static text until clicked /\nfocused + Enter, then becomes editable. Enter or blur commits; Escape\ncancels and restores the original value. Form-participating.\n\nUse for editable titles, breadcrumb labels, table-cell text fields,\ndraft document names — any case where a user expects to edit text\nwithout opening a separate dialog or input. Distinct from `<input-ui>`\n(always-editable chrome) and from `<field-ui>` (stacked label + input\ncomposition). inline-edit reads as text in static state.\n",
|
|
11668
|
+
"type": "object",
|
|
11669
|
+
"allOf": [
|
|
11670
|
+
{
|
|
11671
|
+
"$ref": "#/$defs/ComponentCommon"
|
|
11672
|
+
},
|
|
11673
|
+
{
|
|
11674
|
+
"$ref": "#/$defs/CatalogComponentCommon"
|
|
11675
|
+
}
|
|
11676
|
+
],
|
|
11677
|
+
"properties": {
|
|
11678
|
+
"commit": {
|
|
11679
|
+
"description": "When to commit pending edits. `blur` (default) — saves on focusout\nor Enter. `enter` — Enter saves, blur cancels (returns to original).\n`manual` — only programmatic `commitEdit()` saves.\n",
|
|
11680
|
+
"type": "string",
|
|
11681
|
+
"enum": [
|
|
11682
|
+
"blur",
|
|
11683
|
+
"enter",
|
|
11684
|
+
"manual"
|
|
11685
|
+
],
|
|
11686
|
+
"default": "blur"
|
|
11687
|
+
},
|
|
11688
|
+
"component": {
|
|
11689
|
+
"const": "InlineEdit"
|
|
11690
|
+
},
|
|
11691
|
+
"editing": {
|
|
11692
|
+
"description": "Reflected state — `true` when the element is actively being edited.\nToggles automatically on click / Enter / blur / Escape; rarely set\nby consumers. Listen to `edit-start` / `edit-end` events instead.\n",
|
|
11693
|
+
"type": "boolean",
|
|
11694
|
+
"default": false
|
|
11695
|
+
},
|
|
11696
|
+
"placeholder": {
|
|
11697
|
+
"description": "Hint text shown when the value is empty (inline-edit reads this in the static state).",
|
|
11698
|
+
"type": "string",
|
|
11699
|
+
"default": "Click to edit"
|
|
11700
|
+
}
|
|
11701
|
+
},
|
|
11702
|
+
"required": [
|
|
11703
|
+
"component"
|
|
11704
|
+
],
|
|
11705
|
+
"unevaluatedProperties": false,
|
|
11706
|
+
"x-adiaui": {
|
|
11707
|
+
"anti_patterns": [
|
|
11708
|
+
{
|
|
11709
|
+
"fix": "<inline-edit-ui value=\"Title\" name=\"title\"> — reads as text in static state; chrome only appears while editing.",
|
|
11710
|
+
"why": "Ghost variant still renders input chrome (border on focus). Looks like a control, not text.",
|
|
11711
|
+
"wrong": "<input-ui value=\"Title\" name=\"title\" variant=\"ghost\">"
|
|
11712
|
+
},
|
|
11713
|
+
{
|
|
11714
|
+
"fix": "<inline-edit-ui value=\"Title\">",
|
|
11715
|
+
"why": "No state machine — no commit/cancel semantics, no form participation, no a11y wiring.",
|
|
11716
|
+
"wrong": "<text-ui contenteditable>Title</text-ui>"
|
|
11717
|
+
}
|
|
11718
|
+
],
|
|
11719
|
+
"category": "form",
|
|
11720
|
+
"composes": [],
|
|
11721
|
+
"events": {
|
|
11722
|
+
"cancel": {
|
|
11723
|
+
"description": "Fired when Escape (or blur with commit=enter) restores the original. Bubbles."
|
|
11724
|
+
},
|
|
11725
|
+
"change": {
|
|
11726
|
+
"description": "Fired after a successful commit. detail = { value, oldValue }. Bubbles."
|
|
11727
|
+
},
|
|
11728
|
+
"edit-end": {
|
|
11729
|
+
"description": "Fired when leaving edit mode. detail = { committed: boolean }. Bubbles."
|
|
11730
|
+
},
|
|
11731
|
+
"edit-start": {
|
|
11732
|
+
"description": "Fired when entering edit mode. Bubbles."
|
|
11733
|
+
}
|
|
11734
|
+
},
|
|
11735
|
+
"examples": [
|
|
11736
|
+
{
|
|
11737
|
+
"description": "A draft document title that becomes editable on click.",
|
|
11738
|
+
"a2ui": "[{ \"id\": \"title\", \"component\": \"InlineEdit\", \"value\": \"Untitled draft\" }]\n",
|
|
11739
|
+
"name": "editable-title"
|
|
11740
|
+
}
|
|
11741
|
+
],
|
|
11742
|
+
"keywords": [
|
|
11743
|
+
"inline-edit",
|
|
11744
|
+
"editable",
|
|
11745
|
+
"click-to-edit",
|
|
11746
|
+
"rename",
|
|
11747
|
+
"edit-in-place"
|
|
11748
|
+
],
|
|
11749
|
+
"name": "UIInlineEdit",
|
|
11750
|
+
"related": [
|
|
11751
|
+
"input",
|
|
11752
|
+
"field",
|
|
11753
|
+
"text"
|
|
11754
|
+
],
|
|
11755
|
+
"slots": {},
|
|
11756
|
+
"states": [
|
|
11757
|
+
{
|
|
11758
|
+
"description": "Static — text reads as plain text with a hover hint.",
|
|
11759
|
+
"name": "idle"
|
|
11760
|
+
},
|
|
11761
|
+
{
|
|
11762
|
+
"description": "Hover affordance — subtle background tint signals editability.",
|
|
11763
|
+
"name": "hover"
|
|
11764
|
+
},
|
|
11765
|
+
{
|
|
11766
|
+
"description": "contenteditable — host is the input surface; outline + caret.",
|
|
11767
|
+
"name": "editing"
|
|
11768
|
+
},
|
|
11769
|
+
{
|
|
11770
|
+
"description": "Value is empty and not editing — placeholder text renders.",
|
|
11771
|
+
"name": "empty"
|
|
11772
|
+
},
|
|
11773
|
+
{
|
|
11774
|
+
"description": "Locked; click + keyboard activation are no-ops.",
|
|
11775
|
+
"name": "disabled"
|
|
11776
|
+
}
|
|
11777
|
+
],
|
|
11778
|
+
"status": "stable",
|
|
11779
|
+
"synonyms": {
|
|
11780
|
+
"inline-edit": [
|
|
11781
|
+
"editable",
|
|
11782
|
+
"click-to-edit",
|
|
11783
|
+
"edit-in-place",
|
|
11784
|
+
"rename-in-place"
|
|
11785
|
+
]
|
|
11786
|
+
},
|
|
11787
|
+
"tag": "inline-edit-ui",
|
|
11788
|
+
"tokens": {
|
|
11789
|
+
"--inline-edit-bg-edit": {
|
|
11790
|
+
"description": "Background while editing.",
|
|
11791
|
+
"default": "var(--a-bg)"
|
|
11792
|
+
},
|
|
11793
|
+
"--inline-edit-bg-hover": {
|
|
11794
|
+
"description": "Background tint on hover (idle state).",
|
|
11795
|
+
"default": "var(--a-bg-muted)"
|
|
11796
|
+
},
|
|
11797
|
+
"--inline-edit-outline": {
|
|
11798
|
+
"description": "Outline color in the editing state.",
|
|
11799
|
+
"default": "var(--a-accent-strong)"
|
|
11800
|
+
},
|
|
11801
|
+
"--inline-edit-placeholder": {
|
|
11802
|
+
"description": "Placeholder text color in empty-static state.",
|
|
11803
|
+
"default": "var(--a-fg-subtle)"
|
|
11804
|
+
},
|
|
11805
|
+
"--inline-edit-px": {
|
|
11806
|
+
"description": "Horizontal padding (inner gutter so hover tint reads as a pill, not a flush block).",
|
|
11807
|
+
"default": "var(--a-space-1)"
|
|
11808
|
+
},
|
|
11809
|
+
"--inline-edit-py": {
|
|
11810
|
+
"description": "Vertical padding.",
|
|
11811
|
+
"default": "var(--a-space-0-5)"
|
|
11812
|
+
},
|
|
11813
|
+
"--inline-edit-radius": {
|
|
11814
|
+
"description": "Border-radius for the hover / editing chrome.",
|
|
11815
|
+
"default": "var(--a-radius-sm)"
|
|
11816
|
+
}
|
|
11817
|
+
},
|
|
11818
|
+
"traits": [],
|
|
11819
|
+
"version": 1
|
|
11820
|
+
}
|
|
11821
|
+
},
|
|
11276
11822
|
"InlineMessage": {
|
|
11277
11823
|
"title": "InlineMessage",
|
|
11278
11824
|
"description": "In-flow message glyph + text used in form-field rows for validation\nfeedback, hint copy, and inline confirmations. Distinguished from\n<alert-ui> (banner / surface-bearing notice) by carrying no surface\nfill, no border, no padding box — severity is foreground color +\nicon only. Variants map to severity (info / success / warning /\ndanger). Nests inside <field-ui>, <col-ui>, <row-ui> without\nbreaking field rhythm. Non-interactive annotation only.\n",
|
|
@@ -13428,7 +13974,14 @@
|
|
|
13428
13974
|
"MenuItem",
|
|
13429
13975
|
"TreeItem"
|
|
13430
13976
|
],
|
|
13431
|
-
"slots": {
|
|
13977
|
+
"slots": {
|
|
13978
|
+
"description": {
|
|
13979
|
+
"description": "Override slot for richer description markup than the plain [description] attribute string (inline links, code spans, multiple lines). Renders beneath the primary text at body-subtle typography."
|
|
13980
|
+
},
|
|
13981
|
+
"icon": {
|
|
13982
|
+
"description": "Override the [icon] glyph with a custom slotted element (e.g. a colored <icon-ui>, an image, or an avatar-ui). Mutually exclusive with the [icon] attribute — slot child wins if both are present."
|
|
13983
|
+
}
|
|
13984
|
+
},
|
|
13432
13985
|
"states": [],
|
|
13433
13986
|
"status": "stable",
|
|
13434
13987
|
"synonyms": {
|
|
@@ -13894,6 +14447,113 @@
|
|
|
13894
14447
|
"version": 1
|
|
13895
14448
|
}
|
|
13896
14449
|
},
|
|
14450
|
+
"Mark": {
|
|
14451
|
+
"title": "Mark",
|
|
14452
|
+
"description": "Highlighted inline text — token-driven theme-aware wrapper around the\nnative `<mark>` semantic. Use for search-result match highlighting,\ndiff additions in prose, \"new since last visit\" emphasis, and any\ninline text that needs a visual rail without changing its weight.\n\nDistinct from `<text-ui strong>` (semantic emphasis via weight) and\nfrom `<tag-ui>` (block-shaped pill chrome). mark-ui keeps the inline\ntext flow intact — same line-height, same baseline — just paints a\nbackground highlight behind the matched span.\n",
|
|
14453
|
+
"type": "object",
|
|
14454
|
+
"allOf": [
|
|
14455
|
+
{
|
|
14456
|
+
"$ref": "#/$defs/ComponentCommon"
|
|
14457
|
+
},
|
|
14458
|
+
{
|
|
14459
|
+
"$ref": "#/$defs/CatalogComponentCommon"
|
|
14460
|
+
}
|
|
14461
|
+
],
|
|
14462
|
+
"properties": {
|
|
14463
|
+
"component": {
|
|
14464
|
+
"const": "Mark"
|
|
14465
|
+
},
|
|
14466
|
+
"variant": {
|
|
14467
|
+
"description": "Highlight color variant. Default `warning` is the conventional yellow-marker tone.",
|
|
14468
|
+
"type": "string",
|
|
14469
|
+
"enum": [
|
|
14470
|
+
"warning",
|
|
14471
|
+
"info",
|
|
14472
|
+
"success",
|
|
14473
|
+
"danger",
|
|
14474
|
+
"muted"
|
|
14475
|
+
],
|
|
14476
|
+
"default": "warning"
|
|
14477
|
+
}
|
|
14478
|
+
},
|
|
14479
|
+
"required": [
|
|
14480
|
+
"component"
|
|
14481
|
+
],
|
|
14482
|
+
"unevaluatedProperties": false,
|
|
14483
|
+
"x-adiaui": {
|
|
14484
|
+
"anti_patterns": [
|
|
14485
|
+
{
|
|
14486
|
+
"fix": "<mark-ui>matched</mark-ui> — same semantic role but theme-aware.",
|
|
14487
|
+
"why": "Native <mark> uses UA default (yellow-on-white) that doesn't adapt to theme — invisible in dark mode + jarring in light mode.",
|
|
14488
|
+
"wrong": "<mark>matched</mark>"
|
|
14489
|
+
}
|
|
14490
|
+
],
|
|
14491
|
+
"category": "typography",
|
|
14492
|
+
"composes": [],
|
|
14493
|
+
"events": {},
|
|
14494
|
+
"examples": [
|
|
14495
|
+
{
|
|
14496
|
+
"description": "Highlight the search query within a result title.",
|
|
14497
|
+
"a2ui": "[\n { \"id\": \"row\", \"component\": \"Row\", \"children\": [\"pre\", \"mk\", \"post\"] },\n { \"id\": \"pre\", \"component\": \"Text\", \"textContent\": \"Quarterly \" },\n { \"id\": \"mk\", \"component\": \"Mark\", \"textContent\": \"revenue\" },\n { \"id\": \"post\", \"component\": \"Text\", \"textContent\": \" report — Q4 2025\" }\n]\n",
|
|
14498
|
+
"name": "search-match"
|
|
14499
|
+
}
|
|
14500
|
+
],
|
|
14501
|
+
"keywords": [
|
|
14502
|
+
"mark",
|
|
14503
|
+
"highlight",
|
|
14504
|
+
"search-match",
|
|
14505
|
+
"emphasis"
|
|
14506
|
+
],
|
|
14507
|
+
"name": "UIMark",
|
|
14508
|
+
"related": [
|
|
14509
|
+
"text",
|
|
14510
|
+
"tag"
|
|
14511
|
+
],
|
|
14512
|
+
"slots": {
|
|
14513
|
+
"default": {
|
|
14514
|
+
"description": "The text content to highlight (plain text or inline elements)."
|
|
14515
|
+
}
|
|
14516
|
+
},
|
|
14517
|
+
"states": [
|
|
14518
|
+
{
|
|
14519
|
+
"description": "Default — highlighted background painted behind the slotted text.",
|
|
14520
|
+
"name": "idle"
|
|
14521
|
+
}
|
|
14522
|
+
],
|
|
14523
|
+
"status": "stable",
|
|
14524
|
+
"synonyms": {
|
|
14525
|
+
"highlight": [
|
|
14526
|
+
"mark",
|
|
14527
|
+
"emphasis"
|
|
14528
|
+
],
|
|
14529
|
+
"search-match": [
|
|
14530
|
+
"mark",
|
|
14531
|
+
"highlight"
|
|
14532
|
+
]
|
|
14533
|
+
},
|
|
14534
|
+
"tag": "mark-ui",
|
|
14535
|
+
"tokens": {
|
|
14536
|
+
"--mark-bg": {
|
|
14537
|
+
"description": "Background color of the highlight.",
|
|
14538
|
+
"default": "var(--a-warning-muted)"
|
|
14539
|
+
},
|
|
14540
|
+
"--mark-fg": {
|
|
14541
|
+
"description": "Foreground (text) color inside the highlight.",
|
|
14542
|
+
"default": "var(--a-warning-text)"
|
|
14543
|
+
},
|
|
14544
|
+
"--mark-px": {
|
|
14545
|
+
"description": "Horizontal padding around the highlighted text.",
|
|
14546
|
+
"default": "var(--a-space-0-5)"
|
|
14547
|
+
},
|
|
14548
|
+
"--mark-radius": {
|
|
14549
|
+
"description": "Border radius of the highlight box.",
|
|
14550
|
+
"default": "var(--a-radius-xs)"
|
|
14551
|
+
}
|
|
14552
|
+
},
|
|
14553
|
+
"traits": [],
|
|
14554
|
+
"version": 1
|
|
14555
|
+
}
|
|
14556
|
+
},
|
|
13897
14557
|
"Menu": {
|
|
13898
14558
|
"title": "Menu",
|
|
13899
14559
|
"description": "Dropdown action menu with roving focus and keyboard navigation. Uses Popover API.",
|
|
@@ -14273,6 +14933,15 @@
|
|
|
14273
14933
|
"slots": {
|
|
14274
14934
|
"default": {
|
|
14275
14935
|
"description": "Content placed inside the modal surface. Accepts any elements (card-ui, command-ui, custom markup)."
|
|
14936
|
+
},
|
|
14937
|
+
"body": {
|
|
14938
|
+
"description": "Main body region for prose, forms, or arbitrary content. Sits between header and footer; scrolls when content overflows."
|
|
14939
|
+
},
|
|
14940
|
+
"footer": {
|
|
14941
|
+
"description": "Optional footer region rendered below the body, typically for action buttons. Author-fills with Confirm / Cancel buttons or similar trailing affordances."
|
|
14942
|
+
},
|
|
14943
|
+
"header": {
|
|
14944
|
+
"description": "Optional header region rendered above the body. Author-fillable with title + supporting markup. CSS positions it at the top of the modal surface with consistent padding + the dismiss-close affordance."
|
|
14276
14945
|
}
|
|
14277
14946
|
},
|
|
14278
14947
|
"states": [
|
|
@@ -14547,6 +15216,9 @@
|
|
|
14547
15216
|
},
|
|
14548
15217
|
"header": {
|
|
14549
15218
|
"description": "Optional custom header. Auto-generated when missing."
|
|
15219
|
+
},
|
|
15220
|
+
"icon": {
|
|
15221
|
+
"description": "Override the leading [icon] glyph in the auto-generated header with a custom slotted element. Mutually exclusive with the [icon] attribute."
|
|
14550
15222
|
}
|
|
14551
15223
|
},
|
|
14552
15224
|
"states": [
|
|
@@ -14678,6 +15350,9 @@
|
|
|
14678
15350
|
"slots": {
|
|
14679
15351
|
"default": {
|
|
14680
15352
|
"description": "Optional override of the default icon + text + badge stamping."
|
|
15353
|
+
},
|
|
15354
|
+
"icon": {
|
|
15355
|
+
"description": "Override the leading [icon] glyph with a custom slotted element (custom icon-ui, image, avatar). Mutually exclusive with the [icon] attribute — slot child wins."
|
|
14681
15356
|
}
|
|
14682
15357
|
},
|
|
14683
15358
|
"states": [
|
|
@@ -15145,9 +15820,9 @@
|
|
|
15145
15820
|
"version": 1
|
|
15146
15821
|
}
|
|
15147
15822
|
},
|
|
15148
|
-
"
|
|
15149
|
-
"title": "
|
|
15150
|
-
"description": "
|
|
15823
|
+
"NumberFormat": {
|
|
15824
|
+
"title": "NumberFormat",
|
|
15825
|
+
"description": "Display a numeric value with locale-aware formatting — currency,\npercentage, compact (1.2K / 3.4M), unit, or plain decimal. Wraps\n`Intl.NumberFormat`. Distinct from `<input-ui type=\"number\">`\n(an INPUT primitive); this is a DISPLAY primitive — read-only, no\nform participation, no keyboard handling. Pair with `<stat-ui>` for\nKPI surfaces or use standalone inline within prose.\n",
|
|
15151
15826
|
"type": "object",
|
|
15152
15827
|
"allOf": [
|
|
15153
15828
|
{
|
|
@@ -15158,44 +15833,222 @@
|
|
|
15158
15833
|
}
|
|
15159
15834
|
],
|
|
15160
15835
|
"properties": {
|
|
15161
|
-
"
|
|
15162
|
-
"description": "
|
|
15836
|
+
"compactDisplay": {
|
|
15837
|
+
"description": "When [notation=\"compact\"], controls the compact-form length.\n`short` = \"1.2M\" (default); `long` = \"1.2 million\".\n",
|
|
15163
15838
|
"type": "string",
|
|
15164
|
-
"
|
|
15165
|
-
|
|
15166
|
-
|
|
15167
|
-
|
|
15168
|
-
"
|
|
15169
|
-
},
|
|
15170
|
-
"collapsed": {
|
|
15171
|
-
"description": "Initial / current collapsed state — hides the item list, keeps progress + header visible.",
|
|
15172
|
-
"$ref": "#/$defs/DynamicBoolean"
|
|
15173
|
-
},
|
|
15174
|
-
"collapsible": {
|
|
15175
|
-
"description": "Show a top-right collapse toggle.",
|
|
15176
|
-
"type": "boolean",
|
|
15177
|
-
"default": true
|
|
15839
|
+
"enum": [
|
|
15840
|
+
"short",
|
|
15841
|
+
"long"
|
|
15842
|
+
],
|
|
15843
|
+
"default": "short"
|
|
15178
15844
|
},
|
|
15179
15845
|
"component": {
|
|
15180
|
-
"const": "
|
|
15181
|
-
},
|
|
15182
|
-
"dismiss-on-complete": {
|
|
15183
|
-
"description": "Auto-hide the widget when all items are done.",
|
|
15184
|
-
"type": "boolean",
|
|
15185
|
-
"default": true
|
|
15846
|
+
"const": "NumberFormat"
|
|
15186
15847
|
},
|
|
15187
|
-
"
|
|
15188
|
-
"description": "
|
|
15848
|
+
"currency": {
|
|
15849
|
+
"description": "ISO 4217 currency code (e.g. \"USD\", \"EUR\", \"JPY\"). Required when\n[number-style=\"currency\"]; ignored otherwise.\n",
|
|
15189
15850
|
"type": "string",
|
|
15190
|
-
"
|
|
15191
|
-
"local",
|
|
15192
|
-
"session",
|
|
15193
|
-
"none"
|
|
15194
|
-
],
|
|
15195
|
-
"default": "local"
|
|
15851
|
+
"default": ""
|
|
15196
15852
|
},
|
|
15197
|
-
"
|
|
15198
|
-
"description": "
|
|
15853
|
+
"locale": {
|
|
15854
|
+
"description": "BCP-47 locale tag for the formatter. Empty defaults to the\ndocument locale (`<html lang>`) then to browser default.\n",
|
|
15855
|
+
"type": "string",
|
|
15856
|
+
"default": ""
|
|
15857
|
+
},
|
|
15858
|
+
"maximumFractionDigits": {
|
|
15859
|
+
"description": "Maximum fractional digits (0–20). Default `2` for decimal/\ncurrency/percent, `1` for compact notation.\n",
|
|
15860
|
+
"type": "number",
|
|
15861
|
+
"default": 2
|
|
15862
|
+
},
|
|
15863
|
+
"minimumFractionDigits": {
|
|
15864
|
+
"description": "Minimum fractional digits (0–20). Padded with trailing zeros.\nUseful for currency display to force \".00\" suffix.\n",
|
|
15865
|
+
"type": "number",
|
|
15866
|
+
"default": 0
|
|
15867
|
+
},
|
|
15868
|
+
"notation": {
|
|
15869
|
+
"description": "`Intl.NumberFormat` `notation` option. `standard` is the\nthousands-grouped form (1,234,567); `compact` is the abbreviated\nform (1.2M); `scientific` and `engineering` are the exponent\nforms. Defaults to `standard`.\n",
|
|
15870
|
+
"type": "string",
|
|
15871
|
+
"enum": [
|
|
15872
|
+
"standard",
|
|
15873
|
+
"compact",
|
|
15874
|
+
"scientific",
|
|
15875
|
+
"engineering"
|
|
15876
|
+
],
|
|
15877
|
+
"default": "standard"
|
|
15878
|
+
},
|
|
15879
|
+
"numberStyle": {
|
|
15880
|
+
"description": "`Intl.NumberFormat` `style` option. `decimal` (default) renders a\nplain number with locale-aware grouping. `currency` requires\n[currency] to be set. `percent` formats 0–1 as 0%–100%. `unit`\nrequires [unit] to be set (e.g. \"kilobyte\", \"celsius\").\n",
|
|
15881
|
+
"type": "string",
|
|
15882
|
+
"enum": [
|
|
15883
|
+
"decimal",
|
|
15884
|
+
"currency",
|
|
15885
|
+
"percent",
|
|
15886
|
+
"unit"
|
|
15887
|
+
],
|
|
15888
|
+
"default": "decimal"
|
|
15889
|
+
},
|
|
15890
|
+
"signDisplay": {
|
|
15891
|
+
"description": "`Intl.NumberFormat` `signDisplay` option. `auto` (default) shows\n\"−\" for negatives only; `always` shows \"+\" / \"−\"; `exceptZero`\nshows sign for non-zero only; `never` hides signs.\n",
|
|
15892
|
+
"type": "string",
|
|
15893
|
+
"enum": [
|
|
15894
|
+
"auto",
|
|
15895
|
+
"always",
|
|
15896
|
+
"exceptZero",
|
|
15897
|
+
"never"
|
|
15898
|
+
],
|
|
15899
|
+
"default": "auto"
|
|
15900
|
+
},
|
|
15901
|
+
"unit": {
|
|
15902
|
+
"description": "`Intl.NumberFormat` unit identifier (e.g. \"kilometer-per-hour\",\n\"celsius\", \"byte\"). Required when [number-style=\"unit\"]; ignored\notherwise. See MDN's NumberFormat docs for the valid set.\n",
|
|
15903
|
+
"type": "string",
|
|
15904
|
+
"default": ""
|
|
15905
|
+
},
|
|
15906
|
+
"value": {
|
|
15907
|
+
"description": "The numeric value to format. Empty string or non-numeric value\nrenders nothing.\n",
|
|
15908
|
+
"type": "number",
|
|
15909
|
+
"default": 0
|
|
15910
|
+
}
|
|
15911
|
+
},
|
|
15912
|
+
"required": [
|
|
15913
|
+
"component"
|
|
15914
|
+
],
|
|
15915
|
+
"unevaluatedProperties": false,
|
|
15916
|
+
"x-adiaui": {
|
|
15917
|
+
"anti_patterns": [
|
|
15918
|
+
{
|
|
15919
|
+
"fix": "<number-format-ui value=\"0.5\" number-style=\"percent\"></number-format-ui>\n",
|
|
15920
|
+
"why": "Renders \"5,000%\" — Intl.NumberFormat percent style multiplies the\ninput by 100. value=50 means \"5000%\".\n",
|
|
15921
|
+
"wrong": "<number-format-ui value=\"50\" number-style=\"percent\"></number-format-ui>\n"
|
|
15922
|
+
},
|
|
15923
|
+
{
|
|
15924
|
+
"fix": "<number-format-ui value=\"9.99\" number-style=\"currency\" currency=\"USD\"></number-format-ui>\n",
|
|
15925
|
+
"why": "Missing [currency] code. Renders nothing rather than producing\nmalformed currency output.\n",
|
|
15926
|
+
"wrong": "<number-format-ui value=\"9.99\" number-style=\"currency\"></number-format-ui>\n"
|
|
15927
|
+
}
|
|
15928
|
+
],
|
|
15929
|
+
"category": "display",
|
|
15930
|
+
"composes": [],
|
|
15931
|
+
"events": {},
|
|
15932
|
+
"examples": [
|
|
15933
|
+
{
|
|
15934
|
+
"description": "Plain locale-grouped number — default style.",
|
|
15935
|
+
"a2ui": "[\n {\n \"id\": \"n\",\n \"component\": \"NumberFormat\",\n \"value\": 1234567.89\n }\n]\n",
|
|
15936
|
+
"name": "decimal"
|
|
15937
|
+
},
|
|
15938
|
+
{
|
|
15939
|
+
"description": "USD currency display.",
|
|
15940
|
+
"a2ui": "[\n {\n \"id\": \"n\",\n \"component\": \"NumberFormat\",\n \"value\": 1299.99,\n \"numberStyle\": \"currency\",\n \"currency\": \"USD\"\n }\n]\n",
|
|
15941
|
+
"name": "currency"
|
|
15942
|
+
},
|
|
15943
|
+
{
|
|
15944
|
+
"description": "Fraction → percent (0.876 → 87.6%).",
|
|
15945
|
+
"a2ui": "[\n {\n \"id\": \"n\",\n \"component\": \"NumberFormat\",\n \"value\": 0.876,\n \"numberStyle\": \"percent\",\n \"maximumFractionDigits\": 1\n }\n]\n",
|
|
15946
|
+
"name": "percent"
|
|
15947
|
+
},
|
|
15948
|
+
{
|
|
15949
|
+
"description": "Compact-form (1.2M, 3.4K).",
|
|
15950
|
+
"a2ui": "[\n {\n \"id\": \"n\",\n \"component\": \"NumberFormat\",\n \"value\": 1234567,\n \"notation\": \"compact\"\n }\n]\n",
|
|
15951
|
+
"name": "compact"
|
|
15952
|
+
}
|
|
15953
|
+
],
|
|
15954
|
+
"keywords": [
|
|
15955
|
+
"number-format",
|
|
15956
|
+
"format",
|
|
15957
|
+
"currency",
|
|
15958
|
+
"percent",
|
|
15959
|
+
"percentage",
|
|
15960
|
+
"compact",
|
|
15961
|
+
"number",
|
|
15962
|
+
"locale",
|
|
15963
|
+
"intl"
|
|
15964
|
+
],
|
|
15965
|
+
"name": "UINumberFormat",
|
|
15966
|
+
"related": [
|
|
15967
|
+
"stat",
|
|
15968
|
+
"text",
|
|
15969
|
+
"badge",
|
|
15970
|
+
"input"
|
|
15971
|
+
],
|
|
15972
|
+
"slots": {},
|
|
15973
|
+
"states": [
|
|
15974
|
+
{
|
|
15975
|
+
"description": "Default, displaying the formatted value.",
|
|
15976
|
+
"name": "idle"
|
|
15977
|
+
}
|
|
15978
|
+
],
|
|
15979
|
+
"status": "stable",
|
|
15980
|
+
"synonyms": {
|
|
15981
|
+
"currency": [
|
|
15982
|
+
"number-format",
|
|
15983
|
+
"money",
|
|
15984
|
+
"price"
|
|
15985
|
+
],
|
|
15986
|
+
"number": [
|
|
15987
|
+
"number-format",
|
|
15988
|
+
"format"
|
|
15989
|
+
],
|
|
15990
|
+
"percent": [
|
|
15991
|
+
"number-format",
|
|
15992
|
+
"percentage"
|
|
15993
|
+
]
|
|
15994
|
+
},
|
|
15995
|
+
"tag": "number-format-ui",
|
|
15996
|
+
"tokens": {},
|
|
15997
|
+
"traits": [],
|
|
15998
|
+
"version": 1
|
|
15999
|
+
}
|
|
16000
|
+
},
|
|
16001
|
+
"OnboardingChecklist": {
|
|
16002
|
+
"title": "OnboardingChecklist",
|
|
16003
|
+
"description": "Module-tier onboarding checklist — a progressive setup-step widget\n(\"Getting started\" card seen in Stripe / Linear / Vercel dashboards).\nComposes <progress-ui> (top fill bar), <list-ui> + <list-item-ui>\n(the step rows), <check-ui> (per-item completion checkbox), and\noptional <button-ui> (per-item action CTA).\n\nOwns the data model (items: array of {id, label, description, href,\ndone}), the persistence contract (storage-key writes a JSON blob to\nlocalStorage / sessionStorage), the auto-computed progress display,\nand the dismiss-on-complete behavior. Items are data, not slotted\nmarkup — host wiring uses stable per-item ids, not DOM positions.\n\nUse for the \"card of optional setup tasks\" case; use <step-progress-ui>\nfor horizontal multi-screen wizards where the user is locked into\nlinear progression.\n",
|
|
16004
|
+
"type": "object",
|
|
16005
|
+
"allOf": [
|
|
16006
|
+
{
|
|
16007
|
+
"$ref": "#/$defs/ComponentCommon"
|
|
16008
|
+
},
|
|
16009
|
+
{
|
|
16010
|
+
"$ref": "#/$defs/CatalogComponentCommon"
|
|
16011
|
+
}
|
|
16012
|
+
],
|
|
16013
|
+
"properties": {
|
|
16014
|
+
"title": {
|
|
16015
|
+
"description": "Header label above the progress bar. Defaults to \"Get started\".",
|
|
16016
|
+
"type": "string",
|
|
16017
|
+
"default": "Get started"
|
|
16018
|
+
},
|
|
16019
|
+
"items": {
|
|
16020
|
+
"description": "Step list — each item is { id, label, description?, href?, done? }. Required, non-empty.",
|
|
16021
|
+
"$ref": "#/$defs/DynamicStringList"
|
|
16022
|
+
},
|
|
16023
|
+
"collapsed": {
|
|
16024
|
+
"description": "Initial / current collapsed state — hides the item list, keeps progress + header visible.",
|
|
16025
|
+
"$ref": "#/$defs/DynamicBoolean"
|
|
16026
|
+
},
|
|
16027
|
+
"collapsible": {
|
|
16028
|
+
"description": "Show a top-right collapse toggle.",
|
|
16029
|
+
"type": "boolean",
|
|
16030
|
+
"default": true
|
|
16031
|
+
},
|
|
16032
|
+
"component": {
|
|
16033
|
+
"const": "OnboardingChecklist"
|
|
16034
|
+
},
|
|
16035
|
+
"dismiss-on-complete": {
|
|
16036
|
+
"description": "Auto-hide the widget when all items are done.",
|
|
16037
|
+
"type": "boolean",
|
|
16038
|
+
"default": true
|
|
16039
|
+
},
|
|
16040
|
+
"storage": {
|
|
16041
|
+
"description": "Persistence backend when storage-key is set.",
|
|
16042
|
+
"type": "string",
|
|
16043
|
+
"enum": [
|
|
16044
|
+
"local",
|
|
16045
|
+
"session",
|
|
16046
|
+
"none"
|
|
16047
|
+
],
|
|
16048
|
+
"default": "local"
|
|
16049
|
+
},
|
|
16050
|
+
"storage-key": {
|
|
16051
|
+
"description": "localStorage key for per-item completion persistence. Empty string disables storage (ephemeral).",
|
|
15199
16052
|
"type": "string",
|
|
15200
16053
|
"default": ""
|
|
15201
16054
|
},
|
|
@@ -15301,6 +16154,9 @@
|
|
|
15301
16154
|
"StepProgress"
|
|
15302
16155
|
],
|
|
15303
16156
|
"slots": {
|
|
16157
|
+
"description": {
|
|
16158
|
+
"description": "Optional subtitle / supporting prose rendered beneath the header. Renders at body-subtle typography. Use for richer markup than the plain [description] attribute string."
|
|
16159
|
+
},
|
|
15304
16160
|
"complete": {
|
|
15305
16161
|
"description": "Content shown when all items are done and dismiss-on-complete is false."
|
|
15306
16162
|
},
|
|
@@ -15930,14 +16786,28 @@
|
|
|
15930
16786
|
"type": "number",
|
|
15931
16787
|
"default": 1
|
|
15932
16788
|
},
|
|
16789
|
+
"size": {
|
|
16790
|
+
"description": "Universal size — threads through to every nested `<button-ui size=…>`\nso pagination honors the substrate's 24/30/36 px size system\n(with [density] modifier). Default `md` matches `<button-ui>`'s\ndefault; pass `size=\"sm\"` for a denser numbered row.\n",
|
|
16791
|
+
"type": "string",
|
|
16792
|
+
"enum": [
|
|
16793
|
+
"sm",
|
|
16794
|
+
"md",
|
|
16795
|
+
"lg"
|
|
16796
|
+
],
|
|
16797
|
+
"default": "md"
|
|
16798
|
+
},
|
|
15933
16799
|
"total": {
|
|
15934
16800
|
"description": "Total number of pages.",
|
|
15935
16801
|
"type": "number",
|
|
15936
16802
|
"default": 1
|
|
15937
16803
|
},
|
|
15938
16804
|
"variant": {
|
|
15939
|
-
"description": "Visual variant",
|
|
16805
|
+
"description": "Visual variant — `default` (ghost buttons w/ hover bg) or `button` (1×1 bordered cells; active page filled).",
|
|
15940
16806
|
"type": "string",
|
|
16807
|
+
"enum": [
|
|
16808
|
+
"default",
|
|
16809
|
+
"button"
|
|
16810
|
+
],
|
|
15941
16811
|
"default": "default"
|
|
15942
16812
|
}
|
|
15943
16813
|
},
|
|
@@ -15948,7 +16818,10 @@
|
|
|
15948
16818
|
"x-adiaui": {
|
|
15949
16819
|
"anti_patterns": [],
|
|
15950
16820
|
"category": "navigation",
|
|
15951
|
-
"composes": [
|
|
16821
|
+
"composes": [
|
|
16822
|
+
"button-ui",
|
|
16823
|
+
"icon-ui"
|
|
16824
|
+
],
|
|
15952
16825
|
"events": {
|
|
15953
16826
|
"page-change": {
|
|
15954
16827
|
"description": "Fired when a page button is clicked. detail contains { page }.",
|
|
@@ -16133,6 +17006,156 @@
|
|
|
16133
17006
|
"version": 1
|
|
16134
17007
|
}
|
|
16135
17008
|
},
|
|
17009
|
+
"PasswordStrength": {
|
|
17010
|
+
"title": "PasswordStrength",
|
|
17011
|
+
"description": "Visual strength indicator for password inputs — 4-segment bar (weak /\nfair / good / strong) computed from a heuristic combining length,\ncharacter-class diversity, and repeat-pattern penalty. Pairs with\n`<input-ui type=\"password\">` via JS:\n input.addEventListener('input', e => meter.value = e.target.value)\nRead-only display primitive — no form participation. Emits a\n`score-change` event when the bucket changes so consumers can gate\na submit button on `detail.satisfied` (score ≥ min-score).\n\n**Security note:** [value] is held as a JS property only, NOT\nreflected to a DOM attribute. The element stamps the bar + label\nfrom the property; the password never appears in the rendered HTML.\nDo not set the value via setAttribute (it will be no-op).\n",
|
|
17012
|
+
"type": "object",
|
|
17013
|
+
"allOf": [
|
|
17014
|
+
{
|
|
17015
|
+
"$ref": "#/$defs/ComponentCommon"
|
|
17016
|
+
},
|
|
17017
|
+
{
|
|
17018
|
+
"$ref": "#/$defs/CatalogComponentCommon"
|
|
17019
|
+
}
|
|
17020
|
+
],
|
|
17021
|
+
"properties": {
|
|
17022
|
+
"component": {
|
|
17023
|
+
"const": "PasswordStrength"
|
|
17024
|
+
},
|
|
17025
|
+
"minScore": {
|
|
17026
|
+
"description": "Minimum acceptable score (0–3). The `score-change` event's\n`detail.satisfied` boolean reflects whether the current score\nmeets this threshold. Useful for gating a submit button.\n",
|
|
17027
|
+
"type": "number",
|
|
17028
|
+
"default": 2
|
|
17029
|
+
},
|
|
17030
|
+
"showLabel": {
|
|
17031
|
+
"description": "Display the textual score label (\"Weak\" / \"Fair\" / \"Good\" /\n\"Strong\") below the bar. Defaults to true.\n",
|
|
17032
|
+
"type": "boolean",
|
|
17033
|
+
"default": true
|
|
17034
|
+
},
|
|
17035
|
+
"value": {
|
|
17036
|
+
"description": "The password string to score. JS-property only — NOT reflected\nto a DOM attribute (so the password never leaks into rendered\nHTML). Wire to an input via `input.addEventListener('input', e =>\nmeter.value = e.target.value)`.\n",
|
|
17037
|
+
"$ref": "#/$defs/DynamicString"
|
|
17038
|
+
}
|
|
17039
|
+
},
|
|
17040
|
+
"required": [
|
|
17041
|
+
"component"
|
|
17042
|
+
],
|
|
17043
|
+
"unevaluatedProperties": false,
|
|
17044
|
+
"x-adiaui": {
|
|
17045
|
+
"anti_patterns": [
|
|
17046
|
+
{
|
|
17047
|
+
"fix": "<password-strength-ui id=\"m\"></password-strength-ui>\n<script>document.getElementById('m').value = pwd;</script>\n",
|
|
17048
|
+
"why": "`value` is JS-property only; the attribute is ignored. The\npassword also shouldn't be authored into HTML at all (server\ntemplate / static page) — that defeats the purpose.\n",
|
|
17049
|
+
"wrong": "<password-strength-ui value=\"hunter2\"></password-strength-ui>\n"
|
|
17050
|
+
}
|
|
17051
|
+
],
|
|
17052
|
+
"category": "display",
|
|
17053
|
+
"composes": [],
|
|
17054
|
+
"events": {
|
|
17055
|
+
"score-change": {
|
|
17056
|
+
"description": "Fired when the computed score crosses a bucket boundary (not on every keystroke). Detail carries the new score + label + satisfied flag.",
|
|
17057
|
+
"detail": {
|
|
17058
|
+
"label": "string",
|
|
17059
|
+
"satisfied": "boolean",
|
|
17060
|
+
"score": "number"
|
|
17061
|
+
}
|
|
17062
|
+
}
|
|
17063
|
+
},
|
|
17064
|
+
"examples": [
|
|
17065
|
+
{
|
|
17066
|
+
"description": "Standard pairing with input-ui[type=password] via input listener.",
|
|
17067
|
+
"a2ui": "[\n {\n \"id\": \"field\",\n \"component\": \"Field\",\n \"label\": \"Password\",\n \"children\": [\"pwd\", \"meter\"]\n },\n {\n \"id\": \"pwd\",\n \"component\": \"Input\",\n \"type\": \"password\",\n \"name\": \"password\"\n },\n {\n \"id\": \"meter\",\n \"component\": \"PasswordStrength\"\n }\n]\n",
|
|
17068
|
+
"name": "paired-with-input"
|
|
17069
|
+
}
|
|
17070
|
+
],
|
|
17071
|
+
"keywords": [
|
|
17072
|
+
"password-strength",
|
|
17073
|
+
"strength-meter",
|
|
17074
|
+
"password",
|
|
17075
|
+
"strength",
|
|
17076
|
+
"meter",
|
|
17077
|
+
"security"
|
|
17078
|
+
],
|
|
17079
|
+
"name": "UIPasswordStrength",
|
|
17080
|
+
"related": [
|
|
17081
|
+
"input",
|
|
17082
|
+
"field",
|
|
17083
|
+
"progress"
|
|
17084
|
+
],
|
|
17085
|
+
"slots": {
|
|
17086
|
+
"default": {
|
|
17087
|
+
"description": "Optional area for requirements checklist content (e.g. <ul> of \"at least 8 characters\", \"mixed case\", etc.)."
|
|
17088
|
+
}
|
|
17089
|
+
},
|
|
17090
|
+
"states": [
|
|
17091
|
+
{
|
|
17092
|
+
"description": "Default — no value set, all segments grey.",
|
|
17093
|
+
"name": "idle"
|
|
17094
|
+
},
|
|
17095
|
+
{
|
|
17096
|
+
"description": "Value present; segments lit per score 0..3.",
|
|
17097
|
+
"attribute": "data-score",
|
|
17098
|
+
"name": "scored"
|
|
17099
|
+
}
|
|
17100
|
+
],
|
|
17101
|
+
"status": "stable",
|
|
17102
|
+
"synonyms": {
|
|
17103
|
+
"password": [
|
|
17104
|
+
"password-strength",
|
|
17105
|
+
"strength-meter"
|
|
17106
|
+
],
|
|
17107
|
+
"strength": [
|
|
17108
|
+
"password-strength",
|
|
17109
|
+
"meter"
|
|
17110
|
+
]
|
|
17111
|
+
},
|
|
17112
|
+
"tag": "password-strength-ui",
|
|
17113
|
+
"tokens": {
|
|
17114
|
+
"--password-strength-color-fair": {
|
|
17115
|
+
"description": "Color for score=1 lit segments.",
|
|
17116
|
+
"default": "var(--a-warning-bg)"
|
|
17117
|
+
},
|
|
17118
|
+
"--password-strength-color-good": {
|
|
17119
|
+
"description": "Color for score=2 lit segments.",
|
|
17120
|
+
"default": "var(--a-info-bg)"
|
|
17121
|
+
},
|
|
17122
|
+
"--password-strength-color-strong": {
|
|
17123
|
+
"description": "Color for score=3 lit segments.",
|
|
17124
|
+
"default": "var(--a-success-bg)"
|
|
17125
|
+
},
|
|
17126
|
+
"--password-strength-color-weak": {
|
|
17127
|
+
"description": "Color for score=0 lit segments.",
|
|
17128
|
+
"default": "var(--a-danger-bg)"
|
|
17129
|
+
},
|
|
17130
|
+
"--password-strength-gap": {
|
|
17131
|
+
"description": "Gap between segments.",
|
|
17132
|
+
"default": "var(--a-space-1)"
|
|
17133
|
+
},
|
|
17134
|
+
"--password-strength-label-fg": {
|
|
17135
|
+
"description": "Label text color.",
|
|
17136
|
+
"default": "var(--a-fg-muted)"
|
|
17137
|
+
},
|
|
17138
|
+
"--password-strength-label-size": {
|
|
17139
|
+
"description": "Label font size.",
|
|
17140
|
+
"default": "var(--a-ui-sm)"
|
|
17141
|
+
},
|
|
17142
|
+
"--password-strength-radius": {
|
|
17143
|
+
"description": "Segment border radius.",
|
|
17144
|
+
"default": "var(--a-radius-full)"
|
|
17145
|
+
},
|
|
17146
|
+
"--password-strength-segment-bg": {
|
|
17147
|
+
"description": "Unlit segment background (track color).",
|
|
17148
|
+
"default": "var(--a-canvas-1-scrim)"
|
|
17149
|
+
},
|
|
17150
|
+
"--password-strength-segment-height": {
|
|
17151
|
+
"description": "Height of each bar segment.",
|
|
17152
|
+
"default": "4px"
|
|
17153
|
+
}
|
|
17154
|
+
},
|
|
17155
|
+
"traits": [],
|
|
17156
|
+
"version": 1
|
|
17157
|
+
}
|
|
17158
|
+
},
|
|
16136
17159
|
"PaymentMethodForm": {
|
|
16137
17160
|
"title": "PaymentMethodForm",
|
|
16138
17161
|
"description": "Form-participating composite for capturing a payment method —\ncard number, expiry, CVC, name on card, billing address (optional),\nand country. The form chrome + structured validation + a single\nnormalized emit event; it does NOT integrate with Stripe Elements\nor a tokenization SDK directly (consumer responsibility).\n\nEach sub-field is a <field-ui> wrapper around an <input-ui> (or\n<select-ui> for country). Card number is Luhn-validated; expiry is\nparsed as MM/YY with month + year bounds; CVC is 3-4 digits.\nBrand detection (visa / mastercard / amex / discover) runs against\na small regex map and surfaces via the `change` event detail.\n\nForm value is a JSON-encoded payload of normalized field values\nserialized through ElementInternals under [name] (default\n\"paymentMethod\"). On submit, the host fires\n`submit-payment-method` with a flat detail\n`{ token, last4, brand, expMonth, expYear, name, country }`.\n`token` is a synthetic local-mode token (sha-like opaque string);\nconsumers integrating with a real processor handle tokenization\nin their own submit listener using `last4` / `brand` / etc.\n\nSpec: docs/specs/implementation-ready/SPEC-009-payment-method-form.md.\n",
|
|
@@ -17633,6 +18656,158 @@
|
|
|
17633
18656
|
"version": 1
|
|
17634
18657
|
}
|
|
17635
18658
|
},
|
|
18659
|
+
"QRCode": {
|
|
18660
|
+
"title": "QRCode",
|
|
18661
|
+
"description": "Inline QR code generator — renders a scannable code as inline SVG.\nTwo modes:\n\n**A. Auto-encode (default).** Set `[value]` to a string (URL, plain\ntext, share link, 2FA secret). The component encodes the data with\nthe built-in zero-deps QR encoder (byte mode, ECC level configurable,\nversions 1–10 up to ~150 byte chars) and renders an SVG.\n\n**B. Bring-your-own matrix.** Set `[matrix]` to a JSON string of a\n2-D 0/1 array (`[[1,0,1,...],[...],...]`). The component renders the\nsupplied matrix directly without invoking its own encoder. Use this\nwhen you need versions 11–40, kanji/alphanumeric mode, or any\nencoder feature beyond the built-in. When both `[value]` and\n`[matrix]` are set, the matrix wins (BYO override).\n\nOutput is a single `<svg>` with `viewBox=\"0 0 N N\"`. Crisp-edges\nrendering preserves the scannable cell boundaries at any size.\nSizing is controlled by the `[size]` prop (host CSS-pixel dimension);\ninternal cell size is computed from `size / (matrix-size + 2 ·\nmargin)`. ARIA: `role=\"img\"` with `aria-label` (default \"QR code\"\nor the `[label]` prop).\n",
|
|
18662
|
+
"type": "object",
|
|
18663
|
+
"allOf": [
|
|
18664
|
+
{
|
|
18665
|
+
"$ref": "#/$defs/ComponentCommon"
|
|
18666
|
+
},
|
|
18667
|
+
{
|
|
18668
|
+
"$ref": "#/$defs/CatalogComponentCommon"
|
|
18669
|
+
}
|
|
18670
|
+
],
|
|
18671
|
+
"properties": {
|
|
18672
|
+
"background": {
|
|
18673
|
+
"description": "Background (light-cell) color. **Empty defaults to `#ffffff` —\nhardcoded white** alongside the black foreground, for guaranteed\nscanability. Override only when paired with an explicit\n[color] (the contrast pair must scan).\n",
|
|
18674
|
+
"type": "string",
|
|
18675
|
+
"default": ""
|
|
18676
|
+
},
|
|
18677
|
+
"color": {
|
|
18678
|
+
"description": "Foreground (dark-cell) color. Any CSS color string (hex, rgb,\ntoken reference). **Empty defaults to `#000000` — hardcoded black\nfor guaranteed scanability** (theme-aware `currentColor` would\nproduce light-on-dark in dark mode, which most phone scanners\nrefuse to decode). Override for branded QRs only when you've\nverified the chosen color/background pair scans on the target\ndevices.\n",
|
|
18679
|
+
"type": "string",
|
|
18680
|
+
"default": ""
|
|
18681
|
+
},
|
|
18682
|
+
"component": {
|
|
18683
|
+
"const": "QRCode"
|
|
18684
|
+
},
|
|
18685
|
+
"errorCorrection": {
|
|
18686
|
+
"description": "Error-correction level (auto-encode mode only). `L` (7% recovery),\n`M` (15%, default), `Q` (25%), `H` (30%). Higher levels recover\nfrom more damage at the cost of QR-version size growth.\n",
|
|
18687
|
+
"type": "string",
|
|
18688
|
+
"enum": [
|
|
18689
|
+
"L",
|
|
18690
|
+
"M",
|
|
18691
|
+
"Q",
|
|
18692
|
+
"H"
|
|
18693
|
+
],
|
|
18694
|
+
"default": "M"
|
|
18695
|
+
},
|
|
18696
|
+
"label": {
|
|
18697
|
+
"description": "`aria-label` for the SVG. Defaults to \"QR code\". Customize for\nbetter AT context (e.g. \"Share link QR code\", \"2FA setup QR\").\n",
|
|
18698
|
+
"type": "string",
|
|
18699
|
+
"default": "QR code"
|
|
18700
|
+
},
|
|
18701
|
+
"margin": {
|
|
18702
|
+
"description": "Quiet zone in cells around the QR pattern. QR spec requires a\nminimum 4-cell margin for reliable scanning; smaller values may\nnot scan on some devices. Default `4`.\n",
|
|
18703
|
+
"type": "number",
|
|
18704
|
+
"default": 4
|
|
18705
|
+
},
|
|
18706
|
+
"matrix": {
|
|
18707
|
+
"description": "BYO precomputed bit matrix as JSON — a 2-D array of 0/1\n(`[[1,0,...],[0,1,...],...]`). When set, the built-in encoder is\nbypassed and this matrix renders directly. Useful for QR variants\nthe built-in doesn't support (versions 11–40, alphanumeric mode,\nkanji, etc.) — bring your own encoder, pass the matrix here.\n",
|
|
18708
|
+
"type": "string",
|
|
18709
|
+
"default": ""
|
|
18710
|
+
},
|
|
18711
|
+
"size": {
|
|
18712
|
+
"description": "Host display size in CSS pixels (width and height; the SVG is\nalways square). Default 200. Internal cell size is computed from\nthis divided by `matrix-size + 2·margin`.\n",
|
|
18713
|
+
"type": "number",
|
|
18714
|
+
"default": 200
|
|
18715
|
+
},
|
|
18716
|
+
"value": {
|
|
18717
|
+
"description": "The string to encode (URL / text / share link / 2FA seed). When\n[matrix] is also set, the matrix wins. Empty value + empty matrix\nrenders nothing.\n",
|
|
18718
|
+
"type": "string",
|
|
18719
|
+
"default": ""
|
|
18720
|
+
}
|
|
18721
|
+
},
|
|
18722
|
+
"required": [
|
|
18723
|
+
"component"
|
|
18724
|
+
],
|
|
18725
|
+
"unevaluatedProperties": false,
|
|
18726
|
+
"x-adiaui": {
|
|
18727
|
+
"anti_patterns": [
|
|
18728
|
+
{
|
|
18729
|
+
"fix": "Drop the ECC level (lower L gives more capacity for the same\nversion), OR shorten the URL (use a URL shortener), OR encode\nwith a BYO encoder library + pass the [matrix]:\n`<qr-code-ui matrix=\"[[1,0,1,...],...]\"></qr-code-ui>`\n",
|
|
18730
|
+
"why": "Built-in encoder covers versions 1–10. Data beyond v10 capacity\nthrows + renders empty + sets [data-error]. Console warns with\nthe byte length so consumers can diagnose.\n",
|
|
18731
|
+
"wrong": "<qr-code-ui value=\"https://very.long.url.that.exceeds.150.bytes.of.utf8.encoded.length...\"></qr-code-ui>\n"
|
|
18732
|
+
},
|
|
18733
|
+
{
|
|
18734
|
+
"fix": "<qr-code-ui value=\"...\" margin=\"4\"></qr-code-ui>\n",
|
|
18735
|
+
"why": "Zero margin breaks scanning. QR spec requires a 4-cell quiet\nzone for reliable detection.\n",
|
|
18736
|
+
"wrong": "<qr-code-ui value=\"...\" margin=\"0\"></qr-code-ui>\n"
|
|
18737
|
+
}
|
|
18738
|
+
],
|
|
18739
|
+
"category": "display",
|
|
18740
|
+
"composes": [],
|
|
18741
|
+
"events": {},
|
|
18742
|
+
"examples": [
|
|
18743
|
+
{
|
|
18744
|
+
"description": "Plain URL encoding at default size + ECC-M.",
|
|
18745
|
+
"a2ui": "[\n {\n \"id\": \"q\",\n \"component\": \"QRCode\",\n \"value\": \"https://example.com\"\n }\n]\n",
|
|
18746
|
+
"name": "default"
|
|
18747
|
+
},
|
|
18748
|
+
{
|
|
18749
|
+
"description": "Custom colors matching brand chrome.",
|
|
18750
|
+
"a2ui": "[\n {\n \"id\": \"q\",\n \"component\": \"QRCode\",\n \"value\": \"https://adia.health/share/abc123\",\n \"size\": 280,\n \"color\": \"#1e293b\",\n \"background\": \"#ffffff\",\n \"errorCorrection\": \"Q\"\n }\n]\n",
|
|
18751
|
+
"name": "branded"
|
|
18752
|
+
},
|
|
18753
|
+
{
|
|
18754
|
+
"description": "BYO precomputed matrix from an external encoder.",
|
|
18755
|
+
"a2ui": "[\n {\n \"id\": \"q\",\n \"component\": \"QRCode\",\n \"matrix\": \"[[1,1,1,1,1,1,1,0,1,...]...]\",\n \"size\": 200,\n \"label\": \"Boarding pass QR\"\n }\n]\n",
|
|
18756
|
+
"name": "byo-matrix"
|
|
18757
|
+
}
|
|
18758
|
+
],
|
|
18759
|
+
"keywords": [
|
|
18760
|
+
"qr-code",
|
|
18761
|
+
"qr",
|
|
18762
|
+
"barcode",
|
|
18763
|
+
"scan",
|
|
18764
|
+
"share",
|
|
18765
|
+
"2fa",
|
|
18766
|
+
"share-link"
|
|
18767
|
+
],
|
|
18768
|
+
"name": "UIQRCode",
|
|
18769
|
+
"related": [
|
|
18770
|
+
"link",
|
|
18771
|
+
"share"
|
|
18772
|
+
],
|
|
18773
|
+
"slots": {},
|
|
18774
|
+
"states": [
|
|
18775
|
+
{
|
|
18776
|
+
"description": "Default — QR rendered (or empty if no value/matrix).",
|
|
18777
|
+
"name": "idle"
|
|
18778
|
+
},
|
|
18779
|
+
{
|
|
18780
|
+
"description": "Auto-encode failed (data too long for v1–10 at requested ECC). Renders an empty placeholder; logs a console warning. Switch to a BYO matrix from an external encoder, or downgrade the ECC level.",
|
|
18781
|
+
"attribute": "data-error",
|
|
18782
|
+
"name": "error"
|
|
18783
|
+
}
|
|
18784
|
+
],
|
|
18785
|
+
"status": "stable",
|
|
18786
|
+
"synonyms": {
|
|
18787
|
+
"qr": [
|
|
18788
|
+
"qr-code",
|
|
18789
|
+
"barcode"
|
|
18790
|
+
],
|
|
18791
|
+
"scan": [
|
|
18792
|
+
"qr-code",
|
|
18793
|
+
"barcode"
|
|
18794
|
+
]
|
|
18795
|
+
},
|
|
18796
|
+
"tag": "qr-code-ui",
|
|
18797
|
+
"tokens": {
|
|
18798
|
+
"--qr-code-bg": {
|
|
18799
|
+
"description": "Background (light) color when [background] is empty.",
|
|
18800
|
+
"default": "transparent"
|
|
18801
|
+
},
|
|
18802
|
+
"--qr-code-fg": {
|
|
18803
|
+
"description": "Foreground (dark) color when [color] is empty.",
|
|
18804
|
+
"default": "currentColor"
|
|
18805
|
+
}
|
|
18806
|
+
},
|
|
18807
|
+
"traits": [],
|
|
18808
|
+
"version": 1
|
|
18809
|
+
}
|
|
18810
|
+
},
|
|
17636
18811
|
"Radio": {
|
|
17637
18812
|
"title": "Radio",
|
|
17638
18813
|
"description": "Radio button with pure CSS dot. Groups by name attribute (one selected value per group); form-associated and emits standard change events. Use for single-select option groups in forms; for richer styling or button-style options use <segment-ui> inside <segmented-ui> instead.",
|
|
@@ -18103,40 +19278,158 @@
|
|
|
18103
19278
|
"[object Object]": {
|
|
18104
19279
|
"description": "Fired on [object Object]."
|
|
18105
19280
|
}
|
|
18106
|
-
},
|
|
18107
|
-
"examples": [],
|
|
19281
|
+
},
|
|
19282
|
+
"examples": [],
|
|
19283
|
+
"keywords": [
|
|
19284
|
+
"rating",
|
|
19285
|
+
"stars",
|
|
19286
|
+
"review",
|
|
19287
|
+
"feedback",
|
|
19288
|
+
"score",
|
|
19289
|
+
"vote",
|
|
19290
|
+
"heart",
|
|
19291
|
+
"like"
|
|
19292
|
+
],
|
|
19293
|
+
"name": "UIRating",
|
|
19294
|
+
"related": [
|
|
19295
|
+
"Field",
|
|
19296
|
+
"AgentFeedbackBar"
|
|
19297
|
+
],
|
|
19298
|
+
"slots": {},
|
|
19299
|
+
"states": [
|
|
19300
|
+
{
|
|
19301
|
+
"description": "Default, ready for interaction.",
|
|
19302
|
+
"name": "idle"
|
|
19303
|
+
}
|
|
19304
|
+
],
|
|
19305
|
+
"status": "stable",
|
|
19306
|
+
"synonyms": {
|
|
19307
|
+
"rating": [
|
|
19308
|
+
"rating",
|
|
19309
|
+
"star rating",
|
|
19310
|
+
"review score",
|
|
19311
|
+
"feedback rating"
|
|
19312
|
+
]
|
|
19313
|
+
},
|
|
19314
|
+
"tag": "rating-ui",
|
|
19315
|
+
"tokens": {},
|
|
19316
|
+
"traits": [],
|
|
19317
|
+
"version": 1
|
|
19318
|
+
}
|
|
19319
|
+
},
|
|
19320
|
+
"RelativeTime": {
|
|
19321
|
+
"title": "RelativeTime",
|
|
19322
|
+
"description": "Display a timestamp as a human-readable relative time — \"3 hours ago\",\n\"in 2 days\", \"yesterday\". Wraps `Intl.RelativeTimeFormat` for i18n\n+ auto-updates on a configurable interval (default every 60 s) so\nrendered text stays current without re-mounting.\n\nSet `[datetime]` to an ISO 8601 timestamp; the element computes the\ndelta against `Date.now()` and renders the formatted string. Pair\nwith a `title` for full-precision-on-hover (the element sets one\nautomatically from a default locale-aware long format unless you\noverride).\n",
|
|
19323
|
+
"type": "object",
|
|
19324
|
+
"allOf": [
|
|
19325
|
+
{
|
|
19326
|
+
"$ref": "#/$defs/ComponentCommon"
|
|
19327
|
+
},
|
|
19328
|
+
{
|
|
19329
|
+
"$ref": "#/$defs/CatalogComponentCommon"
|
|
19330
|
+
}
|
|
19331
|
+
],
|
|
19332
|
+
"properties": {
|
|
19333
|
+
"component": {
|
|
19334
|
+
"const": "RelativeTime"
|
|
19335
|
+
},
|
|
19336
|
+
"datetime": {
|
|
19337
|
+
"description": "ISO 8601 timestamp (e.g. `2026-05-25T09:30:00Z`) or any string\nparseable by `Date`. Required for output — empty value renders\nnothing.\n",
|
|
19338
|
+
"type": "string",
|
|
19339
|
+
"default": ""
|
|
19340
|
+
},
|
|
19341
|
+
"locale": {
|
|
19342
|
+
"description": "BCP-47 locale tag for the formatter. Empty defaults to the document\nlocale (`<html lang>`) then to the browser default.\n",
|
|
19343
|
+
"type": "string",
|
|
19344
|
+
"default": ""
|
|
19345
|
+
},
|
|
19346
|
+
"numeric": {
|
|
19347
|
+
"description": "`Intl.RelativeTimeFormat` `numeric` option. `auto` lets the\nformatter substitute \"yesterday\" / \"tomorrow\" for ±1 day deltas;\n`always` keeps the numeric form (\"1 day ago\"). Defaults to `auto`.\n",
|
|
19348
|
+
"type": "string",
|
|
19349
|
+
"enum": [
|
|
19350
|
+
"auto",
|
|
19351
|
+
"always"
|
|
19352
|
+
],
|
|
19353
|
+
"default": "auto"
|
|
19354
|
+
},
|
|
19355
|
+
"timeStyle": {
|
|
19356
|
+
"description": "`Intl.RelativeTimeFormat` `style` option. `long` = \"3 hours ago\",\n`short` = \"3 hr. ago\", `narrow` = \"3h ago\". Defaults to `long`.\n",
|
|
19357
|
+
"type": "string",
|
|
19358
|
+
"enum": [
|
|
19359
|
+
"long",
|
|
19360
|
+
"short",
|
|
19361
|
+
"narrow"
|
|
19362
|
+
],
|
|
19363
|
+
"default": "long"
|
|
19364
|
+
},
|
|
19365
|
+
"updateInterval": {
|
|
19366
|
+
"description": "Auto-refresh interval in seconds. The component restarts a\n`setInterval` tick that re-reads `Date.now()` and re-renders the\nrelative string. Set to `0` to disable auto-update (static\nrender). Default `60` (one minute) is the natural cadence for\n\"minutes ago\" granularity.\n",
|
|
19367
|
+
"type": "number",
|
|
19368
|
+
"default": 60
|
|
19369
|
+
}
|
|
19370
|
+
},
|
|
19371
|
+
"required": [
|
|
19372
|
+
"component"
|
|
19373
|
+
],
|
|
19374
|
+
"unevaluatedProperties": false,
|
|
19375
|
+
"x-adiaui": {
|
|
19376
|
+
"anti_patterns": [],
|
|
19377
|
+
"category": "display",
|
|
19378
|
+
"composes": [],
|
|
19379
|
+
"events": {},
|
|
19380
|
+
"examples": [
|
|
19381
|
+
{
|
|
19382
|
+
"description": "A timestamp rendered as a long relative phrase, auto-updating every 60 s.",
|
|
19383
|
+
"a2ui": "[\n {\n \"id\": \"ts\",\n \"component\": \"RelativeTime\",\n \"datetime\": \"2026-05-25T09:00:00Z\"\n }\n]\n",
|
|
19384
|
+
"name": "default"
|
|
19385
|
+
},
|
|
19386
|
+
{
|
|
19387
|
+
"description": "Tight UI affordances — narrow form for chat bubble timestamps.",
|
|
19388
|
+
"a2ui": "[\n {\n \"id\": \"ts\",\n \"component\": \"RelativeTime\",\n \"datetime\": \"2026-05-25T11:30:00Z\",\n \"timeStyle\": \"narrow\"\n }\n]\n",
|
|
19389
|
+
"name": "short-narrow"
|
|
19390
|
+
},
|
|
19391
|
+
{
|
|
19392
|
+
"description": "A historical timestamp that doesn't need to tick (commit log row).",
|
|
19393
|
+
"a2ui": "[\n {\n \"id\": \"ts\",\n \"component\": \"RelativeTime\",\n \"datetime\": \"2025-11-01T00:00:00Z\",\n \"updateInterval\": 0\n }\n]\n",
|
|
19394
|
+
"name": "static-historical"
|
|
19395
|
+
}
|
|
19396
|
+
],
|
|
18108
19397
|
"keywords": [
|
|
18109
|
-
"
|
|
18110
|
-
"
|
|
18111
|
-
"
|
|
18112
|
-
"
|
|
18113
|
-
"
|
|
18114
|
-
"
|
|
18115
|
-
"
|
|
18116
|
-
"
|
|
19398
|
+
"relative-time",
|
|
19399
|
+
"timeago",
|
|
19400
|
+
"time",
|
|
19401
|
+
"timestamp",
|
|
19402
|
+
"ago",
|
|
19403
|
+
"elapsed",
|
|
19404
|
+
"relative",
|
|
19405
|
+
"duration"
|
|
18117
19406
|
],
|
|
18118
|
-
"name": "
|
|
19407
|
+
"name": "UIRelativeTime",
|
|
18119
19408
|
"related": [
|
|
18120
|
-
"
|
|
18121
|
-
"
|
|
19409
|
+
"text",
|
|
19410
|
+
"badge",
|
|
19411
|
+
"stat"
|
|
18122
19412
|
],
|
|
18123
19413
|
"slots": {},
|
|
18124
19414
|
"states": [
|
|
18125
19415
|
{
|
|
18126
|
-
"description": "Default,
|
|
19416
|
+
"description": "Default, displaying the formatted relative time.",
|
|
18127
19417
|
"name": "idle"
|
|
18128
19418
|
}
|
|
18129
19419
|
],
|
|
18130
19420
|
"status": "stable",
|
|
18131
19421
|
"synonyms": {
|
|
18132
|
-
"
|
|
18133
|
-
"
|
|
18134
|
-
"
|
|
18135
|
-
|
|
18136
|
-
|
|
19422
|
+
"ago": [
|
|
19423
|
+
"relative-time",
|
|
19424
|
+
"timeago"
|
|
19425
|
+
],
|
|
19426
|
+
"timestamp": [
|
|
19427
|
+
"relative-time",
|
|
19428
|
+
"time",
|
|
19429
|
+
"datetime"
|
|
18137
19430
|
]
|
|
18138
19431
|
},
|
|
18139
|
-
"tag": "
|
|
19432
|
+
"tag": "relative-time-ui",
|
|
18140
19433
|
"tokens": {},
|
|
18141
19434
|
"traits": [],
|
|
18142
19435
|
"version": 1
|
|
@@ -19076,6 +20369,9 @@
|
|
|
19076
20369
|
"upload"
|
|
19077
20370
|
],
|
|
19078
20371
|
"slots": {
|
|
20372
|
+
"hint": {
|
|
20373
|
+
"description": "Override slot for hint markup richer than the plain [hint] attribute string (inline links, code spans). Renders beneath the trigger at body-subtle typography. Mutually exclusive with [hint]."
|
|
20374
|
+
},
|
|
19079
20375
|
"label": {
|
|
19080
20376
|
"description": "Label element above the trigger"
|
|
19081
20377
|
},
|
|
@@ -19484,6 +20780,96 @@
|
|
|
19484
20780
|
"version": 1
|
|
19485
20781
|
}
|
|
19486
20782
|
},
|
|
20783
|
+
"SkipNav": {
|
|
20784
|
+
"title": "SkipNav",
|
|
20785
|
+
"description": "Accessibility utility — visually-hidden link that becomes visible on\nkeyboard focus, letting keyboard users skip past repetitive navigation\nto the main content. WCAG 2.1 Success Criterion 2.4.1 \"Bypass Blocks\".\n\nPlace as the FIRST focusable element on the page (typically inside\n`<body>` before any nav / shell chrome). Target an `id` on your main\ncontent region (commonly `#main` / `#main-content`).\n",
|
|
20786
|
+
"type": "object",
|
|
20787
|
+
"allOf": [
|
|
20788
|
+
{
|
|
20789
|
+
"$ref": "#/$defs/ComponentCommon"
|
|
20790
|
+
},
|
|
20791
|
+
{
|
|
20792
|
+
"$ref": "#/$defs/CatalogComponentCommon"
|
|
20793
|
+
}
|
|
20794
|
+
],
|
|
20795
|
+
"properties": {
|
|
20796
|
+
"component": {
|
|
20797
|
+
"const": "SkipNav"
|
|
20798
|
+
},
|
|
20799
|
+
"target": {
|
|
20800
|
+
"description": "CSS id (with leading `#`) of the main content region the link skips to.",
|
|
20801
|
+
"type": "string",
|
|
20802
|
+
"default": "#main"
|
|
20803
|
+
},
|
|
20804
|
+
"text": {
|
|
20805
|
+
"description": "Link label. Defaults to \"Skip to main content\"; localize per site.",
|
|
20806
|
+
"type": "string",
|
|
20807
|
+
"default": "Skip to main content"
|
|
20808
|
+
}
|
|
20809
|
+
},
|
|
20810
|
+
"required": [
|
|
20811
|
+
"component"
|
|
20812
|
+
],
|
|
20813
|
+
"unevaluatedProperties": false,
|
|
20814
|
+
"x-adiaui": {
|
|
20815
|
+
"anti_patterns": [
|
|
20816
|
+
{
|
|
20817
|
+
"fix": "<body><skip-nav-ui></skip-nav-ui><header>…nav…</header><main id=\"main\" tabindex=\"-1\">…</main></body>",
|
|
20818
|
+
"why": "The skip link comes AFTER the nav — keyboard users have already tabbed through everything you wanted them to skip.",
|
|
20819
|
+
"wrong": "<header>…nav…</header><skip-nav-ui></skip-nav-ui><main id=\"main\">…</main>"
|
|
20820
|
+
}
|
|
20821
|
+
],
|
|
20822
|
+
"category": "utility",
|
|
20823
|
+
"composes": [],
|
|
20824
|
+
"events": {},
|
|
20825
|
+
"examples": [
|
|
20826
|
+
{
|
|
20827
|
+
"description": "Standard skip-nav at the top of the page.",
|
|
20828
|
+
"a2ui": "[\n { \"id\": \"skip\", \"component\": \"SkipNav\", \"target\": \"#main\" }\n]\n",
|
|
20829
|
+
"name": "default"
|
|
20830
|
+
}
|
|
20831
|
+
],
|
|
20832
|
+
"keywords": [
|
|
20833
|
+
"skip-nav",
|
|
20834
|
+
"skip-link",
|
|
20835
|
+
"bypass-blocks",
|
|
20836
|
+
"a11y",
|
|
20837
|
+
"accessibility",
|
|
20838
|
+
"keyboard-navigation"
|
|
20839
|
+
],
|
|
20840
|
+
"name": "UISkipNav",
|
|
20841
|
+
"related": [
|
|
20842
|
+
"visually-hidden"
|
|
20843
|
+
],
|
|
20844
|
+
"slots": {},
|
|
20845
|
+
"states": [
|
|
20846
|
+
{
|
|
20847
|
+
"description": "Default — link is visually hidden but focusable.",
|
|
20848
|
+
"name": "idle"
|
|
20849
|
+
},
|
|
20850
|
+
{
|
|
20851
|
+
"description": "Link is focused via keyboard and visible at the top of the viewport.",
|
|
20852
|
+
"attribute": ":focus-within",
|
|
20853
|
+
"name": "focused"
|
|
20854
|
+
}
|
|
20855
|
+
],
|
|
20856
|
+
"status": "stable",
|
|
20857
|
+
"synonyms": {},
|
|
20858
|
+
"tag": "skip-nav-ui",
|
|
20859
|
+
"tokens": {
|
|
20860
|
+
"--skip-nav-bg": {
|
|
20861
|
+
"description": "Background of the visible (focused) skip link.",
|
|
20862
|
+
"default": "var(--a-accent-bg)"
|
|
20863
|
+
},
|
|
20864
|
+
"--skip-nav-fg": {
|
|
20865
|
+
"description": "Foreground of the visible (focused) skip link.",
|
|
20866
|
+
"default": "var(--a-accent-fg)"
|
|
20867
|
+
}
|
|
20868
|
+
},
|
|
20869
|
+
"traits": [],
|
|
20870
|
+
"version": 1
|
|
20871
|
+
}
|
|
20872
|
+
},
|
|
19487
20873
|
"Slider": {
|
|
19488
20874
|
"title": "Slider",
|
|
19489
20875
|
"description": "Range slider with track, fill, and thumb. Supports label, suffix, and keyboard control. Form-associated.",
|
|
@@ -19510,6 +20896,11 @@
|
|
|
19510
20896
|
"type": "boolean",
|
|
19511
20897
|
"default": false
|
|
19512
20898
|
},
|
|
20899
|
+
"dual": {
|
|
20900
|
+
"description": "Two-thumb range slider mode. When enabled, [lower-value] and\n[upper-value] are authoritative and [value] is ignored. The fill\nrenders between the two thumbs (not from left to thumb). Form-data\nunder [name] serializes as \"<lower>,<upper>\". Use for price filters,\ndate ranges, audio range gates, etc.",
|
|
20901
|
+
"type": "boolean",
|
|
20902
|
+
"default": false
|
|
20903
|
+
},
|
|
19513
20904
|
"error": {
|
|
19514
20905
|
"description": "Validation error",
|
|
19515
20906
|
"type": "string",
|
|
@@ -19525,6 +20916,11 @@
|
|
|
19525
20916
|
"type": "string",
|
|
19526
20917
|
"default": ""
|
|
19527
20918
|
},
|
|
20919
|
+
"lowerValue": {
|
|
20920
|
+
"description": "Lower thumb value (dual mode only; clamped to ≤ [upper-value]).",
|
|
20921
|
+
"type": "number",
|
|
20922
|
+
"default": 0
|
|
20923
|
+
},
|
|
19528
20924
|
"max": {
|
|
19529
20925
|
"description": "Maximum slider value",
|
|
19530
20926
|
"type": "number",
|
|
@@ -19555,8 +20951,13 @@
|
|
|
19555
20951
|
"type": "number",
|
|
19556
20952
|
"default": 0
|
|
19557
20953
|
},
|
|
20954
|
+
"upperValue": {
|
|
20955
|
+
"description": "Upper thumb value (dual mode only; clamped to ≥ [lower-value]).",
|
|
20956
|
+
"type": "number",
|
|
20957
|
+
"default": 100
|
|
20958
|
+
},
|
|
19558
20959
|
"value": {
|
|
19559
|
-
"description": "Current slider value",
|
|
20960
|
+
"description": "Current slider value (single-thumb mode; ignored when [dual] is set)",
|
|
19560
20961
|
"type": "number",
|
|
19561
20962
|
"default": 50
|
|
19562
20963
|
}
|
|
@@ -19602,6 +21003,12 @@
|
|
|
19602
21003
|
"embed"
|
|
19603
21004
|
],
|
|
19604
21005
|
"slots": {
|
|
21006
|
+
"header": {
|
|
21007
|
+
"description": "Wholesale override of the stamped label + value-readout header row. Use only when full custom-header markup is needed; otherwise prefer the granular `label` / `value` slots and the [label] attribute."
|
|
21008
|
+
},
|
|
21009
|
+
"hint": {
|
|
21010
|
+
"description": "Override slot for hint markup richer than the plain [hint] attribute string (inline links, code spans). Renders beneath the slider at body-subtle typography. Mutually exclusive with [hint]."
|
|
21011
|
+
},
|
|
19605
21012
|
"input": {
|
|
19606
21013
|
"description": "Native range input element"
|
|
19607
21014
|
},
|
|
@@ -20338,6 +21745,9 @@
|
|
|
20338
21745
|
"description": {
|
|
20339
21746
|
"description": "Custom description content; falls through to `[description]` prop if not slotted."
|
|
20340
21747
|
},
|
|
21748
|
+
"icon": {
|
|
21749
|
+
"description": "Override the step-status glyph with a custom slotted element. By default the step renders a numeral / check / x indicator based on [status]; slot an `<icon-ui>` or image to customize."
|
|
21750
|
+
},
|
|
20341
21751
|
"label": {
|
|
20342
21752
|
"description": "Custom label content; falls through to `[text]` prop if not slotted."
|
|
20343
21753
|
}
|
|
@@ -21768,6 +23178,163 @@
|
|
|
21768
23178
|
"version": 1
|
|
21769
23179
|
}
|
|
21770
23180
|
},
|
|
23181
|
+
"TableOfContents": {
|
|
23182
|
+
"title": "TableOfContents",
|
|
23183
|
+
"description": "Auto-generated in-page table of contents. Scans a target container\nfor headings (default `h2,h3`), ensures each has an `id` (slugifies\nthe text content if missing), and stamps a `<nav>` list of anchor\nlinks. An `IntersectionObserver` tracks the active heading and\napplies `[data-active]` to the matching link so consumers can style\nthe currently-visible section. Smooth-scroll on click is handled by\nthe global `scroll-behavior: smooth` set in resets.css.\n\nPair with a sticky container (`position: sticky; top: <offset>;`) in\nan aside / right rail for the classic docs-site outline pattern.\n",
|
|
23184
|
+
"type": "object",
|
|
23185
|
+
"allOf": [
|
|
23186
|
+
{
|
|
23187
|
+
"$ref": "#/$defs/ComponentCommon"
|
|
23188
|
+
},
|
|
23189
|
+
{
|
|
23190
|
+
"$ref": "#/$defs/CatalogComponentCommon"
|
|
23191
|
+
}
|
|
23192
|
+
],
|
|
23193
|
+
"properties": {
|
|
23194
|
+
"component": {
|
|
23195
|
+
"const": "TableOfContents"
|
|
23196
|
+
},
|
|
23197
|
+
"headings": {
|
|
23198
|
+
"description": "CSS selector listing the heading tags to include (e.g. `h2,h3`).\nThe selector is matched against the target container's\ndescendants. Default `h2,h3` produces the common two-level\noutline.\n",
|
|
23199
|
+
"type": "string",
|
|
23200
|
+
"default": "h2,h3"
|
|
23201
|
+
},
|
|
23202
|
+
"label": {
|
|
23203
|
+
"description": "`aria-label` for the nav. Defaults to `Table of contents`.\n",
|
|
23204
|
+
"type": "string",
|
|
23205
|
+
"default": "Table of contents"
|
|
23206
|
+
},
|
|
23207
|
+
"offset": {
|
|
23208
|
+
"description": "Top offset in pixels for active-state detection. The\nIntersectionObserver's `rootMargin` is set to\n`-<offset>px 0px -50% 0px` so the active item becomes the\nheading nearest the top of the viewport BELOW any sticky header\nchrome. Tune to match the height of your sticky topbar (default\n`80` is a reasonable docs-shell value).\n",
|
|
23209
|
+
"type": "number",
|
|
23210
|
+
"default": 80
|
|
23211
|
+
},
|
|
23212
|
+
"target": {
|
|
23213
|
+
"description": "CSS selector pointing to the container to scan. Empty (default)\nscans the toc-ui's parent element. Set to `#article` /\n`[data-toc-target]` / `main` for a specific scope.\n",
|
|
23214
|
+
"type": "string",
|
|
23215
|
+
"default": ""
|
|
23216
|
+
}
|
|
23217
|
+
},
|
|
23218
|
+
"required": [
|
|
23219
|
+
"component"
|
|
23220
|
+
],
|
|
23221
|
+
"unevaluatedProperties": false,
|
|
23222
|
+
"x-adiaui": {
|
|
23223
|
+
"anti_patterns": [
|
|
23224
|
+
{
|
|
23225
|
+
"fix": "<toc-ui target=\"#article\"></toc-ui>\n<article id=\"article\">\n <h2>...</h2><h3>...</h3>\n</article>\n",
|
|
23226
|
+
"why": "toc-ui's default scans its PARENT for headings. If toc-ui is a\nsibling of the content (not inside it), the scan finds the\nheadings inside the toc-ui's parent which usually means the\nheadings + the toc itself — works only by coincidence. Set\n[target] explicitly for clarity.\n",
|
|
23227
|
+
"wrong": "<toc-ui></toc-ui>\n<h2>...</h2><h3>...</h3>\n"
|
|
23228
|
+
}
|
|
23229
|
+
],
|
|
23230
|
+
"category": "navigation",
|
|
23231
|
+
"composes": [],
|
|
23232
|
+
"events": {
|
|
23233
|
+
"section-change": {
|
|
23234
|
+
"description": "Fired when the active heading changes (the user scrolls into a new section). Detail carries the new active id.",
|
|
23235
|
+
"detail": {
|
|
23236
|
+
"activeId": "string"
|
|
23237
|
+
}
|
|
23238
|
+
}
|
|
23239
|
+
},
|
|
23240
|
+
"examples": [
|
|
23241
|
+
{
|
|
23242
|
+
"description": "TOC scanning the parent container.",
|
|
23243
|
+
"a2ui": "[\n {\n \"id\": \"page\",\n \"component\": \"Section\",\n \"children\": [\"toc\", \"h1\", \"h2-1\", \"p-1\", \"h2-2\", \"p-2\"]\n },\n {\"id\": \"toc\", \"component\": \"TableOfContents\"},\n {\"id\": \"h1\", \"component\": \"Text\", \"variant\": \"title\", \"textContent\": \"Article title\"},\n {\"id\": \"h2-1\", \"component\": \"Text\", \"variant\": \"heading\", \"textContent\": \"Introduction\"},\n {\"id\": \"p-1\", \"component\": \"Text\", \"textContent\": \"...\"},\n {\"id\": \"h2-2\", \"component\": \"Text\", \"variant\": \"heading\", \"textContent\": \"Conclusion\"},\n {\"id\": \"p-2\", \"component\": \"Text\", \"textContent\": \"...\"}\n]\n",
|
|
23244
|
+
"name": "default"
|
|
23245
|
+
},
|
|
23246
|
+
{
|
|
23247
|
+
"description": "TOC scanning a specific article container.",
|
|
23248
|
+
"a2ui": "[\n {\n \"id\": \"shell\",\n \"component\": \"Row\",\n \"children\": [\"toc\", \"article\"]\n },\n {\n \"id\": \"toc\",\n \"component\": \"TableOfContents\",\n \"target\": \"#main-article\",\n \"headings\": \"h2,h3,h4\"\n },\n {\n \"id\": \"article\",\n \"component\": \"Section\",\n \"attrs\": { \"id\": \"main-article\" },\n \"children\": []\n }\n]\n",
|
|
23249
|
+
"name": "targeted"
|
|
23250
|
+
}
|
|
23251
|
+
],
|
|
23252
|
+
"keywords": [
|
|
23253
|
+
"toc",
|
|
23254
|
+
"table-of-contents",
|
|
23255
|
+
"outline",
|
|
23256
|
+
"sub-nav",
|
|
23257
|
+
"page-nav",
|
|
23258
|
+
"in-page-nav",
|
|
23259
|
+
"heading-nav"
|
|
23260
|
+
],
|
|
23261
|
+
"name": "UITableOfContents",
|
|
23262
|
+
"related": [
|
|
23263
|
+
"aside",
|
|
23264
|
+
"nav",
|
|
23265
|
+
"link",
|
|
23266
|
+
"text"
|
|
23267
|
+
],
|
|
23268
|
+
"slots": {
|
|
23269
|
+
"default": {
|
|
23270
|
+
"description": "Stamped automatically — a `<nav>` containing a flat `<ul>` of `<a href=\"#id\">` links. Override by authoring your own content; auto-stamp is skipped when a `<nav>` is already present."
|
|
23271
|
+
}
|
|
23272
|
+
},
|
|
23273
|
+
"states": [
|
|
23274
|
+
{
|
|
23275
|
+
"description": "Default — no active section yet.",
|
|
23276
|
+
"name": "idle"
|
|
23277
|
+
},
|
|
23278
|
+
{
|
|
23279
|
+
"description": "A section is in view; the matching `<a>` carries `[data-active]`.",
|
|
23280
|
+
"attribute": "data-active",
|
|
23281
|
+
"name": "active"
|
|
23282
|
+
}
|
|
23283
|
+
],
|
|
23284
|
+
"status": "stable",
|
|
23285
|
+
"synonyms": {
|
|
23286
|
+
"outline": [
|
|
23287
|
+
"toc",
|
|
23288
|
+
"table-of-contents"
|
|
23289
|
+
],
|
|
23290
|
+
"toc": [
|
|
23291
|
+
"table-of-contents",
|
|
23292
|
+
"outline"
|
|
23293
|
+
]
|
|
23294
|
+
},
|
|
23295
|
+
"tag": "toc-ui",
|
|
23296
|
+
"tokens": {
|
|
23297
|
+
"--toc-fg": {
|
|
23298
|
+
"description": "Default link color.",
|
|
23299
|
+
"default": "var(--a-fg-muted)"
|
|
23300
|
+
},
|
|
23301
|
+
"--toc-fg-active": {
|
|
23302
|
+
"description": "Active-link color.",
|
|
23303
|
+
"default": "var(--a-fg)"
|
|
23304
|
+
},
|
|
23305
|
+
"--toc-fg-hover": {
|
|
23306
|
+
"description": "Hover color.",
|
|
23307
|
+
"default": "var(--a-fg)"
|
|
23308
|
+
},
|
|
23309
|
+
"--toc-gap": {
|
|
23310
|
+
"description": "Vertical gap between links.",
|
|
23311
|
+
"default": "var(--a-space-1)"
|
|
23312
|
+
},
|
|
23313
|
+
"--toc-indent": {
|
|
23314
|
+
"description": "Per-depth-level indent.",
|
|
23315
|
+
"default": "var(--a-space-3)"
|
|
23316
|
+
},
|
|
23317
|
+
"--toc-padding-block": {
|
|
23318
|
+
"description": "Per-link block padding (top/bottom).",
|
|
23319
|
+
"default": "var(--a-space-1)"
|
|
23320
|
+
},
|
|
23321
|
+
"--toc-padding-inline": {
|
|
23322
|
+
"description": "Per-link inline padding.",
|
|
23323
|
+
"default": "var(--a-space-2)"
|
|
23324
|
+
},
|
|
23325
|
+
"--toc-rule-active": {
|
|
23326
|
+
"description": "Active-item indicator rule color (left border).",
|
|
23327
|
+
"default": "var(--a-accent-bg)"
|
|
23328
|
+
},
|
|
23329
|
+
"--toc-size": {
|
|
23330
|
+
"description": "Link font-size.",
|
|
23331
|
+
"default": "var(--a-ui-sm)"
|
|
23332
|
+
}
|
|
23333
|
+
},
|
|
23334
|
+
"traits": [],
|
|
23335
|
+
"version": 1
|
|
23336
|
+
}
|
|
23337
|
+
},
|
|
21771
23338
|
"TableToolbar": {
|
|
21772
23339
|
"title": "TableToolbar",
|
|
21773
23340
|
"description": "Header / companion bar for a sibling table-ui. Renders title + count badge, filter / sort / columns popovers, and a search input — all wired to the target table via an [for] id-ref. Modeled on chart-legend-ui's [for] binding pattern. Drop next to (or above) any table-ui to add the standard data-grid toolbar without re-implementing search, filter, sort, or column visibility. Filter rows auto-pick a primitive per column: ≤ 50 distinct values → multi- select (searchable when ≥ 12 options), id-like keys → free-text contains. The column descriptor's `filter` field overrides the auto-detect: `'select'` forces multi-select even on high-cardinality columns; `'text'` forces a contains input even on small enums.",
|
|
@@ -22192,11 +23759,12 @@
|
|
|
22192
23759
|
"$ref": "#/$defs/DynamicString"
|
|
22193
23760
|
},
|
|
22194
23761
|
"tone": {
|
|
22195
|
-
"description": "Fill style — orthogonal to [variant].
|
|
23762
|
+
"description": "Fill style — orthogonal to [variant]. Three values:\n - `solid` (default for family variants) — saturated bg + on-strong\n (near-white) text. The chip IS the state.\n - `muted` — tinted bg with scheme-paired text. Matches <badge-ui>'s\n default look. Use on metadata chips in dense lists where the\n saturated default would compete for attention.\n - `outline` — transparent bg + family-colored border + family-colored\n text. The lightest visual weight; good in dense data tables or\n faceted filter rows where multiple chips would otherwise compete.\nThe `default` variant (no family) stays quiet chrome regardless of\ntone unless `tone=\"solid\"` is set explicitly (high-contrast neutral\ninverse), or `tone=\"outline\"` (fg-muted text + subtle border).\n",
|
|
22196
23763
|
"type": "string",
|
|
22197
23764
|
"enum": [
|
|
22198
23765
|
"solid",
|
|
22199
|
-
"muted"
|
|
23766
|
+
"muted",
|
|
23767
|
+
"outline"
|
|
22200
23768
|
],
|
|
22201
23769
|
"default": "solid"
|
|
22202
23770
|
},
|
|
@@ -23311,7 +24879,14 @@
|
|
|
23311
24879
|
"FeedItem",
|
|
23312
24880
|
"Stepper"
|
|
23313
24881
|
],
|
|
23314
|
-
"slots": {
|
|
24882
|
+
"slots": {
|
|
24883
|
+
"description": {
|
|
24884
|
+
"description": "Override slot for rich description markup (inline links, code spans, embedded badges). Renders beneath the primary text at body-subtle typography."
|
|
24885
|
+
},
|
|
24886
|
+
"icon": {
|
|
24887
|
+
"description": "Override the [icon] glyph with a custom slotted element. Use for branded icons, avatars, or non-Phosphor sources. Mutually exclusive with the [icon] attribute."
|
|
24888
|
+
}
|
|
24889
|
+
},
|
|
23315
24890
|
"states": [],
|
|
23316
24891
|
"status": "stable",
|
|
23317
24892
|
"synonyms": {
|
|
@@ -24609,6 +26184,9 @@
|
|
|
24609
26184
|
"slots": {
|
|
24610
26185
|
"default (tree-item-ui children)": {
|
|
24611
26186
|
"description": "Child content region for the `default (tree-item-ui children)` slot."
|
|
26187
|
+
},
|
|
26188
|
+
"icon": {
|
|
26189
|
+
"description": "Override slot for the per-node icon glyph. Tree-item's `[icon]` attr stamps a default Phosphor icon; the slot lets consumers fill custom icons (folder open/closed, file-type glyphs, branded markers)."
|
|
24612
26190
|
}
|
|
24613
26191
|
},
|
|
24614
26192
|
"states": [
|
|
@@ -24761,7 +26339,11 @@
|
|
|
24761
26339
|
"Nav",
|
|
24762
26340
|
"Accordion"
|
|
24763
26341
|
],
|
|
24764
|
-
"slots": {
|
|
26342
|
+
"slots": {
|
|
26343
|
+
"icon": {
|
|
26344
|
+
"description": "Override the leading [icon] glyph with a custom slotted element (custom icon-ui, folder open/closed glyph, file-type marker). Mutually exclusive with the [icon] attribute — slot child wins."
|
|
26345
|
+
}
|
|
26346
|
+
},
|
|
24765
26347
|
"states": [],
|
|
24766
26348
|
"status": "stable",
|
|
24767
26349
|
"synonyms": {
|
|
@@ -24961,6 +26543,75 @@
|
|
|
24961
26543
|
"traits": [],
|
|
24962
26544
|
"version": 1
|
|
24963
26545
|
}
|
|
26546
|
+
},
|
|
26547
|
+
"VisuallyHidden": {
|
|
26548
|
+
"title": "VisuallyHidden",
|
|
26549
|
+
"description": "Accessibility utility — content visible to screen readers but hidden\nvisually (the canonical \"sr-only\" pattern). Use for icon-only buttons,\ncontextual labels on duplicate controls, status announcements via\nlive regions, and any text the AT needs but sighted users don't.\n\nDistinct from `[hidden]` / `display:none` (hidden from EVERYONE\nincluding AT) and from `aria-label` (which replaces visible text but\ndoesn't add invisible text). When you need both visible and invisible\ntext on the same element, `<visually-hidden-ui>` is the wrapper for\nthe invisible part.\n",
|
|
26550
|
+
"type": "object",
|
|
26551
|
+
"allOf": [
|
|
26552
|
+
{
|
|
26553
|
+
"$ref": "#/$defs/ComponentCommon"
|
|
26554
|
+
},
|
|
26555
|
+
{
|
|
26556
|
+
"$ref": "#/$defs/CatalogComponentCommon"
|
|
26557
|
+
}
|
|
26558
|
+
],
|
|
26559
|
+
"properties": {
|
|
26560
|
+
"component": {
|
|
26561
|
+
"const": "VisuallyHidden"
|
|
26562
|
+
}
|
|
26563
|
+
},
|
|
26564
|
+
"required": [
|
|
26565
|
+
"component"
|
|
26566
|
+
],
|
|
26567
|
+
"unevaluatedProperties": false,
|
|
26568
|
+
"x-adiaui": {
|
|
26569
|
+
"anti_patterns": [
|
|
26570
|
+
{
|
|
26571
|
+
"fix": "<button-ui icon=\"trash\"><visually-hidden-ui>Delete</visually-hidden-ui></button-ui> OR set aria-label=\"Delete\" — but visually-hidden-ui scales to longer context (\"Delete row 42 in the orders table\") without overloading the label attribute.",
|
|
26572
|
+
"why": "Icon-only buttons with no accessible name are unreadable for screen-reader users.",
|
|
26573
|
+
"wrong": "<button-ui icon=\"trash\"></button-ui>"
|
|
26574
|
+
}
|
|
26575
|
+
],
|
|
26576
|
+
"category": "utility",
|
|
26577
|
+
"composes": [],
|
|
26578
|
+
"events": {},
|
|
26579
|
+
"examples": [
|
|
26580
|
+
{
|
|
26581
|
+
"description": "Sr-only label for an icon-only button.",
|
|
26582
|
+
"a2ui": "[\n { \"id\": \"btn\", \"component\": \"Button\", \"icon\": \"trash\", \"children\": [\"lbl\"] },\n { \"id\": \"lbl\", \"component\": \"VisuallyHidden\", \"textContent\": \"Delete row\" }\n]\n",
|
|
26583
|
+
"name": "icon-button-label"
|
|
26584
|
+
}
|
|
26585
|
+
],
|
|
26586
|
+
"keywords": [
|
|
26587
|
+
"visually-hidden",
|
|
26588
|
+
"sr-only",
|
|
26589
|
+
"screen-reader",
|
|
26590
|
+
"a11y",
|
|
26591
|
+
"accessibility"
|
|
26592
|
+
],
|
|
26593
|
+
"name": "UIVisuallyHidden",
|
|
26594
|
+
"related": [
|
|
26595
|
+
"text"
|
|
26596
|
+
],
|
|
26597
|
+
"slots": {
|
|
26598
|
+
"default": {
|
|
26599
|
+
"description": "The text or content to hide visually while keeping accessible."
|
|
26600
|
+
}
|
|
26601
|
+
},
|
|
26602
|
+
"states": [
|
|
26603
|
+
{
|
|
26604
|
+
"description": "Default — content is visually hidden but in the accessibility tree.",
|
|
26605
|
+
"name": "idle"
|
|
26606
|
+
}
|
|
26607
|
+
],
|
|
26608
|
+
"status": "stable",
|
|
26609
|
+
"synonyms": {},
|
|
26610
|
+
"tag": "visually-hidden-ui",
|
|
26611
|
+
"tokens": {},
|
|
26612
|
+
"traits": [],
|
|
26613
|
+
"version": 1
|
|
26614
|
+
}
|
|
24964
26615
|
}
|
|
24965
26616
|
},
|
|
24966
26617
|
"functions": {
|