@logicplanes/kaeso-ui 0.4.3 → 0.4.5

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 (490) hide show
  1. package/ai/component-guides.md +279 -98
  2. package/ai/component-registry.json +352 -236
  3. package/ai/component-registry.md +241 -219
  4. package/ai/icons.md +2 -2
  5. package/ai/tokens.md +18 -14
  6. package/dist/blocks/delete-resource.js +3 -3
  7. package/dist/blocks/delete-resource.js.map +1 -1
  8. package/dist/blocks/pages.js +47 -42
  9. package/dist/blocks/pages.js.map +1 -1
  10. package/dist/blocks/resource-list.js +68 -55
  11. package/dist/blocks/resource-list.js.map +1 -1
  12. package/dist/chunks/agent-avatar-DHieggHK.js +188 -0
  13. package/dist/chunks/agent-avatar-DHieggHK.js.map +1 -0
  14. package/dist/chunks/app-frame-DysOel2X.js +232 -0
  15. package/dist/chunks/app-frame-DysOel2X.js.map +1 -0
  16. package/dist/chunks/arrow-focus-B0KdRFX8.js +20 -0
  17. package/dist/chunks/arrow-focus-B0KdRFX8.js.map +1 -0
  18. package/dist/chunks/avatar-CYNMK7uY.js +110 -0
  19. package/dist/chunks/avatar-CYNMK7uY.js.map +1 -0
  20. package/dist/chunks/badge-C0GC3B9X.js +27 -0
  21. package/dist/chunks/badge-C0GC3B9X.js.map +1 -0
  22. package/dist/chunks/banner-B3DGLTBu.js +88 -0
  23. package/dist/chunks/banner-B3DGLTBu.js.map +1 -0
  24. package/dist/chunks/button-IblhXUyZ.js +202 -0
  25. package/dist/chunks/button-IblhXUyZ.js.map +1 -0
  26. package/dist/chunks/{calendar-BWaf2MXc.js → calendar-Dc6_dl0f.js} +4 -4
  27. package/dist/chunks/calendar-Dc6_dl0f.js.map +1 -0
  28. package/dist/chunks/checkbox-9tbimmF3.js +141 -0
  29. package/dist/chunks/checkbox-9tbimmF3.js.map +1 -0
  30. package/dist/chunks/{cn-Dj6sRgkF.js → cn-BjnOAUrA.js} +45 -4
  31. package/dist/chunks/cn-BjnOAUrA.js.map +1 -0
  32. package/dist/chunks/code-block-64e-Cy1S.js +346 -0
  33. package/dist/chunks/code-block-64e-Cy1S.js.map +1 -0
  34. package/dist/chunks/code-block-KIvuE8jg.js +352 -0
  35. package/dist/chunks/code-block-KIvuE8jg.js.map +1 -0
  36. package/dist/chunks/{code-tqj0uhBL.js → code-xqjww4Pv.js} +5 -6
  37. package/dist/chunks/code-xqjww4Pv.js.map +1 -0
  38. package/dist/chunks/combobox-DkcjkWc6.js +352 -0
  39. package/dist/chunks/combobox-DkcjkWc6.js.map +1 -0
  40. package/dist/chunks/command-list-CypqsC4T.js +456 -0
  41. package/dist/chunks/command-list-CypqsC4T.js.map +1 -0
  42. package/dist/chunks/{copy-button-FJvPJn72.js → copy-button-CwU8t_9_.js} +22 -15
  43. package/dist/chunks/copy-button-CwU8t_9_.js.map +1 -0
  44. package/dist/chunks/core-CmK-8ObW.js +505 -0
  45. package/dist/chunks/core-CmK-8ObW.js.map +1 -0
  46. package/dist/chunks/data-table-CqY8_6IS.js +581 -0
  47. package/dist/chunks/data-table-CqY8_6IS.js.map +1 -0
  48. package/dist/chunks/date-popup-DAnjptFt.js +58 -0
  49. package/dist/chunks/date-popup-DAnjptFt.js.map +1 -0
  50. package/dist/chunks/{de-CPXJh9cq.js → de-CqC4aSIV.js} +81 -40
  51. package/dist/chunks/de-CqC4aSIV.js.map +1 -0
  52. package/dist/chunks/{dialog-Cg9A_6SF.js → dialog-2zb6ClNR.js} +156 -134
  53. package/dist/chunks/dialog-2zb6ClNR.js.map +1 -0
  54. package/dist/chunks/disclosure-BtYRTDO3.js +22 -0
  55. package/dist/chunks/disclosure-BtYRTDO3.js.map +1 -0
  56. package/dist/chunks/domain-obd_w9xk.js +28 -0
  57. package/dist/chunks/domain-obd_w9xk.js.map +1 -0
  58. package/dist/chunks/{empty-DvhyMXQq.js → empty-BpiUgGzm.js} +2 -2
  59. package/dist/chunks/{empty-DvhyMXQq.js.map → empty-BpiUgGzm.js.map} +1 -1
  60. package/dist/chunks/{field-TviMvYa2.js → field-D7m-yl-D.js} +37 -34
  61. package/dist/chunks/field-D7m-yl-D.js.map +1 -0
  62. package/dist/chunks/{icon-D7ja-_Yk.js → icon-CBzOwqrX.js} +7 -6
  63. package/dist/chunks/{icon-D7ja-_Yk.js.map → icon-CBzOwqrX.js.map} +1 -1
  64. package/dist/chunks/icon-CPJWE2N-.js +95 -0
  65. package/dist/chunks/{icon-DVooQfk4.js.map → icon-CPJWE2N-.js.map} +1 -1
  66. package/dist/chunks/{icon-button-CrdF_eMG.js → icon-button-Dfwpvmav.js} +7 -6
  67. package/dist/chunks/icon-button-Dfwpvmav.js.map +1 -0
  68. package/dist/chunks/{identity-BmhQ6BQ-.js → identity-3Foi5F8w.js} +7 -7
  69. package/dist/chunks/{identity-BmhQ6BQ-.js.map → identity-3Foi5F8w.js.map} +1 -1
  70. package/dist/chunks/{input-2VJuj_M4.js → input-Bo5-UZg2.js} +15 -9
  71. package/dist/chunks/input-Bo5-UZg2.js.map +1 -0
  72. package/dist/chunks/{input-group-DQ_4DoXg.js → input-group-jPcK9T_a.js} +42 -29
  73. package/dist/chunks/input-group-jPcK9T_a.js.map +1 -0
  74. package/dist/chunks/iso-field-DoqHBg8n.js +52 -0
  75. package/dist/chunks/iso-field-DoqHBg8n.js.map +1 -0
  76. package/dist/chunks/json-view-DZ2nL2Ir.js +253 -0
  77. package/dist/chunks/json-view-DZ2nL2Ir.js.map +1 -0
  78. package/dist/chunks/{kbd-BF1vKXJf.js → kbd-8A0ML_up.js} +30 -28
  79. package/dist/chunks/kbd-8A0ML_up.js.map +1 -0
  80. package/dist/chunks/label-DW24Aj0Z.js +26 -0
  81. package/dist/chunks/label-DW24Aj0Z.js.map +1 -0
  82. package/dist/chunks/{link-KWI7PevW.js → link-CMjkcLQK.js} +14 -14
  83. package/dist/chunks/link-CMjkcLQK.js.map +1 -0
  84. package/dist/chunks/list-B4G-sWwV.js +540 -0
  85. package/dist/chunks/list-B4G-sWwV.js.map +1 -0
  86. package/dist/chunks/{loader-DCfPndXa.js → loader-zo8CCIGJ.js} +2 -2
  87. package/dist/chunks/{loader-DCfPndXa.js.map → loader-zo8CCIGJ.js.map} +1 -1
  88. package/dist/chunks/markdown-C565aBR7.js +338 -0
  89. package/dist/chunks/markdown-C565aBR7.js.map +1 -0
  90. package/dist/chunks/menu-Clvv6ftq.js +485 -0
  91. package/dist/chunks/menu-Clvv6ftq.js.map +1 -0
  92. package/dist/chunks/merge-refs-BN1FyQt9.js +20 -0
  93. package/dist/chunks/merge-refs-BN1FyQt9.js.map +1 -0
  94. package/dist/chunks/meter-CASMHlxl.js +100 -0
  95. package/dist/chunks/meter-CASMHlxl.js.map +1 -0
  96. package/dist/chunks/nav-sheet-Dt6JSvzX.js +67 -0
  97. package/dist/chunks/nav-sheet-Dt6JSvzX.js.map +1 -0
  98. package/dist/chunks/{nav-wordmark-_pjheAsZ.js → nav-wordmark-J4pB_vjr.js} +4 -8
  99. package/dist/chunks/nav-wordmark-J4pB_vjr.js.map +1 -0
  100. package/dist/chunks/page-header-kS5tdmvb.js +45 -0
  101. package/dist/chunks/page-header-kS5tdmvb.js.map +1 -0
  102. package/dist/chunks/pagination-D7fAm8qg.js +147 -0
  103. package/dist/chunks/pagination-D7fAm8qg.js.map +1 -0
  104. package/dist/chunks/picker-popover-1FHb1LQG.js +119 -0
  105. package/dist/chunks/picker-popover-1FHb1LQG.js.map +1 -0
  106. package/dist/chunks/popover-Bl5QYqnh.js +51 -0
  107. package/dist/chunks/popover-Bl5QYqnh.js.map +1 -0
  108. package/dist/chunks/{portal-context-BBbzDKmY.js → portal-context-CTatR2Z8.js} +14 -4
  109. package/dist/chunks/portal-context-CTatR2Z8.js.map +1 -0
  110. package/dist/chunks/{radio-CDDFpdtL.js → radio-C6GtzF_t.js} +38 -23
  111. package/dist/chunks/radio-C6GtzF_t.js.map +1 -0
  112. package/dist/chunks/range-popup-lGiZsG3s.js +160 -0
  113. package/dist/chunks/range-popup-lGiZsG3s.js.map +1 -0
  114. package/dist/chunks/reasoning-frame-C3HdQRRS.js +51 -0
  115. package/dist/chunks/reasoning-frame-C3HdQRRS.js.map +1 -0
  116. package/dist/chunks/release-art-ChiT4T2S.js +582 -0
  117. package/dist/chunks/release-art-ChiT4T2S.js.map +1 -0
  118. package/dist/chunks/rights-B68ocZuq.js +312 -0
  119. package/dist/chunks/rights-B68ocZuq.js.map +1 -0
  120. package/dist/chunks/{scroll-area-D8MD7Vpo.js → scroll-area-_Ljh4-bG.js} +11 -6
  121. package/dist/chunks/scroll-area-_Ljh4-bG.js.map +1 -0
  122. package/dist/chunks/section-CFBYhsUi.js +77 -0
  123. package/dist/chunks/section-CFBYhsUi.js.map +1 -0
  124. package/dist/chunks/section-header-DU1Q4Tdf.js +28 -0
  125. package/dist/chunks/section-header-DU1Q4Tdf.js.map +1 -0
  126. package/dist/chunks/segmented-D9i1avik.js +119 -0
  127. package/dist/chunks/segmented-D9i1avik.js.map +1 -0
  128. package/dist/chunks/select-BqjmQOqx.js +222 -0
  129. package/dist/chunks/select-BqjmQOqx.js.map +1 -0
  130. package/dist/chunks/{separator-D7TzNHmX.js → separator-BNWf6BBj.js} +13 -8
  131. package/dist/chunks/separator-BNWf6BBj.js.map +1 -0
  132. package/dist/chunks/sidebar-Dq7oGOje.js +664 -0
  133. package/dist/chunks/sidebar-Dq7oGOje.js.map +1 -0
  134. package/dist/chunks/{sidebar-menu-BN3jkTlK.js → sidebar-menu-QSSNu1jJ.js} +2 -2
  135. package/dist/chunks/{sidebar-menu-BN3jkTlK.js.map → sidebar-menu-QSSNu1jJ.js.map} +1 -1
  136. package/dist/chunks/{skeleton-Dcz57Zyp.js → skeleton-D-qk3mes.js} +3 -3
  137. package/dist/chunks/skeleton-D-qk3mes.js.map +1 -0
  138. package/dist/chunks/slider-CcE8GtuV.js +58 -0
  139. package/dist/chunks/slider-CcE8GtuV.js.map +1 -0
  140. package/dist/chunks/{status-dot-QJTF0Yv4.js → status-dot-CP6runiC.js} +4 -4
  141. package/dist/chunks/{status-dot-QJTF0Yv4.js.map → status-dot-CP6runiC.js.map} +1 -1
  142. package/dist/chunks/{styles-CVJU9t9v.js → styles-hkFkoBbi.js} +2 -2
  143. package/dist/chunks/{styles-CVJU9t9v.js.map → styles-hkFkoBbi.js.map} +1 -1
  144. package/dist/chunks/{swap-text-Dr0Irxz6.js → swap-text-SlUjrTlG.js} +3 -3
  145. package/dist/chunks/swap-text-SlUjrTlG.js.map +1 -0
  146. package/dist/chunks/switch-ngywMQdl.js +76 -0
  147. package/dist/chunks/switch-ngywMQdl.js.map +1 -0
  148. package/dist/chunks/table-CTK5E0J7.js +102 -0
  149. package/dist/chunks/table-CTK5E0J7.js.map +1 -0
  150. package/dist/chunks/tag-BGr6lTSV.js +100 -0
  151. package/dist/chunks/tag-BGr6lTSV.js.map +1 -0
  152. package/dist/chunks/{text-CIXH8rmT.js → text-DkKdTVUf.js} +9 -9
  153. package/dist/chunks/text-DkKdTVUf.js.map +1 -0
  154. package/dist/chunks/{textarea--4FRL3Pb.js → textarea-CO0HP6fK.js} +47 -36
  155. package/dist/chunks/textarea-CO0HP6fK.js.map +1 -0
  156. package/dist/chunks/timeseries-Ck-q0wWn.js +381 -0
  157. package/dist/chunks/timeseries-Ck-q0wWn.js.map +1 -0
  158. package/dist/chunks/toolbar-u0Gm7Q7-.js +61 -0
  159. package/dist/chunks/toolbar-u0Gm7Q7-.js.map +1 -0
  160. package/dist/chunks/tooltip-Tkm-urbi.js +202 -0
  161. package/dist/chunks/tooltip-Tkm-urbi.js.map +1 -0
  162. package/dist/chunks/tooltip-root-BC_RNNiP.js +70 -0
  163. package/dist/chunks/tooltip-root-BC_RNNiP.js.map +1 -0
  164. package/dist/chunks/truncated-d1afmUJT.js +33 -0
  165. package/dist/chunks/truncated-d1afmUJT.js.map +1 -0
  166. package/dist/chunks/use-coarse-pointer-Ml5oE6oX.js +28 -0
  167. package/dist/chunks/use-coarse-pointer-Ml5oE6oX.js.map +1 -0
  168. package/dist/chunks/use-hydrating-COtYVRo4.js +8 -0
  169. package/dist/chunks/use-hydrating-COtYVRo4.js.map +1 -0
  170. package/dist/chunks/use-scroll-fade-uc8mWSDX.js +30 -0
  171. package/dist/chunks/use-scroll-fade-uc8mWSDX.js.map +1 -0
  172. package/dist/chunks/{zh-CN-29X4CDLE.js → zh-CN-BlpsT6d_.js} +80 -39
  173. package/dist/chunks/zh-CN-BlpsT6d_.js.map +1 -0
  174. package/dist/components/agent-avatar.js +1 -1
  175. package/dist/components/app-frame.js +2 -2
  176. package/dist/components/avatar.js +1 -1
  177. package/dist/components/badge.js +1 -1
  178. package/dist/components/banner.js +1 -1
  179. package/dist/components/button-group.js +22 -22
  180. package/dist/components/button-group.js.map +1 -1
  181. package/dist/components/button.js +1 -1
  182. package/dist/components/calendar.js +1 -1
  183. package/dist/components/charts/bar.js +235 -160
  184. package/dist/components/charts/bar.js.map +1 -1
  185. package/dist/components/charts/donut.js +144 -99
  186. package/dist/components/charts/donut.js.map +1 -1
  187. package/dist/components/charts/gauge.js +61 -49
  188. package/dist/components/charts/gauge.js.map +1 -1
  189. package/dist/components/charts/heatmap.js +179 -70
  190. package/dist/components/charts/heatmap.js.map +1 -1
  191. package/dist/components/charts/sankey.js +144 -77
  192. package/dist/components/charts/sankey.js.map +1 -1
  193. package/dist/components/charts/sparkline.js +54 -38
  194. package/dist/components/charts/sparkline.js.map +1 -1
  195. package/dist/components/charts/timeseries.js +1 -1
  196. package/dist/components/charts.js +2 -2
  197. package/dist/components/checkbox.js +1 -1
  198. package/dist/components/code-block.js +4 -3
  199. package/dist/components/code.js +1 -1
  200. package/dist/components/collapsible.js +77 -1
  201. package/dist/components/collapsible.js.map +1 -0
  202. package/dist/components/combobox.js +1 -1
  203. package/dist/components/command-list.js +2 -2
  204. package/dist/components/command-palette.js +89 -66
  205. package/dist/components/command-palette.js.map +1 -1
  206. package/dist/components/copy-button.js +1 -1
  207. package/dist/components/data-table.js +1 -459
  208. package/dist/components/date-picker.js +162 -151
  209. package/dist/components/date-picker.js.map +1 -1
  210. package/dist/components/dialog.js +74 -63
  211. package/dist/components/dialog.js.map +1 -1
  212. package/dist/components/display-options.js +76 -64
  213. package/dist/components/display-options.js.map +1 -1
  214. package/dist/components/empty.js +1 -1
  215. package/dist/components/field.js +1 -1
  216. package/dist/components/figure.js +2 -2
  217. package/dist/components/filter-chip.js +36 -27
  218. package/dist/components/filter-chip.js.map +1 -1
  219. package/dist/components/filter-row.js +4 -4
  220. package/dist/components/filter-row.js.map +1 -1
  221. package/dist/components/flow.js +94 -63
  222. package/dist/components/flow.js.map +1 -1
  223. package/dist/components/heading.js +1 -1
  224. package/dist/components/icon-button.js +1 -1
  225. package/dist/components/icon.js +2 -2
  226. package/dist/components/input.js +176 -98
  227. package/dist/components/input.js.map +1 -1
  228. package/dist/components/kaeso/conversation.js +51 -46
  229. package/dist/components/kaeso/conversation.js.map +1 -1
  230. package/dist/components/kaeso/identity.js +1 -1
  231. package/dist/components/kaeso/moments.js +23 -20
  232. package/dist/components/kaeso/moments.js.map +1 -1
  233. package/dist/components/kaeso/rights.js +1 -1
  234. package/dist/components/kaeso/usage.js +90 -74
  235. package/dist/components/kaeso/usage.js.map +1 -1
  236. package/dist/components/kaeso.js +200 -187
  237. package/dist/components/kaeso.js.map +1 -1
  238. package/dist/components/kbd.js +1 -1
  239. package/dist/components/key-value.js +32 -47
  240. package/dist/components/key-value.js.map +1 -1
  241. package/dist/components/label.js +1 -25
  242. package/dist/components/layout.js +2 -2
  243. package/dist/components/layout.js.map +1 -1
  244. package/dist/components/link.js +1 -1
  245. package/dist/components/list.js +1 -1
  246. package/dist/components/loader.js +11 -10
  247. package/dist/components/loader.js.map +1 -1
  248. package/dist/components/logo.js +2 -2
  249. package/dist/components/markdown.js +1 -1
  250. package/dist/components/menu.js +2 -2
  251. package/dist/components/meter.js +1 -1
  252. package/dist/components/page-header.js +1 -1
  253. package/dist/components/pagination.js +1 -1
  254. package/dist/components/playground.js +644 -529
  255. package/dist/components/playground.js.map +1 -1
  256. package/dist/components/popover.js +4 -4
  257. package/dist/components/popover.js.map +1 -1
  258. package/dist/components/portal.js +1 -1
  259. package/dist/components/qr-code.js +2 -2
  260. package/dist/components/qr-code.js.map +1 -1
  261. package/dist/components/radio.js +1 -1
  262. package/dist/components/release-art.js +1 -1
  263. package/dist/components/scroll-area.js +1 -1
  264. package/dist/components/section.js +1 -1
  265. package/dist/components/segmented.js +1 -1
  266. package/dist/components/select.js +1 -1
  267. package/dist/components/separator.js +1 -1
  268. package/dist/components/settings.js +39 -46
  269. package/dist/components/settings.js.map +1 -1
  270. package/dist/components/sheet.js +10 -9
  271. package/dist/components/sheet.js.map +1 -1
  272. package/dist/components/sidebar.js +1 -1
  273. package/dist/components/skeleton.js +1 -1
  274. package/dist/components/slider.js +1 -1
  275. package/dist/components/stat.js +98 -84
  276. package/dist/components/stat.js.map +1 -1
  277. package/dist/components/status-dot.js +1 -1
  278. package/dist/components/surface.js +1 -1
  279. package/dist/components/swap-text.js +1 -1
  280. package/dist/components/switch.js +1 -1
  281. package/dist/components/table.js +1 -1
  282. package/dist/components/tabs.js +73 -55
  283. package/dist/components/tabs.js.map +1 -1
  284. package/dist/components/tag.js +1 -1
  285. package/dist/components/text.js +1 -1
  286. package/dist/components/theme-image.js +1 -1
  287. package/dist/components/theme-menu.js +5 -2
  288. package/dist/components/theme-menu.js.map +1 -1
  289. package/dist/components/theme-select.js +1 -1
  290. package/dist/components/thumbnail.js +35 -24
  291. package/dist/components/thumbnail.js.map +1 -1
  292. package/dist/components/timeline.js +51 -35
  293. package/dist/components/timeline.js.map +1 -1
  294. package/dist/components/toast.js +76 -66
  295. package/dist/components/toast.js.map +1 -1
  296. package/dist/components/toc.js +14 -8
  297. package/dist/components/toc.js.map +1 -1
  298. package/dist/components/toolbar.js +1 -1
  299. package/dist/components/tooltip.js +1 -1
  300. package/dist/components/visually-hidden.js +1 -1
  301. package/dist/i18n-provider.js +1 -1
  302. package/dist/index.js +101 -101
  303. package/dist/kaeso.css +605 -67
  304. package/dist/styles.css +1 -1
  305. package/dist/tailwind.css +1 -1
  306. package/dist/types/blocks/delete-resource/delete-resource.d.ts +2 -2
  307. package/dist/types/components/agent-avatar/agent-avatar.d.ts +24 -19
  308. package/dist/types/components/badge/badge.d.ts +3 -3
  309. package/dist/types/components/banner/banner.d.ts +3 -3
  310. package/dist/types/components/button/button.d.ts +2 -2
  311. package/dist/types/components/button-group/button-group.d.ts +1 -1
  312. package/dist/types/components/charts/domain.d.ts +11 -0
  313. package/dist/types/components/charts/marks.d.ts +1 -0
  314. package/dist/types/components/code/code.d.ts +3 -3
  315. package/dist/types/components/code-block/diff-view.d.ts +30 -0
  316. package/dist/types/components/code-block/diff.d.ts +26 -0
  317. package/dist/types/components/code-block/docs.d.ts +14 -0
  318. package/dist/types/components/code-block/index.d.ts +1 -0
  319. package/dist/types/components/code-block/json-view.d.ts +2 -1
  320. package/dist/types/components/code-block/numbers.d.ts +1 -0
  321. package/dist/types/components/collapsible/collapsible.d.ts +2 -2
  322. package/dist/types/components/collapsible/disclosure.d.ts +2 -0
  323. package/dist/types/components/data-table/data-table.d.ts +6 -5
  324. package/dist/types/components/data-table/docs.d.ts +1 -0
  325. package/dist/types/components/data-table/time-columns.d.ts +1 -0
  326. package/dist/types/components/date-picker/focus-day.d.ts +1 -0
  327. package/dist/types/components/date-picker/iso-field.d.ts +8 -1
  328. package/dist/types/components/dialog/dialog.d.ts +7 -7
  329. package/dist/types/components/field/field.d.ts +1 -1
  330. package/dist/types/components/flow/flow.d.ts +1 -1
  331. package/dist/types/components/icon-button/icon-button.d.ts +1 -1
  332. package/dist/types/components/input/input-group.d.ts +2 -0
  333. package/dist/types/components/input/number-input.d.ts +4 -4
  334. package/dist/types/components/input/otp-input.d.ts +3 -3
  335. package/dist/types/components/kaeso/client-button.d.ts +2 -1
  336. package/dist/types/components/kaeso/provider-picker.d.ts +1 -0
  337. package/dist/types/components/kaeso/rights.d.ts +1 -1
  338. package/dist/types/components/kaeso/role-picker.d.ts +1 -0
  339. package/dist/types/components/key-value/key-value.d.ts +2 -2
  340. package/dist/types/components/layout/layout.d.ts +2 -2
  341. package/dist/types/components/link/link.d.ts +4 -4
  342. package/dist/types/components/list/list.d.ts +2 -2
  343. package/dist/types/components/menu/menu.d.ts +2 -1
  344. package/dist/types/components/menu/styles.d.ts +3 -3
  345. package/dist/types/components/meter/meter.d.ts +3 -3
  346. package/dist/types/components/page-header/page-header.d.ts +1 -1
  347. package/dist/types/components/pagination/pagination.d.ts +2 -2
  348. package/dist/types/components/playground/prompt-suggestions.d.ts +1 -0
  349. package/dist/types/components/playground/reasoning-frame.d.ts +14 -0
  350. package/dist/types/components/playground/reasoning.d.ts +1 -0
  351. package/dist/types/components/popover/popover.d.ts +1 -1
  352. package/dist/types/components/scroll-area/scroll-area.d.ts +2 -2
  353. package/dist/types/components/section/section-header.d.ts +6 -0
  354. package/dist/types/components/segmented/segmented.d.ts +1 -0
  355. package/dist/types/components/select/select.d.ts +1 -1
  356. package/dist/types/components/sheet/sheet.d.ts +3 -3
  357. package/dist/types/components/sidebar/sidebar.d.ts +1 -0
  358. package/dist/types/components/slider/slider.d.ts +2 -2
  359. package/dist/types/components/stat/stat.d.ts +1 -1
  360. package/dist/types/components/tabs/tabs.d.ts +6 -4
  361. package/dist/types/components/text/truncated.d.ts +7 -0
  362. package/dist/types/components/timeline/timeline.d.ts +5 -5
  363. package/dist/types/components/toc/toc.d.ts +1 -1
  364. package/dist/types/components/toolbar/toolbar.d.ts +1 -1
  365. package/dist/types/components/tooltip/tooltip.d.ts +2 -2
  366. package/dist/types/components/tooltip/trigger-props.d.ts +1 -0
  367. package/dist/types/hooks/use-coarse-pointer.d.ts +1 -0
  368. package/dist/types/hooks/use-hydrating.d.ts +1 -0
  369. package/dist/types/icons/groups.d.ts +1 -1
  370. package/dist/types/icons/vocabulary.d.ts +5 -0
  371. package/dist/types/utils/arrow-focus.d.ts +4 -1
  372. package/dist/types/utils/cn.d.ts +33 -0
  373. package/dist/types/utils/portal-context.d.ts +7 -1
  374. package/dist/utils.js +2 -2
  375. package/foundations/accessibility.md +3 -2
  376. package/foundations/color.md +5 -1
  377. package/foundations/elevation.md +1 -0
  378. package/foundations/motion.md +1 -1
  379. package/foundations/shape.md +2 -2
  380. package/foundations/typography.md +12 -12
  381. package/package.json +2 -2
  382. package/dist/chunks/agent-avatar-0pdBTWkR.js +0 -171
  383. package/dist/chunks/agent-avatar-0pdBTWkR.js.map +0 -1
  384. package/dist/chunks/app-frame-DogGRmsu.js +0 -221
  385. package/dist/chunks/app-frame-DogGRmsu.js.map +0 -1
  386. package/dist/chunks/arrow-focus-BcySmwwU.js +0 -11
  387. package/dist/chunks/arrow-focus-BcySmwwU.js.map +0 -1
  388. package/dist/chunks/avatar-CWbdwbJv.js +0 -83
  389. package/dist/chunks/avatar-CWbdwbJv.js.map +0 -1
  390. package/dist/chunks/badge-C2KtxCLB.js +0 -26
  391. package/dist/chunks/badge-C2KtxCLB.js.map +0 -1
  392. package/dist/chunks/banner-BA2ALw9M.js +0 -85
  393. package/dist/chunks/banner-BA2ALw9M.js.map +0 -1
  394. package/dist/chunks/button-CzuxqawA.js +0 -164
  395. package/dist/chunks/button-CzuxqawA.js.map +0 -1
  396. package/dist/chunks/calendar-BWaf2MXc.js.map +0 -1
  397. package/dist/chunks/checkbox-CQjwCPkc.js +0 -126
  398. package/dist/chunks/checkbox-CQjwCPkc.js.map +0 -1
  399. package/dist/chunks/cn-Dj6sRgkF.js.map +0 -1
  400. package/dist/chunks/code-block-D5A-CGXG.js +0 -330
  401. package/dist/chunks/code-block-D5A-CGXG.js.map +0 -1
  402. package/dist/chunks/code-tqj0uhBL.js.map +0 -1
  403. package/dist/chunks/collapsible-CKrCX_T9.js +0 -87
  404. package/dist/chunks/collapsible-CKrCX_T9.js.map +0 -1
  405. package/dist/chunks/combobox-DjDI7SUC.js +0 -319
  406. package/dist/chunks/combobox-DjDI7SUC.js.map +0 -1
  407. package/dist/chunks/command-list-C2Y7V_lt.js +0 -418
  408. package/dist/chunks/command-list-C2Y7V_lt.js.map +0 -1
  409. package/dist/chunks/copy-button-FJvPJn72.js.map +0 -1
  410. package/dist/chunks/core-BYns5ytV.js +0 -472
  411. package/dist/chunks/core-BYns5ytV.js.map +0 -1
  412. package/dist/chunks/date-popup-CPA_zt6o.js +0 -35
  413. package/dist/chunks/date-popup-CPA_zt6o.js.map +0 -1
  414. package/dist/chunks/de-CPXJh9cq.js.map +0 -1
  415. package/dist/chunks/dialog-Cg9A_6SF.js.map +0 -1
  416. package/dist/chunks/field-TviMvYa2.js.map +0 -1
  417. package/dist/chunks/hidden-description-B2zSmLcn.js +0 -23
  418. package/dist/chunks/hidden-description-B2zSmLcn.js.map +0 -1
  419. package/dist/chunks/icon-DVooQfk4.js +0 -94
  420. package/dist/chunks/icon-button-CrdF_eMG.js.map +0 -1
  421. package/dist/chunks/input-2VJuj_M4.js.map +0 -1
  422. package/dist/chunks/input-group-DQ_4DoXg.js.map +0 -1
  423. package/dist/chunks/iso-field-B2rTwiBo.js +0 -33
  424. package/dist/chunks/iso-field-B2rTwiBo.js.map +0 -1
  425. package/dist/chunks/json-view-Dqd2TDkc.js +0 -175
  426. package/dist/chunks/json-view-Dqd2TDkc.js.map +0 -1
  427. package/dist/chunks/kbd-BF1vKXJf.js.map +0 -1
  428. package/dist/chunks/link-KWI7PevW.js.map +0 -1
  429. package/dist/chunks/list-M1csq-d4.js +0 -494
  430. package/dist/chunks/list-M1csq-d4.js.map +0 -1
  431. package/dist/chunks/markdown-DULktoTK.js +0 -313
  432. package/dist/chunks/markdown-DULktoTK.js.map +0 -1
  433. package/dist/chunks/menu-DEmBfdPm.js +0 -450
  434. package/dist/chunks/menu-DEmBfdPm.js.map +0 -1
  435. package/dist/chunks/meter-Bj4N3Xuh.js +0 -84
  436. package/dist/chunks/meter-Bj4N3Xuh.js.map +0 -1
  437. package/dist/chunks/nav-sheet-CzgIwgAm.js +0 -60
  438. package/dist/chunks/nav-sheet-CzgIwgAm.js.map +0 -1
  439. package/dist/chunks/nav-wordmark-_pjheAsZ.js.map +0 -1
  440. package/dist/chunks/page-header-DL2y2iZp.js +0 -41
  441. package/dist/chunks/page-header-DL2y2iZp.js.map +0 -1
  442. package/dist/chunks/pagination-Cn_qF4cg.js +0 -86
  443. package/dist/chunks/pagination-Cn_qF4cg.js.map +0 -1
  444. package/dist/chunks/picker-popover-BxyU1U9F.js +0 -106
  445. package/dist/chunks/picker-popover-BxyU1U9F.js.map +0 -1
  446. package/dist/chunks/popover-DNN4S47w.js +0 -50
  447. package/dist/chunks/popover-DNN4S47w.js.map +0 -1
  448. package/dist/chunks/portal-context-BBbzDKmY.js.map +0 -1
  449. package/dist/chunks/radio-CDDFpdtL.js.map +0 -1
  450. package/dist/chunks/range-popup-CRyWYUB1.js +0 -128
  451. package/dist/chunks/range-popup-CRyWYUB1.js.map +0 -1
  452. package/dist/chunks/release-art-ZwfFQImt.js +0 -561
  453. package/dist/chunks/release-art-ZwfFQImt.js.map +0 -1
  454. package/dist/chunks/rights-Cyp0Pzp-.js +0 -279
  455. package/dist/chunks/rights-Cyp0Pzp-.js.map +0 -1
  456. package/dist/chunks/scroll-area-D8MD7Vpo.js.map +0 -1
  457. package/dist/chunks/scroll-parent-WXvzQcUo.js +0 -14
  458. package/dist/chunks/scroll-parent-WXvzQcUo.js.map +0 -1
  459. package/dist/chunks/section-Ce1efbsP.js +0 -87
  460. package/dist/chunks/section-Ce1efbsP.js.map +0 -1
  461. package/dist/chunks/segmented-CErcoxwi.js +0 -114
  462. package/dist/chunks/segmented-CErcoxwi.js.map +0 -1
  463. package/dist/chunks/select-x4XVsdCI.js +0 -210
  464. package/dist/chunks/select-x4XVsdCI.js.map +0 -1
  465. package/dist/chunks/separator-D7TzNHmX.js.map +0 -1
  466. package/dist/chunks/sidebar-3r1ZRXlN.js +0 -621
  467. package/dist/chunks/sidebar-3r1ZRXlN.js.map +0 -1
  468. package/dist/chunks/skeleton-Dcz57Zyp.js.map +0 -1
  469. package/dist/chunks/slider-Ci83PGtj.js +0 -57
  470. package/dist/chunks/slider-Ci83PGtj.js.map +0 -1
  471. package/dist/chunks/swap-text-Dr0Irxz6.js.map +0 -1
  472. package/dist/chunks/switch-BNMq_kGt.js +0 -59
  473. package/dist/chunks/switch-BNMq_kGt.js.map +0 -1
  474. package/dist/chunks/table-BeOSKl_3.js +0 -84
  475. package/dist/chunks/table-BeOSKl_3.js.map +0 -1
  476. package/dist/chunks/tag-D_M1s2qS.js +0 -87
  477. package/dist/chunks/tag-D_M1s2qS.js.map +0 -1
  478. package/dist/chunks/text-CIXH8rmT.js.map +0 -1
  479. package/dist/chunks/textarea--4FRL3Pb.js.map +0 -1
  480. package/dist/chunks/timeseries-D1xjRXfk.js +0 -339
  481. package/dist/chunks/timeseries-D1xjRXfk.js.map +0 -1
  482. package/dist/chunks/toolbar-WA_oZgu-.js +0 -37
  483. package/dist/chunks/toolbar-WA_oZgu-.js.map +0 -1
  484. package/dist/chunks/tooltip-OcwO0VUT.js +0 -154
  485. package/dist/chunks/tooltip-OcwO0VUT.js.map +0 -1
  486. package/dist/chunks/tooltip-root-DzahJDVj.js +0 -60
  487. package/dist/chunks/tooltip-root-DzahJDVj.js.map +0 -1
  488. package/dist/chunks/zh-CN-29X4CDLE.js.map +0 -1
  489. package/dist/components/data-table.js.map +0 -1
  490. package/dist/components/label.js.map +0 -1
