@adia-ai/a2ui-corpus 0.4.2 → 0.4.4

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 (452) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/README.md +59 -51
  3. package/catalog-a2ui_0_9.json +318 -15
  4. package/catalog-a2ui_0_9_rules.txt +18 -0
  5. package/chunks/_index.json +1263 -496
  6. package/chunks/agent-activity-feed.json +1 -1
  7. package/chunks/agent-canvas-shell.json +1 -1
  8. package/chunks/agent-reasoning-collapsed.json +1 -1
  9. package/chunks/auth-account-deleted-actions.json +1 -1
  10. package/chunks/auth-account-deleted.json +1 -1
  11. package/chunks/auth-card-content.json +1 -1
  12. package/chunks/auth-card-header.json +1 -1
  13. package/chunks/auth-email-entry.json +1 -1
  14. package/chunks/auth-email-verify-confirm.json +1 -1
  15. package/chunks/auth-email-verify.json +1 -1
  16. package/chunks/auth-forbidden-actions.json +1 -1
  17. package/chunks/auth-forbidden.json +1 -1
  18. package/chunks/auth-invite-actions.json +1 -1
  19. package/chunks/auth-invite-team-card.json +1 -1
  20. package/chunks/auth-link-expired-form.json +1 -1
  21. package/chunks/auth-link-expired.json +1 -1
  22. package/chunks/auth-locked-account.json +1 -1
  23. package/chunks/auth-locked-recovery-options.json +1 -1
  24. package/chunks/auth-mfa-enrollment-submit.json +1 -1
  25. package/chunks/auth-mfa-enrollment.json +224 -2
  26. package/chunks/auth-mfa-fallback-actions.json +1 -1
  27. package/chunks/auth-mfa-recovery.json +1 -1
  28. package/chunks/auth-new-password-form.json +1 -1
  29. package/chunks/auth-new-password.json +156 -2
  30. package/chunks/auth-oauth-fallback-actions.json +1 -1
  31. package/chunks/auth-oauth-interstitial.json +1 -1
  32. package/chunks/auth-password-challenge.json +1 -1
  33. package/chunks/auth-password-reset-form.json +1 -1
  34. package/chunks/auth-password-reset.json +151 -1
  35. package/chunks/auth-profile-form.json +1 -1
  36. package/chunks/auth-profile-setup.json +1 -1
  37. package/chunks/auth-reset-sent.json +1 -1
  38. package/chunks/auth-session-expired-actions.json +1 -1
  39. package/chunks/auth-session-expired.json +1 -1
  40. package/chunks/auth-signin-card-email.json +190 -2
  41. package/chunks/auth-signin-card-magic-link.json +119 -2
  42. package/chunks/auth-signin-card-mfa.json +162 -1
  43. package/chunks/auth-signin-card-otp.json +116 -2
  44. package/chunks/auth-signin-card-password.json +202 -2
  45. package/chunks/auth-signin-card-recovery.json +1 -1
  46. package/chunks/auth-signout-actions.json +1 -1
  47. package/chunks/auth-signout.json +1 -1
  48. package/chunks/auth-signup-email-entry.json +1 -1
  49. package/chunks/auth-signup-entry.json +191 -1
  50. package/chunks/auth-signup-social-auths.json +1 -1
  51. package/chunks/auth-signup-verify.json +1 -1
  52. package/chunks/auth-social-auths.json +1 -1
  53. package/chunks/auth-sso-providers.json +1 -1
  54. package/chunks/auth-sso-required.json +1 -1
  55. package/chunks/auth-team-invite.json +1 -1
  56. package/chunks/card-header-with-description.json +12 -0
  57. package/chunks/chat-page-shell.json +1 -1
  58. package/chunks/chat-streaming-surface.json +1 -1
  59. package/chunks/command-palette.json +1 -1
  60. package/chunks/commerce-pricing-tiers.json +1 -1
  61. package/chunks/conversion-funnel-6step.json +1 -1
  62. package/chunks/dashboard-acquisition-panel.json +162 -1
  63. package/chunks/dashboard-admin-page.json +2879 -4
  64. package/chunks/dashboard-audience-kpis.json +1 -1
  65. package/chunks/dashboard-audience-panel.json +488 -1
  66. package/chunks/dashboard-behavior-panel.json +91 -1
  67. package/chunks/dashboard-chart-recent.json +474 -3
  68. package/chunks/dashboard-cohort-retention.json +1 -1
  69. package/chunks/dashboard-conversion-panel.json +196 -1
  70. package/chunks/dashboard-country-list.json +1 -1
  71. package/chunks/dashboard-filter-bar.json +1 -1
  72. package/chunks/dashboard-funnel.json +1 -1
  73. package/chunks/dashboard-kpi-grid.json +1 -1
  74. package/chunks/dashboard-notifications-feed.json +1 -1
  75. package/chunks/dashboard-notifications-panel.json +383 -1
  76. package/chunks/dashboard-overview-panel.json +1363 -1
  77. package/chunks/dashboard-page-header.json +140 -1
  78. package/chunks/dashboard-pages-table.json +1 -1
  79. package/chunks/dashboard-quick-actions.json +1 -1
  80. package/chunks/dashboard-reports-panel.json +97 -1
  81. package/chunks/dashboard-reports-table.json +1 -1
  82. package/chunks/dashboard-spark-cards.json +1 -1
  83. package/chunks/dashboard-storage-card.json +1 -1
  84. package/chunks/dashboard-tabs.json +1 -1
  85. package/chunks/dashboard-team-actions-storage.json +502 -1
  86. package/chunks/dashboard-team-list.json +1 -1
  87. package/chunks/dashboard-traffic-channels.json +1 -1
  88. package/chunks/dashboard-transactions-table.json +1 -1
  89. package/chunks/destructive-confirm-modal.json +1 -1
  90. package/chunks/doc-editor-shell.json +1 -1
  91. package/chunks/drawer-2fa-key.json +1 -1
  92. package/chunks/drawer-2fa-sms.json +1 -1
  93. package/chunks/drawer-2fa-totp.json +1 -1
  94. package/chunks/drawer-cancel-sub.json +1 -1
  95. package/chunks/drawer-change-plan.json +1 -1
  96. package/chunks/drawer-custom-roles.json +5 -3
  97. package/chunks/drawer-data-start.json +1 -1
  98. package/chunks/drawer-delete-account.json +1 -1
  99. package/chunks/drawer-delete-workspace.json +1 -1
  100. package/chunks/drawer-discord.json +1 -1
  101. package/chunks/drawer-figma.json +1 -1
  102. package/chunks/drawer-first-dashboard.json +1 -1
  103. package/chunks/drawer-gcal.json +1 -1
  104. package/chunks/drawer-github.json +5 -3
  105. package/chunks/drawer-invite.json +1 -1
  106. package/chunks/drawer-payment-method.json +1 -1
  107. package/chunks/drawer-report.json +1 -1
  108. package/chunks/drawer-revoke-session.json +1 -1
  109. package/chunks/drawer-role.json +1 -1
  110. package/chunks/drawer-slack.json +1 -1
  111. package/chunks/drawer-smtp.json +5 -3
  112. package/chunks/drawer-source.json +1 -1
  113. package/chunks/drawer-transaction.json +1 -1
  114. package/chunks/editor-code-pane.json +1 -1
  115. package/chunks/editor-page-shell.json +1 -1
  116. package/chunks/editor-preview-pane.json +1 -1
  117. package/chunks/error-404-actions.json +1 -1
  118. package/chunks/error-404.json +161 -3
  119. package/chunks/error-500-actions.json +1 -1
  120. package/chunks/error-500.json +166 -3
  121. package/chunks/error-maintenance-actions.json +1 -1
  122. package/chunks/error-maintenance.json +158 -3
  123. package/chunks/error-page-shell.json +1 -1
  124. package/chunks/footer-primary-only.json +12 -0
  125. package/chunks/form-page-shell.json +1 -1
  126. package/chunks/gallery-page-shell.json +1 -1
  127. package/chunks/icon-text-row.json +16 -0
  128. package/chunks/image-tile.json +12 -0
  129. package/chunks/kanban-board-3col.json +5 -3
  130. package/chunks/kanban-page-shell.json +1 -1
  131. package/chunks/labeled-textarea.json +14 -0
  132. package/chunks/linked-record-row.json +57 -0
  133. package/chunks/marketing-hero-cta.json +1 -1
  134. package/chunks/marketing-page-shell.json +1 -1
  135. package/chunks/member-edit-drawer.json +1 -1
  136. package/chunks/metadata-description-list.json +14 -0
  137. package/chunks/onb-completion.json +1 -1
  138. package/chunks/onb-extension-install.json +1 -1
  139. package/chunks/onb-hero-welcome.json +1 -1
  140. package/chunks/onb-import-picker.json +1 -1
  141. package/chunks/onb-mobile-handoff.json +1 -1
  142. package/chunks/onb-notification-prefs.json +1 -1
  143. package/chunks/onb-persona-picker.json +1 -1
  144. package/chunks/onb-provider-tiles.json +1 -1
  145. package/chunks/onb-settings-review.json +1 -1
  146. package/chunks/onb-step-footer.json +1 -1
  147. package/chunks/onb-step-header.json +1 -1
  148. package/chunks/onb-step-progress.json +1 -1
  149. package/chunks/onb-step-shell.json +249 -1
  150. package/chunks/onb-story-pane.json +1 -1
  151. package/chunks/onb-tutorial-steps.json +1 -1
  152. package/chunks/playground-a2ui.json +1 -1
  153. package/chunks/playground-app-shell.json +2 -2
  154. package/chunks/playground-chat.json +2 -2
  155. package/chunks/playground-construct-canvas.json +4 -6
  156. package/chunks/playground-gen-ui.json +2 -2
  157. package/chunks/playground-render-preview.json +1 -1
  158. package/chunks/playground-streams-bridge.json +1 -1
  159. package/chunks/playground-table-toolbar.json +1 -1
  160. package/chunks/reg-address-form.json +1 -1
  161. package/chunks/reg-billing-card.json +1 -1
  162. package/chunks/reg-brand-scrape.json +1 -1
  163. package/chunks/reg-departments-toggle.json +1 -1
  164. package/chunks/reg-extended-profile.json +1 -1
  165. package/chunks/reg-final-done.json +1 -1
  166. package/chunks/reg-helpdesk-grid.json +1 -1
  167. package/chunks/reg-import-picker.json +1 -1
  168. package/chunks/reg-integrations-grid.json +1 -1
  169. package/chunks/reg-invite-form.json +1 -1
  170. package/chunks/reg-legal-entity.json +1 -1
  171. package/chunks/reg-org-chart-review.json +1 -1
  172. package/chunks/reg-profile-identity.json +1 -1
  173. package/chunks/reg-step-footer.json +1 -1
  174. package/chunks/reg-step-header.json +1 -1
  175. package/chunks/reg-step-progress.json +1 -1
  176. package/chunks/reg-step-shell.json +565 -1
  177. package/chunks/reg-story-pane.json +1 -1
  178. package/chunks/reg-success-summary.json +1 -1
  179. package/chunks/reg-team-size.json +1 -1
  180. package/chunks/reg-usecase-picker.json +1 -1
  181. package/chunks/reg-workspace-name.json +1 -1
  182. package/chunks/section-with-stack.json +12 -0
  183. package/chunks/settings-appearance.json +26 -0
  184. package/chunks/settings-billing-plan.json +1 -1
  185. package/chunks/settings-general-form.json +1 -1
  186. package/chunks/settings-integrations.json +154 -3
  187. package/chunks/settings-members-invite.json +5 -3
  188. package/chunks/settings-notifications.json +1 -1
  189. package/chunks/settings-page-shell.json +1 -1
  190. package/chunks/settings-profile-security.json +1 -1
  191. package/chunks/text-card.json +14 -0
  192. package/chunks/user-identity-row.json +16 -0
  193. package/chunks/user-profile-card.json +1 -1
  194. package/chunks/users-table-badge.json +1 -1
  195. package/compositions/agent/ai-streaming-response.json +55 -9
  196. package/compositions/agent/alert-banner.json +46 -10
  197. package/compositions/agent/chat-interface.json +15 -7
  198. package/compositions/agent/command-palette.json +2 -2
  199. package/compositions/agent/empty-state.json +70 -11
  200. package/compositions/agent/error-state-retry.json +100 -17
  201. package/compositions/agent/loading-skeleton.json +76 -12
  202. package/compositions/agent/notification-preferences.json +386 -23
  203. package/compositions/agent/toast-stack.json +42 -7
  204. package/compositions/data/activity-feed.json +231 -17
  205. package/compositions/data/audit-log-viewer.json +453 -44
  206. package/compositions/data/bookmark-list.json +188 -16
  207. package/compositions/data/bulk-action-toolbar.json +137 -19
  208. package/compositions/data/changelog-feed.json +296 -30
  209. package/compositions/data/chart-dashboard.json +96 -11
  210. package/compositions/data/cohort-retention.json +392 -40
  211. package/compositions/data/column-manager.json +316 -52
  212. package/compositions/data/data-table-paginated.json +96 -18
  213. package/compositions/data/email-inbox-list.json +224 -13
  214. package/compositions/data/funnel-analytics.json +424 -26
  215. package/compositions/data/heatmap-calendar.json +140 -27
  216. package/compositions/data/invoice-table.json +107 -18
  217. package/compositions/data/kpi-overview.json +187 -17
  218. package/compositions/data/notification-center.json +224 -16
  219. package/compositions/data/object-inspector.json +463 -43
  220. package/compositions/data/product-specs-card.json +66 -12
  221. package/compositions/data/progress-tracker.json +140 -13
  222. package/compositions/data/review-card.json +94 -14
  223. package/compositions/data/saved-views-filter-bar.json +232 -37
  224. package/compositions/data/shopping-cart-summary.json +173 -21
  225. package/compositions/data/stat-card-dashboard.json +219 -18
  226. package/compositions/data/status-page.json +337 -30
  227. package/compositions/data/virtualized-table.json +269 -38
  228. package/compositions/data/weather-widget.json +77 -13
  229. package/compositions/forms/change-password-form.json +123 -16
  230. package/compositions/forms/color-picker-panel.json +85 -11
  231. package/compositions/forms/contact-form.json +127 -17
  232. package/compositions/forms/credit-card-payment-form.json +137 -16
  233. package/compositions/forms/data-import-mapper.json +244 -33
  234. package/compositions/forms/data-import-wizard.json +268 -29
  235. package/compositions/forms/date-time-picker-form.json +114 -13
  236. package/compositions/forms/destructive-confirm.json +206 -21
  237. package/compositions/forms/feedback-form.json +96 -14
  238. package/compositions/forms/file-upload-form.json +82 -11
  239. package/compositions/forms/login-form.json +122 -14
  240. package/compositions/forms/multi-step-wizard.json +133 -15
  241. package/compositions/forms/newsletter-subscription-form.json +83 -12
  242. package/compositions/forms/otp-verification-form.json +88 -13
  243. package/compositions/forms/password-reset-form.json +83 -12
  244. package/compositions/forms/permission-matrix.json +177 -28
  245. package/compositions/forms/profile-edit-form.json +125 -16
  246. package/compositions/forms/radio-group-form.json +110 -15
  247. package/compositions/forms/search-filters.json +112 -13
  248. package/compositions/forms/settings-toggles-page.json +188 -16
  249. package/compositions/forms/signup-form.json +129 -17
  250. package/compositions/forms/slider-range-form.json +65 -10
  251. package/compositions/forms/tag-input-form.json +89 -14
  252. package/compositions/forms/team-members-rbac.json +669 -107
  253. package/compositions/layout/accordion-settings.json +450 -42
  254. package/compositions/layout/badge-variants-display.json +121 -18
  255. package/compositions/layout/bento-overview.json +399 -33
  256. package/compositions/layout/calendar-month-view.json +96 -30
  257. package/compositions/layout/code-block.json +65 -11
  258. package/compositions/layout/comparison-table.json +113 -21
  259. package/compositions/layout/divider-with-label.json +40 -8
  260. package/compositions/layout/drawer-panel.json +105 -12
  261. package/compositions/layout/embed-iframe.json +62 -12
  262. package/compositions/layout/faq-accordion.json +35 -28
  263. package/compositions/layout/feature-grid.json +197 -22
  264. package/compositions/layout/footer-nav.json +188 -23
  265. package/compositions/layout/hero-cta.json +69 -13
  266. package/compositions/layout/image-gallery.json +112 -13
  267. package/compositions/layout/image-with-caption.json +48 -9
  268. package/compositions/layout/kanban-board.json +199 -31
  269. package/compositions/layout/keyboard-shortcuts.json +145 -12
  270. package/compositions/layout/markdown-editor-preview.json +6 -6
  271. package/compositions/layout/media-player.json +85 -13
  272. package/compositions/layout/modal-form.json +97 -12
  273. package/compositions/layout/onboarding-checklist.json +92 -14
  274. package/compositions/layout/popover-tooltip.json +74 -12
  275. package/compositions/layout/pricing-tiers.json +229 -31
  276. package/compositions/layout/product-card.json +97 -17
  277. package/compositions/layout/sidebar-layout.json +157 -16
  278. package/compositions/layout/tabs-panel.json +115 -13
  279. package/compositions/layout/testimonial-grid.json +240 -23
  280. package/compositions/layout/three-pane-shell.json +278 -63
  281. package/compositions/layout/toolbar-actions.json +81 -13
  282. package/compositions/navigation/nav-menu-with-icons.json +119 -14
  283. package/compositions/navigation/pagination-controls.json +2 -2
  284. package/compositions/navigation/workspace-switcher.json +296 -22
  285. package/compositions/settings/api-keys.json +592 -47
  286. package/compositions/settings/feature-flags.json +423 -22
  287. package/compositions/settings/integrations-gallery.json +839 -44
  288. package/compositions/settings/session-device-mgmt.json +619 -42
  289. package/compositions/settings/usage-quota-meter.json +214 -23
  290. package/compositions/settings/webhooks.json +429 -45
  291. package/package.json +2 -4
  292. package/patterns/agent/command-palette.json +1 -1
  293. package/patterns/agent/loading-skeleton.json +0 -6
  294. package/patterns/agent/toast-notification.json +6 -9
  295. package/patterns/data/admin-dashboard-with-charts.json +0 -4
  296. package/patterns/data/api-key-table.json +1 -1
  297. package/patterns/data/bookmark-list-categories.json +537 -128
  298. package/patterns/data/dashboard.json +3 -3
  299. package/patterns/data/data-table-view.json +34 -10
  300. package/patterns/data/email-inbox.json +22 -22
  301. package/patterns/data/event-calendar-details.json +20 -22
  302. package/patterns/data/inventory-table.json +1 -1
  303. package/patterns/data/leaderboard.json +1 -1
  304. package/patterns/data/notification-center.json +57 -25
  305. package/patterns/data/onboarding-checklist.json +10 -35
  306. package/patterns/data/order-tracking.json +8 -8
  307. package/patterns/data/pagination-nav.json +2 -2
  308. package/patterns/data/progress-dashboard.json +4 -16
  309. package/patterns/data/progress-tracker.json +3 -6
  310. package/patterns/data/restaurant-menu.json +241 -59
  311. package/patterns/forms/auth-signup.json +5 -13
  312. package/patterns/forms/bleed-design-settings.json +3 -11
  313. package/patterns/forms/credit-card-payment.json +8 -8
  314. package/patterns/forms/data-import.json +1 -2
  315. package/patterns/forms/login-form.json +4 -12
  316. package/patterns/forms/notification-filters.json +19 -68
  317. package/patterns/forms/notification-preferences.json +125 -39
  318. package/patterns/forms/otp-verification.json +1 -2
  319. package/patterns/forms/password-reset.json +1 -1
  320. package/patterns/forms/radio-group-selection.json +13 -45
  321. package/patterns/forms/radio-group.json +11 -35
  322. package/patterns/forms/survey-rating-scales.json +41 -121
  323. package/patterns/forms/two-factor-auth.json +211 -61
  324. package/patterns/forms/wizard-steps.json +32 -9
  325. package/patterns/layout/accordion-settings.json +63 -119
  326. package/patterns/layout/avatar-group.json +19 -40
  327. package/patterns/layout/badge-showcase.json +51 -89
  328. package/patterns/layout/code-block.json +9 -15
  329. package/patterns/layout/cta-banner.json +9 -17
  330. package/patterns/layout/divider-label.json +6 -10
  331. package/patterns/layout/drawer-panel.json +29 -48
  332. package/patterns/layout/embed-content.json +7 -9
  333. package/patterns/layout/feature-carousel.json +20 -20
  334. package/patterns/layout/feature-grid.json +30 -56
  335. package/patterns/layout/hero-section.json +18 -26
  336. package/patterns/layout/image-carousel.json +12 -12
  337. package/patterns/layout/kbd-shortcuts.json +6 -6
  338. package/patterns/layout/popover-menu.json +23 -27
  339. package/patterns/layout/pricing-tiers.json +50 -96
  340. package/patterns/layout/product-carousel.json +24 -24
  341. package/patterns/layout/tabs-panels.json +29 -55
  342. package/patterns/layout/team-carousel.json +16 -16
  343. package/patterns/layout/testimonials-carousel.json +12 -12
  344. package/patterns/layout/testimonials-grid.json +54 -92
  345. package/patterns/layout/toolbar-buttons.json +42 -70
  346. package/patterns/layout/tooltip-buttons.json +26 -44
  347. package/exemplars/AUDIT-REPORT.md +0 -116
  348. package/exemplars/README.md +0 -49
  349. package/exemplars/_shell.css +0 -88
  350. package/exemplars/blocks-reference.md +0 -409
  351. package/exemplars/index.html +0 -21
  352. package/exemplars/prose/auth-login/auth-login.yaml +0 -38
  353. package/exemplars/prose/auth-login/index.html +0 -542
  354. package/exemplars/prose/cta/README.md +0 -3
  355. package/exemplars/prose/cta/cta.yaml +0 -38
  356. package/exemplars/prose/cta/data.json +0 -6
  357. package/exemplars/prose/cta/index.html +0 -125
  358. package/exemplars/prose/feature-grid/README.md +0 -3
  359. package/exemplars/prose/feature-grid/data.json +0 -13
  360. package/exemplars/prose/feature-grid/feature-grid.yaml +0 -35
  361. package/exemplars/prose/feature-grid/index.html +0 -93
  362. package/exemplars/prose/footer/README.md +0 -3
  363. package/exemplars/prose/footer/data.json +0 -10
  364. package/exemplars/prose/footer/footer.yaml +0 -32
  365. package/exemplars/prose/footer/index.html +0 -109
  366. package/exemplars/prose/hero/README.md +0 -3
  367. package/exemplars/prose/hero/data.json +0 -6
  368. package/exemplars/prose/hero/hero.yaml +0 -38
  369. package/exemplars/prose/hero/index.html +0 -217
  370. package/exemplars/prose/pricing/README.md +0 -3
  371. package/exemplars/prose/pricing/data.json +0 -9
  372. package/exemplars/prose/pricing/index.html +0 -298
  373. package/exemplars/prose/pricing/pricing.yaml +0 -38
  374. package/exemplars/prose/steps/README.md +0 -3
  375. package/exemplars/prose/steps/data.json +0 -31
  376. package/exemplars/prose/steps/index.html +0 -176
  377. package/exemplars/prose/steps/setup.js +0 -12
  378. package/exemplars/prose/steps/steps.yaml +0 -38
  379. package/exemplars/prose/testimonials/README.md +0 -3
  380. package/exemplars/prose/testimonials/data.json +0 -14
  381. package/exemplars/prose/testimonials/index.html +0 -297
  382. package/exemplars/prose/testimonials/testimonials.yaml +0 -33
  383. package/exemplars/ui/auth-login/auth-login.yaml +0 -38
  384. package/exemplars/ui/auth-login/index.html +0 -372
  385. package/fragments/_schema.json +0 -72
  386. package/fragments/action/dual-cta-row.json +0 -29
  387. package/fragments/action/dual-cta-row.yaml +0 -34
  388. package/fragments/action/footer-cancel-save.json +0 -31
  389. package/fragments/action/footer-cancel-save.yaml +0 -34
  390. package/fragments/action/footer-primary-only.json +0 -23
  391. package/fragments/action/footer-primary-only.yaml +0 -26
  392. package/fragments/content/calendar-day-cell.json +0 -29
  393. package/fragments/content/column-config-atom.json +0 -121
  394. package/fragments/content/credential-entry-atom.json +0 -126
  395. package/fragments/content/directory-entry-atom.json +0 -148
  396. package/fragments/content/email-row.json +0 -35
  397. package/fragments/content/email-row.yaml +0 -43
  398. package/fragments/content/faq-item.json +0 -54
  399. package/fragments/content/health-entry-atom.json +0 -85
  400. package/fragments/content/icon-text-row.json +0 -29
  401. package/fragments/content/icon-text-row.yaml +0 -36
  402. package/fragments/content/icon-title-description.json +0 -30
  403. package/fragments/content/icon-title-description.yaml +0 -37
  404. package/fragments/content/image-tile.json +0 -28
  405. package/fragments/content/image-tile.yaml +0 -32
  406. package/fragments/content/incident-row.json +0 -107
  407. package/fragments/content/kbd-shortcut-row.json +0 -29
  408. package/fragments/content/kbd-shortcut-row.yaml +0 -33
  409. package/fragments/content/key-value-row.json +0 -29
  410. package/fragments/content/key-value-row.yaml +0 -36
  411. package/fragments/content/labeled-progress.json +0 -29
  412. package/fragments/content/labeled-progress.yaml +0 -33
  413. package/fragments/content/link-list-column.json +0 -33
  414. package/fragments/content/link-list-column.yaml +0 -41
  415. package/fragments/content/linked-record-row.json +0 -95
  416. package/fragments/content/marketplace-tile-atom.json +0 -147
  417. package/fragments/content/metadata-description-list.json +0 -28
  418. package/fragments/content/metadata-description-list.yaml +0 -36
  419. package/fragments/content/pending-invite-row.json +0 -113
  420. package/fragments/content/release-entry.json +0 -155
  421. package/fragments/content/rollout-entry-atom.json +0 -168
  422. package/fragments/content/signed-in-entry-atom.json +0 -157
  423. package/fragments/content/stage-entry-atom.json +0 -115
  424. package/fragments/content/stat-card.json +0 -31
  425. package/fragments/content/stat-card.yaml +0 -39
  426. package/fragments/content/user-identity-row.json +0 -33
  427. package/fragments/content/user-identity-row.yaml +0 -43
  428. package/fragments/content/user-notification-row.json +0 -35
  429. package/fragments/content/user-notification-row.yaml +0 -50
  430. package/fragments/content/wizard-step-row.json +0 -96
  431. package/fragments/form/labeled-checkbox.json +0 -26
  432. package/fragments/form/labeled-checkbox.yaml +0 -36
  433. package/fragments/form/labeled-input.json +0 -28
  434. package/fragments/form/labeled-input.yaml +0 -38
  435. package/fragments/form/labeled-slider.json +0 -34
  436. package/fragments/form/labeled-slider.yaml +0 -50
  437. package/fragments/form/labeled-textarea.json +0 -28
  438. package/fragments/form/labeled-textarea.yaml +0 -39
  439. package/fragments/form/labeled-toggle.json +0 -29
  440. package/fragments/form/labeled-toggle.yaml +0 -43
  441. package/fragments/layout/card-header-heading.json +0 -35
  442. package/fragments/layout/card-header-heading.yaml +0 -27
  443. package/fragments/layout/card-header-with-badge.json +0 -30
  444. package/fragments/layout/card-header-with-badge.yaml +0 -40
  445. package/fragments/layout/card-header-with-description.json +0 -29
  446. package/fragments/layout/card-header-with-description.yaml +0 -32
  447. package/fragments/layout/pricing-tier-card.json +0 -37
  448. package/fragments/layout/pricing-tier-card.yaml +0 -50
  449. package/fragments/layout/section-with-stack.json +0 -46
  450. package/fragments/layout/section-with-stack.yaml +0 -39
  451. package/fragments/layout/text-card.json +0 -28
  452. package/fragments/layout/text-card.yaml +0 -30
