@adia-ai/a2ui-corpus 0.3.4 → 0.3.6

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.
Files changed (183) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/catalog-a2ui_0_9.json +880 -136
  3. package/catalog-a2ui_0_9_rules.txt +39 -0
  4. package/chunks/_index.json +83 -4
  5. package/chunks/agent-activity-feed.json +1 -1
  6. package/chunks/agent-canvas-shell.json +33 -0
  7. package/chunks/agent-reasoning-collapsed.json +1 -1
  8. package/chunks/auth-account-deleted-actions.json +1 -1
  9. package/chunks/auth-account-deleted.json +1 -1
  10. package/chunks/auth-card-content.json +1 -1
  11. package/chunks/auth-card-header.json +1 -1
  12. package/chunks/auth-email-entry.json +1 -1
  13. package/chunks/auth-email-verify-confirm.json +1 -1
  14. package/chunks/auth-email-verify.json +1 -1
  15. package/chunks/auth-forbidden-actions.json +1 -1
  16. package/chunks/auth-forbidden.json +1 -1
  17. package/chunks/auth-invite-actions.json +1 -1
  18. package/chunks/auth-invite-team-card.json +1 -1
  19. package/chunks/auth-link-expired-form.json +1 -1
  20. package/chunks/auth-link-expired.json +1 -1
  21. package/chunks/auth-locked-account.json +1 -1
  22. package/chunks/auth-locked-recovery-options.json +1 -1
  23. package/chunks/auth-mfa-enrollment-submit.json +1 -1
  24. package/chunks/auth-mfa-enrollment.json +1 -1
  25. package/chunks/auth-mfa-fallback-actions.json +1 -1
  26. package/chunks/auth-mfa-recovery.json +1 -1
  27. package/chunks/auth-new-password-form.json +1 -1
  28. package/chunks/auth-new-password.json +1 -1
  29. package/chunks/auth-oauth-fallback-actions.json +1 -1
  30. package/chunks/auth-oauth-interstitial.json +1 -1
  31. package/chunks/auth-password-challenge.json +1 -1
  32. package/chunks/auth-password-reset-form.json +1 -1
  33. package/chunks/auth-password-reset.json +1 -1
  34. package/chunks/auth-profile-form.json +1 -1
  35. package/chunks/auth-profile-setup.json +1 -1
  36. package/chunks/auth-reset-sent.json +1 -1
  37. package/chunks/auth-session-expired-actions.json +1 -1
  38. package/chunks/auth-session-expired.json +1 -1
  39. package/chunks/auth-signin-card-email.json +1 -1
  40. package/chunks/auth-signin-card-magic-link.json +1 -1
  41. package/chunks/auth-signin-card-mfa.json +1 -1
  42. package/chunks/auth-signin-card-otp.json +1 -1
  43. package/chunks/auth-signin-card-password.json +1 -1
  44. package/chunks/auth-signin-card-recovery.json +1 -1
  45. package/chunks/auth-signout-actions.json +1 -1
  46. package/chunks/auth-signout.json +1 -1
  47. package/chunks/auth-signup-email-entry.json +1 -1
  48. package/chunks/auth-signup-entry.json +1 -1
  49. package/chunks/auth-signup-social-auths.json +1 -1
  50. package/chunks/auth-signup-verify.json +1 -1
  51. package/chunks/auth-social-auths.json +1 -1
  52. package/chunks/auth-sso-providers.json +1 -1
  53. package/chunks/auth-sso-required.json +1 -1
  54. package/chunks/auth-team-invite.json +1 -1
  55. package/chunks/chat-page-shell.json +33 -0
  56. package/chunks/chat-streaming-surface.json +1 -1
  57. package/chunks/command-palette.json +1 -1
  58. package/chunks/commerce-pricing-tiers.json +1 -1
  59. package/chunks/conversion-funnel-6step.json +1 -1
  60. package/chunks/dashboard-acquisition-panel.json +1 -1
  61. package/chunks/dashboard-admin-page.json +1 -1
  62. package/chunks/dashboard-audience-kpis.json +1 -1
  63. package/chunks/dashboard-audience-panel.json +1 -1
  64. package/chunks/dashboard-behavior-panel.json +1 -1
  65. package/chunks/dashboard-chart-recent.json +1 -1
  66. package/chunks/dashboard-cohort-retention.json +1 -1
  67. package/chunks/dashboard-conversion-panel.json +1 -1
  68. package/chunks/dashboard-country-list.json +1 -1
  69. package/chunks/dashboard-filter-bar.json +1 -1
  70. package/chunks/dashboard-funnel.json +1 -1
  71. package/chunks/dashboard-kpi-grid.json +1 -1
  72. package/chunks/dashboard-notifications-feed.json +1 -1
  73. package/chunks/dashboard-notifications-panel.json +1 -1
  74. package/chunks/dashboard-overview-panel.json +1 -1
  75. package/chunks/dashboard-page-header.json +1 -1
  76. package/chunks/dashboard-pages-table.json +1 -1
  77. package/chunks/dashboard-quick-actions.json +1 -1
  78. package/chunks/dashboard-reports-panel.json +1 -1
  79. package/chunks/dashboard-reports-table.json +1 -1
  80. package/chunks/dashboard-spark-cards.json +1 -1
  81. package/chunks/dashboard-storage-card.json +1 -1
  82. package/chunks/dashboard-tabs.json +1 -1
  83. package/chunks/dashboard-team-actions-storage.json +1 -1
  84. package/chunks/dashboard-team-list.json +1 -1
  85. package/chunks/dashboard-traffic-channels.json +1 -1
  86. package/chunks/dashboard-transactions-table.json +1 -1
  87. package/chunks/destructive-confirm-modal.json +1 -1
  88. package/chunks/doc-editor-shell.json +33 -0
  89. package/chunks/drawer-2fa-key.json +1 -1
  90. package/chunks/drawer-2fa-sms.json +1 -1
  91. package/chunks/drawer-2fa-totp.json +1 -1
  92. package/chunks/drawer-cancel-sub.json +1 -1
  93. package/chunks/drawer-change-plan.json +1 -1
  94. package/chunks/drawer-custom-roles.json +1 -1
  95. package/chunks/drawer-data-start.json +1 -1
  96. package/chunks/drawer-delete-account.json +1 -1
  97. package/chunks/drawer-delete-workspace.json +1 -1
  98. package/chunks/drawer-discord.json +1 -1
  99. package/chunks/drawer-figma.json +1 -1
  100. package/chunks/drawer-first-dashboard.json +1 -1
  101. package/chunks/drawer-gcal.json +1 -1
  102. package/chunks/drawer-github.json +1 -1
  103. package/chunks/drawer-invite.json +1 -1
  104. package/chunks/drawer-payment-method.json +1 -1
  105. package/chunks/drawer-report.json +1 -1
  106. package/chunks/drawer-revoke-session.json +1 -1
  107. package/chunks/drawer-role.json +1 -1
  108. package/chunks/drawer-slack.json +1 -1
  109. package/chunks/drawer-smtp.json +1 -1
  110. package/chunks/drawer-source.json +1 -1
  111. package/chunks/drawer-transaction.json +1 -1
  112. package/chunks/editor-code-pane.json +1 -1
  113. package/chunks/editor-page-shell.json +1 -1
  114. package/chunks/editor-preview-pane.json +1 -1
  115. package/chunks/error-404-actions.json +1 -1
  116. package/chunks/error-404.json +1 -1
  117. package/chunks/error-500-actions.json +1 -1
  118. package/chunks/error-500.json +1 -1
  119. package/chunks/error-maintenance-actions.json +1 -1
  120. package/chunks/error-maintenance.json +1 -1
  121. package/chunks/error-page-shell.json +1 -1
  122. package/chunks/form-page-shell.json +1 -1
  123. package/chunks/gallery-page-shell.json +33 -0
  124. package/chunks/kanban-board-3col.json +1 -1
  125. package/chunks/kanban-page-shell.json +28 -0
  126. package/chunks/marketing-hero-cta.json +1 -1
  127. package/chunks/marketing-page-shell.json +1 -1
  128. package/chunks/member-edit-drawer.json +1 -1
  129. package/chunks/onb-completion.json +1 -1
  130. package/chunks/onb-extension-install.json +1 -1
  131. package/chunks/onb-hero-welcome.json +1 -1
  132. package/chunks/onb-import-picker.json +1 -1
  133. package/chunks/onb-mobile-handoff.json +1 -1
  134. package/chunks/onb-notification-prefs.json +1 -1
  135. package/chunks/onb-persona-picker.json +1 -1
  136. package/chunks/onb-provider-tiles.json +1 -1
  137. package/chunks/onb-settings-review.json +1 -1
  138. package/chunks/onb-step-footer.json +1 -1
  139. package/chunks/onb-step-header.json +1 -1
  140. package/chunks/onb-step-progress.json +1 -1
  141. package/chunks/onb-step-shell.json +1 -1
  142. package/chunks/onb-story-pane.json +1 -1
  143. package/chunks/onb-tutorial-steps.json +1 -1
  144. package/chunks/playground-a2ui.json +1 -1
  145. package/chunks/playground-app-shell.json +1 -1
  146. package/chunks/playground-chat.json +1 -1
  147. package/chunks/playground-construct-canvas.json +1 -1
  148. package/chunks/playground-gen-ui.json +1 -1
  149. package/chunks/playground-render-preview.json +1 -1
  150. package/chunks/playground-streams-bridge.json +1 -1
  151. package/chunks/playground-table-toolbar.json +1 -1
  152. package/chunks/reg-address-form.json +1 -1
  153. package/chunks/reg-billing-card.json +1 -1
  154. package/chunks/reg-brand-scrape.json +1 -1
  155. package/chunks/reg-departments-toggle.json +1 -1
  156. package/chunks/reg-extended-profile.json +1 -1
  157. package/chunks/reg-final-done.json +1 -1
  158. package/chunks/reg-helpdesk-grid.json +1 -1
  159. package/chunks/reg-import-picker.json +1 -1
  160. package/chunks/reg-integrations-grid.json +1 -1
  161. package/chunks/reg-invite-form.json +1 -1
  162. package/chunks/reg-legal-entity.json +1 -1
  163. package/chunks/reg-org-chart-review.json +1 -1
  164. package/chunks/reg-profile-identity.json +1 -1
  165. package/chunks/reg-step-footer.json +1 -1
  166. package/chunks/reg-step-header.json +1 -1
  167. package/chunks/reg-step-progress.json +1 -1
  168. package/chunks/reg-step-shell.json +1 -1
  169. package/chunks/reg-story-pane.json +1 -1
  170. package/chunks/reg-success-summary.json +1 -1
  171. package/chunks/reg-team-size.json +1 -1
  172. package/chunks/reg-usecase-picker.json +1 -1
  173. package/chunks/reg-workspace-name.json +1 -1
  174. package/chunks/settings-billing-plan.json +1 -1
  175. package/chunks/settings-general-form.json +1 -1
  176. package/chunks/settings-integrations.json +1 -1
  177. package/chunks/settings-members-invite.json +1 -1
  178. package/chunks/settings-notifications.json +1 -1
  179. package/chunks/settings-page-shell.json +1 -1
  180. package/chunks/settings-profile-security.json +1 -1
  181. package/chunks/user-profile-card.json +1 -1
  182. package/chunks/users-table-badge.json +1 -1
  183. package/package.json +1 -1
