@kerfjs/ui 5.0.0-beta.95 → 5.0.0-beta.96

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 (385) hide show
  1. package/README.md +95 -55
  2. package/ai/component-catalog.json +1328 -94
  3. package/ai/component-composition-rules.json +11 -0
  4. package/ai/component-composition.d.ts +3 -0
  5. package/ai/component-composition.json +955 -23
  6. package/ai/component-composition.schema.json +4 -0
  7. package/ai/components/README.md +12 -0
  8. package/ai/components/badge.md +6 -2
  9. package/ai/components/choice-chips.md +80 -0
  10. package/ai/components/column-track.md +78 -0
  11. package/ai/components/combobox.md +88 -0
  12. package/ai/components/content-item.md +2 -0
  13. package/ai/components/content-swap.md +78 -0
  14. package/ai/components/corner-status.md +88 -0
  15. package/ai/components/document-baseline.md +3 -1
  16. package/ai/components/edge-activity-indicator.md +81 -0
  17. package/ai/components/file-picker.md +88 -0
  18. package/ai/components/foundation.md +1 -1
  19. package/ai/components/framed-list.md +80 -0
  20. package/ai/components/grid.md +2 -1
  21. package/ai/components/icon-button.md +82 -0
  22. package/ai/components/icon-toggle-button.md +80 -0
  23. package/ai/components/list-action-row.md +19 -7
  24. package/ai/components/list-item.md +16 -7
  25. package/ai/components/list.md +5 -2
  26. package/ai/components/nav-stack.md +2 -1
  27. package/ai/components/popup-menu.md +2 -2
  28. package/ai/components/row.md +1 -1
  29. package/ai/components/select.md +2 -1
  30. package/ai/components/split-button.md +80 -0
  31. package/ai/components/split-view.md +1 -1
  32. package/ai/components/state-banner.md +4 -2
  33. package/ai/components/summary-row.md +85 -0
  34. package/ai/components/sunken-panel.md +1 -1
  35. package/ai/components/surface-scaffold.md +8 -2
  36. package/ai/components/text.md +3 -0
  37. package/ai/components/toolbar-control-group.md +4 -2
  38. package/ai/components/toolbar-text.md +1 -0
  39. package/ai/components/toolbar.md +1 -0
  40. package/ai/components/value-table.md +9 -2
  41. package/ai/components/wa-button-group.md +2 -1
  42. package/ai/components/wa-button.md +5 -1
  43. package/ai/public-api-signatures-v1.md +1063 -52
  44. package/ai/skill.md +54 -52
  45. package/ai/webawesome-jsx-signatures-v1.md +1 -1
  46. package/dist/anchored-surface.d.ts +13 -2
  47. package/dist/anchored-surface.js +1 -1
  48. package/dist/app-tab.js +1 -1
  49. package/dist/badge.d.ts +31 -2
  50. package/dist/badge.js +2 -1
  51. package/dist/browser/choice-chips.js +3 -0
  52. package/dist/browser/column-track.js +3 -0
  53. package/dist/browser/combobox.js +3 -0
  54. package/dist/browser/content-swap.js +3 -0
  55. package/dist/browser/corner-status.js +3 -0
  56. package/dist/browser/edge-activity-indicator.js +3 -0
  57. package/dist/browser/file-picker.js +3 -0
  58. package/dist/browser/framed-list.js +3 -0
  59. package/dist/browser/icon-button.js +4 -0
  60. package/dist/browser/icon-toggle-button.js +4 -0
  61. package/dist/browser/list-action-row.js +1 -0
  62. package/dist/browser/split-button.js +5 -0
  63. package/dist/browser/summary-row.js +3 -0
  64. package/dist/catalog-resources.d.ts +1 -0
  65. package/dist/catalog.d.ts +1 -0
  66. package/dist/catalog.js +16 -13
  67. package/dist/catalog.js.map +1 -1
  68. package/dist/chip.d.ts +1 -0
  69. package/dist/choice-chips.d.ts +58 -0
  70. package/dist/choice-chips.js +3 -0
  71. package/dist/choice-chips.js.map +1 -0
  72. package/dist/chunk-2MSPNRWJ.js +82 -0
  73. package/dist/chunk-2MSPNRWJ.js.map +1 -0
  74. package/dist/{chunk-3PO7JEK7.js → chunk-36TL6BCR.js} +18 -4
  75. package/dist/chunk-36TL6BCR.js.map +1 -0
  76. package/dist/{chunk-MORVLMDG.js → chunk-44A6LP54.js} +3 -3
  77. package/dist/chunk-44A6LP54.js.map +1 -0
  78. package/dist/{chunk-7QQ3HE47.js → chunk-4LOK4634.js} +7 -3
  79. package/dist/chunk-4LOK4634.js.map +1 -0
  80. package/dist/chunk-4UB5Z3ZZ.js +68 -0
  81. package/dist/chunk-4UB5Z3ZZ.js.map +1 -0
  82. package/dist/{chunk-PGL6TXFW.js → chunk-6BRRUPJY.js} +6 -2
  83. package/dist/chunk-6BRRUPJY.js.map +1 -0
  84. package/dist/{chunk-KAJVVN7Q.js → chunk-6NOLL5KG.js} +2 -2
  85. package/dist/{chunk-KAJVVN7Q.js.map → chunk-6NOLL5KG.js.map} +1 -1
  86. package/dist/{chunk-IOS2NXW7.js → chunk-76PWEN5Y.js} +13 -2
  87. package/dist/chunk-76PWEN5Y.js.map +1 -0
  88. package/dist/{chunk-B3TROLC2.js → chunk-7IUEBNCO.js} +7 -3
  89. package/dist/chunk-7IUEBNCO.js.map +1 -0
  90. package/dist/{chunk-75YOTZ25.js → chunk-AYHC62OZ.js} +10 -6
  91. package/dist/chunk-AYHC62OZ.js.map +1 -0
  92. package/dist/{chunk-RZYQFGMM.js → chunk-BBU2SPRE.js} +4 -4
  93. package/dist/{chunk-RZYQFGMM.js.map → chunk-BBU2SPRE.js.map} +1 -1
  94. package/dist/{chunk-QCLLBMLA.js → chunk-BU23Z5HZ.js} +37 -12
  95. package/dist/chunk-BU23Z5HZ.js.map +1 -0
  96. package/dist/{chunk-BYHGRKC3.js → chunk-CMLPFIC5.js} +3 -1
  97. package/dist/chunk-CMLPFIC5.js.map +1 -0
  98. package/dist/{chunk-3XPGJUUQ.js → chunk-D5RGM3XA.js} +3 -2
  99. package/dist/chunk-D5RGM3XA.js.map +1 -0
  100. package/dist/chunk-EIET4QLK.js +51 -0
  101. package/dist/chunk-EIET4QLK.js.map +1 -0
  102. package/dist/chunk-ETCWQLJV.js +85 -0
  103. package/dist/chunk-ETCWQLJV.js.map +1 -0
  104. package/dist/chunk-FDZNYD4C.js +138 -0
  105. package/dist/chunk-FDZNYD4C.js.map +1 -0
  106. package/dist/{chunk-XKZPBRU7.js → chunk-FOQK4F3L.js} +25 -5
  107. package/dist/chunk-FOQK4F3L.js.map +1 -0
  108. package/dist/{chunk-FL6J644M.js → chunk-GJYQ27C2.js} +4 -2
  109. package/dist/chunk-GJYQ27C2.js.map +1 -0
  110. package/dist/{chunk-DL55BSQX.js → chunk-GZE2XVKC.js} +8 -1
  111. package/dist/chunk-GZE2XVKC.js.map +1 -0
  112. package/dist/{chunk-YP2G67S7.js → chunk-HO6FU3G7.js} +2 -2
  113. package/dist/{chunk-YP2G67S7.js.map → chunk-HO6FU3G7.js.map} +1 -1
  114. package/dist/{chunk-3DXHNLME.js → chunk-IGTWXPTN.js} +25 -8
  115. package/dist/chunk-IGTWXPTN.js.map +1 -0
  116. package/dist/chunk-IKS72C6P.js +53 -0
  117. package/dist/chunk-IKS72C6P.js.map +1 -0
  118. package/dist/chunk-JYD7G4RG.js +130 -0
  119. package/dist/chunk-JYD7G4RG.js.map +1 -0
  120. package/dist/{chunk-LAZLBC2Q.js → chunk-KH4KEMSP.js} +33 -2
  121. package/dist/chunk-KH4KEMSP.js.map +1 -0
  122. package/dist/chunk-LL45C7BB.js +122 -0
  123. package/dist/chunk-LL45C7BB.js.map +1 -0
  124. package/dist/chunk-M2NRCFRO.js +45 -0
  125. package/dist/chunk-M2NRCFRO.js.map +1 -0
  126. package/dist/chunk-MJ5RU6XT.js +173 -0
  127. package/dist/chunk-MJ5RU6XT.js.map +1 -0
  128. package/dist/{chunk-GIUOXAVL.js → chunk-P74VXMB6.js} +39 -19
  129. package/dist/chunk-P74VXMB6.js.map +1 -0
  130. package/dist/{chunk-TKDDTLG5.js → chunk-PBT3CPPY.js} +31 -3
  131. package/dist/chunk-PBT3CPPY.js.map +1 -0
  132. package/dist/chunk-PRG4CL3Q.js +88 -0
  133. package/dist/chunk-PRG4CL3Q.js.map +1 -0
  134. package/dist/chunk-QH5KOFNS.js +39 -0
  135. package/dist/chunk-QH5KOFNS.js.map +1 -0
  136. package/dist/{chunk-CD5TOO22.js → chunk-QIAPOWHH.js} +2 -2
  137. package/dist/{chunk-CD5TOO22.js.map → chunk-QIAPOWHH.js.map} +1 -1
  138. package/dist/chunk-QQ3TTWFH.js +29 -0
  139. package/dist/chunk-QQ3TTWFH.js.map +1 -0
  140. package/dist/chunk-QYMJHS4K.js +36 -0
  141. package/dist/chunk-QYMJHS4K.js.map +1 -0
  142. package/dist/chunk-R42D2BAO.js +44 -0
  143. package/dist/chunk-R42D2BAO.js.map +1 -0
  144. package/dist/chunk-S2XULQEK.js +52 -0
  145. package/dist/chunk-S2XULQEK.js.map +1 -0
  146. package/dist/{chunk-NMWDHZVM.js → chunk-S4Y3YTAI.js} +2 -2
  147. package/dist/{chunk-NMWDHZVM.js.map → chunk-S4Y3YTAI.js.map} +1 -1
  148. package/dist/{chunk-O27D24CA.js → chunk-TDMHA7C3.js} +3 -2
  149. package/dist/chunk-TDMHA7C3.js.map +1 -0
  150. package/dist/chunk-U6QYTMDB.js +85 -0
  151. package/dist/chunk-U6QYTMDB.js.map +1 -0
  152. package/dist/{chunk-QQICWWNX.js → chunk-V6W56V3N.js} +18 -7
  153. package/dist/chunk-V6W56V3N.js.map +1 -0
  154. package/dist/chunk-W4IK7AWD.js +73 -0
  155. package/dist/chunk-W4IK7AWD.js.map +1 -0
  156. package/dist/{chunk-TNG3XKHB.js → chunk-Y3LC7JQO.js} +26 -8
  157. package/dist/chunk-Y3LC7JQO.js.map +1 -0
  158. package/dist/chunk-YWQGSUF2.js +84 -0
  159. package/dist/chunk-YWQGSUF2.js.map +1 -0
  160. package/dist/{chunk-MTCTX25G.js → chunk-YXOMI7ES.js} +1 -1
  161. package/dist/chunk-YXOMI7ES.js.map +1 -0
  162. package/dist/chunk-ZKKO4MHC.js +25 -0
  163. package/dist/chunk-ZKKO4MHC.js.map +1 -0
  164. package/dist/collapsible-panel.d.ts +10 -3
  165. package/dist/collapsible-panel.js +8 -5
  166. package/dist/collapsible-panel.js.map +1 -1
  167. package/dist/column-track.d.ts +41 -0
  168. package/dist/column-track.js +4 -0
  169. package/dist/column-track.js.map +1 -0
  170. package/dist/combobox.d.ts +40 -0
  171. package/dist/combobox.js +3 -0
  172. package/dist/combobox.js.map +1 -0
  173. package/dist/content-item.d.ts +21 -4
  174. package/dist/content-item.js +1 -1
  175. package/dist/content-swap.d.ts +34 -0
  176. package/dist/content-swap.js +3 -0
  177. package/dist/content-swap.js.map +1 -0
  178. package/dist/corner-status.d.ts +36 -0
  179. package/dist/corner-status.js +3 -0
  180. package/dist/corner-status.js.map +1 -0
  181. package/dist/edge-activity-indicator.d.ts +28 -0
  182. package/dist/edge-activity-indicator.js +3 -0
  183. package/dist/edge-activity-indicator.js.map +1 -0
  184. package/dist/extension-attributes-mu8MFUl0.d.ts +13 -0
  185. package/dist/file-picker.d.ts +47 -0
  186. package/dist/file-picker.js +3 -0
  187. package/dist/file-picker.js.map +1 -0
  188. package/dist/framed-list.d.ts +47 -0
  189. package/dist/framed-list.js +4 -0
  190. package/dist/framed-list.js.map +1 -0
  191. package/dist/grid.js +1 -1
  192. package/dist/help-tags-register.js +1 -1
  193. package/dist/icon-button.d.ts +46 -0
  194. package/dist/icon-button.js +6 -0
  195. package/dist/icon-button.js.map +1 -0
  196. package/dist/icon-toggle-button.d.ts +42 -0
  197. package/dist/icon-toggle-button.js +6 -0
  198. package/dist/icon-toggle-button.js.map +1 -0
  199. package/dist/index.d.ts +23 -6
  200. package/dist/index.js +44 -27
  201. package/dist/list-action-row.d.ts +47 -10
  202. package/dist/list-action-row.js +2 -1
  203. package/dist/list-header.js +1 -1
  204. package/dist/list-inset-text.js +1 -1
  205. package/dist/list-item.d.ts +10 -2
  206. package/dist/list-item.js +1 -1
  207. package/dist/list.d.ts +37 -5
  208. package/dist/list.js +1 -1
  209. package/dist/nav-stack.d.ts +1 -0
  210. package/dist/nav-stack.js +2 -1
  211. package/dist/pane.js +2 -1
  212. package/dist/popup-menu-register.js +18 -1
  213. package/dist/popup-menu-register.js.map +1 -1
  214. package/dist/popup-menu.d.ts +28 -3
  215. package/dist/popup-menu.js +1 -1
  216. package/dist/row.d.ts +6 -2
  217. package/dist/row.js +1 -1
  218. package/dist/select-register.js +1 -1
  219. package/dist/select.js +2 -1
  220. package/dist/split-button.d.ts +57 -0
  221. package/dist/split-button.js +7 -0
  222. package/dist/split-button.js.map +1 -0
  223. package/dist/split-view.d.ts +20 -2
  224. package/dist/split-view.js +22 -1
  225. package/dist/split-view.js.map +1 -1
  226. package/dist/state-banner.d.ts +17 -2
  227. package/dist/state-banner.js +2 -1
  228. package/dist/styles/badge.css +27 -0
  229. package/dist/styles/catalog/components/catalog-example.css +7 -3
  230. package/dist/styles/choice-chips.css +154 -0
  231. package/dist/styles/column-track.css +57 -0
  232. package/dist/styles/combobox.css +113 -0
  233. package/dist/styles/components/actions/icon-button/icon-button.css +22 -0
  234. package/dist/styles/components/actions/icon-toggle-button/icon-toggle-button.css +83 -0
  235. package/dist/styles/components/actions/popup-menu/popup-menu.css +69 -1
  236. package/dist/styles/components/actions/split-button/split-button.css +95 -0
  237. package/dist/styles/components/actions/toolbar/toolbar.css +16 -9
  238. package/dist/styles/components/actions/toolbar-control-group/toolbar-control-group.css +144 -48
  239. package/dist/styles/components/actions/toolbar-text/toolbar-text.css +23 -0
  240. package/dist/styles/components/collections/framed-list/framed-list.css +47 -0
  241. package/dist/styles/components/collections/list/list.css +44 -0
  242. package/dist/styles/components/collections/list-action-row/list-action-row.css +39 -0
  243. package/dist/styles/components/collections/list-item/list-item.css +45 -0
  244. package/dist/styles/components/collections/summary-row/summary-row.css +161 -0
  245. package/dist/styles/components/data-display/value-table/value-table.css +76 -0
  246. package/dist/styles/components/feedback/badge/badge.css +27 -0
  247. package/dist/styles/components/feedback/corner-status/corner-status.css +60 -0
  248. package/dist/styles/components/feedback/edge-activity-indicator/edge-activity-indicator.css +127 -0
  249. package/dist/styles/components/feedback/state-banner/state-banner.css +38 -0
  250. package/dist/styles/components/forms/choice-chips/choice-chips.css +154 -0
  251. package/dist/styles/components/forms/combobox/combobox.css +113 -0
  252. package/dist/styles/components/forms/file-picker/file-picker.css +81 -0
  253. package/dist/styles/components/forms/token-search-field/token-search-field.css +12 -1
  254. package/dist/styles/components/layout/column-track/column-track.css +57 -0
  255. package/dist/styles/components/layout/content-swap/content-swap.css +154 -0
  256. package/dist/styles/components/layout/pane/pane.css +2 -8
  257. package/dist/styles/components/layout/workbench/workbench.css +2 -8
  258. package/dist/styles/components/navigation/tab-navigator/tab-navigator.css +1 -4
  259. package/dist/styles/components/surfaces/content-item/content-item.css +18 -0
  260. package/dist/styles/components/surfaces/sunken-panel/sunken-panel.css +1 -4
  261. package/dist/styles/components/surfaces/surface-scaffold/surface-scaffold.css +119 -0
  262. package/dist/styles/components/typography/text/text.css +62 -0
  263. package/dist/styles/content-item.css +18 -0
  264. package/dist/styles/content-swap.css +154 -0
  265. package/dist/styles/corner-status.css +60 -0
  266. package/dist/styles/document.css +65 -0
  267. package/dist/styles/edge-activity-indicator.css +127 -0
  268. package/dist/styles/file-picker.css +81 -0
  269. package/dist/styles/foundation.css +8 -0
  270. package/dist/styles/framed-list.css +47 -0
  271. package/dist/styles/icon-button.css +22 -0
  272. package/dist/styles/icon-toggle-button.css +83 -0
  273. package/dist/styles/list-action-row.css +39 -0
  274. package/dist/styles/list-item.css +45 -0
  275. package/dist/styles/list.css +44 -0
  276. package/dist/styles/pane.css +2 -8
  277. package/dist/styles/popup-menu.css +69 -1
  278. package/dist/styles/split-button.css +95 -0
  279. package/dist/styles/state-banner.css +38 -0
  280. package/dist/styles/styles.css +12 -0
  281. package/dist/styles/summary-row.css +161 -0
  282. package/dist/styles/sunken-panel.css +1 -4
  283. package/dist/styles/surface-scaffold.css +119 -0
  284. package/dist/styles/tab-navigator.css +1 -4
  285. package/dist/styles/text.css +62 -0
  286. package/dist/styles/token-search-field.css +12 -1
  287. package/dist/styles/toolbar-control-group.css +144 -48
  288. package/dist/styles/toolbar-text.css +23 -0
  289. package/dist/styles/toolbar.css +16 -9
  290. package/dist/styles/value-table.css +76 -0
  291. package/dist/styles/webawesome.css +4 -4
  292. package/dist/styles/workbench.css +2 -8
  293. package/dist/summary-row.d.ts +56 -0
  294. package/dist/summary-row.js +4 -0
  295. package/dist/summary-row.js.map +1 -0
  296. package/dist/sunken-panel.d.ts +8 -1
  297. package/dist/sunken-panel.js +2 -1
  298. package/dist/surface-scaffold-register.js +7 -1
  299. package/dist/surface-scaffold-register.js.map +1 -1
  300. package/dist/surface-scaffold.d.ts +75 -2
  301. package/dist/surface-scaffold.js +2 -1
  302. package/dist/tab-navigator.js +4 -1
  303. package/dist/tab-navigator.js.map +1 -1
  304. package/dist/text.d.ts +39 -4
  305. package/dist/text.js +1 -1
  306. package/dist/toolbar-control-group.d.ts +8 -1
  307. package/dist/toolbar-control-group.js +1 -1
  308. package/dist/toolbar-text.d.ts +14 -1
  309. package/dist/toolbar-text.js +1 -1
  310. package/dist/toolbar.d.ts +14 -3
  311. package/dist/toolbar.js +1 -1
  312. package/dist/value-table.d.ts +20 -2
  313. package/dist/value-table.js +1 -1
  314. package/dist/wire-catalog.d.ts +1 -0
  315. package/dist/wire-comboboxes.d.ts +26 -0
  316. package/dist/wire-comboboxes.js +3 -0
  317. package/dist/wire-comboboxes.js.map +1 -0
  318. package/dist/wire-corner-status.d.ts +11 -0
  319. package/dist/wire-corner-status.js +3 -0
  320. package/dist/wire-corner-status.js.map +1 -0
  321. package/dist/wire-file-pickers.d.ts +26 -0
  322. package/dist/wire-file-pickers.js +3 -0
  323. package/dist/wire-file-pickers.js.map +1 -0
  324. package/dist/wire-list-reorder.d.ts +41 -0
  325. package/dist/wire-list-reorder.js +3 -0
  326. package/dist/wire-list-reorder.js.map +1 -0
  327. package/dist/wire-token-search-fields.js +1 -1
  328. package/dist/workbench.d.ts +1 -0
  329. package/dist/workbench.js +2 -1
  330. package/docs/accessibility.md +45 -2
  331. package/docs/anchored-surface.md +15 -7
  332. package/docs/app-layouts.md +2 -1
  333. package/docs/component-contract.md +26 -6
  334. package/docs/component-selection.md +149 -13
  335. package/docs/design/templates/choice-chips/color-palette-dark.svg +1 -0
  336. package/docs/design/templates/choice-chips/color-palette.svg +1 -0
  337. package/docs/design/templates/choice-chips/compact-icons-dark.svg +1 -0
  338. package/docs/design/templates/choice-chips/compact-icons.svg +1 -0
  339. package/docs/design/templates/choice-chips-dark.svg +1 -0
  340. package/docs/design/templates/choice-chips.svg +1 -0
  341. package/docs/design/templates/list-action-row/trailing-menu-dark.svg +1 -0
  342. package/docs/design/templates/list-action-row/trailing-menu.svg +1 -0
  343. package/docs/design/templates/list-action-row-dark.svg +1 -1
  344. package/docs/design/templates/list-action-row.svg +1 -1
  345. package/docs/design/templates/state-banner/strip-dark.svg +1 -0
  346. package/docs/design/templates/state-banner/strip.svg +1 -0
  347. package/docs/design/templates/state-banner-dark.svg +1 -1
  348. package/docs/design/templates/state-banner.svg +1 -1
  349. package/docs/design/templates.md +1 -1
  350. package/docs/document-baseline.md +51 -0
  351. package/docs/layout.md +52 -1
  352. package/docs/split-view.md +20 -2
  353. package/docs/sunken-panel.md +13 -0
  354. package/docs/surface-scaffold.md +66 -1
  355. package/docs/ux-demo.md +1 -0
  356. package/docs/webawesome-theme.md +6 -2
  357. package/llms.txt +125 -16
  358. package/package.json +89 -1
  359. package/dist/chunk-3DXHNLME.js.map +0 -1
  360. package/dist/chunk-3PO7JEK7.js.map +0 -1
  361. package/dist/chunk-3XPGJUUQ.js.map +0 -1
  362. package/dist/chunk-4Y4L5YEI.js +0 -66
  363. package/dist/chunk-4Y4L5YEI.js.map +0 -1
  364. package/dist/chunk-75YOTZ25.js.map +0 -1
  365. package/dist/chunk-7QQ3HE47.js.map +0 -1
  366. package/dist/chunk-A7DYEERU.js +0 -59
  367. package/dist/chunk-A7DYEERU.js.map +0 -1
  368. package/dist/chunk-B3TROLC2.js.map +0 -1
  369. package/dist/chunk-BYHGRKC3.js.map +0 -1
  370. package/dist/chunk-DL55BSQX.js.map +0 -1
  371. package/dist/chunk-FL6J644M.js.map +0 -1
  372. package/dist/chunk-GIUOXAVL.js.map +0 -1
  373. package/dist/chunk-IOS2NXW7.js.map +0 -1
  374. package/dist/chunk-J3AWE5I4.js +0 -50
  375. package/dist/chunk-J3AWE5I4.js.map +0 -1
  376. package/dist/chunk-LAZLBC2Q.js.map +0 -1
  377. package/dist/chunk-MORVLMDG.js.map +0 -1
  378. package/dist/chunk-MTCTX25G.js.map +0 -1
  379. package/dist/chunk-O27D24CA.js.map +0 -1
  380. package/dist/chunk-PGL6TXFW.js.map +0 -1
  381. package/dist/chunk-QCLLBMLA.js.map +0 -1
  382. package/dist/chunk-QQICWWNX.js.map +0 -1
  383. package/dist/chunk-TKDDTLG5.js.map +0 -1
  384. package/dist/chunk-TNG3XKHB.js.map +0 -1
  385. package/dist/chunk-XKZPBRU7.js.map +0 -1
