@adia-ai/web-components 0.6.33 → 0.6.35

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 (391) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/color/index.js +1 -1
  3. package/components/accordion/accordion-item.yaml +2 -2
  4. package/components/accordion/accordion.css +2 -2
  5. package/components/accordion/accordion.js +1 -1
  6. package/components/action-list/action-item.yaml +2 -2
  7. package/components/action-list/action-list.css +2 -2
  8. package/components/action-list/action-list.js +1 -1
  9. package/components/agent-artifact/{class.js → agent-artifact.class.js} +1 -1
  10. package/components/agent-artifact/agent-artifact.css +31 -31
  11. package/components/agent-artifact/agent-artifact.js +1 -1
  12. package/components/agent-feedback-bar/agent-feedback-bar.css +10 -10
  13. package/components/agent-feedback-bar/agent-feedback-bar.js +1 -1
  14. package/components/agent-questions/agent-questions.css +57 -57
  15. package/components/agent-questions/agent-questions.js +1 -1
  16. package/components/agent-reasoning/agent-reasoning.css +62 -62
  17. package/components/agent-reasoning/agent-reasoning.js +1 -1
  18. package/components/agent-suggestions/agent-suggestions.css +4 -4
  19. package/components/agent-suggestions/agent-suggestions.js +1 -1
  20. package/components/agent-trace/agent-trace.css +53 -53
  21. package/components/alert/alert.a2ui.json +64 -1
  22. package/components/alert/{class.js → alert.class.js} +189 -2
  23. package/components/alert/alert.css +119 -41
  24. package/components/alert/alert.d.ts +14 -0
  25. package/components/alert/alert.js +1 -1
  26. package/components/alert/alert.test.js +184 -0
  27. package/components/alert/alert.yaml +114 -1
  28. package/components/avatar/avatar-group.yaml +2 -2
  29. package/components/avatar/avatar.css +27 -27
  30. package/components/avatar/avatar.js +1 -1
  31. package/components/badge/badge.css +27 -27
  32. package/components/badge/badge.js +1 -1
  33. package/components/block/block.css +16 -16
  34. package/components/block/block.js +1 -1
  35. package/components/breadcrumb/breadcrumb.css +23 -23
  36. package/components/breadcrumb/breadcrumb.js +1 -1
  37. package/components/button/button.css +101 -91
  38. package/components/button/button.js +1 -1
  39. package/components/calendar-grid/calendar-grid.a2ui.json +146 -0
  40. package/components/calendar-grid/calendar-grid.class.js +326 -0
  41. package/components/calendar-grid/calendar-grid.css +246 -0
  42. package/components/calendar-grid/calendar-grid.d.ts +41 -0
  43. package/components/calendar-grid/calendar-grid.js +17 -0
  44. package/components/calendar-grid/calendar-grid.yaml +136 -0
  45. package/components/calendar-picker/calendar-picker.css +139 -139
  46. package/components/calendar-picker/calendar-picker.js +1 -1
  47. package/components/canvas/canvas.css +12 -12
  48. package/components/card/card.css +83 -83
  49. package/components/card/card.js +1 -1
  50. package/components/chart/chart.css +224 -224
  51. package/components/chart/chart.js +1 -1
  52. package/components/chart-legend/chart-legend.css +26 -26
  53. package/components/chart-legend/chart-legend.js +1 -1
  54. package/components/chat-thread/chat-input.a2ui.json +1 -1
  55. package/components/chat-thread/chat-input.js +6 -1
  56. package/components/chat-thread/chat-input.yaml +4 -1
  57. package/components/chat-thread/chat-thread.js +1 -1
  58. package/components/check/check.css +40 -40
  59. package/components/check/check.js +1 -1
  60. package/components/code/code.css +125 -125
  61. package/components/code/code.js +1 -1
  62. package/components/col/col.css +15 -15
  63. package/components/col/col.js +1 -1
  64. package/components/color-input/color-input.js +1 -1
  65. package/components/color-picker/color-picker.css +55 -55
  66. package/components/color-picker/color-picker.js +1 -1
  67. package/components/combobox/combobox.a2ui.json +363 -0
  68. package/components/combobox/combobox.class.js +861 -0
  69. package/components/combobox/combobox.css +244 -0
  70. package/components/combobox/combobox.d.ts +113 -0
  71. package/components/combobox/combobox.examples.md +59 -0
  72. package/components/combobox/combobox.js +17 -0
  73. package/components/combobox/combobox.test.js +181 -0
  74. package/components/combobox/combobox.yaml +369 -0
  75. package/components/command/command.css +90 -90
  76. package/components/command/command.js +1 -1
  77. package/components/date-range-picker/date-range-picker.a2ui.json +300 -0
  78. package/components/date-range-picker/date-range-picker.class.js +791 -0
  79. package/components/date-range-picker/date-range-picker.css +224 -0
  80. package/components/date-range-picker/date-range-picker.d.ts +82 -0
  81. package/components/date-range-picker/date-range-picker.examples.md +37 -0
  82. package/components/date-range-picker/date-range-picker.js +17 -0
  83. package/components/date-range-picker/date-range-picker.test.js +387 -0
  84. package/components/date-range-picker/date-range-picker.yaml +285 -0
  85. package/components/datetime-picker/datetime-picker.a2ui.json +334 -0
  86. package/components/datetime-picker/datetime-picker.class.js +706 -0
  87. package/components/datetime-picker/datetime-picker.css +150 -0
  88. package/components/datetime-picker/datetime-picker.d.ts +86 -0
  89. package/components/datetime-picker/datetime-picker.examples.md +46 -0
  90. package/components/datetime-picker/datetime-picker.js +17 -0
  91. package/components/datetime-picker/datetime-picker.test.js +454 -0
  92. package/components/datetime-picker/datetime-picker.yaml +332 -0
  93. package/components/demo-toggle/demo-toggle.css +27 -27
  94. package/components/demo-toggle/demo-toggle.js +1 -1
  95. package/components/description-list/description-list.css +18 -18
  96. package/components/description-list/description-list.js +1 -1
  97. package/components/divider/divider.css +24 -24
  98. package/components/divider/divider.js +1 -1
  99. package/components/drawer/drawer.js +1 -1
  100. package/components/embed/embed.css +6 -6
  101. package/components/embed/embed.js +1 -1
  102. package/components/empty-state/empty-state.css +27 -27
  103. package/components/empty-state/empty-state.js +1 -1
  104. package/components/feed/feed.css +12 -12
  105. package/components/feed/feed.js +1 -1
  106. package/components/field/field.css +28 -28
  107. package/components/field/field.js +1 -1
  108. package/components/field/field.test.js +1 -1
  109. package/components/fields/fields.css +5 -5
  110. package/components/fields/fields.js +1 -1
  111. package/components/grid/grid.css +5 -5
  112. package/components/grid/grid.js +1 -1
  113. package/components/heatmap/heatmap.css +63 -63
  114. package/components/heatmap/heatmap.js +1 -1
  115. package/components/icon/icon.css +12 -12
  116. package/components/icon/icon.js +1 -1
  117. package/components/image/image.css +14 -14
  118. package/components/image/image.js +1 -1
  119. package/components/index.js +11 -0
  120. package/components/inline-message/inline-message.a2ui.json +143 -0
  121. package/components/inline-message/inline-message.class.js +169 -0
  122. package/components/inline-message/inline-message.css +75 -0
  123. package/components/inline-message/inline-message.d.ts +31 -0
  124. package/components/inline-message/inline-message.examples.md +19 -0
  125. package/components/inline-message/inline-message.js +17 -0
  126. package/components/inline-message/inline-message.test.js +203 -0
  127. package/components/inline-message/inline-message.yaml +205 -0
  128. package/components/input/input.css +67 -67
  129. package/components/input/input.js +1 -1
  130. package/components/input/input.yaml +5 -4
  131. package/components/inspector/inspector.css +6 -6
  132. package/components/inspector/inspector.js +1 -1
  133. package/components/integration-card/integration-card.a2ui.json +268 -0
  134. package/components/integration-card/integration-card.class.js +410 -0
  135. package/components/integration-card/integration-card.css +169 -0
  136. package/components/integration-card/integration-card.d.ts +63 -0
  137. package/components/integration-card/integration-card.examples.md +41 -0
  138. package/components/integration-card/integration-card.js +17 -0
  139. package/components/integration-card/integration-card.test.js +306 -0
  140. package/components/integration-card/integration-card.yaml +280 -0
  141. package/components/kbd/kbd.css +32 -32
  142. package/components/kbd/kbd.js +1 -1
  143. package/components/link/link.css +12 -12
  144. package/components/link/link.js +1 -1
  145. package/components/list/list-item.yaml +2 -2
  146. package/components/list/list.css +8 -8
  147. package/components/list/list.js +1 -1
  148. package/components/list-window/list-window.a2ui.json +277 -0
  149. package/components/list-window/list-window.class.js +688 -0
  150. package/components/list-window/list-window.css +124 -0
  151. package/components/list-window/list-window.d.ts +84 -0
  152. package/components/list-window/list-window.examples.md +73 -0
  153. package/components/list-window/list-window.js +17 -0
  154. package/components/list-window/list-window.test.js +303 -0
  155. package/components/list-window/list-window.yaml +270 -0
  156. package/components/loading-overlay/loading-overlay.a2ui.json +176 -0
  157. package/components/loading-overlay/loading-overlay.class.js +203 -0
  158. package/components/loading-overlay/loading-overlay.css +81 -0
  159. package/components/loading-overlay/loading-overlay.d.ts +24 -0
  160. package/components/loading-overlay/loading-overlay.examples.md +50 -0
  161. package/components/loading-overlay/loading-overlay.js +17 -0
  162. package/components/loading-overlay/loading-overlay.test.js +257 -0
  163. package/components/loading-overlay/loading-overlay.yaml +260 -0
  164. package/components/menu/menu-divider.yaml +1 -1
  165. package/components/menu/menu-item.yaml +1 -1
  166. package/components/menu/menu.a2ui.json +3 -0
  167. package/components/menu/menu.css +8 -8
  168. package/components/menu/menu.js +1 -1
  169. package/components/menu/menu.yaml +7 -0
  170. package/components/modal/{class.js → modal.class.js} +12 -1
  171. package/components/modal/modal.css +54 -44
  172. package/components/modal/modal.js +1 -1
  173. package/components/nav/nav.css +40 -40
  174. package/components/nav/nav.js +1 -1
  175. package/components/nav-group/nav-group.css +52 -52
  176. package/components/nav-group/nav-group.js +1 -1
  177. package/components/nav-item/nav-item.css +44 -44
  178. package/components/nav-item/nav-item.js +1 -1
  179. package/components/noodles/noodles.css +31 -31
  180. package/components/noodles/noodles.js +1 -1
  181. package/components/option-card/option-card.css +69 -69
  182. package/components/option-card/option-card.js +1 -1
  183. package/components/otp-input/otp-input.css +30 -30
  184. package/components/otp-input/otp-input.js +1 -1
  185. package/components/page/page.css +18 -18
  186. package/components/page/page.js +1 -1
  187. package/components/pagination/pagination.css +61 -61
  188. package/components/pagination/pagination.js +1 -1
  189. package/components/pane/pane.css +57 -57
  190. package/components/pane/pane.js +1 -1
  191. package/components/pipeline-status/pipeline-status.css +65 -65
  192. package/components/pipeline-status/pipeline-status.js +1 -1
  193. package/components/popover/popover.a2ui.json +8 -1
  194. package/components/popover/popover.css +17 -17
  195. package/components/popover/popover.js +1 -1
  196. package/components/popover/popover.yaml +14 -1
  197. package/components/progress/progress.css +23 -23
  198. package/components/progress/progress.js +1 -1
  199. package/components/progress-row/progress-row.css +17 -17
  200. package/components/progress-row/progress-row.js +1 -1
  201. package/components/radio/radio.css +39 -39
  202. package/components/radio/radio.js +1 -1
  203. package/components/range/range.css +55 -55
  204. package/components/range/range.js +1 -1
  205. package/components/rating/rating.css +28 -28
  206. package/components/rating/rating.js +1 -1
  207. package/components/richtext/richtext.css +133 -133
  208. package/components/richtext/richtext.js +1 -1
  209. package/components/row/row.css +19 -19
  210. package/components/row/row.js +1 -1
  211. package/components/search/search.css +5 -5
  212. package/components/search/search.js +1 -1
  213. package/components/segment/segment.css +24 -24
  214. package/components/segment/segment.js +1 -1
  215. package/components/segmented/segmented.css +25 -25
  216. package/components/segmented/segmented.js +1 -1
  217. package/components/select/select.a2ui.json +58 -4
  218. package/components/select/{class.js → select.class.js} +415 -6
  219. package/components/select/select.css +242 -84
  220. package/components/select/select.d.ts +31 -1
  221. package/components/select/select.js +1 -1
  222. package/components/select/select.test.js +202 -0
  223. package/components/select/select.yaml +126 -5
  224. package/components/skeleton/skeleton.css +14 -14
  225. package/components/skeleton/skeleton.js +1 -1
  226. package/components/slider/slider.css +46 -46
  227. package/components/slider/slider.js +1 -1
  228. package/components/spinner/spinner.a2ui.json +198 -0
  229. package/components/spinner/spinner.class.js +99 -0
  230. package/components/spinner/spinner.css +221 -0
  231. package/components/spinner/spinner.d.ts +26 -0
  232. package/components/spinner/spinner.examples.md +26 -0
  233. package/components/spinner/spinner.js +17 -0
  234. package/components/spinner/spinner.test.js +272 -0
  235. package/components/spinner/spinner.yaml +238 -0
  236. package/components/stack/stack.css +11 -11
  237. package/components/stack/stack.js +1 -1
  238. package/components/stat/stat.css +25 -25
  239. package/components/step-progress/step-progress.css +20 -20
  240. package/components/step-progress/step-progress.js +1 -1
  241. package/components/stepper/stepper-item.yaml +1 -1
  242. package/components/stepper/stepper.css +29 -29
  243. package/components/stepper/stepper.js +1 -1
  244. package/components/stream/stream.css +12 -12
  245. package/components/stream/stream.js +1 -1
  246. package/components/swatch/swatch.css +68 -68
  247. package/components/swatch/swatch.js +1 -1
  248. package/components/swiper/swiper.css +57 -57
  249. package/components/swiper/swiper.js +1 -1
  250. package/components/switch/switch.css +52 -52
  251. package/components/switch/switch.js +1 -1
  252. package/components/table/table.css +163 -163
  253. package/components/table/table.js +1 -1
  254. package/components/table-toolbar/{class.js → table-toolbar.class.js} +1 -1
  255. package/components/table-toolbar/table-toolbar.css +32 -32
  256. package/components/table-toolbar/table-toolbar.js +1 -1
  257. package/components/tabs/tab.yaml +2 -2
  258. package/components/tabs/tabs.css +51 -51
  259. package/components/tabs/tabs.js +1 -1
  260. package/components/tag/tag.css +48 -48
  261. package/components/tag/tag.js +1 -1
  262. package/components/tags-input/tags-input.a2ui.json +337 -0
  263. package/components/tags-input/tags-input.class.js +776 -0
  264. package/components/tags-input/tags-input.css +201 -0
  265. package/components/tags-input/tags-input.d.ts +120 -0
  266. package/components/tags-input/tags-input.examples.md +92 -0
  267. package/components/tags-input/tags-input.js +17 -0
  268. package/components/tags-input/tags-input.test.js +368 -0
  269. package/components/tags-input/tags-input.yaml +367 -0
  270. package/components/text/text.css +44 -44
  271. package/components/text/text.js +1 -1
  272. package/components/textarea/textarea.a2ui.json +1 -1
  273. package/components/textarea/textarea.css +46 -46
  274. package/components/textarea/textarea.js +1 -1
  275. package/components/textarea/textarea.yaml +11 -8
  276. package/components/time-picker/time-picker.a2ui.json +267 -0
  277. package/components/time-picker/time-picker.class.js +693 -0
  278. package/components/time-picker/time-picker.css +122 -0
  279. package/components/time-picker/time-picker.d.ts +75 -0
  280. package/components/time-picker/time-picker.examples.md +35 -0
  281. package/components/time-picker/time-picker.js +17 -0
  282. package/components/time-picker/time-picker.test.js +287 -0
  283. package/components/time-picker/time-picker.yaml +256 -0
  284. package/components/timeline/timeline-item.yaml +2 -2
  285. package/components/timeline/{class.js → timeline.class.js} +1 -1
  286. package/components/timeline/timeline.css +50 -50
  287. package/components/timeline/timeline.js +1 -1
  288. package/components/toast/toast.css +58 -58
  289. package/components/toast/toast.js +1 -1
  290. package/components/toggle-group/toggle-group.css +6 -6
  291. package/components/toggle-group/toggle-group.js +1 -1
  292. package/components/toggle-group/toggle-option.yaml +1 -1
  293. package/components/toggle-scheme/toggle-scheme.css +2 -2
  294. package/components/toggle-scheme/toggle-scheme.js +1 -1
  295. package/components/toolbar/toolbar-group.yaml +1 -1
  296. package/components/toolbar/toolbar.css +17 -17
  297. package/components/toolbar/toolbar.js +1 -1
  298. package/components/tooltip/tooltip.css +2 -2
  299. package/components/tooltip/tooltip.js +1 -1
  300. package/components/tree/tree-item.yaml +1 -1
  301. package/components/tree/tree.css +37 -37
  302. package/components/tree/tree.js +1 -1
  303. package/components/upload/upload.css +49 -49
  304. package/components/upload/upload.js +1 -1
  305. package/dist/web-components.min.css +1 -1
  306. package/dist/web-components.min.js +146 -87
  307. package/package.json +3 -3
  308. package/styles/components.css +11 -0
  309. /package/components/accordion/{class.js → accordion.class.js} +0 -0
  310. /package/components/action-list/{class.js → action-list.class.js} +0 -0
  311. /package/components/agent-feedback-bar/{class.js → agent-feedback-bar.class.js} +0 -0
  312. /package/components/agent-questions/{class.js → agent-questions.class.js} +0 -0
  313. /package/components/agent-reasoning/{class.js → agent-reasoning.class.js} +0 -0
  314. /package/components/agent-suggestions/{class.js → agent-suggestions.class.js} +0 -0
  315. /package/components/avatar/{class.js → avatar.class.js} +0 -0
  316. /package/components/badge/{class.js → badge.class.js} +0 -0
  317. /package/components/block/{class.js → block.class.js} +0 -0
  318. /package/components/breadcrumb/{class.js → breadcrumb.class.js} +0 -0
  319. /package/components/button/{class.js → button.class.js} +0 -0
  320. /package/components/calendar-picker/{class.js → calendar-picker.class.js} +0 -0
  321. /package/components/card/{class.js → card.class.js} +0 -0
  322. /package/components/chart/{class.js → chart.class.js} +0 -0
  323. /package/components/chart-legend/{class.js → chart-legend.class.js} +0 -0
  324. /package/components/chat-thread/{class.js → chat-thread.class.js} +0 -0
  325. /package/components/check/{class.js → check.class.js} +0 -0
  326. /package/components/code/{class.js → code.class.js} +0 -0
  327. /package/components/col/{class.js → col.class.js} +0 -0
  328. /package/components/color-input/{class.js → color-input.class.js} +0 -0
  329. /package/components/color-picker/{class.js → color-picker.class.js} +0 -0
  330. /package/components/command/{class.js → command.class.js} +0 -0
  331. /package/components/demo-toggle/{class.js → demo-toggle.class.js} +0 -0
  332. /package/components/description-list/{class.js → description-list.class.js} +0 -0
  333. /package/components/divider/{class.js → divider.class.js} +0 -0
  334. /package/components/drawer/{class.js → drawer.class.js} +0 -0
  335. /package/components/embed/{class.js → embed.class.js} +0 -0
  336. /package/components/empty-state/{class.js → empty-state.class.js} +0 -0
  337. /package/components/feed/{class.js → feed.class.js} +0 -0
  338. /package/components/field/{class.js → field.class.js} +0 -0
  339. /package/components/fields/{class.js → fields.class.js} +0 -0
  340. /package/components/grid/{class.js → grid.class.js} +0 -0
  341. /package/components/heatmap/{class.js → heatmap.class.js} +0 -0
  342. /package/components/icon/{class.js → icon.class.js} +0 -0
  343. /package/components/image/{class.js → image.class.js} +0 -0
  344. /package/components/input/{class.js → input.class.js} +0 -0
  345. /package/components/inspector/{class.js → inspector.class.js} +0 -0
  346. /package/components/kbd/{class.js → kbd.class.js} +0 -0
  347. /package/components/link/{class.js → link.class.js} +0 -0
  348. /package/components/list/{class.js → list.class.js} +0 -0
  349. /package/components/menu/{class.js → menu.class.js} +0 -0
  350. /package/components/nav/{class.js → nav.class.js} +0 -0
  351. /package/components/nav-group/{class.js → nav-group.class.js} +0 -0
  352. /package/components/nav-item/{class.js → nav-item.class.js} +0 -0
  353. /package/components/noodles/{class.js → noodles.class.js} +0 -0
  354. /package/components/option-card/{class.js → option-card.class.js} +0 -0
  355. /package/components/otp-input/{class.js → otp-input.class.js} +0 -0
  356. /package/components/page/{class.js → page.class.js} +0 -0
  357. /package/components/pagination/{class.js → pagination.class.js} +0 -0
  358. /package/components/pane/{class.js → pane.class.js} +0 -0
  359. /package/components/pipeline-status/{class.js → pipeline-status.class.js} +0 -0
  360. /package/components/popover/{class.js → popover.class.js} +0 -0
  361. /package/components/progress/{class.js → progress.class.js} +0 -0
  362. /package/components/progress-row/{class.js → progress-row.class.js} +0 -0
  363. /package/components/radio/{class.js → radio.class.js} +0 -0
  364. /package/components/range/{class.js → range.class.js} +0 -0
  365. /package/components/rating/{class.js → rating.class.js} +0 -0
  366. /package/components/richtext/{class.js → richtext.class.js} +0 -0
  367. /package/components/row/{class.js → row.class.js} +0 -0
  368. /package/components/search/{class.js → search.class.js} +0 -0
  369. /package/components/segment/{class.js → segment.class.js} +0 -0
  370. /package/components/segmented/{class.js → segmented.class.js} +0 -0
  371. /package/components/skeleton/{class.js → skeleton.class.js} +0 -0
  372. /package/components/slider/{class.js → slider.class.js} +0 -0
  373. /package/components/stack/{class.js → stack.class.js} +0 -0
  374. /package/components/step-progress/{class.js → step-progress.class.js} +0 -0
  375. /package/components/stepper/{class.js → stepper.class.js} +0 -0
  376. /package/components/stream/{class.js → stream.class.js} +0 -0
  377. /package/components/swatch/{class.js → swatch.class.js} +0 -0
  378. /package/components/swiper/{class.js → swiper.class.js} +0 -0
  379. /package/components/switch/{class.js → switch.class.js} +0 -0
  380. /package/components/table/{class.js → table.class.js} +0 -0
  381. /package/components/tabs/{class.js → tabs.class.js} +0 -0
  382. /package/components/tag/{class.js → tag.class.js} +0 -0
  383. /package/components/text/{class.js → text.class.js} +0 -0
  384. /package/components/textarea/{class.js → textarea.class.js} +0 -0
  385. /package/components/toast/{class.js → toast.class.js} +0 -0
  386. /package/components/toggle-group/{class.js → toggle-group.class.js} +0 -0
  387. /package/components/toggle-scheme/{class.js → toggle-scheme.class.js} +0 -0
  388. /package/components/toolbar/{class.js → toolbar.class.js} +0 -0
  389. /package/components/tooltip/{class.js → tooltip.class.js} +0 -0
  390. /package/components/tree/{class.js → tree.class.js} +0 -0
  391. /package/components/upload/{class.js → upload.class.js} +0 -0
