@adia-ai/web-modules 0.8.40 → 0.8.42

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 (128) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/README.md +7 -7
  3. package/agent-admin/admin-roster/admin-roster.a2ui.json +1 -0
  4. package/agent-admin/admin-roster/admin-roster.css +10 -2
  5. package/agent-admin/admin-roster/admin-roster.js +70 -22
  6. package/agent-admin/admin-settings/admin-settings.a2ui.json +1 -0
  7. package/agent-admin/agent-admin/agent-admin.a2ui.json +1 -0
  8. package/billing/billing-overview/billing-overview.a2ui.json +10 -1
  9. package/billing/billing-overview/billing-overview.class.js +142 -73
  10. package/billing/billing-overview/billing-overview.css +70 -57
  11. package/billing/billing-overview/billing-overview.yaml +5 -0
  12. package/billing/invoice-detail/invoice-detail.a2ui.json +9 -4
  13. package/billing/invoice-detail/invoice-detail.class.js +6 -5
  14. package/billing/invoice-detail/invoice-detail.yaml +9 -4
  15. package/billing/invoice-history/invoice-history.a2ui.json +7 -4
  16. package/billing/invoice-history/invoice-history.class.js +29 -18
  17. package/billing/invoice-history/invoice-history.css +18 -15
  18. package/billing/invoice-history/invoice-history.yaml +10 -4
  19. package/billing/payment-method-form/payment-method-form.a2ui.json +1 -0
  20. package/billing/payment-method-form/payment-method-form.class.js +3 -3
  21. package/billing/payment-method-form/payment-method-form.css +4 -4
  22. package/billing/payment-method-list/payment-method-list.a2ui.json +4 -0
  23. package/billing/payment-method-list/payment-method-list.class.js +31 -11
  24. package/billing/payment-method-list/payment-method-list.css +13 -10
  25. package/billing/payment-method-list/payment-method-list.yaml +3 -0
  26. package/billing/plan-picker/plan-picker.a2ui.json +6 -0
  27. package/billing/plan-picker/plan-picker.class.js +70 -22
  28. package/billing/plan-picker/plan-picker.css +21 -38
  29. package/billing/plan-picker/plan-picker.yaml +5 -0
  30. package/chat/chat-composer/chat-composer.a2ui.json +1 -0
  31. package/chat/chat-empty/chat-empty.a2ui.json +4 -0
  32. package/chat/chat-empty/chat-empty.yaml +2 -0
  33. package/chat/chat-header/chat-header.a2ui.json +5 -0
  34. package/chat/chat-header/chat-header.yaml +3 -0
  35. package/chat/chat-shell/chat-shell.a2ui.json +4 -0
  36. package/chat/chat-shell/chat-shell.yaml +2 -0
  37. package/chat/chat-shell/css/chat-shell.bespoke.css +5 -5
  38. package/chat/chat-sidebar/chat-sidebar.a2ui.json +5 -1
  39. package/chat/chat-sidebar/chat-sidebar.d.ts +1 -1
  40. package/chat/chat-sidebar/chat-sidebar.js +25 -3
  41. package/chat/chat-sidebar/chat-sidebar.yaml +3 -1
  42. package/chat/chat-status/chat-status.a2ui.json +4 -0
  43. package/chat/chat-status/chat-status.yaml +2 -0
  44. package/chat/chat-thread/chat-thread.a2ui.json +4 -0
  45. package/chat/chat-thread/chat-thread.yaml +2 -0
  46. package/dashboard/dashboard-layout/dashboard-layout.a2ui.json +8 -8
  47. package/dashboard/dashboard-layout/dashboard-layout.css +4 -4
  48. package/dashboard/dashboard-layout/dashboard-layout.js +10 -9
  49. package/dashboard/dashboard-layout/dashboard-layout.yaml +19 -7
  50. package/dashboard/date-range-selector/date-range-selector.a2ui.json +4 -3
  51. package/dashboard/date-range-selector/date-range-selector.yaml +6 -4
  52. package/dist/chat/chat-shell.min.css +1 -1
  53. package/dist/chat/chat-shell.min.js +23 -23
  54. package/dist/editor/editor-shell.min.js +3 -3
  55. package/dist/everything.min.js +127 -140
  56. package/dist/shell/admin-shell.min.css +1 -1
  57. package/dist/shell/admin-shell.min.js +6 -6
  58. package/dist/simple/simple-shell.min.js +5 -5
  59. package/dist/web-modules.min.css +1 -1
  60. package/dist/web-modules.sheet.js +1 -1
  61. package/editor/editor-canvas/editor-canvas.a2ui.json +4 -0
  62. package/editor/editor-canvas/editor-canvas.yaml +2 -0
  63. package/editor/editor-canvas-empty/editor-canvas-empty.a2ui.json +4 -0
  64. package/editor/editor-canvas-empty/editor-canvas-empty.yaml +2 -0
  65. package/editor/editor-canvas-toolbar/editor-canvas-toolbar.a2ui.json +4 -0
  66. package/editor/editor-canvas-toolbar/editor-canvas-toolbar.yaml +2 -0
  67. package/editor/editor-shell/editor-shell.a2ui.json +5 -0
  68. package/editor/editor-shell/editor-shell.yaml +3 -0
  69. package/editor/editor-sidebar/editor-sidebar.a2ui.json +4 -0
  70. package/editor/editor-sidebar/editor-sidebar.js +5 -3
  71. package/editor/editor-sidebar/editor-sidebar.yaml +2 -0
  72. package/editor/editor-statusbar/editor-statusbar.a2ui.json +4 -0
  73. package/editor/editor-statusbar/editor-statusbar.yaml +2 -0
  74. package/editor/editor-toolbar/editor-toolbar.a2ui.json +4 -0
  75. package/editor/editor-toolbar/editor-toolbar.yaml +2 -0
  76. package/feedback/confirm-dialog/confirm-dialog.a2ui.json +1 -0
  77. package/form/form-popover/form-popover.a2ui.json +1 -0
  78. package/onboarding/onboarding-checklist/onboarding-checklist.a2ui.json +2 -1
  79. package/onboarding/onboarding-checklist/onboarding-checklist.js +2 -2
  80. package/onboarding/onboarding-checklist/onboarding-checklist.yaml +1 -1
  81. package/package.json +6 -6
  82. package/runtime/a2ui-root/a2ui-root.a2ui.json +6 -5
  83. package/runtime/a2ui-root/a2ui-root.css +75 -0
  84. package/runtime/a2ui-root/a2ui-root.js +118 -10
  85. package/runtime/a2ui-root/a2ui-root.yaml +7 -2
  86. package/runtime/gen-root/gen-root.a2ui.json +6 -5
  87. package/runtime/gen-root/gen-root.yaml +10 -2
  88. package/settings/integrations-page/integrations-page.a2ui.json +3 -2
  89. package/settings/integrations-page/integrations-page.js +8 -8
  90. package/settings/integrations-page/integrations-page.yaml +2 -2
  91. package/settings/notification-preferences/notification-preferences.a2ui.json +1 -0
  92. package/shell/admin-command/admin-command.a2ui.json +5 -1
  93. package/shell/admin-command/admin-command.yaml +3 -1
  94. package/shell/admin-content/admin-content.a2ui.json +4 -0
  95. package/shell/admin-content/admin-content.yaml +2 -0
  96. package/shell/admin-entity-item/admin-entity-item.a2ui.json +1 -0
  97. package/shell/admin-page/admin-page.a2ui.json +5 -0
  98. package/shell/admin-page/admin-page.yaml +3 -0
  99. package/shell/admin-page-body/admin-page-body.a2ui.json +4 -0
  100. package/shell/admin-page-body/admin-page-body.yaml +2 -0
  101. package/shell/admin-page-footer/admin-page-footer.a2ui.json +4 -0
  102. package/shell/admin-page-footer/admin-page-footer.yaml +2 -0
  103. package/shell/admin-page-header/admin-page-header.a2ui.json +4 -0
  104. package/shell/admin-page-header/admin-page-header.yaml +2 -0
  105. package/shell/admin-scroll/admin-scroll.a2ui.json +4 -0
  106. package/shell/admin-scroll/admin-scroll.yaml +2 -0
  107. package/shell/admin-shell/admin-shell.a2ui.json +8 -4
  108. package/shell/admin-shell/admin-shell.d.ts +1 -1
  109. package/shell/admin-shell/admin-shell.yaml +5 -3
  110. package/shell/admin-shell/css/admin-shell.bespoke.css +5 -5
  111. package/shell/admin-shell/css/admin-shell.helpers.css +8 -3
  112. package/shell/admin-shell/css/admin-shell.sidebar.css +6 -6
  113. package/shell/admin-sidebar/admin-sidebar.a2ui.json +5 -1
  114. package/shell/admin-sidebar/admin-sidebar.d.ts +1 -1
  115. package/shell/admin-sidebar/admin-sidebar.js +31 -9
  116. package/shell/admin-sidebar/admin-sidebar.yaml +3 -1
  117. package/shell/admin-statusbar/admin-statusbar.a2ui.json +6 -0
  118. package/shell/admin-statusbar/admin-statusbar.yaml +4 -0
  119. package/shell/admin-topbar/admin-topbar.a2ui.json +6 -0
  120. package/shell/admin-topbar/admin-topbar.yaml +4 -0
  121. package/shell/embed-shell/embed-shell.a2ui.json +1 -0
  122. package/simple/simple-content/simple-content.a2ui.json +4 -0
  123. package/simple/simple-content/simple-content.yaml +2 -0
  124. package/simple/simple-hero/simple-hero.a2ui.json +4 -0
  125. package/simple/simple-hero/simple-hero.yaml +2 -0
  126. package/simple/simple-shell/simple-shell.a2ui.json +4 -0
  127. package/simple/simple-shell/simple-shell.yaml +2 -0
  128. package/theme/theme-panel/theme-panel.a2ui.json +1 -0