@@ -0,0 +1,161 @@
1
+ /* A selectable summary: a full-width option on the base surface, a container
2
+ for its own compaction, with a hairline divider below each list row. */
3
+ .kui-summary-row {
4
+ --_kui-summary-row-rail: transparent;
5
+ --_kui-summary-row-radius: var(
6
+ --kui-layout-rounded-radius,
7
+ calc(1px + 0.6875rem)
8
+ );
9
+ --_kui-summary-row-title-lines: 2;
10
+ position: relative;
11
+ display: block;
12
+ width: 100%;
13
+ min-width: 0;
14
+ overflow: hidden;
15
+ box-sizing: border-box;
16
+ border: 1px solid transparent;
17
+ border-block-end-color: var(--kui-color-neutral-border-quiet);
18
+ border-radius: 0;
19
+ color: var(--kui-color-text);
20
+ background: var(--kui-color-surface);
21
+ cursor: pointer;
22
+ outline: none;
23
+ container-type: inline-size;
24
+ user-select: none;
25
+ }
26
+
27
+ .kui-summary-row[data-presentation="card"] {
28
+ --_kui-summary-row-title-lines: 4;
29
+ border-color: transparent;
30
+ border-radius: var(--_kui-summary-row-radius);
31
+ }
32
+
33
+ .kui-summary-row[data-list-edge="start"] {
34
+ border-start-start-radius: var(--_kui-summary-row-radius);
35
+ border-start-end-radius: var(--_kui-summary-row-radius);
36
+ }
37
+ .kui-summary-row[data-list-edge="end"] {
38
+ border-end-start-radius: var(--_kui-summary-row-radius);
39
+ border-end-end-radius: var(--_kui-summary-row-radius);
40
+ }
41
+ .kui-summary-row[data-list-edge="only"] {
42
+ border-radius: var(--_kui-summary-row-radius);
43
+ }
44
+
45
+ .kui-summary-row[data-defer="true"] {
46
+ content-visibility: auto;
47
+ contain-intrinsic-size: auto 4.5rem;
48
+ }
49
+
50
+ .kui-summary-row:hover {
51
+ border-color: var(--kui-color-brand-border-normal);
52
+ }
53
+
54
+ .kui-summary-row:focus-visible {
55
+ box-shadow: 0 0 0 3px
56
+ color-mix(in srgb, var(--kui-color-text-link) 24%, transparent);
57
+ }
58
+
59
+ .kui-summary-row[data-selected="true"] {
60
+ border-color: var(--kui-color-brand-border-normal);
61
+ background: var(--kui-color-brand-fill-quiet);
62
+ }
63
+
64
+ .kui-summary-row[data-dimmed="true"]:not(:hover, [data-selected="true"]) {
65
+ opacity: 0.55;
66
+ }
67
+
68
+ /* The leading state rail. */
69
+ .kui-summary-row__rail {
70
+ position: absolute;
71
+ inset: 0 auto 0 0;
72
+ width: 0.25rem;
73
+ background: var(--_kui-summary-row-rail);
74
+ }
75
+ .kui-summary-row[data-rail="neutral"] {
76
+ --_kui-summary-row-rail: var(--kui-color-neutral-on-quiet);
77
+ }
78
+ .kui-summary-row[data-rail="info"] {
79
+ --_kui-summary-row-rail: var(--kui-color-brand-fill-loud);
80
+ }
81
+ .kui-summary-row[data-rail="pop"] {
82
+ --_kui-summary-row-rail: var(--kui-color-pop-fill-loud);
83
+ }
84
+ .kui-summary-row[data-rail="success"] {
85
+ --_kui-summary-row-rail: var(--kui-color-success-fill-loud);
86
+ }
87
+ .kui-summary-row[data-rail="warning"] {
88
+ --_kui-summary-row-rail: var(--kui-color-warning-fill-loud);
89
+ }
90
+ .kui-summary-row[data-rail="danger"] {
91
+ --_kui-summary-row-rail: var(--kui-color-danger-fill-loud);
92
+ }
93
+
94
+ /* Leading glyph, then the content column. */
95
+ .kui-summary-row__body {
96
+ display: grid;
97
+ min-width: 0;
98
+ padding: var(--kui-space-xs) var(--kui-space-s);
99
+ grid-template-columns: auto minmax(0, 1fr);
100
+ align-items: start;
101
+ gap: var(--kui-space-xs);
102
+ }
103
+
104
+ .kui-summary-row__body:not(:has(> .kui-summary-row__leading)) {
105
+ grid-template-columns: minmax(0, 1fr);
106
+ }
107
+
108
+ .kui-summary-row__leading {
109
+ display: grid;
110
+ min-width: 1.5rem;
111
+ min-height: 1.5rem;
112
+ color: var(--kui-color-neutral-on-quiet);
113
+ place-items: center;
114
+ }
115
+
116
+ .kui-summary-row[data-presentation="card"] .kui-summary-row__leading {
117
+ min-width: 1.125rem;
118
+ min-height: 1.25rem;
119
+ }
120
+
121
+ .kui-summary-row__content {
122
+ display: grid;
123
+ min-width: 0;
124
+ gap: var(--kui-space-2xs);
125
+ }
126
+
127
+ /* The identity line clips at its line budget; the trailing meta floats to its
128
+ end so the title wraps around it. */
129
+ .kui-summary-row__title {
130
+ min-width: 0;
131
+ max-height: calc(var(--_kui-summary-row-title-lines) * 1.3em);
132
+ overflow: hidden;
133
+ line-height: 1.3;
134
+ overflow-wrap: anywhere;
135
+ }
136
+
137
+ .kui-summary-row__trailing {
138
+ float: inline-end;
139
+ margin-inline-start: var(--kui-space-s);
140
+ color: var(--kui-color-text-quiet);
141
+ font-size: var(--kui-font-2xs);
142
+ line-height: calc(1.3em * 1.15);
143
+ white-space: nowrap;
144
+ }
145
+
146
+ .kui-summary-row__metadata {
147
+ display: flex;
148
+ min-width: 0;
149
+ color: var(--kui-color-neutral-on-quiet);
150
+ flex-wrap: wrap;
151
+ align-items: center;
152
+ gap: var(--kui-space-2xs) var(--kui-space-xs);
153
+ font-size: var(--kui-font-xs);
154
+ }
155
+
156
+ /* A narrow row tightens its gaps. */
157
+ @container (max-width: 24rem) {
158
+ .kui-summary-row__body {
159
+ padding: var(--kui-space-xs);
160
+ }
161
+ }
@@ -105,3 +105,79 @@
105
105
  font-weight: var(--kui-font-weight-semibold);