@@ -3692,6 +3692,239 @@
3692
3692
  "version": 1
3693
3693
  }
3694
3694
  },
3695
+ "ChatComposer": {
3696
+ "title": "ChatComposer",
3697
+ "description": "Module-tier chat composer wrapper — replaces legacy <chat-input-ui\ndata-chat-input> direct child of <chat-shell> per ADR-0023.\nForwards submit events as 'composer-submit', propagates [disabled]\nto the inner input, provides slot vocabulary for future composer\nsurfaces (file attach, autocomplete, model picker).\n\nSits inside <chat-shell> as the input region (typically inside or\nalongside the footer). Authors place an inner <chat-input-ui>\n(or input-ui / textarea-ui) as the primary input.\n\nBackwards compat — <chat-shell> still recognizes the legacy\n<chat-input-ui data-chat-input> shape via :is() selector. New\ncode should prefer <chat-composer>.\n",
3698
+ "type": "object",
3699
+ "allOf": [
3700
+ {
3701
+ "$ref": "#/$defs/ComponentCommon"
3702
+ },
3703
+ {
3704
+ "$ref": "#/$defs/CatalogComponentCommon"
3705
+ }
3706
+ ],
3707
+ "properties": {
3708
+ "component": {
3709
+ "const": "ChatComposer"
3710
+ },
3711
+ "disabled": {
3712
+ "description": "Reflected — set by the host while streaming, or by application\ncode. Propagated to the inner input element automatically.\n",
3713
+ "type": "boolean",
3714
+ "default": false
3715
+ }
3716
+ },
3717
+ "required": [
3718
+ "component"
3719
+ ],
3720
+ "unevaluatedProperties": false,
3721
+ "x-adiaui": {
3722
+ "anti_patterns": [],
3723
+ "category": "input",
3724
+ "events": {
3725
+ "composer-submit": {
3726
+ "description": "Bubbles when the inner input fires its 'submit' event. Detail mirrors the inner event's detail (typically text + model).",
3727
+ "detail": {
3728
+ "model": "string",
3729
+ "text": "string"
3730
+ }
3731
+ }
3732
+ },
3733
+ "examples": [],
3734
+ "keywords": [
3735
+ "chat-composer",
3736
+ "chat-input",
3737
+ "composer",
3738
+ "message-input",
3739
+ "conversation-input"
3740
+ ],
3741
+ "name": "ChatComposer",
3742
+ "related": [
3743
+ "ChatShell",
3744
+ "ChatThread",
3745
+ "ChatInput",
3746
+ "Input",
3747
+ "Textarea"
3748
+ ],
3749
+ "slots": {
3750
+ "default": {
3751
+ "description": "Default — primary input child (typically <chat-input-ui> or <input-ui submit-on-enter>)."
3752
+ },
3753
+ "attach": {
3754
+ "description": "Future — attachment trigger button (paperclip icon to upload)."
3755
+ },
3756
+ "leading": {
3757
+ "description": "Leading controls — autocomplete trigger, voice input, etc."
3758
+ },
3759
+ "trailing": {
3760
+ "description": "Trailing controls — model picker, send button override, etc."
3761
+ }
3762
+ },
3763
+ "states": [
3764
+ {
3765
+ "description": "Default, accepting input.",
3766
+ "name": "idle"
3767
+ },
3768
+ {
3769
+ "description": "Input is disabled (typically during LLM streaming).",
3770
+ "attribute": "disabled",
3771
+ "name": "disabled"
3772
+ }
3773
+ ],
3774
+ "synonyms": {
3775
+ "composer": [
3776
+ "message-input",
3777
+ "chat-input",
3778
+ "conversation-input"
3779
+ ]
3780
+ },
3781
+ "tag": "chat-composer",
3782
+ "tokens": {},
3783
+ "traits": [],
3784
+ "version": 1
3785
+ }
3786
+ },
3787
+ "ChatEmpty": {
3788
+ "title": "ChatEmpty",
3789
+ "description": "Module-tier chat empty state. CSS-only — no behavior, no JS. Sits\nas the first child of <chat-thread> as the empty state placeholder.\nVisibility is driven by <chat-thread>'s [empty] reflected attribute\nvia CSS (no JS toggling needed) — when messages arrive, the parent\nthread loses [empty] and CSS hides this stub.\n\nReplaces the legacy <empty-state-ui data-chat-empty> child of the\nmessages container per ADR-0023. Both shapes still work via\nbackwards compat; new code should prefer <chat-empty>.\n",
3790
+ "type": "object",
3791
+ "allOf": [
3792
+ {
3793
+ "$ref": "#/$defs/ComponentCommon"
3794
+ },
3795
+ {
3796
+ "$ref": "#/$defs/CatalogComponentCommon"
3797
+ }
3798
+ ],
3799
+ "properties": {
3800
+ "component": {
3801
+ "const": "ChatEmpty"
3802
+ }
3803
+ },
3804
+ "required": [
3805
+ "component"
3806
+ ],
3807
+ "unevaluatedProperties": false,
3808
+ "x-adiaui": {
3809
+ "anti_patterns": [],
3810
+ "category": "feedback",
3811
+ "events": {},
3812
+ "examples": [],
3813
+ "keywords": [
3814
+ "chat-empty",
3815
+ "empty-state",
3816
+ "placeholder",
3817
+ "no-messages"
3818
+ ],
3819
+ "name": "ChatEmpty",
3820
+ "related": [
3821
+ "ChatShell",
3822
+ "ChatThread",
3823
+ "EmptyState"
3824
+ ],
3825
+ "slots": {
3826
+ "default": {
3827
+ "description": "Empty state content — typically an icon + heading + description. Authors compose with <empty-state-ui> as a child, or supply inline content directly."
3828
+ }
3829
+ },
3830
+ "states": [
3831
+ {
3832
+ "description": "Default, visible.",
3833
+ "name": "idle"
3834
+ },
3835
+ {
3836
+ "description": "Hidden via parent <chat-thread>:not([empty]) selector.",
3837
+ "name": "hidden"
3838
+ }
3839
+ ],
3840
+ "synonyms": {
3841
+ "chat-empty": [
3842
+ "empty-state",
3843
+ "placeholder",
3844
+ "no-conversations"
3845
+ ]
3846
+ },
3847
+ "tag": "chat-empty",
3848
+ "tokens": {},
3849
+ "traits": [],
3850
+ "version": 1
3851
+ }
3852
+ },
3853
+ "ChatHeader": {
3854
+ "title": "ChatHeader",
3855
+ "description": "Module-tier chat header chrome bar. CSS-only — no behavior, no JS.\nSits at the top of <chat-shell> or inside a <chat-sidebar>. Holds\nthe chat name, status indicator, and action clusters via slot\nvocabulary.\n\nReplaces the legacy <header> with [data-chat-name] / [data-chat-status]\ndata-attribute children. Both shapes still work per ADR-0023 backwards\ncompat; new code should prefer <chat-header> with <chat-status> as\na slotted child.\n",
3856
+ "type": "object",
3857
+ "allOf": [
3858
+ {
3859
+ "$ref": "#/$defs/ComponentCommon"
3860
+ },
3861
+ {
3862
+ "$ref": "#/$defs/CatalogComponentCommon"
3863
+ }
3864
+ ],
3865
+ "properties": {
3866
+ "component": {
3867
+ "const": "ChatHeader"
3868
+ }
3869
+ },
3870
+ "required": [
3871
+ "component"
3872
+ ],
3873
+ "unevaluatedProperties": false,
3874
+ "x-adiaui": {
3875
+ "anti_patterns": [],
3876
+ "category": "layout",
3877
+ "events": {},
3878
+ "examples": [],
3879
+ "keywords": [
3880
+ "chat-header",
3881
+ "chat-titlebar",
3882
+ "chrome-bar",
3883
+ "app-header"
3884
+ ],
3885
+ "name": "ChatHeader",
3886
+ "related": [
3887
+ "ChatShell",
3888
+ "ChatStatus",
3889
+ "ChatThread",
3890
+ "ChatComposer"
3891
+ ],
3892
+ "slots": {
3893
+ "default": {
3894
+ "description": "Default — typically [slot=\"name\"] + [slot=\"status\"] children, or ad-hoc inline content."
3895
+ },
3896
+ "action": {
3897
+ "description": "Trailing control cluster (settings, share, clear conversation)."
3898
+ },
3899
+ "action-leading": {
3900
+ "description": "Leading control cluster (back button, conversation switcher)."
3901
+ },
3902
+ "name": {
3903
+ "description": "Primary chat label (model name, conversation title, etc.)."
3904
+ },
3905
+ "status": {
3906
+ "description": "Status indicator — typically <chat-status> showing connection / streaming state."
3907
+ }
3908
+ },
3909
+ "states": [
3910
+ {
3911
+ "description": "Default, the only state.",
3912
+ "name": "idle"
3913
+ }
3914
+ ],
3915
+ "synonyms": {
3916
+ "chat-header": [
3917
+ "titlebar",
3918
+ "app-header",
3919
+ "navbar"
3920
+ ]
3921
+ },
3922
+ "tag": "chat-header",
3923
+ "tokens": {},
3924
+ "traits": [],
3925
+ "version": 1
3926
+ }
3927
+ },
3695
3928
  "ChatShell": {
3696
3929
  "title": "ChatShell",
3697
3930
  "description": "Behavior-only chat orchestrator (LLM-streaming module). Author supplies the\nDOM structure via [data-chat-messages], [data-chat-input], [data-chat-empty],\n[data-chat-status] elements; chat-shell wires message streaming, markdown\nrendering, code-block upgrades, and an LLM integration path via proxy-url\n(or via external submit).\n",
@@ -3839,9 +4072,9 @@
3839
4072
  "version": 1
3840
4073
  }