@@ -34,6 +34,8 @@ states:
34
34
  traits: []
35
35
 
36
36
  a2ui:
37
+ allowedParents:
38
+ - AdminPage
37
39
  rules:
38
40
  - >-
39
41
  admin-page-footer is the sticky bottom band of <admin-page>,
@@ -22,6 +22,9 @@
22
22
  ],
23
23
  "unevaluatedProperties": false,
24
24
  "x-adiaui": {
25
+ "allowedParents": [
26
+ "AdminPage"
27
+ ],
25
28
  "anti_patterns": [],
26
29
  "category": "layout",
27
30
  "composes": [],
@@ -33,6 +36,7 @@
33
36
  "page-band"
34
37
  ],
35
38
  "name": "AdminPageHeader",
39
+ "parts": {},
36
40
  "related": [
37
41
  "AdminPage",
38
42
  "AdminPageBody",
@@ -32,6 +32,8 @@ states:
32
32
  traits: []
33
33
 
34
34
  a2ui:
35
+ allowedParents:
36
+ - AdminPage
35
37
  rules:
36
38
  - >-
37
39
  admin-page-header is the sticky top band of <admin-page>.
@@ -22,6 +22,9 @@
22
22
  ],
23
23
  "unevaluatedProperties": false,
24
24
  "x-adiaui": {
25
+ "allowedParents": [
26
+ "AdminContent"
27
+ ],
25
28
  "anti_patterns": [],
26
29
  "category": "layout",
27
30
  "composes": [],
@@ -33,6 +36,7 @@
33
36
  "scroll-container"
34
37
  ],