package/dist/kaeso.css CHANGED
@@ -32,6 +32,7 @@
32
32
  @custom-variant focus-within-visible (:root:not([data-k-pointer]) &:has(:focus-visible), &[data-force~="focus"]);
33
33
  @custom-variant dragging (&[data-dragging], &[data-force~="dragging"]);
34
34
  @custom-variant reduced (@media (prefers-reduced-motion: reduce));
35
+ @custom-variant dialog-narrow (@container (width < 24rem));
35
36
  @custom-variant ghost-start {
36
37
  @variant @max-settings-row {
37
38
  [data-row-control] > &.material-ghost:first-child,
@@ -44,49 +45,89 @@
44
45
 
45
46
  @utility focus-ring {
46
47
  outline: 2px solid transparent;
48
+ @media (forced-colors: active) {
49
+ outline-style: none;
50
+ }
47
51
  outline-offset: 2px;
48
52
  :root:not([data-k-pointer]) &:focus-visible,
49
53
  &[data-force~="focus"] {
50
54
  outline-color: var(--k-focus);
55
+ outline-style: solid;
51
56
  }
52
57
  }
53
58
  @utility focus-ring-inset {
54
59
  outline: 2px solid transparent;
60
+ @media (forced-colors: active) {
61
+ outline-style: none;
62
+ }
55
63
  outline-offset: -2px;
56
64
  :root:not([data-k-pointer]) &:focus-visible,
57
65
  &[data-force~="focus"] {
58
66
  outline-color: var(--k-focus);
67
+ outline-style: solid;
59
68
  }
60
69
  }
61
70
  @utility focus-ring-segment {
62
71
  outline: 2px solid transparent;
72
+ @media (forced-colors: active) {
73
+ outline-style: none;
74
+ }
63
75
  outline-offset: -2px;
64
76
  :root:not([data-k-pointer]) &:focus-visible,
65
77
  &[data-force~="focus"] {
66
78
  outline-color: var(--k-focus);
79
+ outline-style: solid;
67
80
  border-radius: var(--radius-pill);
68
81
  }
69
82
  }
70
83
  @utility focus-ring-card-row {
71
84
  outline: 2px solid transparent;
85
+ @media (forced-colors: active) {
86
+ outline-style: none;
87
+ }
72
88
  outline-offset: -2px;
73
89
  :root:not([data-k-pointer]) &:focus-visible,
74
90
  &[data-force~="focus"] {
75
91
  outline-color: var(--k-focus);
92
+ outline-style: solid;
76
93
  border-radius: calc(var(--radius-group) - 2px);
77
94
  }
78
95
  }
79
96
 
97
+ @utility focus-ring-card-row-within {
98
+ outline: 2px solid transparent;
99
+ outline-offset: -2px;
100
+ @media (forced-colors: active) {
101
+ outline-style: none;
102
+ }
103
+ & .choice-mark {
104
+ outline-style: none;
105
+ }
106
+ :root:not([data-k-pointer]) &:has(:focus-visible),
107
+ &[data-force~="focus"] {
108
+ outline-color: var(--k-focus);
109
+ outline-style: solid;
110
+ border-radius: calc(var(--radius-group) - 2px);
111
+ @media (forced-colors: active) {
112
+ outline-color: Highlight;
113
+ }
114
+ }
115
+ }
116
+
80
117
  @utility tap-target {
118
+ &::after {
119
+ content: "";
120
+ position: absolute;
121
+ top: 50%;
122
+ left: 50%;
123
+ width: max(100%, 32px);
124
+ height: max(100%, 32px);
125
+ transform: translate(-50%, -50%);
126
+ }
81
127
  @media (pointer: coarse) {
82
128
  &::after {
83
- content: "";
84
- position: absolute;
85
- top: 50%;
86
- left: 50%;
87
- width: max(100%, 32px);
88
- height: max(100%, 32px);
89
- transform: translate(-50%, -50%);
129
+ width: max(100%, 44px);
130
+ height: max(100%, 44px);
90
131
  }
91
132
  }
92
133
  }
@@ -104,15 +145,19 @@
104
145
  box-shadow: var(--k-primary-shadow);
105
146
  @media (hover: hover) {
106
147
  &:hover:not(:disabled, [data-disabled], [aria-disabled="true"]) {
107
- filter: brightness(var(--k-hover-brightness));
148
+ background-color: var(--k-ink-hover);
108
149
  }
109
150
  }
110
151
  &[data-force~="hover"] {
111
- filter: brightness(var(--k-hover-brightness));
152
+ background-color: var(--k-ink-hover);
153
+ }
154
+ &[data-popup-open],
155
+ &[data-force~="open"] {
156
+ background-color: var(--k-ink-pressed);
112
157
  }
113
158
  &:active:not(:disabled, [data-disabled], [aria-disabled="true"]),
114
159
  &[data-force~="pressed"] {
115
- filter: brightness(var(--k-pressed-brightness));
160
+ background-color: var(--k-ink-pressed);
116
161
  transform: scale(0.985);
117
162
  }
118
163
  &:disabled,
@@ -138,6 +183,10 @@
138
183
  &[data-force~="hover"] {
139
184
  filter: brightness(1.08);
140
185
  }
186
+ &[data-popup-open],
187
+ &[data-force~="open"] {
188
+ filter: brightness(0.94);
189
+ }
141
190
  &:active:not(:disabled, [data-disabled], [aria-disabled="true"]),
142
191
  &[data-force~="pressed"] {
143
192
  filter: brightness(0.94);
@@ -153,6 +202,10 @@
153
202
  }
154
203
  }
155
204
 
205
+ @utility kbd-on-danger {
206
+ --k-on-ink: var(--k-on-danger);
207
+ }
208
+
156
209
  @utility controls-on-fill {
157
210
  --k-fill-control: var(--k-control-on-fill);
158
211
  --k-fill-control-hover: var(--k-control-on-fill-hover);
@@ -165,19 +218,20 @@
165
218
  box-shadow: var(--k-fill-control-shadow, var(--k-shadow-control));
166
219
  @media (hover: hover) {
167
220
  &:hover:not(:disabled, [data-disabled], [aria-disabled="true"]) {
168
- background-color: var(--k-fill-control-hover, var(--k-fill-1));
221
+ background-color: var(--k-fill-control-hover, var(--k-raised-hover));
169
222
  box-shadow: var(--k-fill-control-shadow, var(--k-shadow-control-hover));
170
223
  }
171
224
  }
172
225
  &[data-force~="hover"],
173
226
  &[data-popup-open],
174
227
  &[data-force~="open"] {
175
- background-color: var(--k-fill-control-hover, var(--k-fill-1));
228
+ background-color: var(--k-fill-control-hover, var(--k-raised-hover));
176
229
  box-shadow: var(--k-fill-control-shadow, var(--k-shadow-control-hover));
177
230
  }
178
231
  &:active:not(:disabled, [data-disabled], [aria-disabled="true"]),
179
232
  &[data-force~="pressed"] {
180
- background-color: var(--k-fill-2);
233
+ background-color: var(--k-raised-pressed);
234
+ transform: scale(0.985);
181
235
  }
182
236
  &:disabled,
183
237
  &[data-disabled],
@@ -206,6 +260,10 @@
206
260
  &[data-force~="open"] {
207
261
  background-color: var(--k-fill-2);
208
262
  }
263
+ &:active:not(:disabled, [data-disabled], [aria-disabled="true"]),
264
+ &[data-force~="pressed"] {
265
+ transform: scale(0.985);
266
+ }
209
267
  &:disabled,
210
268
  &[data-disabled],
211
269
  &[aria-disabled="true"],
@@ -231,6 +289,10 @@
231
289
  &[data-force~="open"] {
232
290
  background-color: var(--k-fill-3);
233
291
  }
292
+ &:active:not(:disabled, [data-disabled], [aria-disabled="true"]),
293
+ &[data-force~="pressed"] {
294
+ transform: scale(0.985);
295
+ }
234
296
  &:disabled,
235
297
  &[data-disabled],
236
298
  &[aria-disabled="true"],
@@ -249,14 +311,16 @@
249
311
  box-shadow: var(--k-fill-control-shadow, var(--k-shadow-control-hover));
250
312
  }
251
313
  }