106
106
  text-align: end;
107
107
  }
108
+
109
+ /* `labelWidth`: a minimum label column; the value takes the rest of the row
110
+ (never wider than the row, so a narrow table still fits). */
111
+ .kui-value-table[data-label-width] .kui-value-table__row {
112
+ grid-template-columns: var(
113
+ --kui-value-table-row-columns,
114
+ minmax(min(var(--_kui-value-table-label-min), 100%), auto) minmax(0, 1fr)
115
+ );
116
+ }
117
+
118
+ /* Only a table that stacks below a width becomes a size container. Size
119
+ containment drops its content-based width, so it fills its container's
120
+ width (inside its own inline margins) instead; a table without
121
+ `stackBelow` keeps sizing to content in shrink-to-fit contexts. */
122
+ .kui-value-table[data-stack-below] {
123
+ box-sizing: border-box;
124
+ width: calc(100% - 2 * var(--kui-layout-inline-margin, 0.5rem));
125
+ container: kui-value-table / inline-size;
126
+ }
127
+
128
+ /* Stacked rows: each value sits under its label and starts at the label's
129
+ text edge (after a leading icon). */
130
+ .kui-value-table[data-presentation="stacked"] .kui-value-table__row {
131
+ grid-template-columns: minmax(0, 1fr);
132
+ row-gap: var(--kui-space-2xs);
133
+ }
134
+ .kui-value-table[data-presentation="stacked"] .kui-value-table__row dd {
135
+ justify-content: flex-start;
136
+ text-align: start;
137
+ }
138
+ .kui-value-table[data-presentation="stacked"]
139
+ .kui-value-table__row[data-has-icon="true"]
140
+ dd {
141
+ padding-inline-start: calc(
142
+ var(--_kui-value-table-separator-start) -
143
+ var(--_kui-value-table-inline-padding)
144
+ );
145
+ }
146
+
147
+ @container kui-value-table (max-width: 36rem) {
148
+ .kui-value-table[data-stack-below="narrow"] .kui-value-table__row {
149
+ grid-template-columns: minmax(0, 1fr);
150
+ row-gap: var(--kui-space-2xs);
151
+ }
152
+ .kui-value-table[data-stack-below="narrow"] .kui-value-table__row dd {
153
+ justify-content: flex-start;
154
+ text-align: start;
155
+ }
156
+ .kui-value-table[data-stack-below="narrow"]
157
+ .kui-value-table__row[data-has-icon="true"]
158
+ dd {
159
+ padding-inline-start: calc(
160
+ var(--_kui-value-table-separator-start) -
161
+ var(--_kui-value-table-inline-padding)
162
+ );
163
+ }
164
+ }
165
+
166
+ @container kui-value-table (max-width: 32rem) {
167
+ .kui-value-table[data-stack-below="compact"] .kui-value-table__row {
168
+ grid-template-columns: minmax(0, 1fr);
169
+ row-gap: var(--kui-space-2xs);
170
+ }
171
+ .kui-value-table[data-stack-below="compact"] .kui-value-table__row dd {
172
+ justify-content: flex-start;
173
+ text-align: start;
174
+ }
175
+ .kui-value-table[data-stack-below="compact"]
176
+ .kui-value-table__row[data-has-icon="true"]
177
+ dd {
178
+ padding-inline-start: calc(
179
+ var(--_kui-value-table-separator-start) -
180
+ var(--_kui-value-table-inline-padding)
181
+ );
182
+ }
183
+ }
@@ -23,6 +23,33 @@
23
23
  white-space: nowrap;