@@ -2,49 +2,49 @@
2
2
  inside `@scope` don't match the scope root. Plain selectors outside work.
3
3
  See docs/BROWSER-COMPAT.md §3a. */
4
4
  input-ui[variant="ghost"]:hover {
5
- --input-bg: var(--a-bg-muted);
5
+ --input-bg-default: var(--a-bg-muted);
6
6
  }
7
7
  input-ui:not([disabled]) [slot="field"]:hover {
8
- background: var(--input-bg-hover);
9
- border-color: var(--input-border-hover);
10
- color: var(--input-fg-hover);
8
+ background: var(--input-bg-hover, var(--input-bg-hover-default));
9
+ border-color: var(--input-border-hover, var(--input-border-hover-default));
10
+ color: var(--input-fg-hover, var(--input-fg-hover-default));
11
11
  }
12
12
  input-ui:not([disabled]) [slot="field"]:hover [slot="prefix"],
13
13
  input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
14
- color: var(--input-affix-fg-hover);
14
+ color: var(--input-affix-fg-hover, var(--input-affix-fg-hover-default));
15
15
  }
16
16
 
17
17
  @scope (input-ui) {
18
18
  :where(:scope) {
19
19
  /* ── Tokens (wired to --a-ui-*) ── */
20
- --input-bg: var(--a-ui-bg);
21
- --input-fg: var(--a-ui-text);
22
- --input-border: var(--a-ui-border);
23
- --input-border-hover: var(--a-ui-border-hover);
24
- --input-focus-ring: var(--a-focus-ring);
25
- --input-focus-ring-invalid: var(--a-focus-ring-invalid);
26
- --input-radius: var(--a-radius);
27
- --input-height: var(--a-size);
28
- --input-px: var(--a-ui-px);
29
- --input-font-size: var(--a-ui-size);
30
- --input-placeholder-fg: var(--a-ui-text-placeholder);
31
- --input-affix-fg: var(--a-ui-text-placeholder);
32
- --input-field-gap: var(--a-space-1);
33
- --input-label-min-width: 8ch;
20
+ --input-bg-default: var(--a-ui-bg);
21
+ --input-fg-default: var(--a-ui-text);
22
+ --input-border-default: var(--a-ui-border);
23
+ --input-border-hover-default: var(--a-ui-border-hover);
24
+ --input-focus-ring-default: var(--a-focus-ring);
25
+ --input-focus-ring-invalid-default: var(--a-focus-ring-invalid);
26
+ --input-radius-default: var(--a-radius);
27
+ --input-height-default: var(--a-size);
28
+ --input-px-default: var(--a-ui-px);
29
+ --input-font-size-default: var(--a-ui-size);
30
+ --input-placeholder-fg-default: var(--a-ui-text-placeholder);
31
+ --input-affix-fg-default: var(--a-ui-text-placeholder);
32
+ --input-field-gap-default: var(--a-space-1);
33
+ --input-label-min-width-default: 8ch;
34
34
 
35
35
  /* ── Transitions ── */
36
- --input-duration: var(--a-duration-fast);
37
- --input-easing: var(--a-easing);
36
+ --input-duration-default: var(--a-duration-fast);
37
+ --input-easing-default: var(--a-easing);
38
38
 
39
39
  /* ── State: hover/focus ── */
40
- --input-bg-hover: var(--a-ui-bg-hover);
41
- --input-fg-hover: var(--a-ui-text-hover);
42
- --input-affix-fg-hover: var(--a-ui-text-subtle);
43
- --input-fg-focus: var(--a-ui-text-active);
40
+ --input-bg-hover-default: var(--a-ui-bg-hover);
41
+ --input-fg-hover-default: var(--a-ui-text-hover);
42
+ --input-affix-fg-hover-default: var(--a-ui-text-subtle);
43
+ --input-fg-focus-default: var(--a-ui-text-active);
44
44
 
45
45
  /* ── State: disabled ── */
46
- --input-bg-disabled: var(--a-ui-bg-disabled);
47
- --input-fg-disabled: var(--a-ui-text-disabled);
46
+ --input-bg-disabled-default: var(--a-ui-bg-disabled);
47
+ --input-fg-disabled-default: var(--a-ui-text-disabled);
48
48
  text-align: start; /* §text-align-reset — blocks inheritance from centered ancestors */
49
49
  }
50
50
 
@@ -65,9 +65,9 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
65
65
  label wider than the floor grows past it. */
66
66
  [slot="label"] {
67
67
  flex-shrink: 0;
68
- min-width: var(--input-label-min-width);
69
- color: var(--input-affix-fg);
70
- font-size: var(--input-font-size);
68
+ min-width: var(--input-label-min-width, var(--input-label-min-width-default));
69
+ color: var(--input-affix-fg, var(--input-affix-fg-default));
70
+ font-size: var(--input-font-size, var(--input-font-size-default));
71
71
  user-select: none;
72
72
  pointer-events: none;
73
73
  }
@@ -76,15 +76,15 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
76
76
  [slot="field"] {
77
77
  display: flex;
78
78
  align-items: center;
79
- gap: var(--input-field-gap);
80
- min-height: var(--input-height);
81
- padding: 0 var(--input-px);
82
- border: 1px solid var(--input-border);
83
- border-radius: var(--input-radius);
84
- background: var(--input-bg);
85
- color: var(--input-fg);
79
+ gap: var(--input-field-gap, var(--input-field-gap-default));
80
+ min-height: var(--input-height, var(--input-height-default));
81
+ padding: 0 var(--input-px, var(--input-px-default));
82
+ border: 1px solid var(--input-border, var(--input-border-default));
83
+ border-radius: var(--input-radius, var(--input-radius-default));
84
+ background: var(--input-bg, var(--input-bg-default));
85
+ color: var(--input-fg, var(--input-fg-default));
86
86
  font: inherit;
87
- font-size: var(--input-font-size);
87
+ font-size: var(--input-font-size, var(--input-font-size-default));
88
88
  /* line-height: 1.4 (not 1) so descender-bearing glyphs (g, j, p, q, y)
89
89
  have room inside [slot="text"]'s line box. With line-height: 1 the
90
90
  line box equals the em-square and descenders extend below it; the
@@ -96,22 +96,22 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
96
96
  /* Cover every property the hover / focus / invalid states change so
97
97
  the field doesn't half-snap (border slides, but bg/colour/ring snap). */
98
98
  transition:
99
- background var(--input-duration) var(--input-easing),
100
- border-color var(--input-duration) var(--input-easing),
101
- color var(--input-duration) var(--input-easing),
102
- box-shadow var(--input-duration) var(--input-easing);
99
+ background var(--input-duration, var(--input-duration-default)) var(--input-easing, var(--input-easing-default)),
100
+ border-color var(--input-duration, var(--input-duration-default)) var(--input-easing, var(--input-easing-default)),
101
+ color var(--input-duration, var(--input-duration-default)) var(--input-easing, var(--input-easing-default)),
102
+ box-shadow var(--input-duration, var(--input-duration-default)) var(--input-easing, var(--input-easing-default));
103
103
  }
104
104
  /* hover rules moved outside @scope — see Safari 17.x bug note at top. */
105
105
  :scope:not([disabled]):focus-within [slot="field"] {
106
106
  /* Canonical ring — consumes the L3 --input-focus-ring token
107
107
  which aliases --a-focus-ring. Border stays stable; the ring
108
108
  is the focus affordance (WCAG 2.2 SC 2.4.11/2.4.13). */
109
- box-shadow: var(--input-focus-ring);
110
- color: var(--input-fg-focus);
109
+ box-shadow: var(--input-focus-ring, var(--input-focus-ring-default));
110
+ color: var(--input-fg-focus, var(--input-fg-focus-default));
111
111
  }
112
112
  :scope[aria-invalid="true"]:not([disabled]):focus-within [slot="field"],
113
113
  :scope[error]:not([disabled]):focus-within [slot="field"] {
114
- box-shadow: var(--input-focus-ring-invalid);
114
+ box-shadow: var(--input-focus-ring-invalid, var(--input-focus-ring-invalid-default));
115
115
  }
116
116
 
117
117
  /* Text (contenteditable span) */
@@ -135,13 +135,13 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
135
135
  }