252
- &[data-force~="hover"] {
314
+ &[data-force~="hover"],
315
+ &[data-popup-open],
316
+ &[data-force~="open"] {
253
317
  background-color: var(--k-danger-tint);
254
318
  box-shadow: var(--k-fill-control-shadow, var(--k-shadow-control-hover));
255
319
  }
256
320
  &:active:not(:disabled, [data-disabled], [aria-disabled="true"]),
257
321
  &[data-force~="pressed"] {
258
- background-color: var(--k-danger-tint);
259
- filter: brightness(0.97);
322
+ background-color: color-mix(in srgb, var(--k-danger) 12%, var(--k-danger-tint));
323
+ transform: scale(0.985);
260
324
  }
261
325
  &:disabled,
262
326
  &[data-disabled],
@@ -298,17 +362,23 @@
298
362
  }
299
363
  &:disabled,
300
364
  &[data-disabled],
301
- &:has(:disabled),
365
+ &:has(:is(input, textarea):disabled),
302
366
  &[data-force~="disabled"] {
303
367
  background-color: var(--k-fill-1);
304
368
  color: var(--k-text-disabled);
305
369
  box-shadow: none;
370
+ & :where(*),
371
+ & ::placeholder,
372
+ &::placeholder {
373
+ color: var(--k-text-disabled);
374
+ }
306
375
  }