24
24
  }
25
25
 
26
+ /* A leading icon sits 4px before the text and inherits the badge's color. */
27
+ .kui-badge[data-has-icon="true"] {
28
+ gap: 0.25rem;
29
+ }
30
+
31
+ /* maxWidth caps the badge; the label truncates with an ellipsis and the
32
+ badge may shrink below the cap in a tight flex row. */
33
+ .kui-badge[data-truncate="true"] {
34
+ max-width: var(--_kui-badge-max-width);
35
+ flex: 0 1 auto;
36
+ }
37
+
38
+ .kui-badge__label {
39
+ min-width: 0;
40
+ overflow: hidden;
41
+ text-overflow: ellipsis;
42
+ }
43
+
44
+ .kui-badge__icon {
45
+ display: inline-grid;
46
+ width: 1em;
47
+ height: 1em;
48
+ color: inherit;
49
+ place-items: center;
50
+ flex: none;
51
+ }
52
+
26
53
  .kui-badge[data-tone="info"] {
27
54
  --_kui-badge-fill-quiet: var(--kui-color-brand-fill-quiet);
28
55
  --_kui-badge-fill-solid: var(--kui-color-brand-on-fill);
@@ -0,0 +1,60 @@
1
+ /* The host only places the stack: the composed banners own their fill,
2
+ border, and padding. A native popover's UA box (inset 0, auto margin,
3
+ border, padding, Canvas background, scrolling) is reset so the stack sizes
4
+ to its banners in the chosen corner. Stacked banners share the widest
5
+ banner's width, so a stack reads as one aligned column. */
6
+ .kui-corner-status {
7
+ --_kui-corner-status-gutter: var(
8
+ --kui-corner-status-gutter,
9
+ var(--kui-space-m)
10
+ );
11
+ display: flex;
12
+ box-sizing: border-box;
13
+ flex-direction: column;
14
+ gap: var(--kui-space-xs);
15
+ width: max-content;
16
+ max-width: 100%;
17
+ margin: 0;
18
+ padding: 0;
19
+ overflow: visible;
20
+ border: 0;
21
+ color: inherit;
22
+ background: transparent;
23
+ }
24
+ .kui-corner-status[data-presentation="overlay"] {
25
+ position: fixed;
26
+ z-index: var(--kui-corner-status-z-index, 1000);
27
+ inset: auto;
28
+ max-width: calc(
29
+ 100vw - 2 * var(--_kui-corner-status-gutter) -
30
+ var(--kui-safe-area-inline-start) - var(--kui-safe-area-inline-end)
31
+ );
32
+ }
33
+ /* A browser with the Popover API hides the host until wireCornerStatus opens
34
+ it; without the API the fixed host simply shows. */
35
+ .kui-corner-status[data-presentation="overlay"][popover]:not(:popover-open) {
36
+ display: none;
37
+ }
38
+ .kui-corner-status[data-placement^="top"] {
39
+ inset-block-start: calc(
40
+ var(--_kui-corner-status-gutter) + var(--kui-safe-area-block-start)
41
+ );
42
+ }
43
+ .kui-corner-status[data-placement^="bottom"] {
44
+ inset-block-end: calc(
45
+ var(--_kui-corner-status-gutter) + var(--kui-safe-area-block-end)
46
+ );
47
+ }
48
+ .kui-corner-status[data-placement$="-start"] {
49
+ inset-inline-start: calc(
50
+ var(--_kui-corner-status-gutter) + var(--kui-safe-area-inline-start)
51
+ );
52
+ }
53
+ .kui-corner-status[data-placement$="-end"] {
54
+ inset-inline-end: calc(
55
+ var(--_kui-corner-status-gutter) + var(--kui-safe-area-inline-end)
56
+ );
57
+ }
58
+ .kui-corner-status[data-presentation="embedded"] {
59
+ position: static;
60
+ }
@@ -0,0 +1,127 @@
1
+ /* A fixed, layout-free host at the top edge: it allocates no space and never
2
+ takes the pointer. Its strip and pill scale in from the edge while busy. */
3
+ .kui-edge-activity-indicator {
4
+ --_kui-edge-activity-indicator-fill: var(--kui-color-brand-fill-loud);
5
+ --_kui-edge-activity-indicator-on: var(--kui-color-brand-on-loud);
6
+ position: fixed;
7
+ z-index: var(--kui-edge-activity-indicator-z-index, 2147483000);
8
+ inset: var(--kui-safe-area-block-start, 0px) 0 auto 0;
9
+ height: 0;
10
+ pointer-events: none;
11
+ }
12
+
13
+ .kui-edge-activity-indicator[data-inset="none"] {
14
+ inset-block-start: 0;
15
+ }
16
+
17
+ .kui-edge-activity-indicator[data-tone="neutral"] {
18
+ --_kui-edge-activity-indicator-fill: var(--kui-color-neutral-fill-loud);
19
+ --_kui-edge-activity-indicator-on: var(--kui-color-neutral-on-loud);
20
+ }
21
+ .kui-edge-activity-indicator[data-tone="pop"] {
22
+ --_kui-edge-activity-indicator-fill: var(--kui-color-pop-fill-loud);
23
+ --_kui-edge-activity-indicator-on: var(--kui-color-pop-on-loud);
24
+ }
25
+ .kui-edge-activity-indicator[data-tone="success"] {
26
+ --_kui-edge-activity-indicator-fill: var(--kui-color-success-fill-loud);
27
+ --_kui-edge-activity-indicator-on: var(--kui-color-success-on-loud);
28
+ }
29
+ .kui-edge-activity-indicator[data-tone="warning"] {
30
+ --_kui-edge-activity-indicator-fill: var(--kui-color-warning-fill-loud);
31
+ --_kui-edge-activity-indicator-on: var(--kui-color-warning-on-loud);
32
+ }
33
+ .kui-edge-activity-indicator[data-tone="danger"] {
34
+ --_kui-edge-activity-indicator-fill: var(--kui-color-danger-fill-loud);
35
+ --_kui-edge-activity-indicator-on: var(--kui-color-danger-on-loud);
36
+ }
37
+
38
+ /* 3px bars on a 5px pitch, drawn by one gradient. A repeating wave mask (1px
39
+ to 4px tall, hanging from the edge) slides across them, so each bar grows
40
+ and shrinks slightly out of phase with its neighbor. */
41
+ .kui-edge-activity-indicator__strip,
42
+ .kui-edge-activity-indicator__message {
43
+ opacity: 0;
44
+ transform: scaleY(0);
45
+ transform-origin: top center;
46
+ transition:
47
+ opacity 200ms ease,
48
+ transform 200ms ease;
49
+ }
50
+
51
+ .kui-edge-activity-indicator__strip {
52
+ height: 0.25rem;
53
+ background: repeating-linear-gradient(
54
+ 90deg,
55
+ var(--_kui-edge-activity-indicator-fill) 0 0.1875rem,
56
+ transparent 0.1875rem 0.3125rem
57
+ );
58
+ mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='4' viewBox='0 0 100 4'%3E%3Cpath d='M0 0H100L100 1.00 L98 1.01 L96 1.05 L94 1.11 L92 1.19 L90 1.29 L88 1.41 L86 1.54 L84 1.70 L82 1.86 L80 2.04 L78 2.22 L76 2.41 L74 2.59 L72 2.78 L70 2.96 L68 3.14 L66 3.30 L64 3.46 L62 3.59 L60 3.71 L58 3.81 L56 3.89 L54 3.95 L52 3.99 L50 4.00 L48 3.99 L46 3.95 L44 3.89 L42 3.81 L40 3.71 L38 3.59 L36 3.46 L34 3.30 L32 3.14 L30 2.96 L28 2.78 L26 2.59 L24 2.41 L22 2.22 L20 2.04 L18 1.86 L16 1.70 L14 1.54 L12 1.41 L10 1.29 L8 1.19 L6 1.11 L4 1.05 L2 1.01 L0 1.00Z'/%3E%3C/svg%3E")
59
+ 0 0 / 6.25rem 100% repeat-x;
60
+ animation: kui-edge-activity-indicator-wave 1s linear infinite paused;
61
+ }
62
+
63
+ .kui-edge-activity-indicator[data-busy="true"]
64
+ > .kui-edge-activity-indicator__strip {
65
+ opacity: 1;
66
+ transform: scaleY(1);
67
+ animation-play-state: running;
68
+ }
69
+
70
+ @keyframes kui-edge-activity-indicator-wave {
71
+ to {
72
+ mask-position: 6.25rem 0;
73
+ }
74
+ }
75
+
76
+ /* The status pill hangs centered from the edge, over the strip. */
77
+ .kui-edge-activity-indicator__message {
78
+ position: absolute;
79
+ inset-block-start: 0;
80
+ inset-inline-start: 50%;
81
+ max-width: calc(100vw - 2 * var(--kui-space-m));
82
+ padding: 0.125rem var(--kui-space-s);
83
+ overflow: hidden;
84
+ border-radius: 0 0 0.5rem 0.5rem;
85
+ color: var(--_kui-edge-activity-indicator-on);
86
+ background: var(--_kui-edge-activity-indicator-fill);
87
+ font-size: var(--kui-font-2xs);
88
+ line-height: 1.4;
89
+ text-overflow: ellipsis;
90
+ white-space: nowrap;
91
+ transform: translateX(-50%) scaleY(0);
92
+ }
93
+
94
+ .kui-edge-activity-indicator__message[data-visible="true"] {
95
+ opacity: 1;
96
+ transform: translateX(-50%) scaleY(1);
97
+ }
98
+
99
+ :dir(rtl) .kui-edge-activity-indicator__message {
100
+ transform: translateX(50%) scaleY(0);
101
+ }
102
+ :dir(rtl) .kui-edge-activity-indicator__message[data-visible="true"] {
103
+ transform: translateX(50%) scaleY(1);
104
+ }
105
+
106
+ /* Reduced motion: no wave and no scale; the strip and pill only fade. */
107
+ @media (prefers-reduced-motion: reduce) {
108
+ .kui-edge-activity-indicator__strip,
109
+ .kui-edge-activity-indicator__message {
110
+ transition: opacity 200ms ease;
111
+ }
112
+ .kui-edge-activity-indicator__strip,
113
+ .kui-edge-activity-indicator[data-busy="true"]
114
+ > .kui-edge-activity-indicator__strip {
115
+ mask: none;
116
+ transform: none;
117
+ animation: none;
118
+ }
119
+ .kui-edge-activity-indicator__message,
120
+ .kui-edge-activity-indicator__message[data-visible="true"] {
121
+ transform: translateX(-50%);
122
+ }
123
+ :dir(rtl) .kui-edge-activity-indicator__message,
124
+ :dir(rtl) .kui-edge-activity-indicator__message[data-visible="true"] {
125
+ transform: translateX(50%);
126
+ }
127
+ }
@@ -135,6 +135,44 @@
135
135
  var(--kui-state-banner-danger-foreground, var(--kui-color-danger-on-fill))
136
136
  );