136
136
 
137
137
  input[slot="text"]::placeholder {
138
- color: var(--input-placeholder-fg);
138
+ color: var(--input-placeholder-fg, var(--input-placeholder-fg-default));
139
139
  }
140
140
 
141
141
  /* Placeholder (contenteditable only) */
142
142
  span[slot="text"][data-empty]::before {
143
143
  content: attr(data-placeholder);
144
- color: var(--input-placeholder-fg);
144
+ color: var(--input-placeholder-fg, var(--input-placeholder-fg-default));
145
145
  pointer-events: none;
146
146
  }
147
147
 
@@ -157,7 +157,7 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
157
157
  font-weight: var(--a-weight-medium, 500);
158
158
  /* Reserve space for the absolutely-positioned controls column so the
159
159
  value never collides with the stepper buttons. */
160
- padding-inline-end: var(--input-controls-width, calc(var(--input-height) * 0.7));
160
+ padding-inline-end: var(--input-controls-width, calc(var(--input-height, var(--input-height-default)) * 0.7));
161
161
  }
162
162
 
163
163
  /* Suffix sits flush after the value in number mode (no auto margin so
@@ -168,7 +168,7 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
168
168
  suffix never collides with the stepper buttons. The padding moves
169
169
  from `[slot="text"]` to `[slot="suffix"]` when a suffix is present
170
170
  — only one element needs the reservation since they're adjacent. */