376
+ &[readonly],
307
377
  &[data-readonly],
308
378
  &:has([readonly]),
309
379
  &[data-force~="readonly"] {
310
380
  background-color: var(--k-fill-1);
311
- box-shadow: none;
381
+ box-shadow: var(--k-shadow-ring);
312
382
  }
313
383
  }
314
384
 
@@ -326,6 +396,11 @@
326
396
  &[data-force~="open"] {
327
397
  box-shadow: var(--k-shadow-selector-hover);
328
398
  }
399
+ &:active:not(:disabled, [data-disabled], [aria-disabled="true"]),
400
+ &[data-force~="pressed"] {
401
+ background-color: var(--k-raised-pressed);
402
+ box-shadow: var(--k-shadow-selector-hover);
403
+ }
329
404
  :root:not([data-k-pointer]) &:focus-visible,
330
405
  &[data-force~="focus"] {
331
406
  box-shadow:
@@ -353,17 +428,14 @@
353
428
  color: var(--k-text);
354
429
  box-shadow: var(--k-shadow-field);
355
430
  @media (hover: hover) {
356
- &:hover:not(:has(textarea:disabled), :has(textarea:focus)) {
431
+ &:hover:not(:has(textarea:disabled), :has(textarea:focus-visible)) {
357
432
  box-shadow: var(--k-shadow-field-hover);
358
433
  }
359
434
  }
360
435
  &[data-force~="hover"] {
361
436
  box-shadow: var(--k-shadow-field-hover);
362
437
  }
363
- &:has(textarea:focus) {
364
- box-shadow: var(--k-shadow-field-hover);
365
- }
366
- :root:not([data-k-pointer]) &:has(textarea:focus-visible),
438
+ &:has(textarea:focus-visible),
367
439
  &[data-force~="focus"] {
368
440
  box-shadow:
369
441
  inset 0 0 0 1px var(--k-text),
@@ -375,6 +447,126 @@
375
447
  color: var(--k-text-disabled);
376
448
  box-shadow: none;
377
449
  }
450
+ /* Ghost controls in the button row sit on the raised surface, where fill-1 disappears in dark. */
451
+ & .material-ghost {
452
+ @media (hover: hover) {
453
+ &:hover:not(:disabled, [data-disabled], [aria-disabled="true"]) {
454
+ background-color: var(--k-raised-hover);
455
+ }
456
+ }
457
+ &[data-force~="hover"] {
458
+ background-color: var(--k-raised-hover);
459
+ }
460
+ &:active:not(:disabled, [data-disabled], [aria-disabled="true"]),
461
+ &[data-force~="pressed"],
462
+ &[data-popup-open],
463
+ &[data-force~="open"] {
464
+ background-color: var(--k-raised-pressed);
465
+ }
466
+ }
467
+ }
468
+
469
+ @utility reserve-text {
470
+ &::after {
471
+ content: attr(data-reserve);
472
+ }
473
+ }
474
+
475
+ @utility markdown-text-inset {
476
+ & > :not(.rounded-well, :has(> table), :has(> button)) {
477
+ padding-inline: 12px;
478
+ }
479
+ }
480
+
481
+ @media (forced-colors: active) {
482
+ :where(
483
+ .material-primary,
484
+ .material-danger,
485
+ .material-secondary,
486
+ .material-soft,
487
+ .material-danger-secondary,
488
+ .material-field,
489
+ .material-selector,
490
+ .material-composer,
491
+ .shadow-ring,
492
+ .shadow-frame,
493
+ .shadow-xs,
494
+ .shadow-control,
495
+ .shadow-segment,
496
+ .shadow-panel,
497
+ .shadow-raised,
498
+ .shadow-dialog,
499
+ .shadow-toast
500
+ ) {
501
+ outline: 1px solid CanvasText;
502
+ outline-offset: -1px;
503
+ }
504
+ :where(.material-field, .material-selector, .material-composer):is(:focus-visible, :has(:focus-visible), [data-focused], [data-force~="focus"]) {
505
+ outline: 2px solid Highlight;
506
+ outline-offset: -2px;
507
+ }
508
+ :where(.material-field, .material-selector):is([aria-invalid="true"], [data-invalid], :has([aria-invalid="true"]), [data-force~="invalid"]) {
509
+ outline-style: dashed;
510
+ }
511
+ :where(.material-field):is(:disabled, [data-disabled], :has(:is(input, textarea):disabled), [data-force~="disabled"]) {
512
+ outline-color: GrayText;
513
+ &,
514
+ & :where(*),
515
+ & ::placeholder {
516
+ color: GrayText;
517
+ }
518
+ }
519
+ :root:not([data-k-pointer]) :where(.focus-ring):focus-visible,
520
+ :where(.focus-ring)[data-force~="focus"] {
521
+ outline: 2px solid Highlight;
522
+ outline-offset: 2px;
523
+ }
524
+ :root:not([data-k-pointer]) :where(.focus-ring-inset, .focus-ring-segment, .focus-ring-card-row):focus-visible,
525
+ :where(.focus-ring-inset, .focus-ring-segment, .focus-ring-card-row)[data-force~="focus"] {
526
+ outline: 2px solid Highlight;
527
+ outline-offset: -2px;
528
+ }
529
+ :where([aria-selected="true"], [aria-current="page"], [aria-current="location"], [aria-pressed="true"], [data-selected]) {
530
+ outline: 2px solid Highlight;
531
+ outline-offset: -2px;
532
+ }
533
+ :where([data-highlighted], [data-force~="highlighted"]) {
534
+ background-color: Highlight;
535
+ color: HighlightText;
536
+ forced-color-adjust: none;
537
+ }
538
+ /* forced-color-adjust is inherited, so without this a description or key cap keeps its author colour on Highlight. */
539
+ :where([data-highlighted], [data-force~="highlighted"]) :where(:not(.data-mark, .data-mark *)) {
540
+ color: inherit;
541
+ background-color: transparent;
542
+ }
543
+ :where([role^="menuitem"][data-disabled], [role="option"][aria-disabled="true"]) {
544
+ color: GrayText;
545
+ }
546
+ :where(.hairline-b, .hairline-b-strong) {
547
+ border-bottom: 1px solid CanvasText;
548
+ }
549
+ :where(.hairline-t, .hairline-t-strong) {
550
+ border-top: 1px solid CanvasText;
551
+ }
552
+ :where(.hairline-l, .divider-l) {
553
+ border-inline-start: 1px solid CanvasText;
554
+ }
555
+ :where(.hairline-r) {
556
+ border-inline-end: 1px solid CanvasText;
557
+ }
558
+ }
559
+
560
+ @utility data-mark {
561
+ forced-color-adjust: none;
562
+ }
563
+
564
+ @utility forced-line {
565
+ @media (forced-colors: active) {
566
+ /* The element also carries a bg-* utility, which Tailwind may emit after this one. */
567
+ background-color: CanvasText !important;
568
+ forced-color-adjust: none;
569
+ }
378
570
  }
379
571
 
380
572
  @utility grid-cols-term {
@@ -501,6 +693,16 @@
501
693
  }
502
694
  @utility animate-indeterminate {
503
695
  animation: k-indeterminate var(--k-skeleton-duration) var(--k-ease-pulse) infinite;
696
+ /* A still third of a line reads as 33% done; with reduced motion the whole line pulses instead. */
697
+ @media (prefers-reduced-motion: reduce) {
698
+ width: 100% !important;
699
+ animation: k-pulse var(--k-skeleton-duration) var(--k-ease-pulse) infinite !important;
700
+ }
701
+ }
702
+ @utility reduced-pulse {
703
+ @media (prefers-reduced-motion: reduce) {
704
+ animation: k-pulse var(--k-skeleton-duration) var(--k-ease-pulse) infinite !important;
705
+ }
504
706
  }
505
707
 
506
708
  @keyframes k-hidden {
@@ -707,6 +909,18 @@
707
909
  padding-bottom: env(safe-area-inset-bottom, 0px);
708
910
  padding-left: env(safe-area-inset-left, 0px);
709
911
  }
912
+ @utility safe-area-inset {
913
+ padding: env(safe-area-inset-top, 0px) env(safe-area-inset-right, 0px) env(safe-area-inset-bottom, 0px) env(safe-area-inset-left, 0px);
914
+ }
915
+ @utility bottom-safe-* {
916
+ bottom: calc(--value(integer) * 1px + env(safe-area-inset-bottom, 0px));
917
+ }
918
+ @utility inset-safe-* {
919
+ top: calc(--value(integer) * 1px + env(safe-area-inset-top, 0px));
920
+ right: calc(--value(integer) * 1px + env(safe-area-inset-right, 0px));
921
+ bottom: calc(--value(integer) * 1px + env(safe-area-inset-bottom, 0px));
922
+ left: calc(--value(integer) * 1px + env(safe-area-inset-left, 0px));
923
+ }
710
924
 
711
925
  @utility cell-fit {
712
926
  & > * {
@@ -728,12 +942,35 @@
728
942
  display: none;
729
943
  }
730
944
  @media (width >= 48rem) {
731
- grid-auto-columns: minmax(240px, 1fr);
945
+ grid-auto-columns: minmax(320px, 1fr);
732
946
  mask-image: linear-gradient(to right, transparent 0, black var(--k-fade-start, 0px), black calc(100% - var(--k-fade-end, 0px)), transparent 100%);
733
947
  scrollbar-width: thin;
734
- scrollbar-color: transparent transparent;
735
- &:hover {
736
- scrollbar-color: var(--k-line-strong) transparent;
948
+ scrollbar-color: var(--k-line-strong) transparent;
949
+ }
950
+ }
951
+
952
+ /* The thread scroller is masked by its fade, which would also hide a ring drawn on it. */
953
+ @utility compare-thread {
954
+ position: relative;
955
+ &::after {
956
+ content: "";
957
+ position: absolute;
958
+ inset: 0;
959
+ pointer-events: none;
960
+ outline: 2px solid transparent;
961
+ outline-offset: -2px;
962
+ }
963
+ :root:not([data-k-pointer]) &:has(> :focus-visible)::after,
964
+ &[data-force~="focus"]::after {
965
+ outline-color: var(--k-focus);
966
+ }
967
+ @media (forced-colors: active) {
968
+ &::after {
969
+ outline-style: none;
970
+ }
971
+ :root:not([data-k-pointer]) &:has(> :focus-visible)::after,
972
+ &[data-force~="focus"]::after {
973
+ outline: 2px solid Highlight;
737
974
  }
738
975
  }
739
976
  }
@@ -786,6 +1023,24 @@
786
1023
  transparent 100%
787
1024
  );
788
1025
  }