@@ -1587,21 +1587,36 @@
1587
1587
  }
1588
1588
  ],
1589
1589
  "properties": {
1590
+ "title": {
1591
+ "description": "Bold headline rendered as the first line of the alert content. Pair with [description] for the canonical \"banner\" pattern (headline + body). When [title] or [description] is set, the [text] prop is ignored.",
1592
+ "type": "string",
1593
+ "default": ""
1594
+ },
1595
+ "description": {
1596
+ "description": "Body text rendered as the second line of the alert content, below [title]. May be used alone (without [title]) for a single muted-body message.",
1597
+ "type": "string",
1598
+ "default": ""
1599
+ },
1590
1600
  "closable": {
1591
- "description": "Whether a close button is displayed",
1601
+ "description": "Whether a close button is displayed. Alias [dismissible] is also accepted (same semantics, different spelling — the corpus and many libraries use both; both map to the same state).",
1592
1602
  "type": "boolean",
1593
1603
  "default": false
1594
1604
  },
1595
1605
  "component": {
1596
1606
  "const": "Alert"
1597
1607
  },
1608
+ "dismissible": {
1609
+ "description": "Public alias for [closable] — same semantics. Both attributes render the close button. Use whichever spelling matches your authoring style.",
1610
+ "type": "boolean",
1611
+ "default": false
1612
+ },
1598
1613
  "icon": {
1599
1614
  "description": "Icon identifier displayed before the message content",
1600
1615
  "type": "string",
1601
1616
  "default": ""
1602
1617
  },
1603
1618
  "text": {
1604
- "description": "Alert message text",
1619
+ "description": "Single-line alert message. For two-line \"headline + body\" alerts, use [title] + [description] instead. For rich content (links, formatting), use the [slot=\"content\"] slot.",
1605
1620
  "type": "string",
1606
1621
  "default": ""
1607
1622
  },
@@ -2240,6 +2255,10 @@
2240
2255
  "type": "string",
2241
2256
  "default": ""
2242
2257
  },