171
- margin-inline-end: var(--input-controls-width, calc(var(--input-height) * 0.7));
171
+ margin-inline-end: var(--input-controls-width, calc(var(--input-height, var(--input-height-default)) * 0.7));
172
172
  }
173
173
  [data-number]:has([slot="suffix"]) [slot="text"] {
174
174
  padding-inline-end: 0;
@@ -184,8 +184,8 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
184
184
  inset-inline-end: 0;
185
185
  display: grid;
186
186
  grid-template-rows: 1fr 1fr;
187
- border-inline-start: 1px solid var(--input-border);
188
- width: var(--input-controls-width, calc(var(--input-height) * 0.7));
187
+ border-inline-start: 1px solid var(--input-border, var(--input-border-default));
188
+ width: var(--input-controls-width, calc(var(--input-height, var(--input-height-default)) * 0.7));
189
189
  user-select: none;
190
190
  overflow: hidden;
191
191
  }
@@ -201,7 +201,7 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
201
201
  --button-height: 0;
202
202
  --button-radius: 0;
203
203
  --button-bg: transparent;
204
- --button-fg: var(--input-affix-fg);
204
+ --button-fg: var(--input-affix-fg, var(--input-affix-fg-default));
205
205
  --button-px: 0;
206
206
  min-width: 0;
