@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
@@ -1,50 +1,60 @@
1
1
  "use client";
2
- import { t as e } from "../chunks/cn-Dj6sRgkF.js";
2
+ import { t as e } from "../chunks/cn-BjnOAUrA.js";
3
3
  import { t } from "../chunks/dev-CR1p7gCm.js";
4
- import { i as n, r } from "../chunks/context-BELWW79w.js";
5
- import { t as i } from "../chunks/icon-D7ja-_Yk.js";
6
- import { t as a } from "../chunks/icon-button-CrdF_eMG.js";
7
- import { a as o } from "../chunks/tag-D_M1s2qS.js";
8
- import { r as s } from "../chunks/switch-BNMq_kGt.js";
9
- import { r as c } from "../chunks/segmented-CErcoxwi.js";
10
- import { r as l } from "../chunks/select-x4XVsdCI.js";
11
- import { i as u } from "../chunks/popover-DNN4S47w.js";
12
- import { forwardRef as d } from "react";
13
- import { jsx as f, jsxs as p } from "react/jsx-runtime";
14
- import { SlidersHorizontalIcon as m, ViewOffSlashIcon as h } from "@hugeicons/core-free-icons";
4
+ import { r as n } from "../chunks/inset-BUzyXLK4.js";
5
+ import { i as r, r as i } from "../chunks/context-BELWW79w.js";
6
+ import { t as a } from "../chunks/icon-CBzOwqrX.js";
7
+ import { t as o } from "../chunks/icon-button-Dfwpvmav.js";
8
+ import { a as s } from "../chunks/tag-BGr6lTSV.js";
9
+ import { r as c } from "../chunks/switch-ngywMQdl.js";
10
+ import { r as l } from "../chunks/segmented-D9i1avik.js";
11
+ import { r as u } from "../chunks/select-BqjmQOqx.js";
12
+ import { i as d } from "../chunks/popover-Bl5QYqnh.js";
13
+ import { forwardRef as f } from "react";
14
+ import { jsx as p, jsxs as m } from "react/jsx-runtime";
15
+ import { SlidersHorizontalIcon as h, ViewOffSlashIcon as g } from "@hugeicons/core-free-icons";
15
16
  //#region src/components/display-options/display-options.tsx