35
38
  "name": "AdminScroll",
39
+ "parts": {},
36
40
  "related": [
37
41
  "AdminShell",
38
42
  "AdminContent",
@@ -32,6 +32,8 @@ states:
32
32
  traits: []
33
33
 
34
34
  a2ui:
35
+ allowedParents:
36
+ - AdminContent
35
37
  rules:
36
38
  - >-
37
39
  admin-scroll is the bespoke replacement for the legacy <section>
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://adiaui.dev/a2ui/v0_9/components/AppShell.json",
4
- "title": "AppShell",
5
- "description": "Behavior-only application shell. Canonical authoring shape uses\ncluster-namespaced bespoke children — <admin-topbar> at the top,\n<admin-sidebar slot=\"leading|trailing\"> rails, <admin-content> for\nthe main content region, <admin-command> for the Cmd+K palette, and\noptional <admin-statusbar> at the bottom. The shell wires sidebar\ntoggle forwarding, command-palette triggers, and the ResizeObserver\nthat drives responsive sidebar collapse; each bespoke child owns\nits own resize / collapse / open state-as-attribute semantics per\nADR-0023.\n\nLegacy data-attribute shapes (<aside data-sidebar>, <dialog\ndata-command>, [data-resize], <aside-ui slot=>, <span data-spacer>,\n<div data-actions>) were RETIRED in v0.4.0 per ADR-0024 and are no\nlonger recognized. Consumers must use the bespoke vocabulary.\n",
3
+ "$id": "https://adiaui.dev/a2ui/v0_9/components/AdminShell.json",
4
+ "title": "AdminShell",
5
+ "description": "Behavior-only application shell. Canonical authoring shape uses\ncluster-namespaced bespoke children — <admin-topbar> at the top,\n<admin-sidebar slot=\"leading|trailing\"> rails, <admin-content> for\nthe main content region, <admin-command> for the Cmd+K palette, and\noptional <admin-statusbar> at the bottom. The shell wires sidebar\ntoggle forwarding, command-palette triggers, and the ResizeObserver\nthat drives responsive sidebar collapse; each bespoke child owns\nits own resize / collapse / open state-as-attribute semantics per\nADR-0023.\n\nLegacy data-attribute shapes (<aside data-sidebar>, <dialog\ndata-command>, [data-sidebar-resize], <aside-ui slot=>, <span data-spacer>,\n<div data-actions>) were RETIRED in v0.4.0 per ADR-0024 and are no\nlonger recognized. Consumers must use the bespoke vocabulary.\n",
6
6
  "type": "object",
7
7
  "allOf": [
8
8
  {
@@ -14,7 +14,7 @@
14
14
  ],
15
15
  "properties": {
16
16
  "component": {
17
- "const": "AppShell"
17
+ "const": "AdminShell"
18
18
  },
19
19
  "mode": {
20
20
  "description": "Layout variant — space-separated token set. Recognized tokens:\n rounded — softens content-surface edges (border-radius from --page-content-radius)\n borderless — removes outer chrome borders (content dividers persist)\nThe CSS uses `mode~=\"<token>\"` attribute selectors, so multiple\ntokens combine additively (\"rounded borderless\" = both).\n\nDefault since v0.6.13: \"rounded borderless\". A bare `<admin-shell>`\nwith no `mode` attribute auto-promotes to this pair on connect.\nAuthor-supplied `mode` attributes (including the empty string\n`mode=\"\"` for flat bordered chrome) are respected verbatim.\n",
@@ -27,6 +27,9 @@
27
27
  ],
28
28
  "unevaluatedProperties": false,
29
29
  "x-adiaui": {
30
+ "allowedParents": [
31
+ "Surface"
32
+ ],
30
33
  "anti_patterns": [],
31
34
  "category": "layout",
32
35
  "composes": [],
@@ -63,6 +66,7 @@
63
66
  "nav"
64
67
  ],
65
68
  "name": "AdminShell",
69
+ "parts": {},
66
70
  "related": [
67
71
  "Nav",
68
72
  "NavGroup",
@@ -10,7 +10,7 @@ its own resize / collapse / open state-as-attribute semantics per
10
10
  ADR-0023.
11
11
 
12
12
  Legacy data-attribute shapes (<aside data-sidebar>, <dialog
13
- data-command>, [data-resize], <aside-ui slot=>, <span data-spacer>,
13
+ data-command>, [data-sidebar-resize], <aside-ui slot=>, <span data-spacer>,
14
14
  <div data-actions>) were RETIRED in v0.4.0 per ADR-0024 and are no
15
15
  longer recognized. Consumers must use the bespoke vocabulary.
16
16
 
@@ -2,7 +2,7 @@ $schema: ../../../../scripts/schemas/component.yaml.schema.json
2
2
  name: AdminShell
3
3
  tag: admin-shell
4
4
  status: stable
5
- component: AppShell
5
+ component: AdminShell
6
6
  category: layout
7
7
  version: 1
8
8
  description: |
@@ -17,7 +17,7 @@ description: |
17
17
  ADR-0023.
18
18
 
19
19
  Legacy data-attribute shapes (<aside data-sidebar>, <dialog
20
- data-command>, [data-resize], <aside-ui slot=>, <span data-spacer>,
20
+ data-command>, [data-sidebar-resize], <aside-ui slot=>, <span data-spacer>,
21
21
  <div data-actions>) were RETIRED in v0.4.0 per ADR-0024 and are no
22
22
  longer recognized. Consumers must use the bespoke vocabulary.
23
23
 
@@ -98,6 +98,8 @@ states:
98
98
  traits: []
99
99
 
100
100
  a2ui:
101
+ allowedParents:
102
+ - Surface
101
103
  rules:
102
104
  - >-
103
105
  admin-shell takes bespoke admin-* children only. The canonical
@@ -119,7 +121,7 @@ a2ui:
119
121
  - >-
120
122
  Legacy data-attribute shapes were retired in v0.4.0 per ADR-0024.
121
123
  Do not author <aside data-sidebar>, <dialog data-command>,
122
- [data-resize], <aside-ui slot=>, <span data-spacer>, or
124
+ [data-sidebar-resize], <aside-ui slot=>, <span data-spacer>, or
123
125
  <div data-actions> inside admin-shell.
124
126
 
125
127
  keywords: [app-shell, shell, layout, admin, dashboard, sidebar, nav]
@@ -201,7 +201,7 @@ admin-sidebar[slot="trailing"] {
201
201
  }
202
202
 
203
203
  /* Resize handle */
204
- :is(admin-sidebar[slot="leading"], admin-sidebar[slot="trailing"]) > [data-resize] {
204
+ :is(admin-sidebar[slot="leading"], admin-sidebar[slot="trailing"]) > :is([data-resize], [data-sidebar-resize]) {
205
205
  position: absolute;
206
206
  top: 0;
207
207
  bottom: 0;
@@ -211,10 +211,10 @@ admin-sidebar[slot="trailing"] {
211
211
  user-select: none;
212
212
  }
213
213
 
214
- admin-sidebar[slot="leading"] > [data-resize] { right: -3px; }
215
- admin-sidebar[slot="trailing"] > [data-resize] { left: -3px; }
214
+ admin-sidebar[slot="leading"] > :is([data-resize], [data-sidebar-resize]) { right: -3px; }
215
+ admin-sidebar[slot="trailing"] > :is([data-resize], [data-sidebar-resize]) { left: -3px; }
216
216
 
217
- :is(admin-sidebar[slot="leading"], admin-sidebar[slot="trailing"]) > [data-resize]:hover {
217
+ :is(admin-sidebar[slot="leading"], admin-sidebar[slot="trailing"]) > :is([data-resize], [data-sidebar-resize]):hover {
218
218
  background: var(--page-sidebar-resize-accent);
219
219
  opacity: 0.5;
220
220
  }
@@ -223,7 +223,7 @@ admin-sidebar[resizing] {
223
223
  transition: none;
224
224
  }
225
225
 
226
- admin-sidebar[resizing] > [data-resize] {
226
+ admin-sidebar[resizing] > :is([data-resize], [data-sidebar-resize]) {
227
227
  background: var(--page-sidebar-resize-accent);
228
228
  opacity: 0.8;
229
229
  }
@@ -26,14 +26,19 @@ admin-shell [data-actions] {
26
26
 
27
27
  /* ── Form layout helpers ── */
28
28
 
29
- /* 2-column grid (default), 3-column with data-grid="3" */
30
- admin-shell [data-grid] {
29
+ /* 2-column grid (default), 3-column with data-layout-grid="3" */
30
+ /* Rename-wave compat (docs/ops/plan/plan-090-rename-wave.md W1):
31
+ `data-layout-grid` is the current name; `data-grid` still dual-reads
32
+ until the 0.9.0 cut (W3). No JS reads this attribute, so there is no
33
+ deprecation warn to hang here — the migration guide + adia-lint advisory
34
+ are the signal (plan-090's own recorded honest limit). */
35
+ admin-shell :is([data-grid], [data-layout-grid]) {
31
36
  display: grid;
32
37
  grid-template-columns: 1fr 1fr;
33
38
  gap: var(--page-grid-gap);
34
39
  }
35
40
 
36
- admin-shell [data-grid="3"] {
41
+ admin-shell :is([data-grid="3"], [data-layout-grid="3"]) {
37
42
  grid-template-columns: 1fr 1fr 1fr;
38
43
  }
39
44
 
@@ -30,7 +30,7 @@
30
30
  /* ── Resize handle ──
31
31
  6px invisible hit area straddling the sidebar edge.
32
32
  Accent color on hover/drag. */
33
- :is(admin-sidebar[slot="leading"], admin-sidebar[slot="trailing"]) > [data-resize] {
33
+ :is(admin-sidebar[slot="leading"], admin-sidebar[slot="trailing"]) > :is([data-resize], [data-sidebar-resize]) {
34
34
  position: absolute;
35
35
  top: 0;
36
36
  bottom: 0;
@@ -41,19 +41,19 @@
41
41
  z-index: 3; /* above the content island's sticky bands (z 1) and sidebar chrome (z 2) — the grabber is a transient affordance and reads on top of shell chrome (gh#513) */
42
42
  }
43
43
 
44
- admin-sidebar[slot="leading"] > [data-resize] { right: -3px; }
45
- admin-sidebar[slot="trailing"] > [data-resize] { left: -3px; }
44
+ admin-sidebar[slot="leading"] > :is([data-resize], [data-sidebar-resize]) { right: -3px; }
45
+ admin-sidebar[slot="trailing"] > :is([data-resize], [data-sidebar-resize]) { left: -3px; }
46
46
 
47
- :is(admin-sidebar[slot="leading"], admin-sidebar[slot="trailing"]) > [data-resize]:hover {
47
+ :is(admin-sidebar[slot="leading"], admin-sidebar[slot="trailing"]) > :is([data-resize], [data-sidebar-resize]):hover {
48
48
  background: var(--page-sidebar-resize-accent);
49
49
  }
50
50
 
51
- :is(admin-sidebar[slot="leading"], admin-sidebar[slot="trailing"])[data-resizing] > [data-resize] {
51
+ :is(admin-sidebar[slot="leading"], admin-sidebar[slot="trailing"])[resizing] > :is([data-resize], [data-sidebar-resize]) {
52
52
  background: var(--page-sidebar-resize-accent);
53
53
  }
54
54
 
55
55
  /* During drag: disable transition + text selection */
56
- :is(admin-sidebar[slot="leading"], admin-sidebar[slot="trailing"])[data-resizing] {
56
+ :is(admin-sidebar[slot="leading"], admin-sidebar[slot="trailing"])[resizing] {
57
57
  user-select: none;
58
58
  transition: none;
59
59
  }
@@ -37,7 +37,7 @@
37
37
  "default": ""
38
38
  },
39
39
  "resizable": {
40
- "description": "Opts in to drag-to-resize behavior. Author supplies a child\n[data-resize] element as the drag handle.\n",
40
+ "description": "Opts in to drag-to-resize behavior. Author supplies a child\n[data-sidebar-resize] element as the drag handle.\n",
41
41
  "type": "boolean",
42
42
  "default": false
43
43
  },
@@ -52,6 +52,9 @@
52
52
  ],
53
53
  "unevaluatedProperties": false,
54
54
  "x-adiaui": {
55
+ "allowedParents": [
56
+ "AdminShell"
57
+ ],
55
58
  "anti_patterns": [],
56
59
  "category": "layout",
57
60
  "composes": [],
@@ -84,6 +87,7 @@
84
87
  "nav"
85
88
  ],
86
89
  "name": "AdminSidebar",
90
+ "parts": {},
87
91
  "related": [
88
92
  "AdminShell",
89
93
  "AdminCommand",
@@ -49,7 +49,7 @@ with the same slot.
49
49
  */
50
50
  name: string;
51
51
  /** Opts in to drag-to-resize behavior. Author supplies a child
52
- [data-resize] element as the drag handle.
52
+ [data-sidebar-resize] element as the drag handle.
53
53
  */
54
54
  resizable: boolean;
55
55
  /** Reflected — set during an active pointer-drag on the resize handle.
@@ -29,8 +29,10 @@
29
29
  * sidebar-toggle — bubbles. detail: { name, expanded }
30
30
  * sidebar-resize — bubbles. detail: { name, width }
31
31
  *
32
- * The drag handle is conventional: a child `[data-resize]` element.
33
- * Authors may provide a custom one, or omit (no resize affordance).
32
+ * The drag handle is conventional: a child `[data-sidebar-resize]` element
33
+ * (`[data-resize]` still works deprecated, dual-read compat shim, removed
34
+ * in 0.9.0: docs/ops/plan/plan-090-rename-wave.md). Authors may provide a
35
+ * custom one, or omit (no resize affordance).
34
36
  *
35
37
  * Backwards compat: <admin-shell> still recognizes the legacy
36
38
  * `<aside data-sidebar="leading">` shape via :is() selector. New
@@ -59,6 +61,11 @@ class AdminSidebar extends UIElement {
59
61
  // handle — one-shot per element so re-renders stay quiet. GC-friendly.
60
62
  static #warnedNoHandle = new WeakSet();
61
63
 
64
+ // Rename-wave compat (docs/ops/plan/plan-090-rename-wave.md W1): one-shot
65
+ // deprecation warn per element when the legacy `[data-resize]` name is the
66
+ // one that resolved the handle. Same GC-friendly WeakSet pattern as above.
67
+ static #warnedOldResizeName = new WeakSet();
68
+
62
69
  // The width the sidebar had before being collapsed — used for restore.
63
70
  // Map keyed by sidebar name allows multiple sidebars on one host.
64
71
  #previousExpandedWidth = '';
@@ -166,19 +173,34 @@ class AdminSidebar extends UIElement {
166
173
  // ── Resize drag handle ──
167
174
 
168
175
  #setupResizeHandle() {
169
- const handle = this.querySelector(':scope > [data-resize]');
176
+ // Rename-wave compat (plan-090 W1): `[data-sidebar-resize]` is the
177
+ // current name; `[data-resize]` still dual-reads until the 0.9.0 cut
178
+ // (W3), warning once per element when it's the name that resolved.
179
+ let handle = this.querySelector(':scope > [data-sidebar-resize]');
180
+ if (!handle) {
181
+ handle = this.querySelector(':scope > [data-resize]');
182
+ if (handle && !AdminSidebar.#warnedOldResizeName.has(this)) {
183
+ AdminSidebar.#warnedOldResizeName.add(this);
184
+ // eslint-disable-next-line no-console
185
+ console.warn(
186
+ '[admin-sidebar] `[data-resize]` is deprecated and removed in ' +
187
+ '0.9.0 — rename the drag-handle child to `[data-sidebar-resize]`.',
188
+ this,
189
+ );
190
+ }
191
+ }
170
192
  if (!handle) {
171
193
  // FEEDBACK-17: `resizable` opts in to drag-resize but relies on an
172
- // author-supplied `[data-resize]` child. A silent return left authors
173
- // with a no-op `resizable` attribute and zero diagnostic signal.
194
+ // author-supplied `[data-sidebar-resize]` child. A silent return left
195
+ // authors with a no-op `resizable` attribute and zero diagnostic signal.
174
196
  if (!AdminSidebar.#warnedNoHandle.has(this)) {
175
197
  AdminSidebar.#warnedNoHandle.add(this);
176
198
  // eslint-disable-next-line no-console
177
199
  console.warn(
178
- '[admin-sidebar] `resizable` is set but no `[data-resize]` child ' +
179
- 'was found. Add `<div data-resize></div>` as a direct child to ' +
180
- 'enable drag-to-resize. (Unlike `collapsible`, `resizable` requires ' +
181
- 'this author-supplied handle.)',
200
+ '[admin-sidebar] `resizable` is set but no `[data-sidebar-resize]` ' +
201
+ 'child was found. Add `<div data-sidebar-resize></div>` as a direct ' +
202
+ 'child to enable drag-to-resize. (Unlike `collapsible`, `resizable` ' +
203
+ 'requires this author-supplied handle.)',
182
204
  this,
183
205
  );
184
206
  }
@@ -37,7 +37,7 @@ props:
37
37
  resizable:
38
38
  description: |
39
39
  Opts in to drag-to-resize behavior. Author supplies a child
40
- [data-resize] element as the drag handle.
40
+ [data-sidebar-resize] element as the drag handle.
41
41
  type: boolean
42
42
  default: false
43
43
  reflect: true
@@ -105,6 +105,8 @@ states:
105
105
  traits: []
106
106
 
107
107
  a2ui:
108
+ allowedParents:
109
+ - AdminShell
108
110
  rules:
109
111
  - >-
110
112
  admin-sidebar is the bespoke replacement for legacy
@@ -22,6 +22,11 @@
22
22
  ],
23
23
  "unevaluatedProperties": false,
24
24
  "x-adiaui": {
25
+ "allowedParents": [
26
+ "AdminShell",
27
+ "AdminContent",
28
+ "AdminSidebar"
29
+ ],
25
30
  "anti_patterns": [],
26
31
  "category": "layout",
27
32
  "composes": [],
@@ -35,6 +40,7 @@
35
40
  "status-line"
36
41
  ],
37
42
  "name": "AdminStatusbar",
43
+ "parts": {},
38
44
  "related": [
39
45
  "AdminShell",
40
46
  "AdminContent",
@@ -49,6 +49,10 @@ states:
49
49
  traits: []
50
50
 
51
51
  a2ui:
52
+ allowedParents:
53
+ - AdminShell
54
+ - AdminContent
55
+ - AdminSidebar
52
56
  rules:
53
57
  - >-
54
58
  admin-statusbar replaces <footer-ui> at shell-tier. Same slot
@@ -22,6 +22,11 @@
22
22
  ],
23
23
  "unevaluatedProperties": false,
24
24
  "x-adiaui": {
25
+ "allowedParents": [
26
+ "AdminShell",
27
+ "AdminContent",
28
+ "AdminSidebar"
29
+ ],
25
30
  "anti_patterns": [],
26
31
  "category": "layout",
27
32
  "composes": [],
@@ -35,6 +40,7 @@
35
40
  "shell-header"
36
41
  ],
37
42
  "name": "AdminTopbar",
43
+ "parts": {},
38
44
  "related": [
39
45
  "AdminShell",
40
46
  "AdminContent",
@@ -53,6 +53,10 @@ states:
53
53
  traits: []
54
54
 
55
55
  a2ui:
56
+ allowedParents:
57
+ - AdminShell
58
+ - AdminContent
59
+ - AdminSidebar
56
60
  rules:
57
61
  - >-
58
62
  admin-topbar replaces <header-ui> at shell-tier — use it for
@@ -54,6 +54,7 @@
54
54
  "app-shell"
55
55
  ],
56
56
  "name": "EmbedShell",
57
+ "parts": {},
57
58
  "related": [
58
59
  "AdminShell",
59
60
  "Frame",
@@ -22,6 +22,9 @@
22
22
  ],
23
23
  "unevaluatedProperties": false,
24
24
  "x-adiaui": {
25
+ "allowedParents": [
26
+ "SimpleShell"
27
+ ],
25
28
  "anti_patterns": [],
26
29
  "category": "shells",
27
30
  "composes": [],
@@ -37,6 +40,7 @@
37
40
  "marketing-body"
38
41
  ],
39
42
  "name": "SimpleContent",
43
+ "parts": {},
40
44
  "related": [
41
45
  "SimpleShell",
42
46
  "SimpleHero"
@@ -33,6 +33,8 @@ states:
33
33
  traits: []
34
34
 
35
35
  a2ui:
36
+ allowedParents:
37
+ - SimpleShell
36
38
  rules:
37
39
  - >-
38
40
  simple-content is the article surface inside simple-shell. Use
@@ -22,6 +22,9 @@
22
22
  ],
23
23
  "unevaluatedProperties": false,
24
24
  "x-adiaui": {
25
+ "allowedParents": [
26
+ "SimpleShell"
27
+ ],
25
28
  "anti_patterns": [],
26
29
  "category": "shells",
27
30
  "composes": [],
@@ -37,6 +40,7 @@
37
40
  "page-title"
38
41
  ],
39
42
  "name": "SimpleHero",
43
+ "parts": {},
40
44
  "related": [
41
45
  "SimpleShell",
42
46
  "SimpleContent"
@@ -35,6 +35,8 @@ states:
35
35
  traits: []
36
36
 
37
37
  a2ui:
38
+ allowedParents:
39
+ - SimpleShell
38
40
  rules:
39
41
  - >-
40
42
  simple-hero is the optional top strip inside simple-shell. Use
@@ -32,6 +32,9 @@
32
32
  ],
33
33
  "unevaluatedProperties": false,
34
34
  "x-adiaui": {
35
+ "allowedParents": [
36
+ "Surface"
37
+ ],
35
38
  "anti_patterns": [],
36
39
  "category": "shells",
37
40
  "composes": [],
@@ -47,6 +50,7 @@
47
50
  "minimal-shell"
48
51
  ],
49
52
  "name": "SimpleShell",
53
+ "parts": {},
50
54
  "related": [
51
55
  "SimpleHero",
52
56
  "SimpleContent",
@@ -50,6 +50,8 @@ states:
50
50
  traits: []
51
51
 
52
52
  a2ui:
53
+ allowedParents:
54
+ - Surface
53
55
  rules:
54
56
  - >-
55
57
  simple-shell is the bespoke shell for thin / minimal page surfaces.
@@ -141,6 +141,7 @@
141
141
  "skin"
142
142
  ],
143
143
  "name": "ThemePanel",
144
+ "parts": {},
144
145
  "related": [
145
146
  "Popover",
146
147
  "Button",