3841
4074
  },
3842
- "ChatThread": {
3843
- "title": "ChatThread",
3844
- "description": "Minimal chat-thread container.",
4075
+ "ChatSidebar": {
4076
+ "title": "ChatSidebar",
4077
+ "description": "Module-tier chat-cluster sidebar — owns resize, snap-to-collapsed,\npersistence, and the [collapsed] reflected attribute. Sits inside\n<chat-shell> as slot=\"leading\" (conversation history rail) or\nslot=\"trailing\" (artifacts/citations panel). Mirrors the admin-sidebar\nshape — same 4 concerns, cluster-namespaced for the chat family.\n\nThis is the chat-cluster equivalent of <admin-sidebar> per ADR-0023.\n<chat-shell> doesn't currently have a legacy sidebar shape (chat is\ntypically a single-pane experience), so <chat-sidebar> is purely\nforward-looking — for chat apps that want conversation-history or\ninspector rails.\n",
3845
4078
  "type": "object",
3846
4079
  "allOf": [
3847
4080
  {
@@ -3852,11 +4085,36 @@
3852
4085
  }
3853
4086
  ],
3854
4087
  "properties": {
4088
+ "collapsed": {
4089
+ "description": "Reflected — set when the sidebar's measured width is at or below\n96px. Consumers query this to style \"collapsed mode\" without\nduplicating threshold math.\n",
4090
+ "type": "boolean",
4091
+ "default": false
4092
+ },
4093
+ "collapsible": {
4094
+ "description": "Opts in to programmatic collapse — toggle button wiring + the\n.toggle() / .collapse() / .expand() public methods.\n",
4095
+ "type": "boolean",
4096
+ "default": false
4097
+ },
3855
4098
  "component": {
3856
- "const": "ChatThread"
4099
+ "const": "ChatSidebar"
3857
4100
  },
3858
- "streaming": {
3859
- "description": "Component property: streaming.",
4101
+ "min-width": {
4102
+ "description": "Optional override for the snap-floor width. Defaults to reading\nCSS min-width via getComputedStyle.\n",
4103
+ "type": "string",
4104
+ "default": ""
4105
+ },
4106
+ "name": {
4107
+ "description": "Identifier for localStorage namespacing. Defaults to slot value\n(\"leading\" or \"trailing\"). Override when running multiple sidebars\nwith the same slot.\n",
4108
+ "type": "string",
4109
+ "default": ""
4110
+ },
4111
+ "resizable": {
4112
+ "description": "Opts in to drag-to-resize behavior. Author supplies a child\n[data-resize] element as the drag handle.\n",
4113
+ "type": "boolean",
4114
+ "default": false
4115
+ },
4116
+ "resizing": {
4117
+ "description": "Reflected — set during an active pointer-drag on the resize handle.\nUseful for suppressing transitions while dragging.\n",
3860
4118
  "type": "boolean",
3861
4119
  "default": false
3862
4120
  }
@@ -3867,152 +4125,232 @@
3867
4125
  "unevaluatedProperties": false,
3868
4126
  "x-adiaui": {
3869
4127
  "anti_patterns": [],
3870
- "category": "agent",
4128
+ "category": "layout",
3871
4129
  "events": {
3872
- "submit": {
3873
- "description": "Fired when the user submits a chat message via Enter or send button. Detail: { text, model }."
3874
- }
3875
- },
3876
- "examples": [
3877
- {
3878
- "description": "Basic Chat usage",
3879
- "a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Card\",\n \"children\": [\n \"sec\"\n ]\n },\n {\n \"id\": \"sec\",\n \"component\": \"Section\",\n \"children\": [\n \"comp\"\n ]\n },\n {\n \"id\": \"comp\",\n \"component\": \"Chat\"\n }\n]",
3880
- "name": "basic-chat"
3881
- },
3882
- {
3883
- "description": "Chat transcript with user and assistant messages; role attribute styles turns.",
3884
- "a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Chat\",\n \"children\": [\n \"m1\",\n \"m2\"\n ]\n },\n {\n \"id\": \"m1\",\n \"component\": \"Text\",\n \"role\": \"user\",\n \"textContent\": \"What's the capital of France?\"\n },\n {\n \"id\": \"m2\",\n \"component\": \"Text\",\n \"role\": \"assistant\",\n \"textContent\": \"The capital of France is Paris.\"\n }\n]",
3885
- "name": "basic"
3886
- },
3887
- {
3888
- "description": "Chat with streaming cursor on an in-progress assistant message.",
3889
- "a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Chat\",\n \"streaming\": true,\n \"children\": [\n \"m1\",\n \"m2\"\n ]\n },\n {\n \"id\": \"m1\",\n \"component\": \"Text\",\n \"role\": \"user\",\n \"textContent\": \"Explain black holes briefly.\"\n },\n {\n \"id\": \"m2\",\n \"component\": \"Text\",\n \"role\": \"assistant\",\n \"streaming\": true,\n \"textContent\": \"A black hole is a region of spacetime where gravity is so strong that\"\n }\n]",
3890
- "name": "streaming"
4130
+ "sidebar-resize": {
4131
+ "description": "Bubbles when an active pointer-drag releases.",
4132
+ "detail": {
4133
+ "name": "string",
4134
+ "width": "number"
4135
+ }
3891
4136
  },
3892
- {
3893
- "description": "Chat transcript composed with ChatInput for a full conversation surface.",
3894
- "a2ui": "[\n {\n \"id\": \"root\",\n \"component\": \"Column\",\n \"gap\": \"2\",\n \"children\": [\n \"chat\",\n \"input\"\n ]\n },\n {\n \"id\": \"chat\",\n \"component\": \"Chat\",\n \"children\": [\n \"m1\",\n \"m2\"\n ]\n },\n {\n \"id\": \"m1\",\n \"component\": \"Text\",\n \"role\": \"user\",\n \"textContent\": \"Give me a short haiku about the ocean.\"\n },\n {\n \"id\": \"m2\",\n \"component\": \"Text\",\n \"role\": \"assistant\",\n \"textContent\": \"Waves whisper secrets — the tide retreats then returns, carrying the moon.\"\n },\n {\n \"id\": \"input\",\n \"component\": \"ChatInput\",\n \"placeholder\": \"Type a message...\"\n }\n]",
3895
- "name": "with-input"
4137
+ "sidebar-toggle": {
4138
+ "description": "Bubbles when sidebar collapses or expands.",
4139
+ "detail": {
4140
+ "expanded": "boolean",
4141
+ "name": "string"
4142
+ }
3896
4143
  }
3897
- ],
4144
+ },
4145
+ "examples": [],
3898
4146
  "keywords": [
3899
- "chat",
3900
- "message",
3901
- "messaging",
3902
- "sms",
3903
- "chatbot",
3904
- "conversation",
3905
- "ai-chat",
3906
- "messenger",
3907
- "assistant",
3908
- "copilot",
3909
- "gpt",
3910
- "llm",
3911
- "ai",
3912
- "bot",
3913
- "prompt",
3914
- "comment",
3915
- "support"
4147
+ "chat-sidebar",
4148
+ "chat-sidebar",
4149
+ "conversation-history",
4150
+ "chat-rail",
4151
+ "sidebar",
4152
+ "leading",
4153
+ "trailing",
4154
+ "inspector"
4155
+ ],
4156
+ "name": "ChatSidebar",
4157
+ "related": [
4158
+ "ChatShell",
4159
+ "ChatComposer",
4160
+ "ChatHeader",
4161
+ "List",
4162
+ "Nav"
3916
4163
  ],
3917
- "name": "UIChatThread",
3918
- "related": [],
3919
4164
  "slots": {
3920
4165
  "default": {
3921
- "description": "Default slotprimary child content."
4166
+ "description": "Default contenttypically a <nav-ui> for navigation, or a list / tree for the trailing inspector pattern."
4167
+ },
4168
+ "footer": {
4169
+ "description": "Bottom chrome bar (user select, status indicator, etc.)."
4170
+ },
4171
+ "header": {
4172
+ "description": "Top chrome bar (workspace select, breadcrumb, etc.)."
3922
4173
  }
3923
4174
  },
3924
4175
  "states": [
3925
4176
  {
3926
- "description": "Default, ready for interaction.",
4177
+ "description": "Default, expanded.",
3927
4178
  "name": "idle"
3928
- }
3929
- ],
3930
- "synonyms": {
3931
- "ai": [
3932
- "chat",
3933
- "streaming",
3934
- "response",
3935
- "command"
3936
- ],
3937
- "ai-chat": [
3938
- "chat",
3939
- "streaming",
3940
- "response"
3941
- ],
3942
- "assistant": [
3943
- "chat",
3944
- "streaming",
3945
- "response",
3946
- "command"
3947
- ],
3948
- "bot": [
3949
- "chat",
3950
- "streaming",
3951
- "response"
3952
- ],
3953
- "chatbot": [
3954
- "chat",
3955
- "streaming",
3956
- "response"
3957
- ],
3958
- "comment": [
3959
- "social",
3960
- "post",
3961
- "chat"
3962
- ],
3963
- "conversation": [
3964
- "chat",
3965
- "streaming",
3966
- "response"
3967
- ],
3968
- "copilot": [
3969
- "chat",
3970
- "streaming",
3971
- "response",
3972
- "command"
3973
- ],
3974
- "gpt": [
3975
- "chat",
3976
- "streaming",
3977
- "response"
3978
- ],
3979
- "llm": [
3980
- "chat",
3981
- "streaming",
3982
- "response"
3983
- ],
3984
- "message": [
3985
- "chat",
3986
- "notification",
3987
- "toast",
3988
- "alert"
3989
- ],
3990
- "messaging": [
3991
- "chat",
3992
- "notification",
3993
- "streaming"
3994
- ],
3995
- "messenger": [
3996
- "chat",
3997
- "streaming"
3998
- ],
3999
- "prompt": [
4000
- "chat",
4001
- "streaming",
4002
- "command",
4003
- "palette"
4179
+ },
4180
+ {
4181
+ "description": "Sidebar width is at or below the snap threshold; CSS container queries flip child layout to icon-only mode.",
4182
+ "attribute": "collapsed",
4183
+ "name": "collapsed"
4184
+ },
4185
+ {
4186
+ "description": "Active pointer-drag in progress.",
4187
+ "attribute": "resizing",
4188
+ "name": "resizing"
4189
+ }
4190
+ ],
4191
+ "synonyms": {
4192
+ "collapsed": [
4193
+ "minimized",
4194
+ "narrow",
4195
+ "icon-only"
4004
4196
  ],
4005
- "sms": [
4006
- "chat",
4007
- "notification"
4197
+ "sidebar": [
4198
+ "aside",
4199
+ "rail",
4200
+ "panel"
4201
+ ]
4202
+ },
4203
+ "tag": "chat-sidebar",
4204
+ "tokens": {},
4205
+ "traits": [],
4206
+ "version": 1
4207
+ }
4208
+ },
4209
+ "ChatStatus": {
4210
+ "title": "ChatStatus",
4211
+ "description": "Module-tier chat status indicator. CSS-only — no behavior, no JS.\nConveys connection / streaming state via inline content. Typically\nslotted into <chat-header slot=\"status\"> or used inline.\n\nReplaces the legacy <span data-chat-status> shape per ADR-0023.\n",
4212
+ "type": "object",
4213
+ "allOf": [
4214
+ {
4215
+ "$ref": "#/$defs/ComponentCommon"
4216
+ },
4217
+ {
4218
+ "$ref": "#/$defs/CatalogComponentCommon"
4219
+ }
4220
+ ],
4221
+ "properties": {
4222
+ "component": {
4223
+ "const": "ChatStatus"
4224
+ }
4225
+ },
4226
+ "required": [
4227
+ "component"
4228
+ ],
4229
+ "unevaluatedProperties": false,
4230
+ "x-adiaui": {
4231
+ "anti_patterns": [],
4232
+ "category": "feedback",
4233
+ "events": {},
4234
+ "examples": [],
4235
+ "keywords": [
4236
+ "chat-status",
4237
+ "status-indicator",
4238
+ "connection-status",
4239
+ "streaming-indicator"
4240
+ ],
4241
+ "name": "ChatStatus",
4242
+ "related": [
4243
+ "ChatShell",
4244
+ "ChatHeader",
4245
+ "ChatThread"
4246
+ ],
4247
+ "slots": {
4248
+ "default": {
4249
+ "description": "Status content — text, icon, dot indicator, etc. Authors set content directly; the host (chat-shell) updates innerText during streaming via legacy [data-chat-status] selector OR via querySelector('chat-status') for the bespoke shape."
4250
+ }
4251
+ },
4252
+ "states": [
4253
+ {
4254
+ "description": "Default, the only state.",
4255
+ "name": "idle"
4256
+ }
4257
+ ],
4258
+ "synonyms": {
4259
+ "chat-status": [
4260
+ "connection-indicator",
4261
+ "streaming-status"
4262
+ ]
4263
+ },
4264
+ "tag": "chat-status",
4265
+ "tokens": {},
4266
+ "traits": [],
4267
+ "version": 1
4268
+ }
4269
+ },
4270
+ "ChatThread": {
4271
+ "title": "ChatThread",
4272
+ "description": "Module-tier chat message thread container — replaces legacy\n<section data-chat-messages> per ADR-0023. Owns scroll-to-bottom\non new message (with user-scroll-up suspension), [streaming] and\n[empty] reflected attributes, and a stable target for the host's\nmessage rendering pipeline.\n\nSits inside <chat-shell> as the central scroll surface. Authors\ncompose <chat-empty> as an optional first child for the empty\nstate; message children are appended dynamically by the host.\n\nBackwards compat — <chat-shell> still recognizes the legacy\n<section data-chat-messages> shape via :is() selector. New code\nshould prefer <chat-thread>.\n",
4273
+ "type": "object",
4274
+ "allOf": [
4275
+ {
4276
+ "$ref": "#/$defs/ComponentCommon"
4277
+ },
4278
+ {
4279
+ "$ref": "#/$defs/CatalogComponentCommon"
4280
+ }
4281
+ ],
4282
+ "properties": {
4283
+ "component": {
4284
+ "const": "ChatThread"
4285
+ },
4286
+ "empty": {
4287
+ "description": "Reflected — set when zero message children. Drives the\n<chat-empty> visibility via CSS — no JS toggling needed.\n",
4288
+ "type": "boolean",
4289
+ "default": true
4290
+ },
4291
+ "streaming": {
4292
+ "description": "Reflected — set by the host while an LLM response is streaming.\nConsumers can style streaming-mode (e.g. cursor blink) via\n:has(chat-thread[streaming]) or attribute selectors.\n",
4293
+ "type": "boolean",
4294
+ "default": false
4295
+ }
4296
+ },
4297
+ "required": [
4298
+ "component"
4299
+ ],
4300
+ "unevaluatedProperties": false,
4301
+ "x-adiaui": {
4302
+ "anti_patterns": [],
4303
+ "category": "container",
4304
+ "events": {},
4305
+ "examples": [],
4306
+ "keywords": [
4307
+ "chat-thread",
4308
+ "message-list",
4309
+ "conversation",
4310
+ "thread",
4311
+ "scroll-surface"
4312
+ ],
4313
+ "name": "ChatThread",
4314
+ "related": [
4315
+ "ChatShell",
4316
+ "ChatEmpty",
4317
+ "ChatComposer",
4318
+ "ChatSidebar"
4319
+ ],
4320
+ "slots": {
4321
+ "default": {
4322
+ "description": "Default — message children (typically appended dynamically by <chat-shell>'s rendering pipeline) plus an optional first <chat-empty> sibling for the empty state."
4323
+ }
4324
+ },
4325
+ "states": [
4326
+ {
4327
+ "description": "Default, no streaming.",
4328
+ "name": "idle"
4329
+ },
4330
+ {
4331
+ "description": "Host is actively streaming an LLM response.",
4332
+ "attribute": "streaming",
4333
+ "name": "streaming"
4334
+ },
4335
+ {
4336
+ "description": "Zero message children — empty state visible.",
4337
+ "attribute": "empty",
4338
+ "name": "empty"
4339
+ }
4340
+ ],
4341
+ "synonyms": {
4342
+ "message-list": [
4343
+ "messages",
4344
+ "message-stream"
4008
4345
  ],
4009
- "support": [
4010
- "faq",
4011
- "accordion",
4012
- "chat"
4346
+ "thread": [
4347
+ "conversation",
4348
+ "dialogue",
4349
+ "chat-log",
4350
+ "transcript"
4013
4351
  ]
4014
4352
  },
4015
- "tag": "chat-thread-ui",
4353
+ "tag": "chat-thread",
4016
4354
  "tokens": {},
4017
4355
  "traits": [],
4018
4356
  "version": 1
@@ -5288,6 +5626,158 @@
5288
5626
  "version": 1
5289
5627
  }
5290
5628
  },
5629
+ "EditorCanvas": {
5630
+ "title": "EditorCanvas",
5631
+ "description": "Module-tier editor canvas surface — replaces legacy <div data-canvas>\ninside <editor-shell> per ADR-0023. Owns scroll/zoom container\nsemantics, [empty] and [focused] reflected attributes, and a stable\ntarget for the host's content rendering pipeline.\n\nSits as the central content region inside <editor-shell>, between\nthe optional <editor-sidebar slot=\"leading\"> and <editor-sidebar\nslot=\"trailing\">. Authors compose <editor-canvas-empty> as an\noptional first child for the empty state; canvas content children\n(artboards, document body, etc.) are appended either statically or\ndynamically by the host.\n\nBackwards compat — <editor-shell> still recognizes the legacy\n<div data-canvas> shape via :is() selector. New code should prefer\n<editor-canvas>.\n",
5632
+ "type": "object",
5633
+ "allOf": [
5634
+ {
5635
+ "$ref": "#/$defs/ComponentCommon"
5636
+ },
5637
+ {
5638
+ "$ref": "#/$defs/CatalogComponentCommon"
5639
+ }
5640
+ ],
5641
+ "properties": {
5642
+ "component": {
5643
+ "const": "EditorCanvas"
5644
+ },
5645
+ "empty": {
5646
+ "description": "Reflected — set when zero non-<editor-canvas-empty> children.\nDrives the <editor-canvas-empty> visibility via parent CSS —\nno JS toggling needed.\n",
5647
+ "type": "boolean",
5648
+ "default": true
5649
+ },
5650
+ "focused": {
5651
+ "description": "Reflected — set when canvas claims focus ownership (programmatic\n.focus() call or toolbar full-screen toggle).\n",
5652
+ "type": "boolean",
5653
+ "default": false
5654
+ }
5655
+ },
5656
+ "required": [
5657
+ "component"
5658
+ ],
5659
+ "unevaluatedProperties": false,
5660
+ "x-adiaui": {
5661
+ "anti_patterns": [],
5662
+ "category": "container",
5663
+ "events": {},
5664
+ "examples": [],
5665
+ "keywords": [
5666
+ "editor-canvas",
5667
+ "canvas",
5668
+ "workspace",
5669
+ "artboard",
5670
+ "editor-surface"
5671
+ ],
5672
+ "name": "EditorCanvas",
5673
+ "related": [
5674
+ "EditorShell",
5675
+ "EditorCanvasEmpty",
5676
+ "EditorToolbar",
5677
+ "EditorSidebar"
5678
+ ],
5679
+ "slots": {
5680
+ "default": {
5681
+ "description": "Default — canvas content (artboards, document body, blocks, etc.) plus an optional first <editor-canvas-empty> sibling for the empty state."
5682
+ }
5683
+ },
5684
+ "states": [
5685
+ {
5686
+ "description": "Default canvas mode.",
5687
+ "name": "idle"
5688
+ },
5689
+ {
5690
+ "description": "Zero content children — empty state visible.",
5691
+ "attribute": "empty",
5692
+ "name": "empty"
5693
+ },
5694
+ {
5695
+ "description": "Canvas is the focus surface.",
5696
+ "attribute": "focused",
5697
+ "name": "focused"
5698
+ }
5699
+ ],
5700
+ "synonyms": {
5701
+ "editor-canvas": [
5702
+ "canvas",
5703
+ "workspace",
5704
+ "artboard",
5705
+ "design-surface"
5706
+ ]
5707
+ },
5708
+ "tag": "editor-canvas",
5709
+ "tokens": {},
5710
+ "traits": [],
5711
+ "version": 1
5712
+ }
5713
+ },
5714
+ "EditorCanvasEmpty": {
5715
+ "title": "EditorCanvasEmpty",
5716
+ "description": "Module-tier editor canvas empty state. CSS-only — no behavior, no\nJS. Sits as the first child of <editor-canvas> as the empty state\nplaceholder. Visibility is driven by <editor-canvas>'s [empty]\nreflected attribute via CSS (no JS toggling) — when content arrives,\nthe parent canvas loses [empty] and CSS hides this stub.\n\nReplaces ad-hoc empty-state placement inside the legacy\n<div data-canvas> per ADR-0023.\n",
5717
+ "type": "object",
5718
+ "allOf": [
5719
+ {
5720
+ "$ref": "#/$defs/ComponentCommon"
5721
+ },
5722
+ {
5723
+ "$ref": "#/$defs/CatalogComponentCommon"
5724
+ }
5725
+ ],
5726
+ "properties": {
5727
+ "component": {
5728
+ "const": "EditorCanvasEmpty"
5729
+ }
5730
+ },
5731
+ "required": [
5732
+ "component"
5733
+ ],
5734
+ "unevaluatedProperties": false,
5735
+ "x-adiaui": {
5736
+ "anti_patterns": [],
5737
+ "category": "feedback",
5738
+ "events": {},
5739
+ "examples": [],
5740
+ "keywords": [
5741
+ "editor-canvas-empty",
5742
+ "empty-state",
5743
+ "placeholder",
5744
+ "no-content",
5745
+ "canvas-empty"
5746
+ ],
5747
+ "name": "EditorCanvasEmpty",
5748
+ "related": [
5749
+ "EditorShell",
5750
+ "EditorCanvas",
5751
+ "EmptyState"
5752
+ ],
5753
+ "slots": {
5754
+ "default": {
5755
+ "description": "Empty state content — typically <empty-state-ui> with a \"Create new...\" prompt or onboarding affordance."
5756
+ }
5757
+ },
5758
+ "states": [
5759
+ {
5760
+ "description": "Default, visible.",
5761
+ "name": "idle"
5762
+ },
5763
+ {
5764
+ "description": "Hidden via parent <editor-canvas>:not([empty]) selector.",
5765
+ "name": "hidden"
5766
+ }
5767
+ ],
5768
+ "synonyms": {
5769
+ "editor-canvas-empty": [
5770
+ "empty-state",
5771
+ "placeholder",
5772
+ "no-document"
5773
+ ]
5774
+ },
5775
+ "tag": "editor-canvas-empty",
5776
+ "tokens": {},
5777
+ "traits": [],
5778
+ "version": 1
5779
+ }
5780
+ },
5291
5781
  "EditorShell": {
5292
5782
  "title": "EditorShell",
5293
5783
  "description": "Behavior-only editor shell module for design-tool layouts. Author\nprovides the structural DOM — header (topbar), [data-editor-body] with\npane-ui children ([data-left], [data-right]), [data-canvas] for the\ncentral surface, and a footer (statusbar). editor-shell wires\nselect-ui[data-options] for JSON-parsed option lists.\n",
@@ -5359,6 +5849,260 @@
5359
5849
  "version": 1
5360
5850
  }
5361
5851
  },
5852
+ "EditorSidebar": {
5853
+ "title": "EditorSidebar",
5854
+ "description": "Module-tier editor-cluster sidebar — wraps <pane-ui resizable>\n(the primitive that owns drag) and adds [collapsed] reflected\nstate, localStorage persistence (adia-editor-sidebar-{name}),\nand .toggle() / .collapse() / .expand() public API.\n\nSits inside <editor-shell> as slot=\"leading\" (navigator pane) or\nslot=\"trailing\" (inspector pane). Mirrors the cluster-namespace\nshape from <admin-sidebar> and <chat-sidebar>, but DELEGATES to\n<pane-ui> for resize rather than reimplementing it (per\nbespoke-shell-children skill §When NOT to promote — pane primitive\nalready owns this concern).\n\nThis is the FIRST bespoke shell child that delegates rather than\nduplicates a primitive's behavior. Pattern is: cluster-namespace +\nstate-as-attribute + persistence at the bespoke tier; physical\ndrag at the primitive tier.\n",
5855
+ "type": "object",
5856
+ "allOf": [
5857
+ {
5858
+ "$ref": "#/$defs/ComponentCommon"
5859
+ },
5860
+ {
5861
+ "$ref": "#/$defs/CatalogComponentCommon"
5862
+ }
5863
+ ],
5864
+ "properties": {
5865
+ "collapsed": {
5866
+ "description": "Reflected — set when inner <pane-ui> width is at or below 96px snap threshold.",
5867
+ "type": "boolean",
5868
+ "default": false
5869
+ },
5870
+ "component": {
5871
+ "const": "EditorSidebar"
5872
+ }
5873
+ },
5874
+ "required": [
5875
+ "component"
5876
+ ],
5877
+ "unevaluatedProperties": false,
5878
+ "x-adiaui": {
5879
+ "anti_patterns": [],
5880
+ "category": "layout",
5881
+ "events": {
5882
+ "sidebar-toggle": {
5883
+ "description": "Bubbles when .toggle() / .collapse() / .expand() is called.",
5884
+ "detail": {
5885
+ "expanded": "boolean",
5886
+ "name": "string"
5887
+ }
5888
+ }
5889
+ },
5890
+ "examples": [],
5891
+ "keywords": [
5892
+ "editor-sidebar",
5893
+ "navigator-pane",
5894
+ "inspector-pane",
5895
+ "editor-rail",
5896
+ "sidebar",
5897
+ "leading",
5898
+ "trailing"
5899
+ ],
5900
+ "name": "EditorSidebar",
5901
+ "related": [
5902
+ "EditorShell",
5903
+ "EditorCanvas",
5904
+ "Pane",
5905
+ "AdminSidebar",
5906
+ "ChatSidebar"
5907
+ ],
5908
+ "slots": {
5909
+ "default": {
5910
+ "description": "Default — the inner <pane-ui resizable> wrapper. Authors compose header / section / footer inside the pane as usual."
5911
+ }
5912
+ },
5913
+ "states": [
5914
+ {
5915
+ "description": "Default expanded state.",
5916
+ "name": "idle"
5917
+ },
5918
+ {
5919
+ "description": "Inner pane is at or below the snap threshold.",
5920
+ "attribute": "collapsed",
5921
+ "name": "collapsed"
5922
+ }
5923
+ ],
5924
+ "synonyms": {
5925
+ "editor-sidebar": [
5926
+ "navigator",
5927
+ "inspector",
5928
+ "editor-rail",
5929
+ "side-panel"
5930
+ ]
5931
+ },
5932
+ "tag": "editor-sidebar",
5933
+ "tokens": {},
5934
+ "traits": [],
5935
+ "version": 1
5936
+ }
5937
+ },
5938
+ "EditorStatusbar": {
5939
+ "title": "EditorStatusbar",
5940
+ "description": "Module-tier editor statusbar — bottom chrome bar inside\n<editor-shell>. CSS-only, no behavior, no JS. Holds save/sync\nstate, zoom indicator, cursor position, and tertiary actions\nvia slot vocabulary.\n\nReplaces the legacy <footer> with positional content per ADR-0023.\n",
5941
+ "type": "object",
5942
+ "allOf": [
5943
+ {
5944
+ "$ref": "#/$defs/ComponentCommon"
5945
+ },
5946
+ {
5947
+ "$ref": "#/$defs/CatalogComponentCommon"
5948
+ }
5949
+ ],
5950
+ "properties": {
5951
+ "component": {
5952
+ "const": "EditorStatusbar"
5953
+ }
5954
+ },
5955
+ "required": [
5956
+ "component"
5957
+ ],
5958
+ "unevaluatedProperties": false,
5959
+ "x-adiaui": {
5960
+ "anti_patterns": [],
5961
+ "category": "layout",
5962
+ "events": {},
5963
+ "examples": [],
5964
+ "keywords": [
5965
+ "editor-statusbar",
5966
+ "statusbar",
5967
+ "bottom-bar",
5968
+ "editor-footer"
5969
+ ],
5970
+ "name": "EditorStatusbar",
5971
+ "related": [
5972
+ "EditorShell",
5973
+ "EditorToolbar",
5974
+ "EditorCanvas"
5975
+ ],
5976
+ "slots": {
5977
+ "default": {
5978
+ "description": "Default — ad-hoc inline content (legacy positional layout)."
5979
+ },
5980
+ "action": {
5981
+ "description": "Trailing action cluster (e.g., toggle full-screen)."
5982
+ },
5983
+ "cursor": {
5984
+ "description": "Cursor position / selection indicator."
5985
+ },
5986
+ "status": {
5987
+ "description": "Save/sync state indicator."
5988
+ },
5989
+ "zoom": {
5990
+ "description": "Zoom level indicator."
5991
+ }
5992
+ },
5993
+ "states": [
5994
+ {
5995
+ "description": "Default, the only state.",
5996
+ "name": "idle"
5997
+ }
5998
+ ],
5999
+ "synonyms": {
6000
+ "editor-statusbar": [
6001
+ "statusbar",
6002
+ "footer-bar",
6003
+ "bottom-bar"
6004
+ ]
6005
+ },
6006
+ "tag": "editor-statusbar",
6007
+ "tokens": {},
6008
+ "traits": [],
6009
+ "version": 1
6010
+ }
6011
+ },
6012
+ "EditorToolbar": {
6013
+ "title": "EditorToolbar",
6014
+ "description": "Module-tier editor toolbar — replaces legacy <header> chrome bar\ninside <editor-shell> per ADR-0023. Owns the [full-screen] reflected\nattribute (set when host enters focus mode), click-bubble for\n[data-toolbar-action] buttons, and slot vocabulary routing.\n\nSits at the top of <editor-shell>. Authors compose actions + status\nvia slot vocabulary. The host (<editor-shell>) reads either\n<editor-toolbar> or <header> via :is() selector for backwards compat.\n",
6015
+ "type": "object",
6016
+ "allOf": [
6017
+ {
6018
+ "$ref": "#/$defs/ComponentCommon"
6019
+ },
6020
+ {
6021
+ "$ref": "#/$defs/CatalogComponentCommon"
6022
+ }
6023
+ ],
6024
+ "properties": {
6025
+ "component": {
6026
+ "const": "EditorToolbar"
6027
+ },
6028
+ "fullScreen": {
6029
+ "description": "Reflected — set when editor is in distraction-free / focus mode.",
6030
+ "type": "boolean",
6031
+ "default": false
6032
+ }
6033
+ },
6034
+ "required": [
6035
+ "component"
6036
+ ],
6037
+ "unevaluatedProperties": false,
6038
+ "x-adiaui": {
6039
+ "anti_patterns": [],
6040
+ "category": "layout",
6041
+ "events": {
6042
+ "toolbar-action": {
6043
+ "description": "Bubbles when a child element with [data-toolbar-action] is clicked. Detail carries the action name from the clicked element's attribute.",
6044
+ "detail": {
6045
+ "name": "string"
6046
+ }
6047
+ }
6048
+ },
6049
+ "examples": [],
6050
+ "keywords": [
6051
+ "editor-toolbar",
6052
+ "editor-titlebar",
6053
+ "editor-chrome",
6054
+ "app-header",
6055
+ "editor-actions"
6056
+ ],
6057
+ "name": "EditorToolbar",
6058
+ "related": [
6059
+ "EditorShell",
6060
+ "EditorCanvas",
6061
+ "EditorSidebar",
6062
+ "EditorStatusbar"
6063
+ ],
6064
+ "slots": {
6065
+ "title": {
6066
+ "description": "Editor / document title cluster."
6067
+ },
6068
+ "default": {
6069
+ "description": "Default — ad-hoc inline content (legacy positional layout)."
6070
+ },
6071
+ "action": {
6072
+ "description": "Trailing action cluster (settings, share, more)."
6073
+ },
6074
+ "action-leading": {
6075
+ "description": "Leading action cluster (back, switcher, undo/redo)."
6076
+ },
6077
+ "status": {
6078
+ "description": "Status indicator (saving, dirty, synced, etc.)."
6079
+ }
6080
+ },
6081
+ "states": [
6082
+ {
6083
+ "description": "Default editor mode.",
6084
+ "name": "idle"
6085
+ },
6086
+ {
6087
+ "description": "Distraction-free / focus mode active.",
6088
+ "attribute": "full-screen",
6089
+ "name": "full-screen"
6090
+ }
6091
+ ],
6092
+ "synonyms": {
6093
+ "editor-toolbar": [
6094
+ "editor-header",
6095
+ "app-header",
6096
+ "navbar",
6097
+ "titlebar"
6098
+ ]
6099
+ },
6100
+ "tag": "editor-toolbar",
6101
+ "tokens": {},
6102
+ "traits": [],
6103
+ "version": 1
6104
+ }
6105
+ },
5362
6106
  "Embed": {
5363
6107
  "title": "Embed",
5364
6108
  "description": "Responsive sandboxed iframe wrapper.",