207
207
  min-height: 0;
@@ -217,7 +217,7 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
217
217
  any value inherited from its parent button-ui. Tying it to
218
218
  --input-height keeps the chevron proportional across sm/md/lg. */
219
219
  [data-number] [slot="controls"] icon-ui {
220
- --icon-size: calc(var(--input-height) * 0.4);
220
+ --icon-size: calc(var(--input-height, var(--input-height-default)) * 0.4);
221
221
  }
222
222
  [data-number] [slot="controls"] button-ui:hover {
223
223
  --button-bg: var(--a-ui-bg-hover);
@@ -234,11 +234,11 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
234
234
  inline-start border on the column + the bottom-border on the upper
235
235
  button. */
236
236
  [data-number] [slot="controls"] button-ui:first-child {
237
- border-bottom: 1px solid var(--input-border);
238
- border-start-end-radius: calc(var(--input-radius) - 1px);
237
+ border-bottom: 1px solid var(--input-border, var(--input-border-default));
238
+ border-start-end-radius: calc(var(--input-radius, var(--input-radius-default)) - 1px);
239
239
  }
240
240
  [data-number] [slot="controls"] button-ui:last-child {
241
- border-end-end-radius: calc(var(--input-radius) - 1px);
241
+ border-end-end-radius: calc(var(--input-radius, var(--input-radius-default)) - 1px);
242
242
  }
243
243
 
244
244
  /* Raw mode strips the chrome — also strip the controls column's
@@ -265,8 +265,8 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
265
265
  display: inline-flex;
266
266
  align-items: center;
267
267
  flex-shrink: 0;
268
- color: var(--input-affix-fg);
269
- font-size: var(--input-font-size);
268
+ color: var(--input-affix-fg, var(--input-affix-fg-default));
269
+ font-size: var(--input-font-size, var(--input-font-size-default));
270
270
  line-height: 1;
271
271
  user-select: none;
272
272
  pointer-events: none;
@@ -278,7 +278,7 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
278
278
 
279
279
  /* §199 (v0.5.7) — Leading + trailing affordance slots inside the field.
280
280
  Consumer authors `<button-ui slot="leading|trailing">` as a direct
281
- child of <input-ui>; class.js#installAffordances moves it into
281
+ child of <input-ui>; input.class.js#installAffordances moves it into
282
282
  [slot="field"] at the right insertion point on connected(). CSS
283
283
  normalizes the chrome here.
284
284
 
@@ -312,10 +312,10 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
312
312
  instead so the button visually matches the input's intrinsic size. */
313
313
  [slot="field"] > [slot="leading"] button-ui,
314
314
  [slot="field"] > [slot="trailing"] button-ui {
315
- --button-height: calc(var(--input-height) - 4px);
315
+ --button-height: calc(var(--input-height, var(--input-height-default)) - 4px);
316
316
  --button-bg: transparent;
317
317
  --button-border: transparent;
318
- --button-fg: var(--input-affix-fg);
318
+ --button-fg: var(--input-affix-fg, var(--input-affix-fg-default));
319
319
  --button-px: var(--a-space-1);
320
320
  }
321
321
 
@@ -330,13 +330,13 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
330
330
  absolutely positioned at inset-inline-end: 0; trailing sits in the
331
331
  flex flow.) Same pattern as [slot="suffix"] in number mode. */
