@adia-ai/web-components 0.8.6 → 0.8.7

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 (102) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/dist/theme-provider.min.js +1 -1
  3. package/dist/web-components.min.js +1 -1
  4. package/package.json +2 -1
  5. package/patterns/access-requests/access-requests.examples.html +132 -0
  6. package/patterns/access-requests/access-requests.html +60 -0
  7. package/patterns/admin-keys-and-export/admin-keys-and-export.examples.html +236 -0
  8. package/patterns/admin-keys-and-export/admin-keys-and-export.html +64 -0
  9. package/patterns/admin-shell/admin-shell.examples.html +327 -0
  10. package/patterns/admin-shell/admin-shell.html +44 -0
  11. package/patterns/agent-cost/agent-cost.examples.html +111 -0
  12. package/patterns/agent-cost/agent-cost.html +62 -0
  13. package/patterns/agent-memory/agent-memory.examples.html +155 -0
  14. package/patterns/agent-memory/agent-memory.html +64 -0
  15. package/patterns/agent-prompt-library/agent-prompt-library.examples.html +181 -0
  16. package/patterns/agent-prompt-library/agent-prompt-library.html +64 -0
  17. package/patterns/agent-tool-call/agent-tool-call.examples.html +123 -0
  18. package/patterns/agent-tool-call/agent-tool-call.html +60 -0
  19. package/patterns/alert-dialog/alert-dialog.examples.html +105 -0
  20. package/patterns/alert-dialog/alert-dialog.html +57 -0
  21. package/patterns/app-nav/app-nav.examples.html +421 -0
  22. package/patterns/app-nav/app-nav.html +50 -0
  23. package/patterns/approvals/approvals.examples.html +131 -0
  24. package/patterns/approvals/approvals.html +58 -0
  25. package/patterns/audit-log/audit-log.examples.html +74 -0
  26. package/patterns/audit-log/audit-log.examples.js +60 -0
  27. package/patterns/audit-log/audit-log.html +63 -0
  28. package/patterns/bulk-action-toolbar/bulk-action-toolbar.examples.html +89 -0
  29. package/patterns/bulk-action-toolbar/bulk-action-toolbar.examples.js +69 -0
  30. package/patterns/bulk-action-toolbar/bulk-action-toolbar.html +62 -0
  31. package/patterns/changelog-feed/changelog-feed.examples.html +151 -0
  32. package/patterns/changelog-feed/changelog-feed.html +57 -0
  33. package/patterns/chart-in-card/chart-in-card.examples.html +193 -0
  34. package/patterns/chart-in-card/chart-in-card.examples.js +46 -0
  35. package/patterns/chart-in-card/chart-in-card.html +66 -0
  36. package/patterns/chat-shell/chat-shell.examples.html +129 -0
  37. package/patterns/chat-shell/chat-shell.html +46 -0
  38. package/patterns/comments-and-collaboration/comments-and-collaboration.examples.html +241 -0
  39. package/patterns/comments-and-collaboration/comments-and-collaboration.html +66 -0
  40. package/patterns/component-tokens/component-tokens.examples.html +483 -0
  41. package/patterns/component-tokens/component-tokens.html +42 -0
  42. package/patterns/conversion-funnel/conversion-funnel.examples.html +158 -0
  43. package/patterns/conversion-funnel/conversion-funnel.examples.js +4 -0
  44. package/patterns/conversion-funnel/conversion-funnel.html +64 -0
  45. package/patterns/data-tables-inline-edit-and-tree/data-tables-inline-edit-and-tree.examples.html +196 -0
  46. package/patterns/data-tables-inline-edit-and-tree/data-tables-inline-edit-and-tree.html +58 -0
  47. package/patterns/diff-review/diff-review.examples.html +147 -0
  48. package/patterns/diff-review/diff-review.html +56 -0
  49. package/patterns/editor-shell/editor-shell.examples.html +139 -0
  50. package/patterns/editor-shell/editor-shell.html +62 -0
  51. package/patterns/export-flow/export-flow.examples.html +152 -0
  52. package/patterns/export-flow/export-flow.examples.js +37 -0
  53. package/patterns/export-flow/export-flow.html +65 -0
  54. package/patterns/filter-bar/filter-bar.examples.html +116 -0
  55. package/patterns/filter-bar/filter-bar.examples.js +23 -0
  56. package/patterns/filter-bar/filter-bar.html +70 -0
  57. package/patterns/form-drawer/form-drawer.examples.html +210 -0
  58. package/patterns/form-drawer/form-drawer.html +64 -0
  59. package/patterns/form-system/form-system.examples.html +383 -0
  60. package/patterns/form-system/form-system.html +48 -0
  61. package/patterns/forms-conditional-and-autocomplete/forms-conditional-and-autocomplete.examples.html +189 -0
  62. package/patterns/forms-conditional-and-autocomplete/forms-conditional-and-autocomplete.html +64 -0
  63. package/patterns/inline-dialog/inline-dialog.examples.html +143 -0
  64. package/patterns/inline-dialog/inline-dialog.html +59 -0
  65. package/patterns/kanban-board/kanban-board.examples.html +224 -0
  66. package/patterns/kanban-board/kanban-board.html +58 -0
  67. package/patterns/layout/layout.examples.html +365 -0
  68. package/patterns/layout/layout.html +54 -0
  69. package/patterns/marketing-engagement/marketing-engagement.examples.html +280 -0
  70. package/patterns/marketing-engagement/marketing-engagement.html +64 -0
  71. package/patterns/notifications-bell-and-digest/notifications-bell-and-digest.examples.html +213 -0
  72. package/patterns/notifications-bell-and-digest/notifications-bell-and-digest.html +58 -0
  73. package/patterns/overview/overview.examples.html +119 -0
  74. package/patterns/overview/overview.html +42 -0
  75. package/patterns/permissions-matrix/permissions-matrix.examples.html +91 -0
  76. package/patterns/permissions-matrix/permissions-matrix.examples.js +28 -0
  77. package/patterns/permissions-matrix/permissions-matrix.html +56 -0
  78. package/patterns/permissions-role-picker/permissions-role-picker.examples.html +81 -0
  79. package/patterns/permissions-role-picker/permissions-role-picker.html +56 -0
  80. package/patterns/permissions-sharing/permissions-sharing.examples.html +175 -0
  81. package/patterns/permissions-sharing/permissions-sharing.html +66 -0
  82. package/patterns/profile-public-and-verification/profile-public-and-verification.examples.html +227 -0
  83. package/patterns/profile-public-and-verification/profile-public-and-verification.html +70 -0
  84. package/patterns/record-detail-drawer/record-detail-drawer.examples.html +164 -0
  85. package/patterns/record-detail-drawer/record-detail-drawer.html +64 -0
  86. package/patterns/responsive-shell-sidebar/README.md +37 -0
  87. package/patterns/responsive-shell-sidebar/responsive-shell-sidebar.css +39 -0
  88. package/patterns/responsive-shell-sidebar/responsive-shell-sidebar.examples.html +208 -0
  89. package/patterns/responsive-shell-sidebar/responsive-shell-sidebar.html +47 -0
  90. package/patterns/retention-cohort/retention-cohort.examples.html +149 -0
  91. package/patterns/retention-cohort/retention-cohort.examples.js +37 -0
  92. package/patterns/retention-cohort/retention-cohort.html +62 -0
  93. package/patterns/search-discovery/search-discovery.examples.html +263 -0
  94. package/patterns/search-discovery/search-discovery.html +58 -0
  95. package/patterns/system-banners/system-banners.examples.html +150 -0
  96. package/patterns/system-banners/system-banners.html +52 -0
  97. package/patterns/timezone-selector/timezone-selector.examples.html +82 -0
  98. package/patterns/timezone-selector/timezone-selector.examples.js +72 -0
  99. package/patterns/timezone-selector/timezone-selector.html +57 -0
  100. package/patterns/wizard-drawer/wizard-drawer.examples.html +144 -0
  101. package/patterns/wizard-drawer/wizard-drawer.examples.js +33 -0
  102. package/patterns/wizard-drawer/wizard-drawer.html +72 -0