137
137
  }
138
+ /* A strip is a full-width band at a layout edge rather than a card beside the
139
+ work: flush, square, and divided from its neighbor only on the edges it
140
+ names, in the tone's own border color. Its inline padding lands the copy on
141
+ the content-text column a card banner's copy uses (8px margin + 1px border
142
+ + 8px padding), so a strip above a pane lines up with the pane's text. */
143
+ .kui-state-banner[data-presentation="strip"] {
144
+ margin-inline: 0;
145
+ padding-block: var(--kui-space-xs);
146
+ padding-inline: calc(1px + 1rem);
147
+ border-width: 0;
148
+ border-radius: 0;
149
+ }
150
+ .kui-state-banner[data-presentation="strip"][divider-sides*="t"] {
151
+ border-top-width: 1px;
152
+ }
153
+ .kui-state-banner[data-presentation="strip"][divider-sides*="r"] {
154
+ border-right-width: 1px;
155
+ }
156
+ .kui-state-banner[data-presentation="strip"][divider-sides*="b"] {
157
+ border-bottom-width: 1px;
158
+ }
159
+ .kui-state-banner[data-presentation="strip"][divider-sides*="l"] {
160
+ border-left-width: 1px;
161
+ }
162
+ /* Inside a CornerStatus the banner floats over the page at a viewport corner:
163
+ the corner's gutter replaces the inline margin, elevation separates it from
164
+ whatever content it covers, and the translucent tone fill composites over
165
+ the opaque surface so that content never shows through the copy. */
166
+ .kui-corner-status > .kui-state-banner {
167
+ margin-inline: 0;
168
+ background:
169
+ linear-gradient(
170
+ var(--_kui-state-banner-background),
171
+ var(--_kui-state-banner-background)
172
+ ),
173
+ var(--kui-color-surface);
174
+ box-shadow: var(--kui-shadow-l);
175
+ }
138
176
  .kui-state-banner__icon {
139
177
  display: grid;
140
178
  place-items: center;
@@ -0,0 +1,154 @@
1
+ /* ChoiceChips: separated pills that wrap with the control gap. Each pill is a
2
+ <label> around a native radio, so the radio owns focus, arrow keys, and the
3
+ form value; the pill paints the radio's state through :has(). */
4
+ .kui-choice-chips {
5
+ display: flex;
6
+ min-width: 0;
7
+ max-width: 100%;
8
+ flex-wrap: wrap;
9
+ align-items: center;
10
+ gap: var(--kui-layout-control-gap, 0.5rem);
11
+ }
12
+
13
+ .kui-choice-chips__chip {
14
+ --_kui-choice-chips-border: var(--kui-color-neutral-border-normal);
15
+
16
+ position: relative;
17
+ display: inline-flex;
18
+ min-width: 0;
19
+ min-height: 2rem;
20
+ padding-inline: 0.75rem;
21
+ box-sizing: border-box;
22
+ border: 1px solid var(--_kui-choice-chips-border);
23
+ border-radius: var(--kui-layout-pill-radius, calc(1px + 1.3125rem));
24
+ color: var(--kui-color-text);
25
+ background: var(--kui-color-surface);
26
+ align-items: center;
27
+ gap: 0.375rem;
28
+ font-size: var(--kui-font-s);
29
+ font-weight: var(--kui-font-weight-semibold, 600);
30
+ line-height: 1;
31
+ white-space: nowrap;
32
+ cursor: pointer;
33
+ user-select: none;
34
+ transition-property: background, border-color, box-shadow;
35
+ transition-duration: 120ms;
36
+ }
37
+
38
+ .kui-choice-chips[data-size="compact"] .kui-choice-chips__chip {
39
+ min-height: 1.5rem;
40
+ padding-inline: 0.5rem;
41
+ gap: 0.25rem;
42
+ font-size: var(--kui-font-xs);
43
+ }
44
+
45
+ /* The native radio covers the pill so a pointer press lands on it directly,
46
+ but paints nothing: the pill draws its checked and focus state. */
47
+ .kui-choice-chips__input {
48
+ position: absolute;
49
+ inset: 0;
50
+ width: 100%;
51
+ height: 100%;
52
+ margin: 0;
53
+ border-radius: inherit;
54
+ opacity: 0;
55
+ cursor: inherit;
56
+ appearance: none;
57
+ }
58
+
59
+ .kui-choice-chips__chip:hover:not([data-disabled]):not(
60
+ :has(> .kui-choice-chips__input:checked)
61
+ ) {
62
+ background: var(--kui-color-neutral-fill-quiet);
63
+ }
64
+
65
+ .kui-choice-chips__chip:has(> .kui-choice-chips__input:checked) {
66
+ --_kui-choice-chips-border: var(--kui-color-brand-border-loud);
67
+
68
+ color: var(--kui-color-brand-on-fill);
69
+ background: var(--kui-color-brand-fill-normal);
70
+ /* A second pixel of border marks the selection without relying on hue. */
71
+ box-shadow: inset 0 0 0 1px var(--_kui-choice-chips-border);
72
+ }
73
+
74
+ .kui-choice-chips__chip:has(> .kui-choice-chips__input:focus-visible) {
75
+ outline: var(--kui-focus-ring);
76
+ outline-offset: 2px;
77
+ }
78
+
79
+ .kui-choice-chips__chip[data-disabled] {
80
+ opacity: 0.45;
81
+ cursor: not-allowed;
82
+ }
83
+
84
+ .kui-choice-chips__swatch {
85
+ width: 0.75rem;
86
+ height: 0.75rem;
87
+ box-sizing: border-box;
88
+ border-radius: 50%;
89
+ background: var(--_kui-choice-chips-swatch, transparent);
90
+ /* An inner edge keeps a pale swatch visible against the pill. */
91
+ box-shadow: inset 0 0 0 1px
92
+ color-mix(in srgb, var(--kui-color-text) 20%, transparent);
93
+ flex: none;
94
+ }
95
+
96
+ .kui-choice-chips[data-size="compact"] .kui-choice-chips__swatch {
97
+ width: 0.625rem;
98
+ height: 0.625rem;
99
+ }
100
+
101
+ /* The no-color swatch: an outlined dot struck through from corner to corner. */
102
+ .kui-choice-chips__swatch[data-swatch="transparent"] {
103
+ position: relative;
104
+ box-shadow: inset 0 0 0 1px var(--kui-color-neutral-border-loud);
105
+ }
106
+
107
+ .kui-choice-chips__swatch[data-swatch="transparent"]::after {
108
+ position: absolute;
109
+ top: 0;
110
+ left: calc(50% - 0.75px);
111
+ width: 1.5px;
112
+ height: 100%;
113
+ border-radius: 1px;
114
+ background: var(--kui-color-danger-on-quiet);
115
+ content: "";
116
+ transform: rotate(45deg);
117
+ }
118
+
119
+ .kui-choice-chips__icon {
120
+ display: inline-grid;
121
+ width: 1em;
122
+ height: 1em;
123
+ color: inherit;
124
+ place-items: center;
125
+ flex: none;
126
+ }
127
+
128
+ .kui-choice-chips__label {
129
+ min-width: 0;
130
+ overflow: hidden;
131
+ text-overflow: ellipsis;
132
+ }
133
+
134
+ @media (forced-colors: active) {
135
+ .kui-choice-chips__chip {
136
+ border-color: ButtonBorder;
137
+ }
138
+
139
+ .kui-choice-chips__chip:has(> .kui-choice-chips__input:checked) {
140
+ border-color: Highlight;
141
+ color: HighlightText;
142
+ background: Highlight;
143
+ }
144
+
145
+ .kui-choice-chips__swatch {
146
+ forced-color-adjust: none;
147
+ }
148
+ }
149
+
150
+ @media (prefers-reduced-motion: reduce) {
151
+ .kui-choice-chips__chip {
152
+ transition: none;
153
+ }
154
+ }