332
332
  [data-number]:has(> [slot="trailing"]) > [slot="trailing"] {
333
- margin-inline-end: var(--input-controls-width, calc(var(--input-height) * 0.7));
333
+ margin-inline-end: var(--input-controls-width, calc(var(--input-height, var(--input-height-default)) * 0.7));
334
334
  }
335
335
 
336
336
  /* Disabled */
337
337
  :scope[disabled] [slot="field"] {
338
- background: var(--input-bg-disabled);
339
- color: var(--input-fg-disabled);
338
+ background: var(--input-bg-disabled, var(--input-bg-disabled-default));
339
+ color: var(--input-fg-disabled, var(--input-fg-disabled-default));
340
340
  cursor: not-allowed;
341
341
  }
342
342
 
@@ -353,9 +353,9 @@ input-ui:not([disabled]) [slot="field"]:hover [slot="suffix"] {
353
353
 
354
354
  /* Ghost variant */
355
355
  :scope[variant="ghost"] {
356
- --input-bg: transparent;
357
- --input-border: transparent;
358
- --input-border-hover: transparent;
356
+ --input-bg-default: transparent;
357
+ --input-border-default: transparent;
358
+ --input-border-hover-default: transparent;
359
359
  }
360
360
  /* :scope[variant="ghost"]:hover moved outside @scope — see Safari
361
361
  17.x bug note at top of file. */
@@ -10,7 +10,7 @@
10
10
  */
11
11
 
12
12
  import { defineIfFree } from '../../core/register.js';
13
- import { UIInput } from './class.js';
13
+ import { UIInput } from './input.class.js';
14
14
 
15
15
  defineIfFree('input-ui', UIInput);
16
16
 
@@ -262,10 +262,11 @@ a2ui:
262
262
  Number. Never substitute a native <input type="number">.
263
263
  - >-
264
264
  Inside <chat-composer>, the canonical inner input is
265
- <chat-input-ui submit-on-enter> (chat variant subclass — owns
266
- the submit-on-enter contract explicitly). The plain <input-ui>
267
- primitive already fires `submit` on Enter, but only chat-input-ui
268
- reflects the [submit-on-enter] attribute.
265
+ <chat-input-ui> (chat variant subclass — adds the send button +
266
+ model picker + paste-to-attach plumbing). The plain <input-ui>
267
+ primitive ALSO fires a bubbling `submit` event on Enter
268
+ (unconditional, no opt-in attribute); <chat-input-ui> simply
269
+ builds on that semantic.
269
270
  anti_patterns: []
270
271
  examples:
271
272
  - name: quantity-stepper
@@ -1,16 +1,16 @@
1
1
  @scope (inspector-ui) {
2
2
  :where(:scope) {
3
- --inspector-pane-font-size: var(--a-ui-tiny);
4
- --inspector-border: 1px solid var(--a-border-subtle);
5
- --inspector-radius: var(--a-radius);
3
+ --inspector-pane-font-size-default: var(--a-ui-tiny);
4
+ --inspector-border-default: 1px solid var(--a-border-subtle);
5
+ --inspector-radius-default: var(--a-radius);
6
6
  }
7
7
 
8
8
  :scope {
9
9
  display: flex;
10
10
  flex-direction: column;
11
11
  overflow: hidden;
12
- border: var(--inspector-border);
13
- border-radius: var(--inspector-radius);
12
+ border: var(--inspector-border, var(--inspector-border-default));
13
+ border-radius: var(--inspector-radius, var(--inspector-radius-default));
14
14
  min-width: 0;
15
15
  }
16
16
 
@@ -26,6 +26,6 @@
26
26
  :scope tab-ui > code-ui {
27
27
  display: block;
28
28
  overflow: auto;
29
- font-size: var(--inspector-pane-font-size);
29
+ font-size: var(--inspector-pane-font-size, var(--inspector-pane-font-size-default));
30
30
  }
31
31
  }
@@ -10,7 +10,7 @@
10
10
  */
11
11
 
12
12
  import { defineIfFree } from '../../core/register.js';
13
- import { UIInspector } from './class.js';
13
+ import { UIInspector } from './inspector.class.js';
14
14
 
15
15
  defineIfFree('inspector-ui', UIInspector);
16
16
 
@@ -0,0 +1,268 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://adiaui.dev/a2ui/v0_9/components/IntegrationCard.json",
4
+ "title": "IntegrationCard",
5
+ "description": "Single-tile primitive representing one third-party integration (Slack, GitHub, Stripe, …). Shows the provider logo + name + description + status pill + a single primary action button whose label and variant are derived from `status`. Composes into a grid via the SPEC-063 integrations-page composite. One tile = one provider; the button variant is computed from `status`, not a separate prop. Distinct from <option-card-ui> (a single-select radio with no status / async action) and <card-ui> (the generic bordered surface this specializes).",
6
+ "type": "object",
7
+ "allOf": [
8
+ {
9
+ "$ref": "common_types.json#/$defs/ComponentCommon"
10
+ },
11
+ {
12
+ "$ref": "common_types.json#/$defs/CatalogComponentCommon"
13
+ }
14
+ ],
15
+ "properties": {
16
+ "description": {
17
+ "description": "One-line description of what the integration does.",
18
+ "type": "string",
19
+ "default": ""
20
+ },
21
+ "component": {
22
+ "const": "IntegrationCard"
23
+ },
24
+ "disabled": {
25
+ "description": "Disables the action button.",
26
+ "type": "boolean",
27
+ "default": false
28
+ },
29
+ "error-message": {
30
+ "description": "When `status=\"error\"`, the message to show below the description. Ignored for other statuses.",
31
+ "$ref": "common_types.json#/$defs/DynamicString"
32
+ },
33
+ "logo": {
34
+ "description": "Logo URL (preferred — renders as <img>) or icon name (renders as <icon-ui>). URLs are sniffed by presence of `/`.",
35
+ "type": "string",
36
+ "default": ""
37
+ },
38
+ "name": {
39
+ "description": "Display name shown as the card title. Required.",
40
+ "type": "string",
41
+ "default": ""
42
+ },
43
+ "provider": {
44
+ "description": "Provider key — `slack`, `github`, etc. — used for analytics + a11y label. Required.",
45
+ "type": "string",
46
+ "default": ""
47
+ },
48
+ "status": {
49
+ "description": "Current connection state — drives the button label, variant, and visibility. `available` shows a primary `Connect`; `connected` shows an outline `Configure`; `error` shows an outline `Retry`; `pending` shows a non-interactive spinner; `coming-soon` hides the button.",
50
+ "$ref": "common_types.json#/$defs/DynamicString"
51
+ }
52
+ },
53
+ "required": [
54
+ "component",
55
+ "provider",
56
+ "name"
57
+ ],
58
+ "unevaluatedProperties": false,
59
+ "x-adiaui": {
60
+ "anti_patterns": [
61
+ {
62
+ "fix": "{\"component\": \"IntegrationCard\", \"provider\": \"slack\",\n \"name\": \"Slack\", \"status\": \"available\"}\n",
63
+ "why": "Manually slotting a Button bypasses the card's status-driven\nbutton semantics. The card renders its own button AND the\nslotted one, producing two actions side-by-side.\n",
64
+ "wrong": "{\"component\": \"IntegrationCard\", \"provider\": \"slack\",\n \"children\": [{\"component\": \"Button\", \"label\": \"Connect\"}]}\n"
65
+ },
66
+ {
67
+ "fix": "{\"component\": \"IntegrationCard\", \"provider\": \"slack\",\n \"name\": \"Slack\", \"logo\": \"/slack.svg\", \"status\": \"available\"}\n",
68
+ "why": "Re-implements IntegrationCard with primitives. Loses status\nbadge semantics, accessible-name wiring, and the typed\nconnect/configure events.\n",
69
+ "wrong": "{\"component\": \"Card\", \"children\": [\n {\"component\": \"Image\", \"src\": \"/slack.svg\"},\n {\"component\": \"Text\", \"value\": \"Slack\"},\n {\"component\": \"Button\", \"label\": \"Connect\"}]}\n"
70
+ }
71
+ ],
72
+ "category": "display",
73
+ "composes": [
74
+ "icon-ui",
75
+ "badge-ui",
76
+ "button-ui"
77
+ ],
78
+ "events": {
79
+ "configure": {
80
+ "description": "Fired when the user clicks the action button while `status=\"connected\"`.",
81
+ "detail": {
82
+ "provider": {
83
+ "description": "The provider key for this card.",
84
+ "type": "string"
85
+ }
86
+ }
87
+ },
88
+ "connect": {
89
+ "description": "Fired when the user clicks the action button while `status=\"available\"`.",
90
+ "detail": {
91
+ "provider": {
92
+ "description": "The provider key for this card.",
93
+ "type": "string"
94
+ }
95
+ }
96
+ },
97
+ "disconnect": {
98
+ "description": "Fired when the consumer wires a `<menu-ui slot=\"actions\">` overflow with a `disconnect` item. The card does not stamp this menu — it bubbles whatever consumer markup dispatches.",
99
+ "detail": {
100
+ "provider": {
101
+ "description": "The provider key for this card.",
102
+ "type": "string"
103
+ }
104
+ }
105
+ },
106
+ "retry": {
107
+ "description": "Fired when the user clicks the action button while `status=\"error\"`.",
108
+ "detail": {
109
+ "provider": {
110
+ "description": "The provider key for this card.",
111
+ "type": "string"
112
+ }
113
+ }
114
+ }
115
+ },
116
+ "examples": [
117
+ {
118
+ "description": "Available integration with logo, description, and primary Connect button.",
119
+ "a2ui": "{\n \"id\": \"card-slack\",\n \"component\": \"IntegrationCard\",\n \"provider\": \"slack\",\n \"name\": \"Slack\",\n \"logo\": \"/integrations/slack.svg\",\n \"description\": \"Send AI replies and notifications to channels.\",\n \"status\": \"available\"\n}",
120
+ "name": "available"
121
+ },
122
+ {
123
+ "description": "Connected integration with success badge and outline Configure button.",
124
+ "a2ui": "{\n \"id\": \"card-github\",\n \"component\": \"IntegrationCard\",\n \"provider\": \"github\",\n \"name\": \"GitHub\",\n \"logo\": \"/integrations/github.svg\",\n \"description\": \"Sync issues and pull requests.\",\n \"status\": \"connected\"\n}",
125
+ "name": "connected"
126
+ },
127
+ {
128
+ "description": "Error integration with danger badge, error message, and Retry button.",
129
+ "a2ui": "{\n \"id\": \"card-stripe\",\n \"component\": \"IntegrationCard\",\n \"provider\": \"stripe\",\n \"name\": \"Stripe\",\n \"description\": \"Charge customers and reconcile invoices.\",\n \"status\": \"error\",\n \"error-message\": \"Token expired — re-authenticate.\"\n}",
130
+ "name": "error"
131
+ },
132
+ {
133
+ "description": "Coming-soon integration with no action button.",
134
+ "a2ui": "{\n \"id\": \"card-zapier\",\n \"component\": \"IntegrationCard\",\n \"provider\": \"zapier\",\n \"name\": \"Zapier\",\n \"description\": \"Trigger Zaps from AdiaUI events.\",\n \"status\": \"coming-soon\"\n}",
135
+ "name": "coming-soon"
136
+ }
137
+ ],
138
+ "keywords": [
139
+ "integration",
140
+ "connect",
141
+ "provider",
142
+ "slack",
143
+ "github",
144
+ "stripe",
145
+ "oauth",
146
+ "third-party",
147
+ "settings",
148
+ "integrations",
149
+ "card",
150
+ "tile"
151
+ ],
152
+ "name": "UIIntegrationCard",
153
+ "related": [
154
+ "card",
155
+ "badge",
156
+ "button",
157
+ "menu"
158
+ ],
159
+ "slots": {
160
+ "default": {
161
+ "description": "Optional override for the description. When a non-empty default slot is provided it supersedes the `description` prop."
162
+ },
163
+ "actions": {
164
+ "description": "Optional secondary actions — typically a <menu-ui> overflow carrying `Reauthenticate` / `Disconnect` entries. Collapses when empty."
165
+ }
166
+ },
167
+ "states": [
168
+ {
169
+ "description": "Default — `[status=\"available\"]`.",
170
+ "name": "idle"
171
+ },
172
+ {
173
+ "description": "Ready to connect.",
174
+ "attribute": "status=\"available\"",
175
+ "name": "available"
176
+ },
177
+ {
178
+ "description": "Linked — success-tinted border, check badge, outline `Configure` button.",
179
+ "attribute": "status=\"connected\"",
180
+ "name": "connected"
181
+ },
182
+ {
183
+ "description": "Connection failed — danger-tinted border, error message visible, outline `Retry` button.",
184
+ "attribute": "status=\"error\"",
185
+ "name": "error"
186
+ },
187
+ {
188
+ "description": "Awaiting response — button shows spinner, non-interactive.",
189
+ "attribute": "status=\"pending\"",
190
+ "name": "pending"
191
+ },
192
+ {
193
+ "description": "Listed but not yet enabled — opacity reduced, button hidden, \"Coming soon\" badge shown.",
194
+ "attribute": "status=\"coming-soon\"",
195
+ "name": "coming-soon"
196
+ },
197
+ {
198
+ "description": "Non-interactive; dimmed.",
199
+ "attribute": "disabled",
200
+ "name": "disabled"
201
+ }
202
+ ],
203
+ "status": "stable",
204
+ "synonyms": {
205
+ "connect": [
206
+ "integration",
207
+ "oauth",
208
+ "connection"
209
+ ],
210
+ "integration": [
211
+ "integration",
212
+ "connect",
213
+ "provider",
214
+ "third-party"
215
+ ],
216
+ "oauth": [
217
+ "integration",
218
+ "connect",
219
+ "auth"
220
+ ],
221
+ "provider": [
222
+ "integration",
223
+ "third-party",
224
+ "service"
225
+ ],
226
+ "settings": [
227
+ "settings",
228
+ "integration",
229
+ "account"
230
+ ]
231
+ },
232
+ "tag": "integration-card-ui",
233
+ "tokens": {
234
+ "--integration-card-bg": {
235
+ "description": "Card background. Defaults to `--a-bg`."
236
+ },
237
+ "--integration-card-border": {
238
+ "description": "Card border color. Defaults to `--a-border`."
239
+ },
240
+ "--integration-card-description-fg": {
241
+ "description": "Description text color."
242
+ },
243
+ "--integration-card-error-fg": {
244
+ "description": "Error-message text color (used when `status=\"error\"`)."
245
+ },
246
+ "--integration-card-gap": {
247
+ "description": "Vertical rhythm between header / body / footer."
248
+ },
249
+ "--integration-card-heading-fg": {
250
+ "description": "Provider name color."
251
+ },
252
+ "--integration-card-logo-size": {
253
+ "description": "Logo square dimension. Defaults to `--a-space-7`."
254
+ },
255
+ "--integration-card-px": {
256
+ "description": "Horizontal padding. Defaults to `--a-space-4`."
257
+ },
258
+ "--integration-card-py": {
259
+ "description": "Vertical padding. Defaults to `--a-space-4`."
260
+ },
261
+ "--integration-card-radius": {
262
+ "description": "Card corner radius. Defaults to `--a-radius-md`."
263
+ }
264
+ },
265
+ "traits": [],
266
+ "version": 1
267
+ }
268
+ }