@@ -0,0 +1,365 @@
1
+ <header>
2
+ <div>
3
+ <h1>Layout</h1>
4
+ <div data-actions>
5
+ <tag-ui size="sm">col-ui</tag-ui>
6
+ <tag-ui size="sm">row-ui</tag-ui>
7
+ <tag-ui size="sm">grid-ui</tag-ui>
8
+ <tag-ui size="sm">stack-ui</tag-ui>
9
+ </div>
10
+ </div>
11
+ <p>Layout primitives — flex columns, flex rows, CSS grids, and stacked overlays — each with consistent gap, alignment, and justification controls.</p>
12
+ </header>
13
+
14
+
15
+ <section data-section data-property="col">
16
+ <h2 variant="section">col-ui</h2>
17
+ <p data-note>Flex column. Children stack vertically with a consistent gap.</p>
18
+ <div data-artifact-container>
19
+ <div data-artifact-item data-artifact-label='gap="xs"'>
20
+ <col-ui data-chunk="layout-col-xs" gap="xs">
21
+ <block-ui>Item one</block-ui>
22
+ <block-ui>Item two</block-ui>
23
+ <block-ui>Item three</block-ui>
24
+ </col-ui>
25
+ </div>
26
+ <div data-artifact-item data-artifact-label='gap="sm"'>
27
+ <col-ui data-chunk="layout-col-1" gap="sm">
28
+ <block-ui>Item one</block-ui>
29
+ <block-ui>Item two</block-ui>
30
+ <block-ui>Item three</block-ui>
31
+ </col-ui>
32
+ </div>
33
+ <div data-artifact-item data-artifact-label='gap="md"'>
34
+ <col-ui data-chunk="layout-col-2" gap="md">
35
+ <block-ui>Item one</block-ui>
36
+ <block-ui>Item two</block-ui>
37
+ <block-ui>Item three</block-ui>
38
+ </col-ui>
39
+ </div>
40
+ <div data-artifact-item data-artifact-label='gap="lg"'>
41
+ <col-ui data-chunk="layout-col-3" gap="lg">
42
+ <block-ui>Item one</block-ui>
43
+ <block-ui>Item two</block-ui>
44
+ <block-ui>Item three</block-ui>
45
+ </col-ui>
46
+ </div>
47
+ <div data-artifact-item data-artifact-label='gap="xl"'>
48
+ <col-ui data-chunk="layout-col-xl" gap="xl">
49
+ <block-ui>Item one</block-ui>
50
+ <block-ui>Item two</block-ui>
51
+ <block-ui>Item three</block-ui>
52
+ </col-ui>
53
+ </div>
54
+ </div>
55
+ </section>
56
+
57
+ <section data-section data-property="row">
58
+ <h2 variant="section">row-ui</h2>
59
+ <p data-note>Flex row. Children lay out horizontally.</p>
60
+ <div data-artifact-container>
61
+ <div data-artifact-item data-artifact-label='gap="sm"'>
62
+ <row-ui data-chunk="layout-row-1" gap="sm">
63
+ <block-ui>A</block-ui>
64
+ <block-ui>B</block-ui>
65
+ <block-ui>C</block-ui>
66
+ </row-ui>
67
+ </div>
68
+ <div data-artifact-item data-artifact-label='gap="lg"'>
69
+ <row-ui data-chunk="layout-row-2" gap="lg">
70
+ <block-ui>A</block-ui>
71
+ <block-ui>B</block-ui>
72
+ <block-ui>C</block-ui>
73
+ </row-ui>
74
+ </div>
75
+ </div>
76
+ </section>
77
+
78
+ <section data-section data-property="justify">
79
+ <h2 variant="section">justify</h2>
80
+ <p data-note>Main-axis distribution. One of start, center, end, space-between, space-around.</p>
81
+ <div data-artifact-container>
82
+ <div data-artifact-item data-artifact-label="start">
83
+ <row-ui data-chunk="layout-justify-start" justify="start">
84
+ <block-ui>A</block-ui>
85
+ <block-ui>B</block-ui>
86
+ </row-ui>
87
+ </div>
88
+ <div data-artifact-item data-artifact-label="center">
89
+ <row-ui data-chunk="layout-justify-center" justify="center">
90
+ <block-ui>A</block-ui>
91
+ <block-ui>B</block-ui>
92
+ </row-ui>
93
+ </div>
94
+ <div data-artifact-item data-artifact-label="end">
95
+ <row-ui data-chunk="layout-justify-end" justify="end">
96
+ <block-ui>A</block-ui>
97
+ <block-ui>B</block-ui>
98
+ </row-ui>
99
+ </div>
100
+ <div data-artifact-item data-artifact-label="space-between">
101
+ <row-ui data-chunk="layout-justify-space-between" justify="space-between">
102
+ <block-ui>A</block-ui>
103
+ <block-ui>B</block-ui>
104
+ </row-ui>
105
+ </div>
106
+ </div>
107
+ </section>
108
+
109
+ <section data-section data-property="align">
110
+ <h2 variant="section">align</h2>
111
+ <p data-note>Cross-axis alignment. One of start, center, end, stretch, baseline (row only).</p>
112
+ <div data-artifact-container>
113
+ <div data-artifact-item data-artifact-label="start">
114
+ <row-ui data-chunk="layout-align-start" align="start" style="height:80px;">
115
+ <block-ui>A</block-ui>
116
+ <block-ui>B</block-ui>
117
+ </row-ui>
118
+ </div>
119
+ <div data-artifact-item data-artifact-label="center">
120
+ <row-ui data-chunk="layout-align-center" align="center" style="height:80px;">
121
+ <block-ui>A</block-ui>
122
+ <block-ui>B</block-ui>
123
+ </row-ui>
124
+ </div>
125
+ <div data-artifact-item data-artifact-label="end">
126
+ <row-ui data-chunk="layout-align-end" align="end" style="height:80px;">
127
+ <block-ui>A</block-ui>
128
+ <block-ui>B</block-ui>
129
+ </row-ui>
130
+ </div>
131
+ <div data-artifact-item data-artifact-label="stretch">
132
+ <row-ui data-chunk="layout-align-stretch" align="stretch" style="height:80px;">
133
+ <block-ui>A</block-ui>
134
+ <block-ui>B</block-ui>
135
+ </row-ui>
136
+ </div>
137
+ </div>
138
+ </section>
139
+
140
+ <section data-section data-property="wrap">
141
+ <h2 variant="section">wrap</h2>
142
+ <p data-note>Allow row children to wrap onto additional lines when they overflow.</p>
143
+ <div data-artifact-container>
144
+ <div data-artifact-item data-artifact-label="wrap">
145
+ <row-ui data-chunk="layout-wrap" wrap gap="sm" style="max-width:240px;">
146
+ <block-ui>One</block-ui>
147
+ <block-ui>Two</block-ui>
148
+ <block-ui>Three</block-ui>
149
+ <block-ui>Four</block-ui>
150
+ <block-ui>Five</block-ui>
151
+ </row-ui>
152
+ </div>
153
+ </div>
154
+ </section>
155
+
156
+ <section data-section data-property="grid">
157
+ <h2 variant="section">grid-ui</h2>
158
+ <p data-note>CSS grid with a fixed column count or responsive auto-fill / auto-fit.</p>
159
+ <div data-artifact-container>
160
+ <div data-artifact-item data-artifact-label='columns="2"'>
161
+ <grid-ui data-chunk="layout-grid-1" columns="2" gap="sm">
162
+ <block-ui>1</block-ui>
163
+ <block-ui>2</block-ui>
164
+ <block-ui>3</block-ui>
165
+ <block-ui>4</block-ui>
166
+ </grid-ui>
167
+ </div>
168
+ <div data-artifact-item data-artifact-label='columns="3"'>
169
+ <grid-ui data-chunk="layout-grid-2" columns="3" gap="sm">
170
+ <block-ui>1</block-ui>
171
+ <block-ui>2</block-ui>
172
+ <block-ui>3</block-ui>
173
+ <block-ui>4</block-ui>
174
+ <block-ui>5</block-ui>
175
+ <block-ui>6</block-ui>
176
+ </grid-ui>
177
+ </div>
178
+ <div data-artifact-item data-artifact-label="auto-fill">
179
+ <grid-ui data-chunk="layout-grid-auto-fill" columns="auto-fill" gap="sm">
180
+ <block-ui>A</block-ui>
181
+ <block-ui>B</block-ui>
182
+ <block-ui>C</block-ui>
183
+ <block-ui>D</block-ui>
184
+ </grid-ui>
185
+ </div>
186
+ </div>
187
+ </section>
188
+
189
+ <section data-section data-property="stack">
190
+ <h2 variant="section">stack-ui</h2>
191
+ <p data-note>Overlay children in the same cell. Use align to position them within the stack.</p>
192
+ <div data-artifact-container>
193
+ <div data-artifact-item data-artifact-label="center">
194
+ <stack-ui data-chunk="layout-stack-center" align="center">
195
+ <avatar-ui text="AB" size="lg"></avatar-ui>
196
+ <badge-ui text="3" size="sm" variant="danger"></badge-ui>
197
+ </stack-ui>
198
+ </div>
199
+ <div data-artifact-item data-artifact-label="top-right">
200
+ <stack-ui data-chunk="layout-stack-top-right" align="top-right">
201
+ <avatar-ui text="AB" size="lg"></avatar-ui>
202
+ <badge-ui text="3" size="sm" variant="danger"></badge-ui>
203
+ </stack-ui>
204
+ </div>
205
+ <div data-artifact-item data-artifact-label="bottom-left">
206
+ <stack-ui data-chunk="layout-stack-bottom-left" align="bottom-left">
207
+ <avatar-ui text="AB" size="lg"></avatar-ui>
208
+ <badge-ui text="3" size="sm" variant="danger"></badge-ui>
209
+ </stack-ui>
210
+ </div>
211
+ </div>
212
+ </section>
213
+
214
+ <section data-section data-property="combinations">
215
+ <h2 variant="section">Combinations</h2>
216
+ <p data-note>Nested layouts composing a typical card-style region.</p>
217
+ <div data-artifact-container>
218
+ <div data-artifact-item data-artifact-label="col + row + grid">
219
+ <col-ui data-chunk="layout-combo" gap="md" style="max-width:320px;">
220
+ <row-ui justify="space-between">
221
+ <block-ui>Title</block-ui>
222
+ <block-ui>Action</block-ui>
223
+ </row-ui>
224
+ <grid-ui columns="2" gap="sm">
225
+ <block-ui>Stat A</block-ui>
226
+ <block-ui>Stat B</block-ui>
227
+ <block-ui>Stat C</block-ui>
228
+ <block-ui>Stat D</block-ui>
229
+ </grid-ui>
230
+ </col-ui>
231
+ </div>
232
+ </div>
233
+ </section>
234
+
235
+ <section data-section data-property="edge-cases">
236
+ <h2 variant="section">Edge Cases</h2>
237
+ <p data-note>Boundary conditions.</p>
238
+ <div data-artifact-container>
239
+ <div data-artifact-item data-artifact-label="empty">
240
+ <col-ui data-chunk="layout-edge-empty"></col-ui>
241
+ </div>
242
+ <div data-artifact-item data-artifact-label="single child">
243
+ <row-ui data-chunk="layout-edge-single-child">
244
+ <block-ui>Only child</block-ui>
245
+ </row-ui>
246
+ </div>
247
+ <div data-artifact-item data-artifact-label='gap="0"'>
248
+ <grid-ui data-chunk="layout-edge-3" columns="1" gap="0">
249
+ <block-ui>No gap</block-ui>
250
+ <block-ui>No gap</block-ui>
251
+ </grid-ui>
252
+ </div>
253
+ </div>
254
+ </section>
255
+
256
+ <!-- ═══════════════════════════════════════════════════════════
257
+ API Reference
258
+ ═══════════════════════════════════════════════════════════ -->
259
+
260
+ <section data-section data-property="usage">
261
+ <h2 variant="section">Usage</h2>
262
+ <code-ui language="html">&lt;col-ui gap="md"&gt;
263
+ &lt;row-ui justify="space-between"&gt;
264
+ &lt;div&gt;Title&lt;/div&gt;
265
+ &lt;div&gt;Action&lt;/div&gt;
266
+ &lt;/row-ui&gt;
267
+ &lt;grid-ui columns="3" gap="sm"&gt;...&lt;/grid-ui&gt;
268
+ &lt;/col-ui&gt;</code-ui>
269
+ </section>
270
+
271
+ <section data-section data-api="properties">
272
+ <h2 variant="section">Properties</h2>
273
+ <p><strong>col-ui</strong></p>
274
+ <table>
275
+ <thead><tr><th>Property</th><th>Type</th><th>Default</th><th>Description</th></tr></thead>
276
+ <tbody>
277
+ <tr><td>justify</td><td>String</td><td><code>'start'</code></td><td>Main-axis distribution. <code>start</code>, <code>center</code>, <code>end</code>, <code>space-between</code>, <code>space-around</code>.</td></tr>
278
+ <tr><td>align</td><td>String</td><td><code>'stretch'</code></td><td>Cross-axis alignment. <code>start</code>, <code>center</code>, <code>end</code>, <code>stretch</code>.</td></tr>
279
+ <tr><td>gap</td><td>String</td><td><code>'md'</code></td><td>Space between children. Named <code>xs</code>–<code>xl</code> (parametric, via <code>--a-gap-k</code>) or integer rung <code>0</code>–<code>16</code>; at k=1 they coincide (md=3).</td></tr>
280
+ </tbody>
281
+ </table>
282
+ <p><strong>row-ui</strong></p>
283
+ <table>
284
+ <thead><tr><th>Property</th><th>Type</th><th>Default</th><th>Description</th></tr></thead>
285
+ <tbody>
286
+ <tr><td>justify</td><td>String</td><td><code>'start'</code></td><td>Main-axis distribution.</td></tr>
287
+ <tr><td>align</td><td>String</td><td><code>'center'</code></td><td>Cross-axis alignment. Adds <code>baseline</code>.</td></tr>
288
+ <tr><td>gap</td><td>String</td><td><code>'md'</code></td><td>Space between children. Named <code>xs</code>–<code>xl</code> or integer <code>0</code>–<code>16</code> (same grammar as col-ui).</td></tr>
289
+ <tr><td>wrap</td><td>Boolean</td><td><code>false</code></td><td>Allow children to wrap onto additional lines.</td></tr>
290
+ </tbody>
291
+ </table>
292
+ <p><strong>grid-ui</strong></p>
293
+ <table>
294
+ <thead><tr><th>Property</th><th>Type</th><th>Default</th><th>Description</th></tr></thead>
295
+ <tbody>
296
+ <tr><td>columns</td><td>String</td><td><code>'3'</code></td><td>Column count (<code>1</code>–<code>6</code>) or responsive preset (<code>auto-fill</code>, <code>auto-fit</code>).</td></tr>
297
+ <tr><td>gap</td><td>String</td><td><code>'md'</code></td><td>Space between rows and columns. Named <code>xs</code>–<code>xl</code> or integer <code>0</code>–<code>16</code>.</td></tr>
298
+ <tr><td>column-gap</td><td>String</td><td><code>''</code></td><td>Override column gap independently.</td></tr>
299
+ <tr><td>row-gap</td><td>String</td><td><code>''</code></td><td>Override row gap independently.</td></tr>
300
+ </tbody>
301
+ </table>
302
+ <p><strong>stack-ui</strong></p>
303
+ <table>
304
+ <thead><tr><th>Property</th><th>Type</th><th>Default</th><th>Description</th></tr></thead>
305
+ <tbody>
306
+ <tr><td>align</td><td>String</td><td><code>'center'</code></td><td>Positioning of overlaid children. <code>center</code>, <code>top</code>, <code>bottom</code>, <code>left</code>, <code>right</code>, <code>top-left</code>, <code>top-right</code>, <code>bottom-left</code>, <code>bottom-right</code>.</td></tr>
307
+ </tbody>
308
+ </table>
309
+ </section>
310
+
311
+ <section data-section data-api="events">
312
+ <h2 variant="section">Events</h2>
313
+ <p>None.</p>
314
+ </section>
315
+
316
+ <section data-section data-api="tokens">
317
+ <h2 variant="section">CSS Tokens</h2>
318
+ <p><strong>col-ui</strong></p>
319
+ <table>
320
+ <thead><tr><th>Token</th><th>Default</th><th>Description</th></tr></thead>
321
+ <tbody>
322
+ <tr><td>--col-gap</td><td>var(--a-space-3)</td><td>Gap between children.</td></tr>
323
+ <tr><td>--col-justify</td><td>flex-start</td><td>Main-axis distribution.</td></tr>
324
+ <tr><td>--col-align</td><td>stretch</td><td>Cross-axis alignment.</td></tr>
325
+ </tbody>
326
+ </table>
327
+ <p><strong>row-ui</strong></p>
328
+ <table>
329
+ <thead><tr><th>Token</th><th>Default</th><th>Description</th></tr></thead>
330
+ <tbody>
331
+ <tr><td>--row-gap</td><td>var(--a-space-3)</td><td>Gap between children.</td></tr>
332
+ <tr><td>--row-justify</td><td>flex-start</td><td>Main-axis distribution.</td></tr>
333
+ <tr><td>--row-align</td><td>center</td><td>Cross-axis alignment.</td></tr>
334
+ </tbody>
335
+ </table>
336
+ <p><strong>grid-ui</strong></p>
337
+ <table>
338
+ <thead><tr><th>Token</th><th>Default</th><th>Description</th></tr></thead>
339
+ <tbody>
340
+ <tr><td>--grid-columns</td><td>3</td><td>Number of columns.</td></tr>
341
+ <tr><td>--grid-gap</td><td>var(--a-space-3)</td><td>Default row and column gap.</td></tr>
342
+ <tr><td>--grid-column-gap</td><td>var(--grid-gap)</td><td>Column-only gap override.</td></tr>
343
+ <tr><td>--grid-row-gap</td><td>var(--grid-gap)</td><td>Row-only gap override.</td></tr>
344
+ </tbody>
345
+ </table>
346
+ <p><strong>stack-ui</strong></p>
347
+ <table>
348
+ <thead><tr><th>Token</th><th>Default</th><th>Description</th></tr></thead>
349
+ <tbody>
350
+ <tr><td>--stack-align</td><td>center</td><td>place-items value for overlaid children.</td></tr>
351
+ </tbody>
352
+ </table>
353
+ </section>
354
+
355
+ <section data-section data-property="rules">
356
+ <h2 variant="section">Authoring rules</h2>
357
+ <ul>
358
+ <li><strong>Never emit inline flex CSS.</strong> Always use <code>&lt;row-ui gap="N"&gt;</code> and <code>&lt;col-ui gap="N"&gt;</code> instead of <code>style="display:flex; gap:16px"</code>. The gap value is a unitless integer mapping to <code>--a-space-N</code> and responds to <code>--a-density</code> automatically.</li>
359
+ <li><strong>Gap values are not pixel values.</strong> <code>gap="4"</code> means <code>--a-space-4</code> (16px at default density), not 4px. Use the spacing scale, not raw numbers.</li>
360
+ <li><strong>Use <code>grid-ui</code> for fixed column counts</strong> and <code>row-ui wrap</code> for wrapping collections. Use <code>grid-ui columns="1 2@sm 4@lg"</code> for responsive grids rather than multiple hidden elements.</li>
361
+ <li><strong>Prefer <code>wrap-at="bp"</code> over always-on <code>wrap</code></strong> for toolbars and action rows. <code>wrap-at="sm"</code> keeps the row single-line on desktop while allowing natural wrapping on mobile.</li>
362
+ <li><strong>Don't use Tailwind-style utility classes.</strong> AdiaUI does not include Tailwind or Bootstrap. Every layout need has a corresponding primitive — reach for the component, not a class.</li>
363
+ <li><strong>Don't nest <code>row-ui</code> inside <code>col-ui</code></strong> when <code>grid-ui</code> would express the same layout in one element with less nesting. Nested flex containers are harder to reason about at breakpoints.</li>
364
+ </ul>
365
+ </section>
@@ -0,0 +1,54 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en" theme="auto">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>Layout (pattern) — AdiaUI</title>
7
+
8
+ <!-- Token base -->
9
+ <link rel="stylesheet" href="../../styles/resets.css">
10
+ <link rel="stylesheet" href="../../styles/tokens.css">
11
+
12
+ <!-- Component CSS — primitives this pattern composes -->
13
+ <link rel="stylesheet" href="../../components/block/block.css">
14
+ <link rel="stylesheet" href="../../components/code/code.css">
15
+ <link rel="stylesheet" href="../../components/col/col.css">
16
+ <link rel="stylesheet" href="../../components/grid/grid.css">
17
+ <link rel="stylesheet" href="../../components/row/row.css">
18
+ <link rel="stylesheet" href="../../components/stack/stack.css">
19
+ <link rel="stylesheet" href="../../components/tag/tag.css">
20
+
21
+ <!-- Component JS -->
22
+ <script type="module" src="../../components/block/block.js"></script>
23
+ <script type="module" src="../../components/code/code.js"></script>
24
+ <script type="module" src="../../components/col/col.js"></script>
25
+ <script type="module" src="../../components/grid/grid.js"></script>
26
+ <script type="module" src="../../components/row/row.js"></script>
27
+ <script type="module" src="../../components/stack/stack.js"></script>
28
+ <script type="module" src="../../components/tag/tag.js"></script>
29
+
30
+ <style>
31
+ :where(html, body) { margin: 0; min-height: 100vh; background: var(--md-sys-color-neutral-background); color: var(--md-sys-color-neutral-on-surface); font-family: var(--a-font-family); }
32
+ main { max-width: 960px; margin-inline: auto; padding: var(--a-space-6) var(--a-space-5); }
33
+ </style>
34
+ </head>
35
+ <body>
36
+
37
+ <main id="demo-root">
38
+ <p>Loading examples…</p>
39
+ </main>
40
+
41
+ <script type="module">
42
+ const root = document.getElementById('demo-root');
43
+ try {
44
+ const res = await fetch('./layout.examples.html');
45
+ if (!res.ok) throw new Error(`fetch failed (${res.status})`);
46
+ root.innerHTML = await res.text();
47
+ } catch (err) {
48
+ root.innerHTML = `<p style="color:var(--a-danger-strong);">Failed to load layout.examples.html — ${err.message}</p>`;
49
+ console.error('[layout.html]', err);
50
+ }
51
+ </script>
52
+
53
+ </body>
54
+ </html>