1026
+ @utility scroll-fade-both {
1027
+ mask-image:
1028
+ linear-gradient(
1029
+ to bottom,
1030
+ transparent 0,
1031
+ black min(16px, var(--scroll-area-overflow-y-start, 0px)),
1032
+ black calc(100% - min(16px, var(--scroll-area-overflow-y-end, 0px))),
1033
+ transparent 100%
1034
+ ),
1035
+ linear-gradient(
1036
+ to right,
1037
+ transparent 0,
1038
+ black min(16px, var(--scroll-area-overflow-x-start, 0px)),
1039
+ black calc(100% - min(16px, var(--scroll-area-overflow-x-end, 0px))),
1040
+ transparent 100%
1041
+ );
1042
+ mask-composite: intersect;
1043
+ }
789
1044
  @utility hairline-t {
790
1045
  box-shadow: inset 0 1px 0 var(--k-line-subtle);
791
1046
  }
@@ -804,6 +1059,9 @@
804
1059
 
805
1060
  @utility divider-l {
806
1061
  box-shadow: inset 1px 0 0 var(--k-line);
1062
+ @media (forced-colors: active) {
1063
+ border-inline-start: 1px solid CanvasText;
1064
+ }
807
1065
  }
808
1066
 
809
1067
  @utility grid-cols-label {
@@ -833,40 +1091,271 @@
833
1091
  --k-ring-over: var(--k-shadow-ring);
834
1092
  }