2258
+ "textContent": {
2259
+ "description": "Badge display text. Renderer routes this to the `text` attribute via CSS attr(text) on ::after.",
2260
+ "$ref": "#/$defs/DynamicString"
2261
+ },
2243
2262
  "variant": {
2244
2263
  "description": "Semantic color variant.",
2245
2264
  "type": "string",
@@ -2605,6 +2624,11 @@
2605
2624
  "type": "string",
2606
2625
  "default": "button"
2607
2626
  },
2627
+ "aria-label": {
2628
+ "description": "Accessible label for screen readers. Auto-set from `text` when text is non-empty; meaningful override for icon-only buttons.",
2629
+ "type": "string",
2630
+ "default": ""
2631
+ },
2608
2632
  "color": {
2609
2633
  "description": "Semantic intent — composes with [variant]. `<button-ui variant=\"solid\" color=\"danger\">` = filled destructive action; `<button-ui variant=\"outline\" color=\"success\">` = outlined success affordance.",
2610
2634
  "type": "string",
@@ -2653,8 +2677,12 @@
2653
2677
  "type": "string",
2654
2678
  "default": ""
2655
2679
  },
2680
+ "textContent": {
2681
+ "description": "Button label. Renderer routes this to the `text` attribute, which is rendered via CSS attr(text) on ::after and mirrored to aria-label.",
2682
+ "$ref": "#/$defs/DynamicString"
2683
+ },
2656
2684
  "variant": {
2657
- "description": "Visual style — `solid` (default fill), `outline`, `ghost`, `link`. `default` / `primary` are aliases of `solid`. Style is independent of semantic intent — to express destructive / success / info / warning intent, set [color=\"…\"] alongside.",
2685
+ "description": "Visual style — `solid` (default fill), `outline`, `ghost`. `default` / `primary` are aliases of `solid`. Style is independent of semantic intent — to express destructive / success / info / warning intent, set [color=\"…\"] alongside.\nFor **inline navigation** (Terms of Service, Privacy Policy, footer links, \"Sign in\" / \"Sign up\" cross-page affordances) use `<link-ui>` instead — it carries proper `<a href>` semantics, keyboard handling (Enter only, no Space), middle-click open-new-tab, and screen-reader announces \"link\" instead of \"button\". Mixing navigation and action affordances under the same primitive is a category error fixed at this junction.",
2658
2686
  "type": "string",
2659
2687
  "enum": [
2660
2688
  "default",
@@ -2664,8 +2692,7 @@
2664
2692
  "primary",
2665
2693
  "secondary",
2666
2694
  "soft",
2667
- "current",
2668
- "link"
2695
+ "current"
2669
2696
  ],
2670
2697
  "default": "solid"
2671
2698
  }