16
- var g = { trigger: {
17
+ var _ = { trigger: {
17
18
  secondary: { classes: "" },
18
19
  ghost: { classes: "" }
19
- } }, _ = { trigger: "secondary" };
20
- function v({ view: e, rows: t, toggles: a, properties: u, footer: d }) {
21
- let m = n(), g = r(), _ = u ? u.options.filter((e) => u.value.includes(e.value) && u.hidden?.includes(e.value)) : [];
22
- return /* @__PURE__ */ p("div", {
23
- className: "flex w-320 flex-col",
20
+ } }, v = { trigger: "secondary" };
21
+ function y(e) {
22
+ if (!e) return;
23
+ let t = requestAnimationFrame(() => e.querySelector("[role=\"radio\"][tabindex=\"0\"], button:not([disabled]), [tabindex=\"0\"]")?.focus({ preventScroll: !0 }));
24
+ return () => cancelAnimationFrame(t);
25
+ }
26
+ function b({ view: e, rows: t, toggles: o, properties: d, footer: f, inline: h }) {
27
+ let _ = r(), v = i(), b = d ? d.options.filter((e) => d.value.includes(e.value) && d.hidden?.includes(e.value)) : [];
28
+ return /* @__PURE__ */ p(n, { children: /* @__PURE__ */ m("div", {
29
+ ref: h ? void 0 : y,
30
+ className: "flex w-320 max-w-(--available-width) flex-col",
24
31
  children: [
25
- e && /* @__PURE__ */ f("div", {
32
+ e && /* @__PURE__ */ p("div", {
26
33
  className: "p-12 pb-8",
27
- children: /* @__PURE__ */ f(c, {
28
- "aria-label": m("displayOptions.view", "View"),
34
+ children: /* @__PURE__ */ p(l, {
35
+ "aria-label": _("displayOptions.view", "View"),
29
36
  options: e.options,
30
37
  value: e.value,
31
38
  onValueChange: e.onChange,
32
39
  fullWidth: !0,
33
- size: "sm",
34
- className: "bg-item-hover"
40
+ size: "sm"
35
41
  })
36
42
  }),
37
- t && t.length > 0 && /* @__PURE__ */ f("div", {
43
+ t && t.length > 0 && /* @__PURE__ */ p("div", {
38
44
  className: "flex flex-col px-12 py-4",
39
- children: t.map((e) => /* @__PURE__ */ p("div", {
45
+ children: t.map((e) => /* @__PURE__ */ m("div", {
40
46
  className: "flex h-40 items-center justify-between gap-12",
41
- children: [/* @__PURE__ */ p("span", {
42
- className: "flex items-center gap-8 text-body text-fg-secondary",
43
- children: [e.icon && /* @__PURE__ */ f(i, {
47
+ children: [/* @__PURE__ */ m("span", {
48
+ className: "flex min-w-0 items-center gap-8 text-body text-fg",
49
+ children: [e.icon && /* @__PURE__ */ p(a, {
44
50
  icon: e.icon,
45
- size: "sm"
46
- }), e.label]
47
- }), /* @__PURE__ */ f(l, {
51
+ size: "sm",
52
+ className: "shrink-0 text-fg-secondary"
53
+ }), /* @__PURE__ */ p("span", {
54
+ className: "min-w-0 truncate",
55
+ children: e.label
56
+ })]
57
+ }), /* @__PURE__ */ p(u, {
48
58
  size: "sm",
49
59
  appearance: "default",
50
60
  "aria-label": e.label,
@@ -54,76 +64,78 @@ function v({ view: e, rows: t, toggles: a, properties: u, footer: d }) {
54
64
  })]
55
65
  }, e.label))
56
66
  }),
57
- a && a.length > 0 && /* @__PURE__ */ f("div", {
58
- className: "flex flex-col px-12 py-4 hairline-t",
59
- children: a.map((e) => /* @__PURE__ */ f(s, {
60
- size: "sm",
67
+ o && o.length > 0 && /* @__PURE__ */ p("div", {
68
+ className: "flex flex-col px-12 py-4 not-first:hairline-t",
69
+ children: o.map((e) => /* @__PURE__ */ p(c, {
61
70
  label: e.label,
62
71
  checked: e.checked,
63
72
  onCheckedChange: e.onChange,
64
73
  className: "h-40"
65
74
  }, e.label))
66
75
  }),
67
- u && /* @__PURE__ */ p("div", {
68
- className: "flex flex-col gap-8 p-12 hairline-t",
76
+ d && /* @__PURE__ */ m("div", {
77
+ className: "flex flex-col gap-8 p-12 not-first:hairline-t",
69
78
  children: [
70
- /* @__PURE__ */ f("span", {
79
+ /* @__PURE__ */ p("span", {
71
80
  className: "text-caption font-medium text-fg-secondary",
72
- children: m("displayOptions.properties", "Display properties")
81
+ children: _("displayOptions.properties", "Display properties")
73
82
  }),
74
- /* @__PURE__ */ f("div", {
83
+ /* @__PURE__ */ p("div", {
75
84
  className: "flex flex-wrap gap-6",
76
- children: u.options.map((e) => {
77
- let t = u.value.includes(e.value), n = t && _.includes(e);
78
- return /* @__PURE__ */ f(o, {
85
+ children: d.options.map((e) => {
86
+ let t = d.value.includes(e.value), n = t && b.includes(e);
87
+ return /* @__PURE__ */ p(s, {
79
88
  size: "sm",
80
89
  variant: t ? "soft" : "outline",
81
90
  pressed: t,
82
91
  ...n ? {
83
- icon: h,
84
- "aria-description": m("displayOptions.doesNotFit", "Doesn't fit at this width")
92
+ icon: g,
93
+ "aria-description": _("displayOptions.doesNotFit", "Doesn't fit at this width")
85
94
  } : {},
86
- onClick: () => u.onChange(t ? u.value.filter((t) => t !== e.value) : [...u.value, e.value]),
95
+ onClick: () => d.onChange(t ? d.value.filter((t) => t !== e.value) : [...d.value, e.value]),
87
96
  children: e.label
88
97
  }, e.value);
89
98
  })
90
99
  }),
91
- _.length > 0 && /* @__PURE__ */ f("span", {
100
+ b.length > 0 && /* @__PURE__ */ p("span", {
92
101
  className: "text-caption text-fg-tertiary",
93
- children: m("displayOptions.hiddenProperties", "{count, plural, one {{properties} doesn't fit at this width.} other {{properties} don't fit at this width.}}", {
94
- count: _.length,
95
- properties: new Intl.ListFormat(g, { type: "conjunction" }).format(_.map((e) => e.label))
102
+ children: _("displayOptions.hiddenProperties", "{count, plural, one {{properties} doesn't fit at this width.} other {{properties} don't fit at this width.}}", {
103
+ count: b.length,
104
+ properties: new Intl.ListFormat(v, { type: "conjunction" }).format(b.map((e) => e.label))
96
105
  })
97
106
  })
98
107
  ]
99
108
  }),
100
- d && /* @__PURE__ */ f("div", {
109
+ f && /* @__PURE__ */ p("div", {
101
110
  className: "p-12 hairline-t",
102
- children: d
111
+ children: f
103
112
  })
104
113
  ]
105
- });
114
+ }) });
106
115
  }
107
- var y = /* @__PURE__ */ d(function({ trigger: r = "secondary", inline: i, ...o }, s) {
108
- let c = n();
109
- return !o.view && !o.rows?.length && !o.toggles?.length && !o.properties && t("DisplayOptions: pass view, rows, toggles or properties; an empty panel is never useful."), i ? /* @__PURE__ */ f("div", {
116
+ var x = /* @__PURE__ */ f(function({ trigger: n = "secondary", inline: i, ...a }, s) {
117
+ let c = r();
118
+ return !a.view && !a.rows?.length && !a.toggles?.length && !a.properties && t("DisplayOptions: pass view, rows, toggles or properties; an empty panel is never useful."), i ? /* @__PURE__ */ p("div", {
110
119
  ref: s,
111
120
  className: e("rounded-popover bg-raised shadow-raised"),
112
- children: /* @__PURE__ */ f(v, { ...o })
113
- }) : /* @__PURE__ */ p(u, { children: [/* @__PURE__ */ f(u.Trigger, { children: /* @__PURE__ */ f(a, {
121
+ children: /* @__PURE__ */ p(b, {
122
+ ...a,
123
+ inline: !0
124
+ })
125
+ }) : /* @__PURE__ */ m(d, { children: [/* @__PURE__ */ p(d.Trigger, { children: /* @__PURE__ */ p(o, {
114
126
  ref: s,
115
- icon: m,
127
+ icon: h,
116
128
  "aria-label": c("displayOptions.displayOptions", "Display options"),
117
- variant: r
118
- }) }), /* @__PURE__ */ f(u.Content, {
129
+ variant: n
130
+ }) }), /* @__PURE__ */ p(d.Content, {
119
131
  padding: "none",
120
132
  align: "end",
121
133
  "aria-label": c("displayOptions.displayOptions", "Display options"),
122
- children: /* @__PURE__ */ f(v, { ...o })
134
+ children: /* @__PURE__ */ p(b, { ...a })
123
135
  })] });
124
136
  });
125
- process.env.NODE_ENV !== "production" && (y.displayName = "DisplayOptions");
137
+ process.env.NODE_ENV !== "production" && (x.displayName = "DisplayOptions");
126
138
  //#endregion
127
- export { y as DisplayOptions, _ as KAESO_DISPLAY_OPTIONS_DEFAULT_VARIANTS, g as KAESO_DISPLAY_OPTIONS_VARIANTS };
139
+ export { x as DisplayOptions, v as KAESO_DISPLAY_OPTIONS_DEFAULT_VARIANTS, _ as KAESO_DISPLAY_OPTIONS_VARIANTS };
128
140
 
129
141
  //# sourceMappingURL=display-options.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"display-options.js","names":["__icon_ViewOffSlashIcon","__icon_SlidersHorizontalIcon","cn","useUiText","Icon","IconButton","Tag","Switch","Segmented","Select","Popover","KAESO_DISPLAY_OPTIONS_VARIANTS","KAESO_DISPLAY_OPTIONS_DEFAULT_VARIANTS","Panel","t","locale","useLocale","squeezed","properties","o","view","rows","r","toggles","toggle","on","out","ViewOffSlashIcon","v","footer","DisplayOptions","props","devWarn","inline","SlidersHorizontalIcon","trigger"],"sources":["../../src/components/display-options/display-options.tsx"],"sourcesContent":["import { forwardRef, type Ref, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { devWarn } from \"../../utils/dev.js\";\nimport { ViewOffSlashIcon as __icon_ViewOffSlashIcon, SlidersHorizontalIcon as __icon_SlidersHorizontalIcon } from \"@hugeicons/core-free-icons\";\nimport { IconButton } from \"../icon-button/icon-button.js\";\nimport { Popover } from \"../popover/popover.js\";\nimport { Segmented, type SegmentedOption } from \"../segmented/segmented.js\";\nimport { Select, type SelectOption } from \"../select/select.js\";\nimport { Switch } from \"../switch/switch.js\";\nimport { Tag } from \"../tag/tag.js\";\nimport type { IconData } from \"../icon/icon.js\";\nimport { Icon } from \"../icon/icon.js\";\nimport { useLocale, useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_DISPLAY_OPTIONS_VARIANTS = {\n trigger: {\n secondary: { classes: \"\" },\n ghost: { classes: \"\" },\n },\n} as const;\nexport const KAESO_DISPLAY_OPTIONS_DEFAULT_VARIANTS = { trigger: \"secondary\" } as const;\n\nexport interface DisplayOptionsRow {\n label: string;\n icon?: IconData | undefined;\n value: string;\n options: SelectOption[];\n onChange: (value: string) => void;\n}\nexport interface DisplayOptionsToggle {\n label: string;\n checked: boolean;\n onChange: (checked: boolean) => void;\n}\n\nexport interface DisplayOptionsProps {\n view?: { value: string; options: SegmentedOption[]; onChange: (v: string) => void } | undefined;\n rows?: DisplayOptionsRow[] | undefined;\n toggles?: DisplayOptionsToggle[] | undefined;\n properties?: { options: { value: string; label: string }[]; value: string[]; onChange: (v: string[]) => void; hidden?: string[] | undefined } | undefined;\n trigger?: keyof typeof KAESO_DISPLAY_OPTIONS_VARIANTS.trigger | undefined;\n inline?: boolean | undefined;\n footer?: ReactNode | undefined;\n}\n\nfunction Panel({ view, rows, toggles, properties, footer }: DisplayOptionsProps) {\n const t = useUiText();\n const locale = useLocale();\n const squeezed = properties ? properties.options.filter((o) => properties.value.includes(o.value) && properties.hidden?.includes(o.value)) : [];\n return (\n <div className=\"flex w-320 flex-col\">\n {view && (\n <div className=\"p-12 pb-8\">\n <Segmented\n aria-label={t(\"displayOptions.view\", \"View\")}\n options={view.options}\n value={view.value}\n onValueChange={view.onChange}\n fullWidth\n size=\"sm\"\n className=\"bg-item-hover\"\n />\n </div>\n )}\n {rows && rows.length > 0 && (\n <div className=\"flex flex-col px-12 py-4\">\n {rows.map((r) => (\n <div key={r.label} className=\"flex h-40 items-center justify-between gap-12\">\n <span className=\"flex items-center gap-8 text-body text-fg-secondary\">\n {r.icon && <Icon icon={r.icon} size=\"sm\" />}\n {r.label}\n </span>\n <Select size=\"sm\" appearance=\"default\" aria-label={r.label} options={r.options} value={r.value} onValueChange={r.onChange} />\n </div>\n ))}\n </div>\n )}\n {toggles && toggles.length > 0 && (\n <div className=\"flex flex-col px-12 py-4 hairline-t\">\n {toggles.map((toggle) => (\n <Switch key={toggle.label} size=\"sm\" label={toggle.label} checked={toggle.checked} onCheckedChange={toggle.onChange} className=\"h-40\" />\n ))}\n </div>\n )}\n {properties && (\n <div className=\"flex flex-col gap-8 p-12 hairline-t\">\n <span className=\"text-caption font-medium text-fg-secondary\">{t(\"displayOptions.properties\", \"Display properties\")}</span>\n <div className=\"flex flex-wrap gap-6\">\n {properties.options.map((o) => {\n const on = properties.value.includes(o.value);\n const out = on && squeezed.includes(o);\n return (\n <Tag\n key={o.value}\n size=\"sm\"\n variant={on ? \"soft\" : \"outline\"}\n pressed={on}\n {...(out ? { icon: __icon_ViewOffSlashIcon, \"aria-description\": t(\"displayOptions.doesNotFit\", \"Doesn't fit at this width\") } : {})}\n onClick={() => properties.onChange(on ? properties.value.filter((v) => v !== o.value) : [...properties.value, o.value])}\n >\n {o.label}\n </Tag>\n );\n })}\n </div>\n {squeezed.length > 0 && (\n <span className=\"text-caption text-fg-tertiary\">\n {t(\n \"displayOptions.hiddenProperties\",\n \"{count, plural, one {{properties} doesn't fit at this width.} other {{properties} don't fit at this width.}}\",\n {\n count: squeezed.length,\n properties: new Intl.ListFormat(locale, { type: \"conjunction\" }).format(squeezed.map((o) => o.label)),\n },\n )}\n </span>\n )}\n </div>\n )}\n {footer && <div className=\"p-12 hairline-t\">{footer}</div>}\n </div>\n );\n}\n\nexport const DisplayOptions = /* @__PURE__ */ forwardRef<HTMLElement, DisplayOptionsProps>(function DisplayOptions({ trigger = \"secondary\", inline, ...props }, ref) {\n const t = useUiText();\n if (!props.view && !props.rows?.length && !props.toggles?.length && !props.properties)\n devWarn(\"DisplayOptions: pass view, rows, toggles or properties; an empty panel is never useful.\");\n if (inline) {\n return (\n <div ref={ref as Ref<HTMLDivElement>} className={cn(\"rounded-popover bg-raised shadow-raised\")}>\n <Panel {...props} />\n </div>\n );\n }\n return (\n <Popover>\n <Popover.Trigger>\n <IconButton\n ref={ref as Ref<HTMLButtonElement>}\n icon={__icon_SlidersHorizontalIcon}\n aria-label={t(\"displayOptions.displayOptions\", \"Display options\")}\n variant={trigger}\n />\n </Popover.Trigger>\n <Popover.Content padding=\"none\" align=\"end\" aria-label={t(\"displayOptions.displayOptions\", \"Display options\")}>\n <Panel {...props} />\n </Popover.Content>\n </Popover>\n );\n});\nif (process.env.NODE_ENV !== \"production\") DisplayOptions.displayName = \"DisplayOptions\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"display-options.js","names":["__icon_ViewOffSlashIcon","__icon_SlidersHorizontalIcon","cn","RaisedContent","useUiText","useLocale","Icon","IconButton","Tag","Switch","Segmented","Select","Popover","KAESO_DISPLAY_OPTIONS_VARIANTS","KAESO_DISPLAY_OPTIONS_DEFAULT_VARIANTS","focusFirst","panel","frame","Panel","t","locale","squeezed","properties","o","inline","view","rows","r","toggles","toggle","on","out","ViewOffSlashIcon","v","footer","DisplayOptions","props","devWarn","SlidersHorizontalIcon","trigger"],"sources":["../../src/components/display-options/display-options.tsx"],"sourcesContent":["import { forwardRef, type Ref, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { devWarn } from \"../../utils/dev.js\";\nimport { ViewOffSlashIcon as __icon_ViewOffSlashIcon, SlidersHorizontalIcon as __icon_SlidersHorizontalIcon } from \"@hugeicons/core-free-icons\";\nimport { IconButton } from \"../icon-button/icon-button.js\";\nimport { Popover } from \"../popover/popover.js\";\nimport { Segmented, type SegmentedOption } from \"../segmented/segmented.js\";\nimport { Select, type SelectOption } from \"../select/select.js\";\nimport { Switch } from \"../switch/switch.js\";\nimport { Tag } from \"../tag/tag.js\";\nimport type { IconData } from \"../icon/icon.js\";\nimport { Icon } from \"../icon/icon.js\";\nimport { useLocale, useUiText } from \"../../i18n/context.js\";\nimport { RaisedContent } from \"../../utils/inset.js\";\n\nexport const KAESO_DISPLAY_OPTIONS_VARIANTS = {\n trigger: {\n secondary: { classes: \"\" },\n ghost: { classes: \"\" },\n },\n} as const;\nexport const KAESO_DISPLAY_OPTIONS_DEFAULT_VARIANTS = { trigger: \"secondary\" } as const;\n\nexport interface DisplayOptionsRow {\n label: string;\n icon?: IconData | undefined;\n value: string;\n options: SelectOption[];\n onChange: (value: string) => void;\n}\nexport interface DisplayOptionsToggle {\n label: string;\n checked: boolean;\n onChange: (checked: boolean) => void;\n}\n\nexport interface DisplayOptionsProps {\n view?: { value: string; options: SegmentedOption[]; onChange: (v: string) => void } | undefined;\n rows?: DisplayOptionsRow[] | undefined;\n toggles?: DisplayOptionsToggle[] | undefined;\n properties?: { options: { value: string; label: string }[]; value: string[]; onChange: (v: string[]) => void; hidden?: string[] | undefined } | undefined;\n trigger?: keyof typeof KAESO_DISPLAY_OPTIONS_VARIANTS.trigger | undefined;\n inline?: boolean | undefined;\n footer?: ReactNode | undefined;\n}\n\nfunction focusFirst(panel: HTMLDivElement | null) {\n if (!panel) return;\n // Base UI focuses the popup box when it opens; the first control takes focus on the next frame, after that.\n const frame = requestAnimationFrame(() =>\n panel.querySelector<HTMLElement>('[role=\"radio\"][tabindex=\"0\"], button:not([disabled]), [tabindex=\"0\"]')?.focus({ preventScroll: true }),\n );\n return () => cancelAnimationFrame(frame);\n}\n\nfunction Panel({ view, rows, toggles, properties, footer, inline }: DisplayOptionsProps) {\n const t = useUiText();\n const locale = useLocale();\n const squeezed = properties ? properties.options.filter((o) => properties.value.includes(o.value) && properties.hidden?.includes(o.value)) : [];\n return (\n <RaisedContent>\n <div ref={inline ? undefined : focusFirst} className=\"flex w-320 max-w-(--available-width) flex-col\">\n {view && (\n <div className=\"p-12 pb-8\">\n <Segmented\n aria-label={t(\"displayOptions.view\", \"View\")}\n options={view.options}\n value={view.value}\n onValueChange={view.onChange}\n fullWidth\n size=\"sm\"\n />\n </div>\n )}\n {rows && rows.length > 0 && (\n <div className=\"flex flex-col px-12 py-4\">\n {rows.map((r) => (\n <div key={r.label} className=\"flex h-40 items-center justify-between gap-12\">\n <span className=\"flex min-w-0 items-center gap-8 text-body text-fg\">\n {r.icon && <Icon icon={r.icon} size=\"sm\" className=\"shrink-0 text-fg-secondary\" />}\n <span className=\"min-w-0 truncate\">{r.label}</span>\n </span>\n <Select size=\"sm\" appearance=\"default\" aria-label={r.label} options={r.options} value={r.value} onValueChange={r.onChange} />\n </div>\n ))}\n </div>\n )}\n {toggles && toggles.length > 0 && (\n <div className=\"flex flex-col px-12 py-4 not-first:hairline-t\">\n {toggles.map((toggle) => (\n <Switch key={toggle.label} label={toggle.label} checked={toggle.checked} onCheckedChange={toggle.onChange} className=\"h-40\" />\n ))}\n </div>\n )}\n {properties && (\n <div className=\"flex flex-col gap-8 p-12 not-first:hairline-t\">\n <span className=\"text-caption font-medium text-fg-secondary\">{t(\"displayOptions.properties\", \"Display properties\")}</span>\n <div className=\"flex flex-wrap gap-6\">\n {properties.options.map((o) => {\n const on = properties.value.includes(o.value);\n const out = on && squeezed.includes(o);\n return (\n <Tag\n key={o.value}\n size=\"sm\"\n variant={on ? \"soft\" : \"outline\"}\n pressed={on}\n {...(out ? { icon: __icon_ViewOffSlashIcon, \"aria-description\": t(\"displayOptions.doesNotFit\", \"Doesn't fit at this width\") } : {})}\n onClick={() => properties.onChange(on ? properties.value.filter((v) => v !== o.value) : [...properties.value, o.value])}\n >\n {o.label}\n </Tag>\n );\n })}\n </div>\n {squeezed.length > 0 && (\n <span className=\"text-caption text-fg-tertiary\">\n {t(\n \"displayOptions.hiddenProperties\",\n \"{count, plural, one {{properties} doesn't fit at this width.} other {{properties} don't fit at this width.}}\",\n {\n count: squeezed.length,\n properties: new Intl.ListFormat(locale, { type: \"conjunction\" }).format(squeezed.map((o) => o.label)),\n },\n )}\n </span>\n )}\n </div>\n )}\n {footer && <div className=\"p-12 hairline-t\">{footer}</div>}\n </div>\n </RaisedContent>\n );\n}\n\nexport const DisplayOptions = /* @__PURE__ */ forwardRef<HTMLElement, DisplayOptionsProps>(function DisplayOptions({ trigger = \"secondary\", inline, ...props }, ref) {\n const t = useUiText();\n if (!props.view && !props.rows?.length && !props.toggles?.length && !props.properties)\n devWarn(\"DisplayOptions: pass view, rows, toggles or properties; an empty panel is never useful.\");\n if (inline) {\n return (\n <div ref={ref as Ref<HTMLDivElement>} className={cn(\"rounded-popover bg-raised shadow-raised\")}>\n <Panel {...props} inline />\n </div>\n );\n }\n return (\n <Popover>\n <Popover.Trigger>\n <IconButton\n ref={ref as Ref<HTMLButtonElement>}\n icon={__icon_SlidersHorizontalIcon}\n aria-label={t(\"displayOptions.displayOptions\", \"Display options\")}\n variant={trigger}\n />\n </Popover.Trigger>\n <Popover.Content padding=\"none\" align=\"end\" aria-label={t(\"displayOptions.displayOptions\", \"Display options\")}>\n <Panel {...props} />\n </Popover.Content>\n </Popover>\n );\n});\nif (process.env.NODE_ENV !== \"production\") DisplayOptions.displayName = \"DisplayOptions\";\n"],"mappings":";;;;;;;;;;;;;;;;AAeA,IAAaa,IAAiC,EAC5C,SAAS;CACP,WAAW,EAAE,SAAS,GAAG;CACzB,OAAO,EAAE,SAAS,GAAG;AACvB,EACF,GACaC,IAAyC,EAAE,SAAS,YAAY;AAyB7E,SAASC,EAAW,GAA8B;CAChD,IAAI,CAACC,GAAO;CAEZ,IAAMC,IAAQ,4BACZD,EAAM,cAA2B,4EAAsE,CAAC,EAAE,MAAM,EAAE,eAAe,GAAK,CAAC,CACzI;CACA,aAAa,qBAAqBC,CAAK;AACzC;AAEA,SAASC,EAAM,EAAE,SAAM,SAAM,YAAS,eAAY,WAAQ,aAA+B;CACvF,IAAMC,IAAIf,EAAU,GACdgB,IAASf,EAAU,GACnBgB,IAAWC,IAAaA,EAAW,QAAQ,QAAQ,MAAMA,EAAW,MAAM,SAASC,EAAE,KAAK,KAAKD,EAAW,QAAQ,SAASC,EAAE,KAAK,CAAC,IAAI,CAAC;CAC9I,OACE,kBAACpB,GAAD,EAAA,UACE,kBAAC,OAAD;EAAK,KAAKqB,IAAS,KAAA,IAAYT;EAAY,WAAU;EAArD,UAAA;GACGU,KACC,kBAAC,OAAD;IAAK,WAAU;IACb,UAAA,kBAACf,GAAD;KACE,cAAYS,EAAE,uBAAuB,MAAM;KAC3C,SAASM,EAAK;KACd,OAAOA,EAAK;KACZ,eAAeA,EAAK;KACpB,WAAA;KACA,MAAK;IACN,CAAA;GACE,CAAA;GAENC,KAAQA,EAAK,SAAS,KACrB,kBAAC,OAAD;IAAK,WAAU;IACZ,UAAAA,EAAK,KAAK,MACT,kBAAC,OAAD;KAAmB,WAAU;KAA7B,UAAA,CACE,kBAAC,QAAD;MAAM,WAAU;MAAhB,UAAA,CACGC,EAAE,QAAQ,kBAACrB,GAAD;OAAM,MAAMqB,EAAE;OAAM,MAAK;OAAK,WAAU;MAA8B,CAAA,GACjF,kBAAC,QAAD;OAAM,WAAU;OAAoB,UAAAA,EAAE;MAAY,CAAA,CAC9C;KACN,CAAA,GAAA,kBAAChB,GAAD;MAAQ,MAAK;MAAK,YAAW;MAAU,cAAYgB,EAAE;MAAO,SAASA,EAAE;MAAS,OAAOA,EAAE;MAAO,eAAeA,EAAE;KAAW,CAAA,CACzH;IANK,GAAAA,EAAE,KAMP,CACN;GACE,CAAA;GAENC,KAAWA,EAAQ,SAAS,KAC3B,kBAAC,OAAD;IAAK,WAAU;IACZ,UAAAA,EAAQ,KAAK,MACZ,kBAACnB,GAAD;KAA2B,OAAOoB,EAAO;KAAO,SAASA,EAAO;KAAS,iBAAiBA,EAAO;KAAU,WAAU;IAAQ,GAAhHA,EAAO,KAAyG,CAC9H;GACE,CAAA;GAENP,KACC,kBAAC,OAAD;IAAK,WAAU;IAAf,UAAA;KACE,kBAAC,QAAD;MAAM,WAAU;MAA8C,UAAAH,EAAE,6BAA6B,oBAAoB;KAAQ,CAAA;KACzH,kBAAC,OAAD;MAAK,WAAU;MACZ,UAAAG,EAAW,QAAQ,KAAK,MAAM;OAC7B,IAAMQ,IAAKR,EAAW,MAAM,SAASC,EAAE,KAAK,GACtCQ,IAAMD,KAAMT,EAAS,SAASE,CAAC;OACrC,OACE,kBAACf,GAAD;QAEE,MAAK;QACL,SAASsB,IAAK,SAAS;QACvB,SAASA;QACT,GAAKC,IAAM;SAAE,MAAM/B;SAAyB,oBAAoBmB,EAAE,6BAA6B,2BAA2B;QAAE,IAAI,CAAC;QACjI,eAAeG,EAAW,SAASQ,IAAKR,EAAW,MAAM,QAAQ,MAAMW,MAAMV,EAAE,KAAK,IAAI,CAAC,GAAGD,EAAW,OAAOC,EAAE,KAAK,CAAC;QAErH,UAAAA,EAAE;OACA,GAREA,EAAE,KAQJ;MAET,CAAC;KACE,CAAA;KACJF,EAAS,SAAS,KACjB,kBAAC,QAAD;MAAM,WAAU;MACb,UAAAF,EACC,mCACA,gHACA;OACE,OAAOE,EAAS;OAChB,YAAY,IAAI,KAAK,WAAWD,GAAQ,EAAE,MAAM,cAAc,CAAC,CAAC,CAAC,OAAOC,EAAS,KAAK,MAAME,EAAE,KAAK,CAAC;MACtG,CACF;KACI,CAAA;IAEL;;GAENW,KAAU,kBAAC,OAAD;IAAK,WAAU;IAAmB,UAAAA;GAAY,CAAA;EACtD;CACQ,CAAA,EAAA,CAAA;AAEnB;AAEA,IAAaC,IAAiC,kBAA6C,SAAwB,EAAE,aAAU,aAAa,WAAQ,GAAGC,KAAS,GAAK;CACnK,IAAMjB,IAAIf,EAAU;CAUpB,OATI,CAACgC,EAAM,QAAQ,CAACA,EAAM,MAAM,UAAU,CAACA,EAAM,SAAS,UAAU,CAACA,EAAM,cACzEC,EAAQ,yFAAyF,GAC/Fb,IAEA,kBAAC,OAAD;EAAU;EAA4B,WAAWtB,EAAG,yCAAyC;EAC3F,UAAA,kBAACgB,GAAD;GAAO,GAAIkB;GAAO,QAAA;EAAQ,CAAA;CACvB,CAAA,IAIP,kBAACxB,GAAD,EAAA,UAAA,CACE,kBAACA,EAAQ,SAAT,EAAA,UACE,kBAACL,GAAD;EACO;EACL,MAAMN;EACN,cAAYkB,EAAE,iCAAiC,iBAAiB;EAChE,SAASoB;CACV,CAAA,EACc,CAAA,GACjB,kBAAC3B,EAAQ,SAAT;EAAiB,SAAQ;EAAO,OAAM;EAAM,cAAYO,EAAE,iCAAiC,iBAAiB;EAC1G,UAAA,kBAACD,GAAD,EAAO,GAAIkB,EAAQ,CAAA;CACJ,CAAA,CACV,EAAA,CAAA;AAEb,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAe,cAAc"}
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- export { t as Empty, n as KAESO_EMPTY_DEFAULT_VARIANTS, r as KAESO_EMPTY_VARIANTS } from "../chunks/empty-DvhyMXQq.js";
2
+ export { t as Empty, n as KAESO_EMPTY_DEFAULT_VARIANTS, r as KAESO_EMPTY_VARIANTS } from "../chunks/empty-BpiUgGzm.js";
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- export { t as Field, n as Fieldset, r as KAESO_FIELD_DEFAULT_VARIANTS, i as KAESO_FIELD_VARIANTS, a as useField, o as useFieldControl, s as withField } from "../chunks/field-TviMvYa2.js";
2
+ export { t as Field, n as Fieldset, r as KAESO_FIELD_DEFAULT_VARIANTS, i as KAESO_FIELD_VARIANTS, a as useField, o as useFieldControl, s as withField } from "../chunks/field-D7m-yl-D.js";
@@ -1,7 +1,7 @@
1
1
  "use client";
2
- import { t as e } from "../chunks/cn-Dj6sRgkF.js";
2
+ import { t as e } from "../chunks/cn-BjnOAUrA.js";
3
3
  import { t } from "../chunks/observe-resize-DhxhmoyB.js";
4
- import { r as n } from "../chunks/scroll-area-D8MD7Vpo.js";
4
+ import { r as n } from "../chunks/scroll-area-_Ljh4-bG.js";
5
5
  import { forwardRef as r, useLayoutEffect as i, useRef as a } from "react";
6
6
  import { jsx as o, jsxs as s } from "react/jsx-runtime";
7
7
  //#region src/components/figure/figure.tsx
@@ -1,16 +1,16 @@
1
1
  "use client";
2
- import { t as e } from "../chunks/cn-Dj6sRgkF.js";
2
+ import { t as e } from "../chunks/cn-BjnOAUrA.js";
3
3
  import { i as t, r as n } from "../chunks/context-BELWW79w.js";
4
- import { t as r } from "../chunks/icon-D7ja-_Yk.js";
5
- import { c as i } from "../chunks/menu-DEmBfdPm.js";
6
- import { t as a } from "../chunks/command-list-C2Y7V_lt.js";
7
- import { r as o } from "../chunks/picker-popover-BxyU1U9F.js";
4
+ import { t as r } from "../chunks/icon-CBzOwqrX.js";
5
+ import { c as i } from "../chunks/menu-Clvv6ftq.js";
6
+ import { t as a } from "../chunks/command-list-CypqsC4T.js";
7
+ import { r as o } from "../chunks/picker-popover-1FHb1LQG.js";
8
8
  import { forwardRef as s, useEffect as c, useMemo as l, useRef as u, useState as d } from "react";
9
9
  import { jsx as f, jsxs as p } from "react/jsx-runtime";
10
10
  import { Cancel01Icon as m } from "@hugeicons/core-free-icons";
11
11
  //#region src/components/filter-chip/filter-chip.tsx
12
- var h = { size: { sm: { classes: "h-32 text-body" } } }, g = { size: "sm" }, _ = 8, v = 50;
13
- function y(e, t) {
12
+ var h = { size: { sm: { classes: "h-32 text-body" } } }, g = { size: "sm" }, _ = 8, ee = 50;
13
+ function v(e, t) {
14
14
  if (!e.some((e) => e.group)) return e.map(t);
15
15
  let n = [];
16
16
  for (let t of e) {
@@ -25,7 +25,7 @@ function y(e, t) {
25
25
  children: e.values.map(t)
26
26
  }, `${e.group ?? ""}:${n}`));
27
27
  }
28
- function b(e) {
28
+ function y(e) {
29
29
  let t = /* @__PURE__ */ new Map();
30
30
  for (let n of e) {
31
31
  let e = n.group ?? "", i = t.get(e) ?? {
@@ -35,7 +35,7 @@ function b(e) {
35
35
  };
36
36
  i.items.push({
37
37
  value: n.value,
38
- label: x(n),
38
+ label: b(n),
39
39
  keywords: [n.value],
40
40
  ...n.leading || n.icon ? { leading: n.leading ?? (n.icon ? /* @__PURE__ */ f(r, {
41
41
  icon: n.icon,
@@ -50,14 +50,14 @@ function b(e) {
50
50
  }
51
51
  return [...t.values()];
52
52
  }
53
- var x = (e) => e.textValue ?? (typeof e.label == "string" || typeof e.label == "number" ? String(e.label) : e.value), S = "relative inline-flex h-full cursor-pointer items-center gap-6 px-10 font-medium transition-control tap-target hover:bg-fill-1 active:bg-fill-2 open:bg-fill-1 focus-ring-segment", C = /* @__PURE__ */ s(function({ property: s, propertyIcon: g, operator: C, operators: w, onOperatorChange: T, value: E, values: D, groups: O, searchable: k, width: A, selected: j = [], multiple: M, onSelectedChange: N, onRemove: P, defaultValuesOpen: F, onValuesOpenChange: I, className: L, "data-force": R }, z) {
53
+ var b = (e) => e.textValue ?? (typeof e.label == "string" || typeof e.label == "number" ? String(e.label) : e.value), x = "relative inline-flex h-full min-w-0 cursor-pointer items-center gap-6 px-10 font-medium whitespace-nowrap transition-control tap-target disabled:cursor-default hover:bg-raised-hover active:bg-raised-pressed open:bg-raised-pressed focus-ring-segment", S = "min-w-0 max-w-240 truncate", C = /* @__PURE__ */ s(function({ property: s, propertyIcon: g, operator: C, operators: w, onOperatorChange: T, value: E, values: D, groups: O, searchable: k, width: A, selected: j = [], multiple: M, onSelectedChange: N, onRemove: P, defaultValuesOpen: F, onValuesOpenChange: I, className: L, "data-force": R }, z) {
54
54
  let B = t(), V = n(), H = O ? O.reduce((e, t) => e + t.items.length, 0) : D?.length ?? 0, [U, W] = d(!!F && H > 0), G = (e) => {
55
55
  W(e), I?.(e);
56
- }, [K, q] = d(""), J = u(null), Y = !!k || H > _, X = !!O || H > v, Z = l(() => O ?? (X && D ? b(D) : []), [
56
+ }, [K, q] = d(""), J = u(null), Y = !!k || H > _, X = !!O || H > ee, Z = l(() => O ?? (X && D ? y(D) : []), [
57
57
  O,
58
58
  X,
59
59
  D
60
- ]), Q = K.trim().toLowerCase(), $ = Y && Q ? (D ?? []).filter((e) => x(e).toLowerCase().includes(Q) || e.value.toLowerCase().includes(Q)) : D ?? [];
60
+ ]), Q = K.trim().toLowerCase(), $ = Y && Q ? (D ?? []).filter((e) => b(e).toLowerCase().includes(Q) || e.value.toLowerCase().includes(Q)) : D ?? [];
61
61
  return c(() => {
62
62
  if (!U || !Y || X) return;
63
63
  let e = setTimeout(() => J.current?.focus(), 0);
@@ -70,20 +70,18 @@ var x = (e) => e.textValue ?? (typeof e.label == "string" || typeof e.label == "
70
70
  ref: z,
71
71
  role: "group",
72
72
  "aria-label": typeof s == "string" ? B("filterChip.filterNamed", "Filter: {property}", { property: s }) : B("filterChip.filter", "Filter"),
73
- ...R ? { "data-force": R } : {},
74
- className: e("group/fc inline-flex shrink-0 items-stretch overflow-hidden rounded-pill bg-raised text-fg ring-over", h.size.sm.classes, L),
73
+ className: e("group/fc inline-flex max-w-full shrink-0 items-stretch overflow-hidden rounded-pill bg-raised text-fg ring-over", h.size.sm.classes, L),
75
74
  children: [
76
75
  /* @__PURE__ */ p("span", {
77
- className: e(S, "cursor-default pl-12 text-fg-secondary hover:bg-transparent active:bg-transparent"),
76
+ className: e(x, "shrink-0 cursor-default pl-12 text-fg-secondary hover:bg-transparent active:bg-transparent"),
78
77
  children: [g && /* @__PURE__ */ f(r, {
79
78
  icon: g,
80
79
  size: "sm"
81
80
  }), s]
82
81
  }),
83
- /* @__PURE__ */ p(i, { children: [/* @__PURE__ */ f(i.Trigger, { children: /* @__PURE__ */ f("button", {
82
+ w?.length ? /* @__PURE__ */ p(i, { children: [/* @__PURE__ */ f(i.Trigger, { children: /* @__PURE__ */ f("button", {
84
83
  type: "button",
85
- className: e(S, "text-fg-secondary divider-l"),
86
- disabled: !w?.length,
84
+ className: e(x, "shrink-0 text-fg-secondary divider-l"),
87
85
  children: C
88
86
  }) }), w && /* @__PURE__ */ f(i.Content, { children: /* @__PURE__ */ f(i.RadioGroup, {
89
87
  value: C,
@@ -92,7 +90,10 @@ var x = (e) => e.textValue ?? (typeof e.label == "string" || typeof e.label == "
92
90
  value: e,
93
91
  children: e
94
92
  }, e))
95
- }) })] }),
93
+ }) })] }) : /* @__PURE__ */ f("span", {
94
+ className: e(x, "shrink-0 cursor-default text-fg-secondary divider-l hover:bg-transparent active:bg-transparent"),
95
+ children: C
96
+ }),
96
97
  X && (O || D) ? /* @__PURE__ */ f(o, {
97
98
  title: typeof s == "string" ? s : B("filterChip.filter", "Filter"),
98
99
  open: U,
@@ -100,8 +101,12 @@ var x = (e) => e.textValue ?? (typeof e.label == "string" || typeof e.label == "
100
101
  ...A ? { width: A } : {},
101
102
  trigger: /* @__PURE__ */ f("button", {
102
103
  type: "button",
103
- className: e(S, "divider-l", !P && "pr-12"),
104
- children: E
104
+ ...R ? { "data-force": R } : {},
105
+ className: e(x, "divider-l", !P && "pr-12"),
106
+ children: /* @__PURE__ */ f("span", {
107
+ className: S,
108
+ children: E
109
+ })
105
110
  }),
106
111
  children: /* @__PURE__ */ f(a, {
107
112
  groups: Z,
@@ -122,9 +127,13 @@ var x = (e) => e.textValue ?? (typeof e.label == "string" || typeof e.label == "
122
127
  },
123
128
  children: [/* @__PURE__ */ f(i.Trigger, { children: /* @__PURE__ */ f("button", {
124
129
  type: "button",
125
- className: e(S, "divider-l", !P && "pr-12"),
130
+ ...R ? { "data-force": R } : {},
131
+ className: e(x, "divider-l", !P && "pr-12"),
126
132
  disabled: H === 0,
127
- children: E
133
+ children: /* @__PURE__ */ f("span", {
134
+ className: S,
135
+ children: E
136
+ })
128
137
  }) }), D && /* @__PURE__ */ f(i.Content, {
129
138
  ...Y ? { className: "w-280" } : {},
130
139
  ...Y ? {
@@ -149,7 +158,7 @@ var x = (e) => e.textValue ?? (typeof e.label == "string" || typeof e.label == "
149
158
  }),
150
159
  ...$.length === 0 ? { footer: B("filterChip.noMatches", "No values match") } : {}
151
160
  } : {},
152
- children: M ? y($, (e) => /* @__PURE__ */ f(i.CheckboxItem, {
161
+ children: M ? v($, (e) => /* @__PURE__ */ f(i.CheckboxItem, {
153
162
  checked: j.includes(e.value),
154
163
  onCheckedChange: (t) => N?.(t ? [...j, e.value] : j.filter((t) => t !== e.value)),
155
164
  ...e.icon ? { icon: e.icon } : {},
@@ -160,7 +169,7 @@ var x = (e) => e.textValue ?? (typeof e.label == "string" || typeof e.label == "
160
169
  }, e.value)) : /* @__PURE__ */ f(i.RadioGroup, {
161
170
  value: j[0] ?? "",
162
171
  onValueChange: (e) => N?.([e]),
163
- children: y($, (e) => /* @__PURE__ */ f(i.RadioItem, {
172
+ children: v($, (e) => /* @__PURE__ */ f(i.RadioItem, {
164
173
  value: e.value,
165
174
  closeOnClick: !0,
166
175
  ...e.icon ? { icon: e.icon } : {},
@@ -173,12 +182,12 @@ var x = (e) => e.textValue ?? (typeof e.label == "string" || typeof e.label == "
173
182
  })]
174
183
  }),
175
184
  P && /* @__PURE__ */ f("span", {
176
- className: "flex items-center pr-4 divider-l pl-4",
185
+ className: "flex shrink-0 items-center pr-4 divider-l pl-4",
177
186
  children: /* @__PURE__ */ f("button", {
178
187
  type: "button",
179
188
  "aria-label": typeof s == "string" ? B("filterChip.removeNamed", "Remove the {property} filter", { property: s }) : B("filterChip.remove", "Remove filter"),
180
189
  onClick: P,
181
- className: "relative inline-flex size-24 cursor-pointer items-center justify-center rounded-pill text-fg-tertiary transition-control hover:bg-fill-2 hover:text-fg focus-ring tap-target",
190
+ className: "relative inline-flex size-24 cursor-pointer items-center justify-center rounded-pill text-fg-tertiary transition-control hover:bg-raised-hover hover:text-fg active:bg-raised-pressed focus-ring tap-target",
182
191
  children: /* @__PURE__ */ f(r, {
183
192
  icon: m,
184
193
  size: "xs"
@@ -1 +1 @@
1
- {"version":3,"file":"filter-chip.js","names":["__icon_Cancel01Icon","cn","useUiText","useLocale","Icon","Menu","CommandList","PickerPopover","KAESO_FILTER_CHIP_VARIANTS","KAESO_FILTER_CHIP_DEFAULT_VARIANTS","SEARCH_ABOVE","LIST_ABOVE","inRuns","values","v","item","runs","last","r","i","choiceGroups","groups","key","group","textOf","SEG","FilterChip","givenGroups","forceSearch","force","t","locale","choices","n","g","open","setOwnOpen","useState","defaultValuesOpen","setOpen","o","onValuesOpenChange","query","setQuery","search","useRef","searchable","long","useMemo","q","shown","useEffect","timer","property","className","propertyIcon","operators","operator","onOperatorChange","width","onRemove","value","selected","multiple","onSelectedChange","s","c","Cancel01Icon"],"sources":["../../src/components/filter-chip/filter-chip.tsx"],"sourcesContent":["import { forwardRef, useEffect, useMemo, useRef, useState, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { Cancel01Icon as __icon_Cancel01Icon } from \"@hugeicons/core-free-icons\";\nimport { Menu } from \"../menu/menu.js\";\nimport { CommandList, type CommandListGroup } from \"../command-list/command-list.js\";\nimport { PickerPopover, type PickerPopoverProps } from \"../command-list/picker-popover.js\";\nimport { useLocale, useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_FILTER_CHIP_VARIANTS = {\n size: {\n sm: { classes: \"h-32 text-body\" },\n },\n} as const;\nexport const KAESO_FILTER_CHIP_DEFAULT_VARIANTS = { size: \"sm\" } as const;\n\nexport interface FilterChipChoice {\n value: string;\n label: ReactNode;\n icon?: IconData | undefined;\n leading?: ReactNode | undefined;\n textValue?: string | undefined;\n group?: string | undefined;\n}\n\nconst SEARCH_ABOVE = 8;\nconst LIST_ABOVE = 50;\n\nfunction inRuns(values: FilterChipChoice[], item: (v: FilterChipChoice) => ReactNode): ReactNode {\n if (!values.some((v) => v.group)) return values.map(item);\n const runs: { group: string | undefined; values: FilterChipChoice[] }[] = [];\n for (const v of values) {\n const last = runs[runs.length - 1];\n if (last && last.group === v.group) last.values.push(v);\n else runs.push({ group: v.group, values: [v] });\n }\n return runs.map((r, i) => (\n <Menu.Group key={`${r.group ?? \"\"}:${i}`} label={r.group}>\n {r.values.map(item)}\n </Menu.Group>\n ));\n}\n\nfunction choiceGroups(values: FilterChipChoice[]): CommandListGroup[] {\n const groups = new Map<string, CommandListGroup>();\n for (const v of values) {\n const key = v.group ?? \"\";\n const group = groups.get(key) ?? { id: key || \"values\", ...(key ? { label: key } : {}), items: [] };\n group.items.push({\n value: v.value,\n label: textOf(v),\n keywords: [v.value],\n ...(v.leading || v.icon ? { leading: v.leading ?? (v.icon ? <Icon icon={v.icon} size=\"sm\" className=\"text-fg-secondary\" /> : undefined) } : {}),\n ...(typeof v.label === \"string\" ? {} : { render: () => <span className=\"min-w-0 flex-1 truncate\">{v.label}</span> }),\n });\n groups.set(key, group);\n }\n return [...groups.values()];\n}\n\nexport interface FilterChipProps {\n property: ReactNode;\n propertyIcon?: IconData | undefined;\n operator: string;\n operators?: string[] | undefined;\n onOperatorChange?: ((operator: string) => void) | undefined;\n value: ReactNode;\n values?: FilterChipChoice[] | undefined;\n groups?: CommandListGroup[] | undefined;\n searchable?: boolean | undefined;\n width?: PickerPopoverProps[\"width\"] | undefined;\n selected?: string[] | undefined;\n multiple?: boolean | undefined;\n onSelectedChange?: ((selected: string[]) => void) | undefined;\n onRemove?: (() => void) | undefined;\n defaultValuesOpen?: boolean | undefined;\n onValuesOpenChange?: ((open: boolean) => void) | undefined;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nconst textOf = (v: FilterChipChoice) => v.textValue ?? (typeof v.label === \"string\" || typeof v.label === \"number\" ? String(v.label) : v.value);\n\nconst SEG =\n \"relative inline-flex h-full cursor-pointer items-center gap-6 px-10 font-medium transition-control tap-target hover:bg-fill-1 active:bg-fill-2 open:bg-fill-1 focus-ring-segment\";\n\nexport const FilterChip = /* @__PURE__ */ forwardRef<HTMLDivElement, FilterChipProps>(function FilterChip(\n {\n property,\n propertyIcon,\n operator,\n operators,\n onOperatorChange,\n value,\n values,\n groups: givenGroups,\n searchable: forceSearch,\n width,\n selected = [],\n multiple,\n onSelectedChange,\n onRemove,\n defaultValuesOpen,\n onValuesOpenChange,\n className,\n \"data-force\": force,\n },\n ref,\n) {\n const t = useUiText();\n const locale = useLocale();\n const choices = givenGroups ? givenGroups.reduce((n, g) => n + g.items.length, 0) : (values?.length ?? 0);\n const [open, setOwnOpen] = useState(!!defaultValuesOpen && choices > 0);\n const setOpen = (o: boolean) => {\n setOwnOpen(o);\n onValuesOpenChange?.(o);\n };\n const [query, setQuery] = useState(\"\");\n const search = useRef<HTMLInputElement | null>(null);\n const searchable = !!forceSearch || choices > SEARCH_ABOVE;\n const long = !!givenGroups || choices > LIST_ABOVE;\n const groups = useMemo(() => givenGroups ?? (long && values ? choiceGroups(values) : []), [givenGroups, long, values]);\n const q = query.trim().toLowerCase();\n const shown = searchable && q ? (values ?? []).filter((v) => textOf(v).toLowerCase().includes(q) || v.value.toLowerCase().includes(q)) : (values ?? []);\n useEffect(() => {\n if (!open || !searchable || long) return;\n const timer = setTimeout(() => search.current?.focus(), 0);\n return () => clearTimeout(timer);\n }, [open, searchable, long]);\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={typeof property === \"string\" ? t(\"filterChip.filterNamed\", \"Filter: {property}\", { property }) : t(\"filterChip.filter\", \"Filter\")}\n {...(force ? { \"data-force\": force } : {})}\n className={cn(\n \"group/fc inline-flex shrink-0 items-stretch overflow-hidden rounded-pill bg-raised text-fg ring-over\",\n KAESO_FILTER_CHIP_VARIANTS.size.sm.classes,\n className,\n )}\n >\n <span className={cn(SEG, \"cursor-default pl-12 text-fg-secondary hover:bg-transparent active:bg-transparent\")}>\n {propertyIcon && <Icon icon={propertyIcon} size=\"sm\" />}\n {property}\n </span>\n <Menu>\n <Menu.Trigger>\n <button type=\"button\" className={cn(SEG, \"text-fg-secondary divider-l\")} disabled={!operators?.length}>\n {operator}\n </button>\n </Menu.Trigger>\n {operators && (\n <Menu.Content>\n <Menu.RadioGroup value={operator} onValueChange={(v) => onOperatorChange?.(v)}>\n {operators.map((o) => (\n <Menu.RadioItem key={o} value={o}>\n {o}\n </Menu.RadioItem>\n ))}\n </Menu.RadioGroup>\n </Menu.Content>\n )}\n </Menu>\n {long && (givenGroups || values) ? (\n <PickerPopover\n title={typeof property === \"string\" ? property : t(\"filterChip.filter\", \"Filter\")}\n open={open}\n onOpenChange={setOpen}\n {...(width ? { width } : {})}\n trigger={\n <button type=\"button\" className={cn(SEG, \"divider-l\", !onRemove && \"pr-12\")}>\n {value}\n </button>\n }\n >\n <CommandList\n groups={groups}\n aria-label={typeof property === \"string\" ? property : t(\"filterChip.filter\", \"Filter\")}\n value={selected}\n {...(multiple ? { multiple: true } : {})}\n autoFocus\n placeholder={\n typeof property === \"string\"\n ? t(\"filterChip.searchNamedValues\", \"Search {property} values\", { property: locale === \"en\" ? property.toLowerCase() : property })\n : t(\"filterChip.searchValues\", \"Search values\")\n }\n emptyText={t(\"filterChip.noMatches\", \"No values match\")}\n onSelect={(v) => {\n if (multiple) onSelectedChange?.(selected.includes(v) ? selected.filter((s) => s !== v) : [...selected, v]);\n else {\n onSelectedChange?.([v]);\n setOpen(false);\n }\n }}\n />\n </PickerPopover>\n ) : (\n <Menu\n open={open}\n onOpenChange={(o) => {\n setOpen(o);\n if (!o) setQuery(\"\");\n }}\n >\n <Menu.Trigger>\n <button type=\"button\" className={cn(SEG, \"divider-l\", !onRemove && \"pr-12\")} disabled={choices === 0}>\n {value}\n </button>\n </Menu.Trigger>\n {values && (\n <Menu.Content\n {...(searchable ? { className: \"w-280\" } : {})}\n {...(searchable\n ? {\n header: (\n <input\n ref={search}\n type=\"search\"\n aria-label={\n typeof property === \"string\"\n ? t(\"filterChip.searchNamedValues\", \"Search {property} values\", { property: locale === \"en\" ? property.toLowerCase() : property })\n : t(\"filterChip.searchValues\", \"Search values\")\n }\n placeholder={t(\"filterChip.search\", \"Search\")}\n autoComplete=\"off\"\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n onKeyDown={(e) => {\n if (![\"ArrowDown\", \"ArrowUp\", \"Escape\", \"Tab\", \"Enter\"].includes(e.key)) e.stopPropagation();\n }}\n className=\"h-28 w-full bg-transparent text-body text-fg outline-none placeholder:text-fg-tertiary coarse:h-36\"\n />\n ),\n ...(shown.length === 0 ? { footer: t(\"filterChip.noMatches\", \"No values match\") } : {}),\n }\n : {})}\n >\n {multiple ? (\n inRuns(shown, (v) => (\n <Menu.CheckboxItem\n key={v.value}\n checked={selected.includes(v.value)}\n onCheckedChange={(c) => onSelectedChange?.(c ? [...selected, v.value] : selected.filter((s) => s !== v.value))}\n {...(v.icon ? { icon: v.icon } : {})}\n >\n <span className=\"inline-flex items-center gap-8\">\n {v.leading}\n {v.label}\n </span>\n </Menu.CheckboxItem>\n ))\n ) : (\n <Menu.RadioGroup value={selected[0] ?? \"\"} onValueChange={(s) => onSelectedChange?.([s])}>\n {inRuns(shown, (v) => (\n <Menu.RadioItem key={v.value} value={v.value} closeOnClick {...(v.icon ? { icon: v.icon } : {})}>\n <span className=\"inline-flex items-center gap-8\">\n {v.leading}\n {v.label}\n </span>\n </Menu.RadioItem>\n ))}\n </Menu.RadioGroup>\n )}\n </Menu.Content>\n )}\n </Menu>\n )}\n {onRemove && (\n <span className=\"flex items-center pr-4 divider-l pl-4\">\n <button\n type=\"button\"\n aria-label={\n typeof property === \"string\" ? t(\"filterChip.removeNamed\", \"Remove the {property} filter\", { property }) : t(\"filterChip.remove\", \"Remove filter\")\n }\n onClick={onRemove}\n className=\"relative inline-flex size-24 cursor-pointer items-center justify-center rounded-pill text-fg-tertiary transition-control hover:bg-fill-2 hover:text-fg focus-ring tap-target\"\n >\n <Icon icon={__icon_Cancel01Icon} size=\"xs\" />\n </button>\n </span>\n )}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") FilterChip.displayName = \"FilterChip\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"filter-chip.js","names":["__icon_Cancel01Icon","cn","useUiText","useLocale","Icon","Menu","CommandList","PickerPopover","KAESO_FILTER_CHIP_VARIANTS","KAESO_FILTER_CHIP_DEFAULT_VARIANTS","SEARCH_ABOVE","LIST_ABOVE","inRuns","values","v","item","runs","last","r","i","choiceGroups","groups","key","group","textOf","SEG","VALUE","FilterChip","givenGroups","forceSearch","force","t","locale","choices","n","g","open","setOwnOpen","useState","defaultValuesOpen","setOpen","o","onValuesOpenChange","query","setQuery","search","useRef","searchable","long","useMemo","q","shown","useEffect","timer","property","className","propertyIcon","operators","operator","onOperatorChange","width","onRemove","value","selected","multiple","onSelectedChange","s","c","Cancel01Icon"],"sources":["../../src/components/filter-chip/filter-chip.tsx"],"sourcesContent":["import { forwardRef, useEffect, useMemo, useRef, useState, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Icon, type IconData } from \"../icon/icon.js\";\nimport { Cancel01Icon as __icon_Cancel01Icon } from \"@hugeicons/core-free-icons\";\nimport { Menu } from \"../menu/menu.js\";\nimport { CommandList, type CommandListGroup } from \"../command-list/command-list.js\";\nimport { PickerPopover, type PickerPopoverProps } from \"../command-list/picker-popover.js\";\nimport { useLocale, useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_FILTER_CHIP_VARIANTS = {\n size: {\n sm: { classes: \"h-32 text-body\" },\n },\n} as const;\nexport const KAESO_FILTER_CHIP_DEFAULT_VARIANTS = { size: \"sm\" } as const;\n\nexport interface FilterChipChoice {\n value: string;\n label: ReactNode;\n icon?: IconData | undefined;\n leading?: ReactNode | undefined;\n textValue?: string | undefined;\n group?: string | undefined;\n}\n\nconst SEARCH_ABOVE = 8;\nconst LIST_ABOVE = 50;\n\nfunction inRuns(values: FilterChipChoice[], item: (v: FilterChipChoice) => ReactNode): ReactNode {\n if (!values.some((v) => v.group)) return values.map(item);\n const runs: { group: string | undefined; values: FilterChipChoice[] }[] = [];\n for (const v of values) {\n const last = runs[runs.length - 1];\n if (last && last.group === v.group) last.values.push(v);\n else runs.push({ group: v.group, values: [v] });\n }\n return runs.map((r, i) => (\n <Menu.Group key={`${r.group ?? \"\"}:${i}`} label={r.group}>\n {r.values.map(item)}\n </Menu.Group>\n ));\n}\n\nfunction choiceGroups(values: FilterChipChoice[]): CommandListGroup[] {\n const groups = new Map<string, CommandListGroup>();\n for (const v of values) {\n const key = v.group ?? \"\";\n const group = groups.get(key) ?? { id: key || \"values\", ...(key ? { label: key } : {}), items: [] };\n group.items.push({\n value: v.value,\n label: textOf(v),\n keywords: [v.value],\n ...(v.leading || v.icon ? { leading: v.leading ?? (v.icon ? <Icon icon={v.icon} size=\"sm\" className=\"text-fg-secondary\" /> : undefined) } : {}),\n ...(typeof v.label === \"string\" ? {} : { render: () => <span className=\"min-w-0 flex-1 truncate\">{v.label}</span> }),\n });\n groups.set(key, group);\n }\n return [...groups.values()];\n}\n\nexport interface FilterChipProps {\n property: ReactNode;\n propertyIcon?: IconData | undefined;\n operator: string;\n operators?: string[] | undefined;\n onOperatorChange?: ((operator: string) => void) | undefined;\n value: ReactNode;\n values?: FilterChipChoice[] | undefined;\n groups?: CommandListGroup[] | undefined;\n searchable?: boolean | undefined;\n width?: PickerPopoverProps[\"width\"] | undefined;\n selected?: string[] | undefined;\n multiple?: boolean | undefined;\n onSelectedChange?: ((selected: string[]) => void) | undefined;\n onRemove?: (() => void) | undefined;\n defaultValuesOpen?: boolean | undefined;\n onValuesOpenChange?: ((open: boolean) => void) | undefined;\n className?: string | undefined;\n \"data-force\"?: string | undefined;\n}\n\nconst textOf = (v: FilterChipChoice) => v.textValue ?? (typeof v.label === \"string\" || typeof v.label === \"number\" ? String(v.label) : v.value);\n\nconst SEG =\n \"relative inline-flex h-full min-w-0 cursor-pointer items-center gap-6 px-10 font-medium whitespace-nowrap transition-control tap-target disabled:cursor-default hover:bg-raised-hover active:bg-raised-pressed open:bg-raised-pressed focus-ring-segment\";\nconst VALUE = \"min-w-0 max-w-240 truncate\";\n\nexport const FilterChip = /* @__PURE__ */ forwardRef<HTMLDivElement, FilterChipProps>(function FilterChip(\n {\n property,\n propertyIcon,\n operator,\n operators,\n onOperatorChange,\n value,\n values,\n groups: givenGroups,\n searchable: forceSearch,\n width,\n selected = [],\n multiple,\n onSelectedChange,\n onRemove,\n defaultValuesOpen,\n onValuesOpenChange,\n className,\n \"data-force\": force,\n },\n ref,\n) {\n const t = useUiText();\n const locale = useLocale();\n const choices = givenGroups ? givenGroups.reduce((n, g) => n + g.items.length, 0) : (values?.length ?? 0);\n const [open, setOwnOpen] = useState(!!defaultValuesOpen && choices > 0);\n const setOpen = (o: boolean) => {\n setOwnOpen(o);\n onValuesOpenChange?.(o);\n };\n const [query, setQuery] = useState(\"\");\n const search = useRef<HTMLInputElement | null>(null);\n const searchable = !!forceSearch || choices > SEARCH_ABOVE;\n const long = !!givenGroups || choices > LIST_ABOVE;\n const groups = useMemo(() => givenGroups ?? (long && values ? choiceGroups(values) : []), [givenGroups, long, values]);\n const q = query.trim().toLowerCase();\n const shown = searchable && q ? (values ?? []).filter((v) => textOf(v).toLowerCase().includes(q) || v.value.toLowerCase().includes(q)) : (values ?? []);\n useEffect(() => {\n if (!open || !searchable || long) return;\n const timer = setTimeout(() => search.current?.focus(), 0);\n return () => clearTimeout(timer);\n }, [open, searchable, long]);\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={typeof property === \"string\" ? t(\"filterChip.filterNamed\", \"Filter: {property}\", { property }) : t(\"filterChip.filter\", \"Filter\")}\n className={cn(\n \"group/fc inline-flex max-w-full shrink-0 items-stretch overflow-hidden rounded-pill bg-raised text-fg ring-over\",\n KAESO_FILTER_CHIP_VARIANTS.size.sm.classes,\n className,\n )}\n >\n <span className={cn(SEG, \"shrink-0 cursor-default pl-12 text-fg-secondary hover:bg-transparent active:bg-transparent\")}>\n {propertyIcon && <Icon icon={propertyIcon} size=\"sm\" />}\n {property}\n </span>\n {!operators?.length ? (\n <span className={cn(SEG, \"shrink-0 cursor-default text-fg-secondary divider-l hover:bg-transparent active:bg-transparent\")}>{operator}</span>\n ) : (\n <Menu>\n <Menu.Trigger>\n <button type=\"button\" className={cn(SEG, \"shrink-0 text-fg-secondary divider-l\")}>\n {operator}\n </button>\n </Menu.Trigger>\n {operators && (\n <Menu.Content>\n <Menu.RadioGroup value={operator} onValueChange={(v) => onOperatorChange?.(v)}>\n {operators.map((o) => (\n <Menu.RadioItem key={o} value={o}>\n {o}\n </Menu.RadioItem>\n ))}\n </Menu.RadioGroup>\n </Menu.Content>\n )}\n </Menu>\n )}\n {long && (givenGroups || values) ? (\n <PickerPopover\n title={typeof property === \"string\" ? property : t(\"filterChip.filter\", \"Filter\")}\n open={open}\n onOpenChange={setOpen}\n {...(width ? { width } : {})}\n trigger={\n <button type=\"button\" {...(force ? { \"data-force\": force } : {})} className={cn(SEG, \"divider-l\", !onRemove && \"pr-12\")}>\n <span className={VALUE}>{value}</span>\n </button>\n }\n >\n <CommandList\n groups={groups}\n aria-label={typeof property === \"string\" ? property : t(\"filterChip.filter\", \"Filter\")}\n value={selected}\n {...(multiple ? { multiple: true } : {})}\n autoFocus\n placeholder={\n typeof property === \"string\"\n ? t(\"filterChip.searchNamedValues\", \"Search {property} values\", { property: locale === \"en\" ? property.toLowerCase() : property })\n : t(\"filterChip.searchValues\", \"Search values\")\n }\n emptyText={t(\"filterChip.noMatches\", \"No values match\")}\n onSelect={(v) => {\n if (multiple) onSelectedChange?.(selected.includes(v) ? selected.filter((s) => s !== v) : [...selected, v]);\n else {\n onSelectedChange?.([v]);\n setOpen(false);\n }\n }}\n />\n </PickerPopover>\n ) : (\n <Menu\n open={open}\n onOpenChange={(o) => {\n setOpen(o);\n if (!o) setQuery(\"\");\n }}\n >\n <Menu.Trigger>\n <button type=\"button\" {...(force ? { \"data-force\": force } : {})} className={cn(SEG, \"divider-l\", !onRemove && \"pr-12\")} disabled={choices === 0}>\n <span className={VALUE}>{value}</span>\n </button>\n </Menu.Trigger>\n {values && (\n <Menu.Content\n {...(searchable ? { className: \"w-280\" } : {})}\n {...(searchable\n ? {\n header: (\n <input\n ref={search}\n type=\"search\"\n aria-label={\n typeof property === \"string\"\n ? t(\"filterChip.searchNamedValues\", \"Search {property} values\", { property: locale === \"en\" ? property.toLowerCase() : property })\n : t(\"filterChip.searchValues\", \"Search values\")\n }\n placeholder={t(\"filterChip.search\", \"Search\")}\n autoComplete=\"off\"\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n onKeyDown={(e) => {\n if (![\"ArrowDown\", \"ArrowUp\", \"Escape\", \"Tab\", \"Enter\"].includes(e.key)) e.stopPropagation();\n }}\n className=\"h-28 w-full bg-transparent text-body text-fg outline-none placeholder:text-fg-tertiary coarse:h-36\"\n />\n ),\n ...(shown.length === 0 ? { footer: t(\"filterChip.noMatches\", \"No values match\") } : {}),\n }\n : {})}\n >\n {multiple ? (\n inRuns(shown, (v) => (\n <Menu.CheckboxItem\n key={v.value}\n checked={selected.includes(v.value)}\n onCheckedChange={(c) => onSelectedChange?.(c ? [...selected, v.value] : selected.filter((s) => s !== v.value))}\n {...(v.icon ? { icon: v.icon } : {})}\n >\n <span className=\"inline-flex items-center gap-8\">\n {v.leading}\n {v.label}\n </span>\n </Menu.CheckboxItem>\n ))\n ) : (\n <Menu.RadioGroup value={selected[0] ?? \"\"} onValueChange={(s) => onSelectedChange?.([s])}>\n {inRuns(shown, (v) => (\n <Menu.RadioItem key={v.value} value={v.value} closeOnClick {...(v.icon ? { icon: v.icon } : {})}>\n <span className=\"inline-flex items-center gap-8\">\n {v.leading}\n {v.label}\n </span>\n </Menu.RadioItem>\n ))}\n </Menu.RadioGroup>\n )}\n </Menu.Content>\n )}\n </Menu>\n )}\n {onRemove && (\n <span className=\"flex shrink-0 items-center pr-4 divider-l pl-4\">\n <button\n type=\"button\"\n aria-label={\n typeof property === \"string\" ? t(\"filterChip.removeNamed\", \"Remove the {property} filter\", { property }) : t(\"filterChip.remove\", \"Remove filter\")\n }\n onClick={onRemove}\n className=\"relative inline-flex size-24 cursor-pointer items-center justify-center rounded-pill text-fg-tertiary transition-control hover:bg-raised-hover hover:text-fg active:bg-raised-pressed focus-ring tap-target\"\n >\n <Icon icon={__icon_Cancel01Icon} size=\"xs\" />\n </button>\n </span>\n )}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") FilterChip.displayName = \"FilterChip\";\n"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- import { t as e } from "../chunks/cn-Dj6sRgkF.js";
2
+ import { t as e } from "../chunks/cn-BjnOAUrA.js";
3
3
  import { a as t } from "../chunks/inset-BUzyXLK4.js";
4
4
  import { i as n } from "../chunks/context-BELWW79w.js";
5
- import { t as r } from "../chunks/arrow-focus-BcySmwwU.js";
5
+ import { t as r } from "../chunks/arrow-focus-B0KdRFX8.js";
6
6
  import { forwardRef as i } from "react";
7
7
  import { jsx as a, jsxs as o } from "react/jsx-runtime";
8
8
  //#region src/components/filter-row/filter-row.tsx
@@ -13,7 +13,7 @@ var s = { size: {
13
13
  let m = t(), h = n(), g = u ?? (m ? "inset" : "md");
14
14
  return /* @__PURE__ */ o("div", {
15
15
  ref: p,
16
- className: e("flex min-w-0 shrink-0 flex-wrap items-center justify-between gap-x-16 gap-y-8", s.size[g].classes, d),
16
+ className: e("flex min-w-0 shrink-0 flex-wrap items-center justify-between gap-x-16 gap-y-12", s.size[g].classes, d),
17
17
  ...f,
18
18
  children: [i && /* @__PURE__ */ a("div", {
19
19
  className: "flex max-w-full min-w-0",
@@ -23,7 +23,7 @@ var s = { size: {
23
23
  "aria-label": l ?? h("filterRow.filters", "Filters"),
24
24
  "aria-orientation": "horizontal",
25
25
  className: "flex max-w-full min-w-0 flex-wrap items-center gap-8",
26
- onKeyDown: (e) => r(e),
26
+ onKeyDown: (e) => r(e, { byItem: !0 }),
27
27
  children: c
28
28
  })]
29
29
  });
@@ -1 +1 @@
1
- {"version":3,"file":"filter-row.js","names":["cn","useInset","useUiText","arrowFocus","KAESO_FILTER_ROW_VARIANTS","KAESO_FILTER_ROW_DEFAULT_VARIANTS","FilterRow","sizeProp","props","inset","t","size","className","tabs","children","filtersLabel"],"sources":["../../src/components/filter-row/filter-row.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes, type KeyboardEvent, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useInset } from \"../../utils/inset.js\";\nimport { arrowFocus } from \"../../utils/arrow-focus.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_FILTER_ROW_VARIANTS = {\n size: {\n md: { classes: \"px-24 py-8\" },\n inset: {\n classes: \"pt-16 pb-16\",\n },\n },\n} as const;\nexport const KAESO_FILTER_ROW_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nexport interface FilterRowProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n tabs?: ReactNode | undefined;\n children?: ReactNode | undefined;\n filtersLabel?: string | undefined;\n size?: keyof typeof KAESO_FILTER_ROW_VARIANTS.size | undefined;\n}\n\nexport const FilterRow = /* @__PURE__ */ forwardRef<HTMLDivElement, FilterRowProps>(function FilterRow(\n { tabs, children, filtersLabel, size: sizeProp, className, ...props },\n ref,\n) {\n const inset = useInset();\n const t = useUiText();\n const size = sizeProp ?? (inset ? \"inset\" : \"md\");\n return (\n <div\n ref={ref}\n className={cn(\"flex min-w-0 shrink-0 flex-wrap items-center justify-between gap-x-16 gap-y-8\", KAESO_FILTER_ROW_VARIANTS.size[size].classes, className)}\n {...props}\n >\n {tabs && <div className=\"flex max-w-full min-w-0\">{tabs}</div>}\n {children && (\n <div\n role=\"toolbar\"\n aria-label={filtersLabel ?? t(\"filterRow.filters\", \"Filters\")}\n aria-orientation=\"horizontal\"\n className=\"flex max-w-full min-w-0 flex-wrap items-center gap-8\"\n onKeyDown={(e: KeyboardEvent<HTMLDivElement>) => arrowFocus(e)}\n >\n {children}\n </div>\n )}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") FilterRow.displayName = \"FilterRow\";\n"],"mappings":";;;;;;;;AAMA,IAAaI,IAA4B,EACvC,MAAM;CACJ,IAAI,EAAE,SAAS,aAAa;CAC5B,OAAO,EACL,SAAS,cACX;AACF,EACF,GACaC,IAAoC,EAAE,MAAM,KAAK,GASjDC,IAA4B,kBAA2C,SAClF,EAAE,SAAM,aAAU,iBAAc,MAAMC,GAAU,cAAW,GAAGC,KAC9D,GACA;CACA,IAAMC,IAAQR,EAAS,GACjBS,IAAIR,EAAU,GACdS,IAAOJ,MAAaE,IAAQ,UAAU;CAC5C,OACE,kBAAC,OAAD;EACO;EACL,WAAWT,EAAG,iFAAiFI,EAA0B,KAAKO,EAAK,CAAC,SAASC,CAAS;EACtJ,GAAIJ;EAHN,UAAA,CAKGK,KAAQ,kBAAC,OAAD;GAAK,WAAU;GAA2B,UAAAA;EAAU,CAAA,GAC5DC,KACC,kBAAC,OAAD;GACE,MAAK;GACL,cAAYC,KAAgBL,EAAE,qBAAqB,SAAS;GAC5D,oBAAiB;GACjB,WAAU;GACV,YAAY,MAAqCP,EAAW,CAAC;GAE5D;EACE,CAAA,CAEJ;;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAU,cAAc"}
1
+ {"version":3,"file":"filter-row.js","names":["cn","useInset","useUiText","arrowFocus","KAESO_FILTER_ROW_VARIANTS","KAESO_FILTER_ROW_DEFAULT_VARIANTS","FilterRow","sizeProp","props","inset","t","size","className","tabs","children","filtersLabel"],"sources":["../../src/components/filter-row/filter-row.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes, type KeyboardEvent, type ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useInset } from \"../../utils/inset.js\";\nimport { arrowFocus } from \"../../utils/arrow-focus.js\";\nimport { useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_FILTER_ROW_VARIANTS = {\n size: {\n md: { classes: \"px-24 py-8\" },\n inset: {\n classes: \"pt-16 pb-16\",\n },\n },\n} as const;\nexport const KAESO_FILTER_ROW_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nexport interface FilterRowProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n tabs?: ReactNode | undefined;\n children?: ReactNode | undefined;\n filtersLabel?: string | undefined;\n size?: keyof typeof KAESO_FILTER_ROW_VARIANTS.size | undefined;\n}\n\nexport const FilterRow = /* @__PURE__ */ forwardRef<HTMLDivElement, FilterRowProps>(function FilterRow(\n { tabs, children, filtersLabel, size: sizeProp, className, ...props },\n ref,\n) {\n const inset = useInset();\n const t = useUiText();\n const size = sizeProp ?? (inset ? \"inset\" : \"md\");\n return (\n <div\n ref={ref}\n className={cn(\"flex min-w-0 shrink-0 flex-wrap items-center justify-between gap-x-16 gap-y-12\", KAESO_FILTER_ROW_VARIANTS.size[size].classes, className)}\n {...props}\n >\n {tabs && <div className=\"flex max-w-full min-w-0\">{tabs}</div>}\n {children && (\n <div\n role=\"toolbar\"\n aria-label={filtersLabel ?? t(\"filterRow.filters\", \"Filters\")}\n aria-orientation=\"horizontal\"\n className=\"flex max-w-full min-w-0 flex-wrap items-center gap-8\"\n onKeyDown={(e: KeyboardEvent<HTMLDivElement>) => arrowFocus(e, { byItem: true })}\n >\n {children}\n </div>\n )}\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") FilterRow.displayName = \"FilterRow\";\n"],"mappings":";;;;;;;;AAMA,IAAaI,IAA4B,EACvC,MAAM;CACJ,IAAI,EAAE,SAAS,aAAa;CAC5B,OAAO,EACL,SAAS,cACX;AACF,EACF,GACaC,IAAoC,EAAE,MAAM,KAAK,GASjDC,IAA4B,kBAA2C,SAClF,EAAE,SAAM,aAAU,iBAAc,MAAMC,GAAU,cAAW,GAAGC,KAC9D,GACA;CACA,IAAMC,IAAQR,EAAS,GACjBS,IAAIR,EAAU,GACdS,IAAOJ,MAAaE,IAAQ,UAAU;CAC5C,OACE,kBAAC,OAAD;EACO;EACL,WAAWT,EAAG,kFAAkFI,EAA0B,KAAKO,EAAK,CAAC,SAASC,CAAS;EACvJ,GAAIJ;EAHN,UAAA,CAKGK,KAAQ,kBAAC,OAAD;GAAK,WAAU;GAA2B,UAAAA;EAAU,CAAA,GAC5DC,KACC,kBAAC,OAAD;GACE,MAAK;GACL,cAAYC,KAAgBL,EAAE,qBAAqB,SAAS;GAC5D,oBAAiB;GACjB,WAAU;GACV,YAAY,MAAqCP,EAAW,GAAG,EAAE,QAAQ,GAAK,CAAC;GAE9E;EACE,CAAA,CAEJ;;AAET,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAU,cAAc"}