835
1093
 
836
- @utility ring-thumb {
837
- box-shadow:
838
- 0 0 0 2px var(--k-bg-panel),
839
- 0 1px 2px rgb(0 0 0 / 0.2);
840
- }
841
-
842
- @keyframes k-draw {
843
- from {
844
- stroke-dashoffset: 1;
1094
+ @utility choice-mark {
1095
+ --choice-off: var(--k-bg-raised);
1096
+ --choice-ring: var(--k-shadow-selector);
1097
+ --choice-ring-hover: var(--k-shadow-selector-hover);
1098
+ --choice-off-pressed: var(--k-raised-pressed);
1099
+ --choice-on: var(--k-ink);
1100
+ --choice-on-hover: var(--k-ink-hover);
1101
+ --choice-on-pressed: var(--k-ink-pressed);
1102
+ --choice-glyph: var(--k-on-ink);
1103
+ --choice-center: var(--k-bg-panel);
1104
+ --choice-off-disabled: var(--k-fill-1);
1105
+ --choice-ring-disabled: inset 0 0 0 1px var(--k-line);
1106
+ --choice-on-disabled: var(--k-text-disabled);
1107
+ --choice-glyph-disabled: var(--k-bg-panel);
1108
+ --choice-invalid: inset 0 0 0 1px var(--k-danger);
1109
+ --choice-invalid-hover: inset 0 0 0 1px var(--k-danger), 0 0 0 3px color-mix(in srgb, var(--k-danger) 16%, transparent);
1110
+ --choice-focus: var(--k-focus);
1111
+ --choice-tone: var(--choice-on);
1112
+ background-color: var(--choice-off);
1113
+ box-shadow: var(--choice-ring);
1114
+ color: var(--choice-glyph);
1115
+ outline: 2px solid transparent;
1116
+ outline-offset: 2px;
1117
+ transition-property: background-color, box-shadow, outline-color, color, scale;
1118
+ transition-duration: var(--k-duration-fast);
1119
+ transition-timing-function: var(--k-ease-standard);
1120
+ &[data-shape="dot"] {
1121
+ transition-duration: var(--k-duration-fast), var(--k-duration-radio), var(--k-duration-fast), var(--k-duration-fast), var(--k-duration-fast);
1122
+ }
1123
+ @media (forced-colors: active) {
1124
+ forced-color-adjust: none;
1125
+ outline-style: none;
1126
+ --choice-off: Canvas;
1127
+ --choice-ring: inset 0 0 0 1px CanvasText;
1128
+ --choice-ring-hover: inset 0 0 0 2px CanvasText;
1129
+ --choice-off-pressed: Canvas;
1130
+ --choice-on: Highlight;
1131
+ --choice-on-hover: Highlight;
1132
+ --choice-on-pressed: Highlight;
1133
+ --choice-glyph: HighlightText;
1134
+ --choice-center: Canvas;
1135
+ --choice-off-disabled: Canvas;
1136
+ --choice-ring-disabled: inset 0 0 0 1px GrayText;
1137
+ --choice-on-disabled: GrayText;
1138
+ --choice-glyph-disabled: Canvas;
1139
+ --choice-invalid: inset 0 0 0 2px CanvasText;
1140
+ --choice-invalid-hover: inset 0 0 0 2px CanvasText;
1141
+ --choice-focus: Highlight;
845
1142
  }
846
- to {
847
- stroke-dashoffset: 0;
1143
+ @media (hover: hover) {
1144
+ :where([data-choice]:not([data-disabled], [data-readonly]):hover) > &,
1145
+ :where([data-choice-row]:hover) :where([data-choice]:not([data-disabled], [data-readonly])) > & {
1146
+ box-shadow: var(--choice-ring-hover);
1147
+ --choice-tone: var(--choice-on-hover);
1148
+ }
1149
+ }
1150
+ :where([data-choice][data-force~="hover"]) > & {
1151
+ box-shadow: var(--choice-ring-hover);
1152
+ --choice-tone: var(--choice-on-hover);
1153
+ }
1154
+ :where([data-choice]:not([data-disabled], [data-readonly]):active) > &,
1155
+ :where([data-choice-row]:active) :where([data-choice]:not([data-disabled], [data-readonly])) > &,
1156
+ :where([data-choice][data-force~="pressed"]) > & {
1157
+ background-color: var(--choice-off-pressed);
1158
+ box-shadow: var(--choice-ring-hover);
1159
+ --choice-tone: var(--choice-on-pressed);
1160
+ @media (prefers-reduced-motion: no-preference) {
1161
+ scale: 0.9;
1162
+ }
1163
+ }
1164
+ :where([data-choice][aria-invalid="true"]) > & {
1165
+ box-shadow: var(--choice-invalid);
1166
+ }
1167
+ @media (hover: hover) {
1168
+ :where([data-choice][aria-invalid="true"]:not([data-disabled], [data-readonly]):hover) > &,
1169
+ :where([data-choice-row]:hover) :where([data-choice][aria-invalid="true"]:not([data-disabled], [data-readonly])) > & {
1170
+ box-shadow: var(--choice-invalid-hover);
1171
+ }
1172
+ }
1173
+ :where([data-choice][aria-invalid="true"]:is([data-force~="hover"], [data-force~="pressed"])) > & {
1174
+ box-shadow: var(--choice-invalid-hover);
1175
+ }
1176
+ :where([data-choice]:is([data-disabled], [data-force~="disabled"])) > & {
1177
+ background-color: var(--choice-off-disabled);
1178
+ box-shadow: var(--choice-ring-disabled);
1179
+ color: var(--choice-glyph-disabled);
1180
+ --choice-tone: var(--choice-on-disabled);
1181
+ }
1182
+ :where([data-choice]:is([data-checked], [data-indeterminate], [data-force~="checked"])) > & {
1183
+ background-color: var(--choice-tone);
1184
+ box-shadow: none;
1185
+ }
1186
+ :where([data-choice]:is([data-checked], [data-force~="checked"])) > &[data-shape="dot"] {
1187
+ background-color: var(--choice-center);
1188
+ box-shadow: inset 0 0 0 5px var(--choice-tone);
1189
+ }
1190
+ :where(:root:not([data-k-pointer]) [data-choice]:focus-visible, [data-choice][data-force~="focus"]) > & {
1191
+ outline-style: solid;
1192
+ outline-color: var(--choice-focus);
848
1193
  }
849
1194
  }
1195
+
850
1196
  @utility check-draw {
851
1197
  stroke-dasharray: 1;
852
- stroke-dashoffset: 0;
853
- animation: k-draw var(--k-duration-check) var(--k-ease-overlay);
1198
+ stroke-dashoffset: 1;
1199
+ opacity: 0;
1200
+ :where([data-checked]) & {
1201
+ stroke-dashoffset: 0;
1202
+ opacity: 1;
1203
+ transition-property: stroke-dashoffset;
1204
+ transition-duration: var(--k-duration-check);
1205
+ transition-timing-function: var(--k-ease-overlay);
1206
+ }
854
1207
  }
855
1208
 
856
- @utility radio-donut {
857
- transition-property: box-shadow, background-color;
858
- transition-duration: var(--k-duration-radio);
859
- transition-timing-function: var(--k-ease-overlay);
860
- &[data-checked],
861
- &[data-force~="checked"] {
862
- background-color: var(--k-bg-panel);
863
- box-shadow: inset 0 0 0 5px var(--k-ink);
1209
+ @utility choice-track {
1210
+ --track-off: var(--k-fill-3);
1211
+ --track-ring: var(--k-shadow-selector);
1212
+ --track-ring-hover: var(--k-shadow-selector-hover);
1213
+ --track-on: var(--k-ink);
1214
+ --track-on-hover: var(--k-ink-hover);
1215
+ --track-on-pressed: var(--k-ink-pressed);
1216
+ --thumb-off: var(--k-switch-thumb);
1217
+ --thumb-on: var(--k-on-ink);
1218
+ --thumb-shadow: var(--k-shadow-thumb);
1219
+ background-color: var(--track-off);
1220
+ box-shadow: var(--track-ring);
1221
+ transition-property: background-color, box-shadow, outline-color, opacity;
1222
+ transition-duration: var(--k-duration-fast);
1223
+ transition-timing-function: var(--k-ease-standard);
1224
+ @media (forced-colors: active) {
1225
+ forced-color-adjust: none;
1226
+ --track-off: Canvas;
1227
+ --track-ring: inset 0 0 0 1px CanvasText;
1228
+ --track-ring-hover: inset 0 0 0 2px CanvasText;
1229
+ --track-on: Highlight;
1230
+ --track-on-hover: Highlight;
1231
+ --track-on-pressed: Highlight;
1232
+ --thumb-off: CanvasText;
1233
+ --thumb-on: HighlightText;
1234
+ --thumb-shadow: none;
1235
+ &:is([data-disabled], [aria-disabled="true"], [data-force~="disabled"]) {
1236
+ --track-ring: inset 0 0 0 1px GrayText;
1237
+ --track-on: GrayText;
1238
+ --thumb-off: GrayText;
1239
+ --thumb-on: Canvas;
1240
+ }
1241
+ }
1242
+ @media (hover: hover) {
1243
+ &:not([data-disabled], [data-readonly]):hover,
1244
+ :where([data-choice-row]:hover) &:not([data-disabled], [data-readonly]) {
1245
+ box-shadow: var(--track-ring-hover);
1246
+ --track-on: var(--track-on-hover);
1247
+ }
1248
+ }
1249
+ &[data-force~="hover"] {
1250
+ box-shadow: var(--track-ring-hover);
1251
+ --track-on: var(--track-on-hover);
1252
+ }
1253
+ &:not([data-disabled], [data-readonly]):active,
1254
+ :where([data-choice-row]:active) &:not([data-disabled], [data-readonly]),
1255
+ &[data-force~="pressed"] {
1256
+ box-shadow: var(--track-ring-hover);
1257
+ --track-on: var(--track-on-pressed);
1258
+ }
1259
+ &:is([data-checked], [data-force~="checked"]) {
1260
+ background-color: var(--track-on);
1261
+ box-shadow: none;
1262
+ }
1263
+ }
1264
+
1265
+ @utility choice-thumb {
1266
+ background-color: var(--thumb-off);
1267
+ box-shadow: var(--thumb-shadow);
1268
+ transition-property: translate, transform, scale;
1269
+ transition-duration: var(--k-duration-indicator), var(--k-duration-indicator), var(--k-duration-fast);
1270
+ transition-timing-function: var(--k-ease-overlay), var(--k-ease-overlay), var(--k-ease-standard);
1271
+ @media (prefers-reduced-motion: no-preference) {
1272
+ :where([data-choice]:not([data-disabled], [data-readonly]):active) > &,
1273
+ :where([data-choice-row]:active) :where([data-choice]:not([data-disabled], [data-readonly])) > &,
1274
+ :where([data-choice][data-force~="pressed"]) > & {
1275
+ scale: 0.85;
1276
+ }
1277
+ }
1278
+ :where([data-checked], [data-force~="checked"]) > & {
1279
+ background-color: var(--thumb-on);
1280
+ box-shadow: none;
864
1281
  }
865
- &[data-checked][data-disabled] {
866
- box-shadow: inset 0 0 0 5px var(--k-fill-3);
1282
+ }
1283
+
1284
+ @utility slider-track {
1285
+ background-color: var(--k-fill-3);
1286
+ @media (forced-colors: active) {
1287
+ forced-color-adjust: none;
1288
+ background-color: Canvas;
1289
+ box-shadow: inset 0 0 0 1px CanvasText;
1290
+ }
1291
+ }
1292
+
1293
+ @utility slider-range {
1294
+ background-color: var(--k-ink);
1295
+ @media (forced-colors: active) {
1296
+ forced-color-adjust: none;
1297
+ background-color: Highlight;
1298
+ [data-disabled] & {
1299
+ background-color: GrayText;
1300
+ }
1301
+ }
1302
+ }
1303
+
1304
+ @utility slider-thumb {
1305
+ background-color: var(--k-ink);
1306
+ box-shadow:
1307
+ 0 0 0 2px var(--k-bg-panel),
1308
+ var(--k-shadow-thumb);
1309
+ outline: 2px solid transparent;
1310
+ outline-offset: 2px;
1311
+ transition-property: box-shadow, outline-color, scale;
1312
+ transition-duration: var(--k-duration-fast);
1313
+ transition-timing-function: var(--k-ease-standard);
1314
+ :root:not([data-k-pointer]) &:has(:focus-visible),
1315
+ &[data-force~="focus"] {
1316
+ outline-color: var(--k-focus);
1317
+ }
1318
+ @media (hover: hover) {
1319
+ &:not([data-disabled]):hover {
1320
+ box-shadow:
1321
+ 0 0 0 2px var(--k-bg-panel),
1322
+ 0 0 0 6px var(--k-fill-2);
1323
+ }
1324
+ }
1325
+ &[data-force~="hover"],
1326
+ &[data-dragging],
1327
+ &[data-force~="dragging"] {
1328
+ box-shadow:
1329
+ 0 0 0 2px var(--k-bg-panel),
1330
+ 0 0 0 6px var(--k-fill-2);
1331
+ }
1332
+ @media (forced-colors: active) {
1333
+ forced-color-adjust: none;
1334
+ outline-style: none;
1335
+ background-color: CanvasText;
1336
+ box-shadow: 0 0 0 2px Canvas;
1337
+ &:hover,
1338
+ &[data-force~="hover"],
1339
+ &[data-dragging],
1340
+ &[data-force~="dragging"] {
1341
+ box-shadow:
1342
+ 0 0 0 2px Canvas,
1343
+ 0 0 0 4px CanvasText;
1344
+ }
1345
+ [data-disabled] & {
1346
+ background-color: GrayText;
1347
+ }
1348
+ :root:not([data-k-pointer]) &:has(:focus-visible),
1349
+ &[data-force~="focus"] {
1350
+ outline: 2px solid Highlight;
1351
+ }
867
1352
  }
868
1353
  }
869
1354
 
1355
+ @utility segment-indicator-raised {
1356
+ background-color: var(--k-control-on-fill);
1357
+ }
1358
+
870
1359
  @utility collapse-motion {
871
1360
  height: var(--collapsible-panel-height, var(--accordion-panel-height, auto));
872
1361
  overflow: clip;
@@ -904,7 +1393,7 @@
904
1393
  outline-offset: 2px;
905
1394
  }
906
1395
  .k-cal td.k-day > button:hover {
907
- background: var(--k-fill-1);
1396
+ background: var(--k-item-hover);
908
1397
  }
909
1398
  :root:not([data-k-pointer]) .k-cal td.k-day > button:focus-visible {
910
1399
  outline-color: var(--k-focus);
@@ -957,6 +1446,50 @@
957
1446
  background: transparent;
958
1447
  color: var(--k-text);
959
1448
  }
1449
+ .k-cal td.k-range-start:not(.k-range-end):last-child,
1450
+ .k-cal td.k-range-end:not(.k-range-start):first-child {
1451
+ background: none;
1452
+ }
1453
+ }
1454
+
1455
+ @media (forced-colors: active) {
1456
+ .forced-checked:is([data-checked], [data-force~="checked"]) {
1457
+ outline: 2px solid Highlight;
1458
+ outline-offset: -2px;
1459
+ }
1460
+ .material-selector:is(:disabled, [data-disabled], [aria-disabled="true"], [data-force~="disabled"]),
1461
+ .material-selector:is(:disabled, [data-disabled], [aria-disabled="true"], [data-force~="disabled"]) * {
1462
+ color: GrayText;
1463
+ outline-color: GrayText;
1464
+ }
1465
+ .k-cal td:is(.k-selected, .k-range-start, .k-range-end) > button {
1466
+ forced-color-adjust: none;
1467
+ background: Highlight;
1468
+ color: HighlightText;
1469
+ }
1470
+ .k-cal td.k-range-middle,
1471
+ .k-cal td:is(.k-range-start, .k-range-end) {
1472
+ background: none;
1473
+ }
1474
+ .k-cal td.k-range-middle > button,
1475
+ .k-cal td.k-range-middle.k-selected > button {
1476
+ forced-color-adjust: none;
1477
+ background: Canvas;
1478
+ color: CanvasText;
1479
+ box-shadow: inset 0 0 0 1px Highlight;
1480
+ }
1481
+ .k-cal td.k-disabled > button {
1482
+ color: GrayText;
1483
+ }
1484
+ .k-cal td.k-day {
1485
+ outline: none;
1486
+ }
1487
+ .k-cal td.k-day > button {
1488
+ outline-style: none;
1489
+ }
1490
+ :root:not([data-k-pointer]) .k-cal td.k-day > button:focus-visible {
1491
+ outline: 2px solid Highlight;
1492
+ }
960
1493
  }
961
1494
 
962
1495
  @keyframes k-layer-in {
@@ -1109,21 +1642,12 @@
1109
1642
  .k-toast-content {
1110
1643
  transition: opacity var(--k-duration-fast) var(--k-ease-standard);
1111
1644
  }
1112
- .k-toast-close {
1113
- opacity: 0;
1114
- transform: scale(0.9);
1115
- transition-property: opacity, transform, background-color, color;
1116
- transition-duration: var(--k-duration-fast);
1117
- transition-timing-function: var(--k-ease-standard);
1118
- }
1119
- .k-toast:hover .k-toast-close,
1120
- .k-toast:focus-within .k-toast-close,
1121
- .k-toast-close[data-force~="visible"] {
1122
- opacity: 1;
1123
- transform: scale(1);
1124
- }
1125
- .k-toast[data-behind]:not([data-expanded]) .k-toast-close {
1126
- display: none;
1645
+ .k-toast-viewport:focus-visible .k-toast:not([data-behind]) .k-toast-surface {
1646
+ outline: 2px solid var(--k-focus);
1647
+ outline-offset: 2px;
1648
+ @media (forced-colors: active) {
1649
+ outline-color: Highlight;
1650
+ }
1127
1651
  }
1128
1652
  @utility toast-viewport-width {
1129
1653
  max-width: min(560px, calc(100vw - 32px));
@@ -1142,8 +1666,22 @@
1142
1666
  @utility ring-mark {
1143
1667
  box-shadow: inset 0 0 0 1px var(--k-warning);
1144
1668
  }
1669
+ @utility cutout {
1670
+ --k-cut-x: var(--k-cut-x-ltr);
1671
+ mask-image: radial-gradient(circle at var(--k-cut-x) var(--k-cut-y, 50%), transparent var(--k-cut-r), black calc(var(--k-cut-r) + 0.5px));
1672
+ &:dir(rtl) {
1673
+ --k-cut-x: var(--k-cut-x-rtl, var(--k-cut-x-ltr));
1674
+ }
1675
+ }
1676
+ @utility raised-selected-hover {
1677
+ /* A step past raised-pressed toward the text, so a selected row in a card answers the pointer in both themes. */
1678
+ background-color: color-mix(in oklab, var(--k-raised-pressed) 95%, var(--k-text));
1679
+ }
1680
+ @utility mark-fill {
1681
+ background-color: var(--k-fill-control, var(--k-fill-2));
1682
+ }
1145
1683
  @utility grid-cols-kv {
1146
- grid-template-columns: minmax(120px, max-content) minmax(0, 1fr);
1684
+ grid-template-columns: fit-content(var(--k-width-field-label)) minmax(0, 1fr);
1147
1685
  }
1148
1686
 
1149
1687
  @utility chart-fill-top {