@@ -2685,7 +2712,9 @@
2685
2712
  "examples": [],
2686
2713
  "keywords": [],
2687
2714
  "name": "UIButton",
2688
- "related": [],
2715
+ "related": [
2716
+ "Link"
2717
+ ],
2689
2718
  "slots": {
2690
2719
  "leading": {
2691
2720
  "description": "Icon container (start), sized to --content-height"
@@ -4418,7 +4447,14 @@
4418
4447
  ],
4419
4448
  "unevaluatedProperties": false,
4420
4449
  "x-adiaui": {
4421
- "anti_patterns": [],
4450
+ "anti_patterns": [
4451
+ {
4452
+ "description": "Wrapping a check-ui in field-ui. The widget already self-labels.",
4453
+ "right": "<check-ui label=\"I agree to the Terms of Service\"></check-ui>\n",
4454
+ "rule": "Use [label] on check-ui directly; do not wrap in field-ui.",
4455
+ "wrong": "<field-ui inline label=\"Agree\">\n <check-ui></check-ui>\n</field-ui>\n"
4456
+ }
4457
+ ],
4422
4458
  "category": "layout",
4423
4459
  "events": {
4424
4460
  "change": {
@@ -4558,6 +4594,10 @@
4558
4594
  "description": "Code text content",
4559
4595
  "type": "string",
4560
4596
  "default": ""
4597
+ },
4598
+ "textContent": {
4599
+ "description": "Code body text. Renderer routes this to the `text` attribute, reactively re-rendered into the <pre><code> block.",
4600
+ "$ref": "#/$defs/DynamicString"
4561
4601
  }
4562
4602
  },
4563
4603
  "required": [
@@ -4817,6 +4857,11 @@
4817
4857
  "type": "string",
4818
4858
  "default": "md"
4819
4859
  },
4860
+ "grow": {
4861
+ "description": "Fills remaining space in a flex parent (e.g. inside a Row). CSS-only attribute via :scope[grow] in col.css.",
4862
+ "type": "boolean",
4863
+ "default": false
4864
+ },
4820
4865
  "justify": {
4821
4866
  "description": "Justify content",
4822
4867
  "type": "string",
@@ -6473,7 +6518,20 @@
6473
6518
  ],
6474
6519
  "unevaluatedProperties": false,
6475
6520
  "x-adiaui": {
6476
- "anti_patterns": [],
6521
+ "anti_patterns": [
6522
+ {
6523
+ "description": "Wrapping a check-ui (or switch-ui / radio-ui / toggle-ui) in field-ui. The widget already carries its own visible [label] via the CSS attr() pattern; field-ui adds a redundant label row and the inline-mode `justify-self: end` rule for compact controls pushes the widget to the right edge of the row, breaking the expected \"checkbox-left, label-right\" consent-row layout.",
6524
+ "right": "<check-ui label=\"I agree to the Terms of Service\"></check-ui>\n",
6525
+ "rule": "Small self-labeling widgets MUST NOT be wrapped in field-ui.",
6526
+ "wrong": "<field-ui inline>\n <check-ui label=\"I agree to the Terms of Service\"></check-ui>\n</field-ui>\n"
6527
+ },
6528
+ {
6529
+ "description": "Using field-ui[inline] around a switch-ui to build a settings row. The settings-row layout (label-left, control-right) IS the switch-ui's own [label] rendering — field-ui adds no value and breaks the layout via the `justify-self: end` rule for compact widgets.",
6530
+ "right": "<switch-ui label=\"Email notifications\"></switch-ui>\n",
6531
+ "rule": "Use the widget's own [label] attribute for settings + consent rows. field-ui is for wide-control rows only.",
6532
+ "wrong": "<field-ui inline label=\"Email notifications\">\n <switch-ui></switch-ui>\n</field-ui>\n"
6533
+ }
6534
+ ],
6477
6535
  "category": "form",
6478
6536
  "events": {},
6479
6537
  "examples": [
@@ -6500,14 +6558,12 @@
6500
6558
  "input",
6501
6559
  "select",
6502
6560
  "textarea",
6503
- "check",
6504
- "radio",
6505
- "switch",
6506
- "slider"
6561
+ "slider",
6562
+ "range"
6507
6563
  ],
6508
6564
  "slots": {
6509
6565
  "default": {
6510
- "description": "The form control — input-ui, select-ui, textarea-ui, check-ui, switch-ui, radio-ui, slider-ui, etc. Auto-id'd for the label's [for] binding."
6566
+ "description": "The form control — a WIDE control like input-ui, select-ui, textarea-ui, slider-ui, range-ui, calendar-picker-ui, color-picker-ui, upload-ui, otp-input-ui. Auto-id'd for the label's [for] binding.\nDO NOT wrap small self-labeling widgets here. check-ui, switch-ui, radio-ui, toggle-ui all carry their own [label] attribute that renders inline next to the control — wrapping them in field-ui produces broken layouts (settings-row `justify-self: end` rule pushes the control to the trailing edge, away from the label that field-ui stamps; the widget's own label then renders again on the right, creating a doubled / right-justified affordance). See anti_patterns below for the canonical alternatives."
6511
6567
  },
6512
6568
  "action": {
6513
6569
  "description": "Button adjacent to the control for inline actions (clear, reset, help popover)."
@@ -7586,6 +7642,11 @@
7586
7642
  "type": "boolean",
7587
7643
  "default": false
7588
7644
  },
7645
+ "autocomplete": {
7646
+ "description": "Browser autofill behavior per HTML autocomplete spec. Routed via setAttribute to the host element. Common values: off, on, cc-number, cc-exp, cc-csc, cc-name, email, username, current-password, new-password, one-time-code, given-name, family-name, street-address, postal-code.",
7647
+ "type": "string",
7648
+ "default": ""
7649
+ },
7589
7650
  "component": {
7590
7651
  "const": "Input"
7591
7652
  },
@@ -7599,11 +7660,31 @@
7599
7660
  "type": "string",
7600
7661
  "default": ""
7601
7662
  },
7663
+ "inputmode": {
7664
+ "description": "Mobile keyboard hint per HTML inputmode spec. Routed via setAttribute to the host element. Values: text, decimal, numeric, tel, search, email, url.",
7665
+ "type": "string",
7666
+ "enum": [
7667
+ "text",
7668
+ "decimal",
7669
+ "numeric",
7670
+ "tel",
7671
+ "search",
7672
+ "email",
7673
+ "url",
7674
+ "none"
7675
+ ],
7676
+ "default": null
7677
+ },
7602
7678
  "label": {
7603
7679
  "description": "Inline label rendered as a leading caption inside the input chrome, between any prefix and the value. Wires aria-labelledby on the editable surface. For stacked label / hint / error compositions, wrap with field-ui.",
7604
7680
  "type": "string",
7605
7681
  "default": ""
7606
7682
  },
7683
+ "locale": {
7684
+ "description": "BCP-47 locale tag for `type=\"number\"`, e.g. `de-DE`, `fr-FR`, `en-IN`. When set, the input accepts both `.` AND the locale's decimal separator (e.g. `,` in de-DE), uses `Intl.NumberFormat` for display, and groups thousands on blur (e.g. en-US `1,234,567.89`, de-DE `1.234.567,89`). On focus, the input reverts to ungrouped form for easy editing. `.value` always stores the ungrouped, locale-decimal form so `Number(#toCanonical(v))` round-trips. Default empty = en-US-equivalent path (no behavior change).",
7685
+ "type": "string",
7686
+ "default": ""
7687
+ },
7607
7688
  "max": {
7608
7689
  "description": "Maximum numeric value. Applies when `type=\"number\"`. Clamps + drives aria-valuemax + the [+] button's disabled state.",
7609
7690
  "type": "number",
@@ -8018,6 +8099,170 @@
8018
8099
  "version": 1
8019
8100
  }
8020
8101
  },
8102
+ "Link": {
8103
+ "title": "Link",
8104
+ "description": "Inline navigation primitive — semantic `<a href>` wrapper. Use for\ncross-page navigation, footer / Terms-of-Service / Privacy-Policy\ninline references, \"Sign in\" / \"Sign up\" cross-page links, and any\naffordance whose purpose is to take the user somewhere (not to\nperform an action).\n\nSibling of `<button-ui>` — they have separate semantics and must\nnot be substituted for each other:\n\n| Affordance | Use |\n|---------------------------|----------------|\n| Submit form | `<button-ui>` |\n| Trigger action / modal | `<button-ui>` |\n| Copy to clipboard | `<button-ui>` |\n| Open modal / drawer | `<button-ui>` |\n| Navigate to another page | `<link-ui>` |\n| Open external URL | `<link-ui>` |\n| Anchor jump (#section) | `<link-ui>` |\n| Inline reference in prose | `<link-ui>` |\n\nRenders `<a href=\"…\">` internally so middle-click open-in-new-tab,\nright-click context menu, hover URL preview, search-engine\ncrawlability, and bookmark-ability all work without any custom\nwiring. ARIA role is \"link\" (set automatically by `<a>` element).\n",
8105
+ "type": "object",
8106
+ "allOf": [
8107
+ {
8108
+ "$ref": "#/$defs/ComponentCommon"
8109
+ },
8110
+ {
8111
+ "$ref": "#/$defs/CatalogComponentCommon"
8112
+ }
8113
+ ],
8114
+ "properties": {
8115
+ "block": {
8116
+ "description": "Stretches the link to fill its container; useful for standalone link rows.",
8117
+ "type": "boolean",
8118
+ "default": false
8119
+ },
8120
+ "component": {
8121
+ "const": "Link"
8122
+ },
8123
+ "disabled": {
8124
+ "description": "Suppresses navigation + applies muted styling. Sets aria-disabled.",
8125
+ "type": "boolean",
8126
+ "default": false
8127
+ },
8128
+ "href": {
8129
+ "description": "Destination URL or anchor. Required for SEO / middle-click / hover preview semantics. If omitted, the link still dispatches the `press` event (so it can be wired through the A2UI action handler system via `handler: \"navigate\"`), but loses native link behaviors.",
8130
+ "type": "string",
8131
+ "default": ""
8132
+ },
8133
+ "icon": {
8134
+ "description": "Optional leading icon (Phosphor name). Use sparingly — most inline links don't need an icon. For \"open in new tab\" affordance, the `target=\"_blank\"` attribute auto-renders a trailing arrow-up-right glyph; the `icon` prop is for leading semantic icons.",
8135
+ "type": "string",
8136
+ "default": ""
8137
+ },
8138
+ "rel": {
8139
+ "description": "Explicit `rel` attribute. Defaults to `noopener noreferrer` when `target=\"_blank\"` is set without an explicit rel.",
8140
+ "type": "string",
8141
+ "default": ""
8142
+ },
8143
+ "target": {
8144
+ "description": "Anchor target — same semantics as HTML `<a target>`. Use `_blank` to open in new tab; the implementation automatically adds `rel=\"noopener noreferrer\"` for `_blank` to prevent tab-napping / privacy leaks.",
8145
+ "type": "string",
8146
+ "enum": [
8147
+ "",
8148
+ "_self",
8149
+ "_blank",
8150
+ "_parent",
8151
+ "_top"
8152
+ ],
8153
+ "default": ""
8154
+ },
8155
+ "text": {
8156
+ "description": "Visible link text. Falls back to default-slot content if unset.",
8157
+ "type": "string",
8158
+ "default": ""
8159
+ },
8160
+ "variant": {
8161
+ "description": "Visual treatment. `default` underlines on rest + hover (standard link affordance). `subtle` underlines only on hover (for tighter designs where always-underlined would be noisy). `quiet` drops the link color and matches surrounding text color (used for footer-link rows where the link affordance is implied by context, not by color).",
8162
+ "type": "string",
8163
+ "enum": [
8164
+ "default",
8165
+ "subtle",
8166
+ "quiet"
8167
+ ],
8168
+ "default": "default"
8169
+ }
8170
+ },
8171
+ "required": [
8172
+ "component"
8173
+ ],
8174
+ "unevaluatedProperties": false,
8175
+ "x-adiaui": {
8176
+ "anti_patterns": [
8177
+ "❌ `<button-ui variant=\"link\">` — was removed. Migrate to `<link-ui>` if the affordance is navigation, or to `<button-ui variant=\"ghost\">` if the affordance is an action that wants understated styling.",
8178
+ "❌ `<link-ui>` with no `href` AND no `press` handler — a link to nowhere is a bug. Either set `href` or wire a navigate action handler.",
8179
+ "❌ `<link-ui>` for form submission — submission is a button concern. Use `<button-ui type=\"submit\">`."
8180
+ ],
8181
+ "category": "content",
8182
+ "events": {
8183
+ "press": {
8184
+ "description": "Bubbles when the link is activated by click or Enter. Detail: `{ href, target }`. Fires BEFORE the browser's native navigation so handlers can `preventDefault()` and route through the A2UI action handler system. If no handler intercepts, native navigation proceeds."
8185
+ }
8186
+ },
8187
+ "examples": [
8188
+ {
8189
+ "title": "Inline link in a sentence",
8190
+ "code": "<text-ui>\n I agree to the\n <link-ui text=\"Terms of Service\" href=\"/terms\"></link-ui>\n and\n <link-ui text=\"Privacy Policy\" href=\"/privacy\"></link-ui>.\n</text-ui>\n"
8191
+ },
8192
+ {
8193
+ "title": "External link with new-tab target",
8194
+ "code": "<link-ui text=\"Read the spec\" href=\"https://example.com/spec\" target=\"_blank\"></link-ui>\n"
8195
+ },
8196
+ {
8197
+ "title": "Footer link row",
8198
+ "code": "<row-ui justify=\"center\" gap=\"2\">\n <link-ui text=\"Already have an account?\" variant=\"quiet\" href=\"/signin\"></link-ui>\n <link-ui text=\"Sign in\" href=\"/signin\"></link-ui>\n</row-ui>\n"
8199
+ }
8200
+ ],
8201
+ "keywords": [
8202
+ "link",
8203
+ "anchor",
8204
+ "navigation",
8205
+ "hyperlink",
8206
+ "href",
8207
+ "navigate",
8208
+ "route",
8209
+ "url"
8210
+ ],
8211
+ "name": "UILink",
8212
+ "related": [
8213
+ "Button",
8214
+ "NavItem",
8215
+ "Breadcrumb"
8216
+ ],
8217
+ "slots": {
8218
+ "default": {
8219
+ "description": "Link text content when the `text` prop is unused."
8220
+ }
8221
+ },
8222
+ "states": [
8223
+ {
8224
+ "description": "Default rest state — underlined (or per variant).",
8225
+ "name": "idle"
8226
+ },
8227
+ {
8228
+ "description": "Color shifts to `--a-link-hover`.",
8229
+ "name": "hover"
8230
+ },
8231
+ {
8232
+ "description": "Auto-styled via `:visited` pseudo when navigating to a previously-visited URL.",
8233
+ "name": "visited"
8234
+ },
8235
+ {
8236
+ "description": "Suppressed activation; muted text color; aria-disabled.",
8237
+ "name": "disabled"
8238
+ }
8239
+ ],
8240
+ "synonyms": {
8241
+ "Link": [
8242
+ "Anchor",
8243
+ "Hyperlink",
8244
+ "NavLink"
8245
+ ]
8246
+ },
8247
+ "tag": "link-ui",
8248
+ "tokens": {
8249
+ "--link-color": {
8250
+ "description": "Resting link color. Default `var(--a-link)`."
8251
+ },
8252
+ "--link-color-hover": {
8253
+ "description": "Hover-state color. Default `var(--a-link-hover)`."
8254
+ },
8255
+ "--link-color-visited": {
8256
+ "description": "Visited-state color. Default `var(--a-link-visited)`."
8257
+ },
8258
+ "--link-underline-offset": {
8259
+ "description": "Distance between baseline and underline. Default `2px`."
8260
+ }
8261
+ },
8262
+ "traits": [],
8263
+ "version": 1
8264
+ }
8265
+ },
8021
8266
  "List": {
8022
8267
  "title": "List",
8023
8268
  "description": "Styled list with optional icons and dividers.",
@@ -10068,7 +10313,14 @@
10068
10313
  ],
10069
10314
  "unevaluatedProperties": false,
10070
10315
  "x-adiaui": {
10071
- "anti_patterns": [],
10316
+ "anti_patterns": [
10317
+ {
10318
+ "description": "Wrapping a radio-ui in field-ui. The widget already self-labels.",
10319
+ "right": "<radio-ui label=\"Basic plan\" name=\"plan\" value=\"basic\"></radio-ui>\n",
10320
+ "rule": "Use [label] on radio-ui directly; do not wrap in field-ui.",
10321
+ "wrong": "<field-ui inline label=\"Basic plan\">\n <radio-ui name=\"plan\" value=\"basic\"></radio-ui>\n</field-ui>\n"
10322
+ }
10323
+ ],
10072
10324
  "category": "input",
10073
10325
  "events": {
10074
10326
  "change": {
@@ -10604,6 +10856,11 @@
10604
10856
  "type": "string",
10605
10857
  "default": "md"
10606
10858
  },
10859
+ "grow": {
10860
+ "description": "Fills remaining space in a flex parent. CSS-only attribute via :scope[grow] in row.css.",
10861
+ "type": "boolean",
10862
+ "default": false
10863
+ },
10607
10864
  "justify": {
10608
10865
  "description": "Justify content",
10609
10866
  "type": "string",
@@ -11211,6 +11468,11 @@
11211
11468
  "type": "boolean",
11212
11469
  "default": false
11213
11470
  },
11471
+ "options": {
11472
+ "description": "Option list. Array of {value, label, disabled?} or grouped {label, options: [...]}. Alternative to declarative <option> / <optgroup> children.",
11473
+ "type": "array",
11474
+ "default": []
11475
+ },
11214
11476
  "pattern": {
11215
11477
  "description": "Regex pattern for validation",
11216
11478
  "type": "string",
@@ -11231,6 +11493,16 @@
11231
11493
  "type": "boolean",
11232
11494
  "default": false
11233
11495
  },
11496
+ "size": {
11497
+ "description": "Sizing scale via universal `[size]` attribute system (packages/web-components/styles/tokens.css). Matches Input's sizing tokens so a Select rendered alongside an Input feels coherent in a form row.",
11498
+ "type": "string",
11499
+ "enum": [
11500
+ "sm",
11501
+ "md",
11502
+ "lg"
11503
+ ],
11504
+ "default": "md"
11505
+ },
11234
11506
  "value": {
11235
11507
  "description": "Currently selected option value",
11236
11508
  "type": "string",
@@ -12730,7 +13002,14 @@
12730
13002
  ],
12731
13003
  "unevaluatedProperties": false,
12732
13004
  "x-adiaui": {
12733
- "anti_patterns": [],
13005
+ "anti_patterns": [
13006
+ {
13007
+ "description": "Wrapping a switch-ui in field-ui. The widget already self-labels.",
13008
+ "right": "<switch-ui label=\"Email notifications\"></switch-ui>\n",
13009
+ "rule": "Use [label] on switch-ui directly; do not wrap in field-ui.",
13010
+ "wrong": "<field-ui inline label=\"Email notifications\">\n <switch-ui></switch-ui>\n</field-ui>\n"
13011
+ }
13012
+ ],
12734
13013
  "category": "layout",
12735
13014
  "events": {
12736
13015
  "change": {
@@ -12813,9 +13092,19 @@
12813
13092
  }
12814
13093
  ],
12815
13094
  "properties": {
13095
+ "columns": {
13096
+ "description": "Column definitions. Array of {key, label, type?, width?, minWidth?, maxWidth?, flex?, sortable?, resizable?, filterable?, pinned?, hidden?, accessor?, format?, render?, sortFn?, filterType?, meta?}. Alternative to declarative <col-def> children.",
13097
+ "type": "array",
13098
+ "default": []
13099
+ },
12816
13100
  "component": {
12817
13101
  "const": "Table"
12818
13102
  },
13103
+ "data": {
13104
+ "description": "Row records. Array of plain objects keyed to columns[].key.",
13105
+ "type": "array",
13106
+ "default": []
13107
+ },
12819
13108
  "density": {
12820
13109
  "description": "Controls cell padding and row height. 'compact' for dense data, 'standard' for default spacing, 'comfortable' for spacious rows.",
12821
13110
  "type": "string",
@@ -13651,6 +13940,10 @@
13651
13940
  "type": "string",
13652
13941
  "default": ""
13653
13942
  },
13943
+ "textContent": {
13944
+ "description": "Tag label. Renderer routes this to the `text` attribute, rendered via CSS attr(text) on ::after.",
13945
+ "$ref": "#/$defs/DynamicString"
13946
+ },
13654
13947
  "variant": {
13655
13948
  "description": "Semantic variant — `default | info | success | warning | danger`.",
13656
13949
  "type": "string",
@@ -13773,6 +14066,11 @@
13773
14066
  "type": "number",
13774
14067
  "default": 0
13775
14068
  },
14069
+ "strong": {
14070
+ "description": "When true, applies stronger emphasis (heavier weight + accent color). Styled via :scope[strong] in text.css. Use instead of variant=heading when you want a single emphasized word inline in body copy.",
14071
+ "type": "boolean",
14072
+ "default": false
14073
+ },
13776
14074
  "textContent": {
13777
14075
  "description": "Display text content. The main payload field for Text components extracted from HTML.",
13778
14076
  "$ref": "#/$defs/DynamicString"
@@ -13880,6 +14178,11 @@
13880
14178
  "type": "string",
13881
14179
  "default": ""
13882
14180
  },
14181
+ "name": {
14182
+ "description": "Form control name for form data submission. Inherited from UIFormElement.",
14183
+ "type": "string",
14184
+ "default": ""
14185
+ },
13883
14186
  "placeholder": {
13884
14187
  "description": "Placeholder text shown when textarea is empty.",
13885
14188
  "type": "string",
@@ -11,11 +11,29 @@
11
11
  - Multiple <section> siblings are allowed and stack vertically. [bleed] on a section removes its margin for edge-to-edge content (tables, charts); [padding] adds a canvas-scrim background for hero regions.
12
12
  - Footer with a [slot="description"] + [slot="action"] pair triggers justify-content: space-between — useful for a "Last saved …" note on the left and a Save/Cancel button group on the right.
13
13
 
14
+ ## Check
15
+ - Self-labeling widget — use the [label] attribute directly; do NOT wrap in <field-ui>. The widget renders its own label inline via CSS attr() pattern. Wrapping breaks the consent-row layout (see field-ui anti_patterns).
16
+
17
+ ## Field
18
+ - field-ui is for WIDE controls (input-ui, select-ui, textarea-ui, slider-ui, etc.) that need a separate label row. Small self-labeling widgets (check-ui, switch-ui, radio-ui, toggle-ui) carry their own [label] attribute and MUST NOT be wrapped in field-ui.
19
+ - field-ui[inline] is for inline WIDE-control rows (e.g. search field with trailing kbd hint), NOT for compact-widget rows. For settings rows or consent rows, use the widget's own [label] attribute directly without a field-ui wrapper.
20
+
14
21
  ## Grid
15
22
  - For asymmetric column ratios, use [columns="N"] plus [span="M"] on the child that should be wider. Never set grid-template-columns via style — it bypasses the component API and reads as a local hack.
16
23
  - Canonical ratios: 1:1 → columns="2"; 2:1 → columns="3" + span="2"; 3:1 → columns="4" + span="3"; 3:2 → columns="5" + span="3"+"2"; 4:1 → columns="5" + span="4". Round unusual ratios (e.g. 7:5) to 3:2.
17
24
  - The default (no columns attribute) gives equal auto-columns flowing in a single row. Prefer the explicit numeric attribute for dashboard rows so the layout is predictable when items wrap.
18
25
 
26
+ ## Link
27
+ - Use `<link-ui>` for navigation; use `<button-ui>` for actions. They are NOT interchangeable.
28
+ - When wrapping action affordances that visually mimic links (e.g. 'Forgot password?' that triggers a reset flow), prefer `<button-ui variant="ghost">` over a fake `<link-ui>` — the affordance is semantically a button, just visually understated.
29
+ - For inline-sentence affordances ('I agree to the [Terms] and [Privacy]'), nest `<link-ui>` directly inside `<text-ui>` so it inherits the paragraph's font / size / line-height.
30
+
31
+ ## Radio
32
+ - Self-labeling widget — use the [label] attribute directly; do NOT wrap in <field-ui>. The widget renders its own label inline via CSS attr() pattern. For radio groups, the canonical pattern is a column of bare <radio-ui label='…'> elements sharing a [name=] — no field-ui wrapper around each radio.
33
+
34
+ ## Switch
35
+ - Self-labeling widget — use the [label] attribute directly; do NOT wrap in <field-ui>. The widget renders its own label inline via CSS attr() pattern. For settings rows (label-left, switch-right), put the descriptive text in switch-ui's own [label] attribute; do not introduce a field-ui wrapper. For descriptive helper text below the switch, use <text-ui variant='caption'> as a sibling — not field-ui's hint slot.
36
+
19
37
  ## ChatComposer
20
38
  - chat-composer is the bespoke replacement for legacy <chat-input-ui data-chat-input> inside <chat-shell>. Place an inner <chat-input-ui submit-on-enter> as the primary input.
21
39
  - The host listens for 'composer-submit' on the composer (not on the inner input). The event detail mirrors the inner submit event so existing handlers Just Work.