@logicplanes/kaeso-ui 0.2.1 → 0.3.0

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 (356) hide show
  1. package/AGENTS.md +2 -0
  2. package/NOTICE.md +1 -1
  3. package/ai/component-guides.md +249 -24
  4. package/ai/component-registry.json +1044 -67
  5. package/ai/component-registry.md +238 -50
  6. package/ai/icons.md +1 -1
  7. package/ai/tokens.md +7 -3
  8. package/dist/blocks/delete-resource.js +1 -1
  9. package/dist/blocks/pages.js +5 -5
  10. package/dist/blocks/resource-list.js +4 -4
  11. package/dist/chunks/app-frame-B9vrgwaE.js +220 -0
  12. package/dist/chunks/app-frame-B9vrgwaE.js.map +1 -0
  13. package/dist/chunks/{avatar-D2nJNbtC.js → avatar-DOzOhYJr.js} +2 -2
  14. package/dist/chunks/{avatar-D2nJNbtC.js.map → avatar-DOzOhYJr.js.map} +1 -1
  15. package/dist/chunks/{badge-Dkyhs0_j.js → badge-wUHlj7m3.js} +2 -2
  16. package/dist/chunks/{badge-Dkyhs0_j.js.map → badge-wUHlj7m3.js.map} +1 -1
  17. package/dist/chunks/{banner-DxGBPQ7p.js → banner-BBlNFHd-.js} +4 -4
  18. package/dist/chunks/{banner-DxGBPQ7p.js.map → banner-BBlNFHd-.js.map} +1 -1
  19. package/dist/chunks/{button-DQvoOxVQ.js → button-CAPyW-v8.js} +8 -8
  20. package/dist/chunks/{button-DQvoOxVQ.js.map → button-CAPyW-v8.js.map} +1 -1
  21. package/dist/chunks/{calendar-CN3YJi2k.js → calendar-CBeptQFq.js} +2 -2
  22. package/dist/chunks/{calendar-CN3YJi2k.js.map → calendar-CBeptQFq.js.map} +1 -1
  23. package/dist/chunks/{checkbox-BgRdbfCE.js → checkbox-C5yvSS7O.js} +3 -3
  24. package/dist/chunks/{checkbox-BgRdbfCE.js.map → checkbox-C5yvSS7O.js.map} +1 -1
  25. package/dist/chunks/{cn-CidVUKMm.js → cn-DUDmdLpZ.js} +3 -1
  26. package/dist/chunks/cn-DUDmdLpZ.js.map +1 -0
  27. package/dist/chunks/{code-BADhvsgC.js → code-C49NzHUQ.js} +2 -2
  28. package/dist/chunks/{code-BADhvsgC.js.map → code-C49NzHUQ.js.map} +1 -1
  29. package/dist/chunks/{code-block-DxtladFW.js → code-block-DREsvJ-g.js} +24 -21
  30. package/dist/chunks/code-block-DREsvJ-g.js.map +1 -0
  31. package/dist/chunks/{collapsible-Cw_1aem5.js → collapsible-CDQq1Y9x.js} +6 -6
  32. package/dist/chunks/collapsible-CDQq1Y9x.js.map +1 -0
  33. package/dist/chunks/combobox-DqtzsAKG.js +314 -0
  34. package/dist/chunks/combobox-DqtzsAKG.js.map +1 -0
  35. package/dist/chunks/command-list-D5k0uvkR.js +417 -0
  36. package/dist/chunks/command-list-D5k0uvkR.js.map +1 -0
  37. package/dist/chunks/{copy-button-DXxn-YYZ.js → copy-button-CNpEnS04.js} +6 -6
  38. package/dist/chunks/{copy-button-DXxn-YYZ.js.map → copy-button-CNpEnS04.js.map} +1 -1
  39. package/dist/chunks/{core-K960A4OT.js → core-CqLWVMDI.js} +36 -36
  40. package/dist/chunks/core-CqLWVMDI.js.map +1 -0
  41. package/dist/chunks/{date-popup-B-6xhb-1.js → date-popup-BgDz6SUj.js} +4 -4
  42. package/dist/chunks/{date-popup-B-6xhb-1.js.map → date-popup-BgDz6SUj.js.map} +1 -1
  43. package/dist/chunks/{de-CTAo4KL7.js → de-CkXZKaBD.js} +37 -5
  44. package/dist/chunks/de-CkXZKaBD.js.map +1 -0
  45. package/dist/chunks/dialog-truWH0qe.js +353 -0
  46. package/dist/chunks/dialog-truWH0qe.js.map +1 -0
  47. package/dist/chunks/{empty-DIbBpytW.js → empty-YXmSkKzR.js} +2 -2
  48. package/dist/chunks/{empty-DIbBpytW.js.map → empty-YXmSkKzR.js.map} +1 -1
  49. package/dist/chunks/{field-d8V94bvZ.js → field-BZriODU7.js} +3 -3
  50. package/dist/chunks/field-BZriODU7.js.map +1 -0
  51. package/dist/chunks/{icon-CeNQtobn.js → icon-BqujXDUc.js} +2 -2
  52. package/dist/chunks/{icon-CeNQtobn.js.map → icon-BqujXDUc.js.map} +1 -1
  53. package/dist/chunks/{icon-button-_x1RUphC.js → icon-button-D4O4puwH.js} +3 -3
  54. package/dist/chunks/{icon-button-_x1RUphC.js.map → icon-button-D4O4puwH.js.map} +1 -1
  55. package/dist/chunks/identity-CsZvAUwu.js +361 -0
  56. package/dist/chunks/identity-CsZvAUwu.js.map +1 -0
  57. package/dist/chunks/{input-CNTfI6YE.js → input-B0wtkcNh.js} +5 -5
  58. package/dist/chunks/{input-CNTfI6YE.js.map → input-B0wtkcNh.js.map} +1 -1
  59. package/dist/chunks/{input-group-CYA1MEoZ.js → input-group-BQLw06B0.js} +33 -27
  60. package/dist/chunks/input-group-BQLw06B0.js.map +1 -0
  61. package/dist/chunks/{inset-BLMdxX4I.js → inset-BnBj8NJV.js} +12 -2
  62. package/dist/chunks/inset-BnBj8NJV.js.map +1 -0
  63. package/dist/chunks/{iso-field-1qmg7TP8.js → iso-field-BUXgY1dB.js} +5 -3
  64. package/dist/chunks/{iso-field-1qmg7TP8.js.map → iso-field-BUXgY1dB.js.map} +1 -1
  65. package/dist/chunks/{json-view-B6KHIWzh.js → json-view-BkG2hTXV.js} +11 -10
  66. package/dist/chunks/{json-view-B6KHIWzh.js.map → json-view-BkG2hTXV.js.map} +1 -1
  67. package/dist/chunks/{kbd-CBcBDvqU.js → kbd-DqWmbr_e.js} +2 -2
  68. package/dist/chunks/{kbd-CBcBDvqU.js.map → kbd-DqWmbr_e.js.map} +1 -1
  69. package/dist/chunks/{link-vz9aV8WX.js → link-YMcxM-BZ.js} +4 -4
  70. package/dist/chunks/{link-vz9aV8WX.js.map → link-YMcxM-BZ.js.map} +1 -1
  71. package/dist/chunks/{link-provider---9JdxTg.js → link-provider-BsUxhZKG.js} +2 -2
  72. package/dist/chunks/{link-provider---9JdxTg.js.map → link-provider-BsUxhZKG.js.map} +1 -1
  73. package/dist/chunks/list-wXZIZo_s.js +492 -0
  74. package/dist/chunks/list-wXZIZo_s.js.map +1 -0
  75. package/dist/chunks/{loader-CUehxvSZ.js → loader-ENBh2Fbt.js} +2 -2
  76. package/dist/chunks/{loader-CUehxvSZ.js.map → loader-ENBh2Fbt.js.map} +1 -1
  77. package/dist/chunks/{markdown-5NyaHHfN.js → markdown-DWyxjsSY.js} +10 -10
  78. package/dist/chunks/{markdown-5NyaHHfN.js.map → markdown-DWyxjsSY.js.map} +1 -1
  79. package/dist/chunks/{menu-DyVPwgfF.js → menu-Bnfi9P3t.js} +7 -7
  80. package/dist/chunks/{menu-DyVPwgfF.js.map → menu-Bnfi9P3t.js.map} +1 -1
  81. package/dist/chunks/{meter-DWhyzFGQ.js → meter-DhTnem4k.js} +2 -2
  82. package/dist/chunks/{meter-DWhyzFGQ.js.map → meter-DhTnem4k.js.map} +1 -1
  83. package/dist/chunks/nav-sheet-QqNRHo-y.js +60 -0
  84. package/dist/chunks/nav-sheet-QqNRHo-y.js.map +1 -0
  85. package/dist/chunks/{nav-wordmark-DLkItdvo.js → nav-wordmark-DmbT1Aiw.js} +2 -2
  86. package/dist/chunks/{nav-wordmark-DLkItdvo.js.map → nav-wordmark-DmbT1Aiw.js.map} +1 -1
  87. package/dist/chunks/option-checkbox-Df7WhGn4.js +25 -0
  88. package/dist/chunks/option-checkbox-Df7WhGn4.js.map +1 -0
  89. package/dist/chunks/over-sheet-B8vzr_zU.js +8 -0
  90. package/dist/chunks/over-sheet-B8vzr_zU.js.map +1 -0
  91. package/dist/chunks/{page-header-CEPZzhRp.js → page-header-Ccnrspbp.js} +5 -5
  92. package/dist/chunks/{page-header-CEPZzhRp.js.map → page-header-Ccnrspbp.js.map} +1 -1
  93. package/dist/chunks/{pagination-CCMxQ5pH.js → pagination-CEmWZNjp.js} +5 -4
  94. package/dist/chunks/{pagination-CCMxQ5pH.js.map → pagination-CEmWZNjp.js.map} +1 -1
  95. package/dist/chunks/picker-popover-C4ElNk7t.js +102 -0
  96. package/dist/chunks/picker-popover-C4ElNk7t.js.map +1 -0
  97. package/dist/chunks/{popover-BE7VO-a4.js → popover-bjxg020P.js} +3 -3
  98. package/dist/chunks/{popover-BE7VO-a4.js.map → popover-bjxg020P.js.map} +1 -1
  99. package/dist/chunks/{radio-CUxbLCvD.js → radio-DwYcXAzv.js} +2 -2
  100. package/dist/chunks/{radio-CUxbLCvD.js.map → radio-DwYcXAzv.js.map} +1 -1
  101. package/dist/chunks/range-popup-CG9Jo5B7.js +128 -0
  102. package/dist/chunks/range-popup-CG9Jo5B7.js.map +1 -0
  103. package/dist/chunks/release-art-Chd8l9Rf.js +555 -0
  104. package/dist/chunks/release-art-Chd8l9Rf.js.map +1 -0
  105. package/dist/chunks/{resize-motion-CMaidkwe.js → resize-motion-BWGMchyP.js} +27 -23
  106. package/dist/chunks/resize-motion-BWGMchyP.js.map +1 -0
  107. package/dist/chunks/{rights-BbiJ0AJB.js → rights-hMoaFasn.js} +12 -12
  108. package/dist/chunks/rights-hMoaFasn.js.map +1 -0
  109. package/dist/chunks/{section-DzOLLN1p.js → section-BsET7Fo-.js} +4 -4
  110. package/dist/chunks/{section-DzOLLN1p.js.map → section-BsET7Fo-.js.map} +1 -1
  111. package/dist/chunks/{segmented-MrinfDL8.js → segmented-DXKVF-nY.js} +4 -4
  112. package/dist/chunks/{segmented-MrinfDL8.js.map → segmented-DXKVF-nY.js.map} +1 -1
  113. package/dist/chunks/{select-Bc4kRiSG.js → select-Bbv2f5F8.js} +63 -80
  114. package/dist/chunks/select-Bbv2f5F8.js.map +1 -0
  115. package/dist/chunks/{separator-D5AzVFTS.js → separator-CpAUELNs.js} +2 -2
  116. package/dist/chunks/{separator-D5AzVFTS.js.map → separator-CpAUELNs.js.map} +1 -1
  117. package/dist/chunks/{sidebar-5IA18LuP.js → sidebar-Dey1ZfGt.js} +54 -51
  118. package/dist/chunks/sidebar-Dey1ZfGt.js.map +1 -0
  119. package/dist/chunks/{sidebar-menu-DRWRxcJ3.js → sidebar-menu-ct8IiL4z.js} +2 -2
  120. package/dist/chunks/{sidebar-menu-DRWRxcJ3.js.map → sidebar-menu-ct8IiL4z.js.map} +1 -1
  121. package/dist/chunks/{skeleton-kfuqdl1a.js → skeleton-BM797MAg.js} +2 -2
  122. package/dist/chunks/{skeleton-kfuqdl1a.js.map → skeleton-BM797MAg.js.map} +1 -1
  123. package/dist/chunks/{slider-DbhjJ3ML.js → slider-Ds-tqY-1.js} +2 -2
  124. package/dist/chunks/{slider-DbhjJ3ML.js.map → slider-Ds-tqY-1.js.map} +1 -1
  125. package/dist/chunks/status-dot-BqVOlShY.js +29 -0
  126. package/dist/chunks/status-dot-BqVOlShY.js.map +1 -0
  127. package/dist/chunks/{styles-Btvg2DCf.js → styles-CVJU9t9v.js} +2 -2
  128. package/dist/chunks/{styles-Btvg2DCf.js.map → styles-CVJU9t9v.js.map} +1 -1
  129. package/dist/chunks/{swap-text-BhPI8DOf.js → swap-text-Cica0pUr.js} +2 -2
  130. package/dist/chunks/{swap-text-BhPI8DOf.js.map → swap-text-Cica0pUr.js.map} +1 -1
  131. package/dist/chunks/{switch-XMY_CQE-.js → switch-CSKMEomo.js} +3 -3
  132. package/dist/chunks/{switch-XMY_CQE-.js.map → switch-CSKMEomo.js.map} +1 -1
  133. package/dist/chunks/{table-DYKa86af.js → table-D-36EM7f.js} +2 -2
  134. package/dist/chunks/{table-DYKa86af.js.map → table-D-36EM7f.js.map} +1 -1
  135. package/dist/chunks/{tag-Dg89uYpV.js → tag-CwDKXVHj.js} +4 -4
  136. package/dist/chunks/{tag-Dg89uYpV.js.map → tag-CwDKXVHj.js.map} +1 -1
  137. package/dist/chunks/{text--5MKh2G4.js → text-Dvvgg5Jt.js} +3 -3
  138. package/dist/chunks/{text--5MKh2G4.js.map → text-Dvvgg5Jt.js.map} +1 -1
  139. package/dist/chunks/{textarea-Cj8iR82R.js → textarea-2d373OyU.js} +35 -31
  140. package/dist/chunks/textarea-2d373OyU.js.map +1 -0
  141. package/dist/chunks/timeseries-LRDAZHV0.js +339 -0
  142. package/dist/chunks/timeseries-LRDAZHV0.js.map +1 -0
  143. package/dist/chunks/{toolbar-Dw3uxpsE.js → toolbar-nVLFWH2i.js} +3 -3
  144. package/dist/chunks/{toolbar-Dw3uxpsE.js.map → toolbar-nVLFWH2i.js.map} +1 -1
  145. package/dist/chunks/{tooltip-DEbCCsru.js → tooltip-S1DmyLVl.js} +4 -4
  146. package/dist/chunks/{tooltip-DEbCCsru.js.map → tooltip-S1DmyLVl.js.map} +1 -1
  147. package/dist/chunks/{tooltip-root-DRd4ciUv.js → tooltip-root-vjylFUqw.js} +4 -4
  148. package/dist/chunks/{tooltip-root-DRd4ciUv.js.map → tooltip-root-vjylFUqw.js.map} +1 -1
  149. package/dist/chunks/{virtual-rows-BZe49bKi.js → virtual-rows-yAMjeAwj.js} +4 -3
  150. package/dist/chunks/virtual-rows-yAMjeAwj.js.map +1 -0
  151. package/dist/chunks/{zh-CN-C7GmVswt.js → zh-CN-CqEA4PCM.js} +37 -5
  152. package/dist/chunks/zh-CN-CqEA4PCM.js.map +1 -0
  153. package/dist/components/app-frame.js +2 -2
  154. package/dist/components/avatar.js +1 -1
  155. package/dist/components/badge.js +1 -1
  156. package/dist/components/banner.js +1 -1
  157. package/dist/components/button-group.js +33 -32
  158. package/dist/components/button-group.js.map +1 -1
  159. package/dist/components/button.js +1 -1
  160. package/dist/components/calendar.js +1 -1
  161. package/dist/components/charts/bar.js +34 -31
  162. package/dist/components/charts/bar.js.map +1 -1
  163. package/dist/components/charts/donut.js +2 -2
  164. package/dist/components/charts/gauge.js +2 -2
  165. package/dist/components/charts/heatmap.js +1 -1
  166. package/dist/components/charts/sankey.js +2 -2
  167. package/dist/components/charts/sparkline.js +1 -1
  168. package/dist/components/charts/timeseries.js +1 -252
  169. package/dist/components/charts.js +3 -3
  170. package/dist/components/checkbox.js +1 -1
  171. package/dist/components/code-block.js +2 -2
  172. package/dist/components/code.js +1 -1
  173. package/dist/components/collapsible.js +1 -1
  174. package/dist/components/combobox.js +1 -1
  175. package/dist/components/command-list.js +4 -0
  176. package/dist/components/command-palette.js +120 -171
  177. package/dist/components/command-palette.js.map +1 -1
  178. package/dist/components/copy-button.js +1 -1
  179. package/dist/components/data-table.js +251 -193
  180. package/dist/components/data-table.js.map +1 -1
  181. package/dist/components/date-picker.js +7 -7
  182. package/dist/components/date-picker.js.map +1 -1
  183. package/dist/components/dialog.js +7 -9
  184. package/dist/components/dialog.js.map +1 -1
  185. package/dist/components/display-options.js +67 -53
  186. package/dist/components/display-options.js.map +1 -1
  187. package/dist/components/empty.js +1 -1
  188. package/dist/components/field.js +1 -1
  189. package/dist/components/filter-chip.js +138 -63
  190. package/dist/components/filter-chip.js.map +1 -1
  191. package/dist/components/filter-row.js +2 -2
  192. package/dist/components/flow.js +2 -2
  193. package/dist/components/heading.js +1 -1
  194. package/dist/components/icon-button.js +1 -1
  195. package/dist/components/icon.js +1 -1
  196. package/dist/components/input.js +56 -54
  197. package/dist/components/input.js.map +1 -1
  198. package/dist/components/kaeso/conversation.js +88 -79
  199. package/dist/components/kaeso/conversation.js.map +1 -1
  200. package/dist/components/kaeso/identity.js +1 -1
  201. package/dist/components/kaeso/moments.js +8 -8
  202. package/dist/components/kaeso/moments.js.map +1 -1
  203. package/dist/components/kaeso/rights.js +1 -1
  204. package/dist/components/kaeso/usage.js +6 -6
  205. package/dist/components/kaeso/usage.js.map +1 -1
  206. package/dist/components/kaeso.js +212 -84
  207. package/dist/components/kaeso.js.map +1 -1
  208. package/dist/components/kbd.js +1 -1
  209. package/dist/components/key-value.js +3 -3
  210. package/dist/components/label.js +1 -1
  211. package/dist/components/layout.js +1 -1
  212. package/dist/components/link.js +1 -1
  213. package/dist/components/list.js +1 -1
  214. package/dist/components/loader.js +2 -2
  215. package/dist/components/logo.js +2 -2
  216. package/dist/components/markdown.js +1 -1
  217. package/dist/components/menu.js +2 -2
  218. package/dist/components/meter.js +1 -1
  219. package/dist/components/page-header.js +1 -1
  220. package/dist/components/pagination.js +1 -1
  221. package/dist/components/playground.js +654 -381
  222. package/dist/components/playground.js.map +1 -1
  223. package/dist/components/popover.js +2 -2
  224. package/dist/components/qr-code.js +1 -1
  225. package/dist/components/radio.js +1 -1
  226. package/dist/components/release-art.js +2 -0
  227. package/dist/components/scroll-area.js +1 -1
  228. package/dist/components/section.js +1 -1
  229. package/dist/components/segmented.js +1 -1
  230. package/dist/components/select.js +1 -1
  231. package/dist/components/separator.js +1 -1
  232. package/dist/components/settings.js +3 -3
  233. package/dist/components/sheet.js +69 -52
  234. package/dist/components/sheet.js.map +1 -1
  235. package/dist/components/sidebar.js +1 -1
  236. package/dist/components/skeleton.js +1 -1
  237. package/dist/components/slider.js +1 -1
  238. package/dist/components/stat.js +88 -74
  239. package/dist/components/stat.js.map +1 -1
  240. package/dist/components/status-dot.js +1 -1
  241. package/dist/components/surface.js +1 -1
  242. package/dist/components/swap-text.js +1 -1
  243. package/dist/components/switch.js +1 -1
  244. package/dist/components/table.js +1 -1
  245. package/dist/components/tabs.js +48 -49
  246. package/dist/components/tabs.js.map +1 -1
  247. package/dist/components/tag.js +1 -1
  248. package/dist/components/text.js +1 -1
  249. package/dist/components/theme-image.js +1 -1
  250. package/dist/components/theme-menu.js +2 -2
  251. package/dist/components/theme-select.js +1 -1
  252. package/dist/components/timeline.js +1 -1
  253. package/dist/components/toast.js +4 -4
  254. package/dist/components/toc.js +1 -1
  255. package/dist/components/toolbar.js +1 -1
  256. package/dist/components/tooltip.js +1 -1
  257. package/dist/components/visually-hidden.js +1 -1
  258. package/dist/format.js +132 -79
  259. package/dist/format.js.map +1 -1
  260. package/dist/i18n-provider.js +1 -1
  261. package/dist/index.js +115 -111
  262. package/dist/kaeso.css +43 -8
  263. package/dist/styles.css +1 -1
  264. package/dist/types/components/charts/bar.d.ts +6 -0
  265. package/dist/types/components/charts/core.d.ts +2 -2
  266. package/dist/types/components/charts/docs.d.ts +7 -0
  267. package/dist/types/components/charts/time-axis.d.ts +5 -0
  268. package/dist/types/components/charts/timeseries.d.ts +9 -0
  269. package/dist/types/components/code-block/highlighter.d.ts +2 -0
  270. package/dist/types/components/combobox/combobox.d.ts +2 -0
  271. package/dist/types/components/combobox/docs.d.ts +2 -4
  272. package/dist/types/components/command-list/command-list.d.ts +84 -0
  273. package/dist/types/components/command-list/docs.d.ts +52 -0
  274. package/dist/types/components/command-list/index.d.ts +3 -0
  275. package/dist/types/components/command-list/match.d.ts +1 -0
  276. package/dist/types/components/command-list/picker-popover.d.ts +44 -0
  277. package/dist/types/components/data-table/data-table.d.ts +3 -2
  278. package/dist/types/components/data-table/docs.d.ts +1 -0
  279. package/dist/types/components/date-picker/docs.d.ts +0 -6
  280. package/dist/types/components/dialog/dialog.d.ts +24 -0
  281. package/dist/types/components/dialog/docs.d.ts +4 -0
  282. package/dist/types/components/display-options/display-options.d.ts +1 -0
  283. package/dist/types/components/filter-chip/docs.d.ts +4 -0
  284. package/dist/types/components/filter-chip/filter-chip.d.ts +7 -0
  285. package/dist/types/components/input/docs.d.ts +2 -12
  286. package/dist/types/components/input/number-input.d.ts +1 -0
  287. package/dist/types/components/input/tag-input.d.ts +1 -0
  288. package/dist/types/components/kaeso/docs.d.ts +34 -0
  289. package/dist/types/components/kaeso/identity.d.ts +10 -1
  290. package/dist/types/components/kaeso/index.d.ts +1 -0
  291. package/dist/types/components/kaeso/provider-marks.d.ts +5 -1
  292. package/dist/types/components/kaeso/provider-picker.d.ts +42 -0
  293. package/dist/types/components/list/docs.d.ts +2 -0
  294. package/dist/types/components/list/list.d.ts +2 -0
  295. package/dist/types/components/menu/styles.d.ts +1 -1
  296. package/dist/types/components/playground/docs.d.ts +32 -0
  297. package/dist/types/components/playground/index.d.ts +1 -0
  298. package/dist/types/components/playground/model-picker.d.ts +39 -4
  299. package/dist/types/components/playground/reasoning.d.ts +29 -0
  300. package/dist/types/components/playground/response-view.d.ts +7 -1
  301. package/dist/types/components/release-art/docs.d.ts +13 -0
  302. package/dist/types/components/release-art/drawing.d.ts +48 -0
  303. package/dist/types/components/release-art/index.d.ts +1 -0
  304. package/dist/types/components/release-art/release-art.d.ts +37 -0
  305. package/dist/types/components/select/docs.d.ts +0 -2
  306. package/dist/types/components/select/option-checkbox.d.ts +1 -0
  307. package/dist/types/components/sidebar/sidebar.d.ts +1 -0
  308. package/dist/types/components/stat/docs.d.ts +1 -0
  309. package/dist/types/components/stat/stat.d.ts +1 -0
  310. package/dist/types/components/status-dot/docs.d.ts +2 -0
  311. package/dist/types/components/status-dot/status-dot.d.ts +2 -0
  312. package/dist/types/format/index.d.ts +8 -0
  313. package/dist/types/index.d.ts +2 -0
  314. package/dist/types/utils/index.d.ts +1 -1
  315. package/dist/types/utils/inset.d.ts +5 -0
  316. package/dist/types/utils/over-sheet.d.ts +1 -0
  317. package/dist/types/utils/restore-focus.d.ts +1 -1
  318. package/dist/utils.js +4 -4
  319. package/foundations/accessibility.md +1 -0
  320. package/foundations/layout.md +45 -0
  321. package/foundations/writing.md +1 -0
  322. package/package.json +2 -2
  323. package/dist/chunks/app-frame-BXh-06HL.js +0 -214
  324. package/dist/chunks/app-frame-BXh-06HL.js.map +0 -1
  325. package/dist/chunks/cn-CidVUKMm.js.map +0 -1
  326. package/dist/chunks/code-block-DxtladFW.js.map +0 -1
  327. package/dist/chunks/collapsible-Cw_1aem5.js.map +0 -1
  328. package/dist/chunks/combobox-D30Wt11R.js +0 -291
  329. package/dist/chunks/combobox-D30Wt11R.js.map +0 -1
  330. package/dist/chunks/core-K960A4OT.js.map +0 -1
  331. package/dist/chunks/de-CTAo4KL7.js.map +0 -1
  332. package/dist/chunks/dialog-LNKgPEsV.js +0 -319
  333. package/dist/chunks/dialog-LNKgPEsV.js.map +0 -1
  334. package/dist/chunks/field-d8V94bvZ.js.map +0 -1
  335. package/dist/chunks/field-press-DwzBFafd.js +0 -10
  336. package/dist/chunks/field-press-DwzBFafd.js.map +0 -1
  337. package/dist/chunks/identity-BtZC_d_Q.js +0 -342
  338. package/dist/chunks/identity-BtZC_d_Q.js.map +0 -1
  339. package/dist/chunks/input-group-CYA1MEoZ.js.map +0 -1
  340. package/dist/chunks/inset-BLMdxX4I.js.map +0 -1
  341. package/dist/chunks/list-CzaiyNja.js +0 -483
  342. package/dist/chunks/list-CzaiyNja.js.map +0 -1
  343. package/dist/chunks/nav-sheet-BIErlV74.js +0 -58
  344. package/dist/chunks/nav-sheet-BIErlV74.js.map +0 -1
  345. package/dist/chunks/range-popup-DGOnGGag.js +0 -111
  346. package/dist/chunks/range-popup-DGOnGGag.js.map +0 -1
  347. package/dist/chunks/resize-motion-CMaidkwe.js.map +0 -1
  348. package/dist/chunks/rights-BbiJ0AJB.js.map +0 -1
  349. package/dist/chunks/select-Bc4kRiSG.js.map +0 -1
  350. package/dist/chunks/sidebar-5IA18LuP.js.map +0 -1
  351. package/dist/chunks/status-dot-CBoQpyL4.js +0 -25
  352. package/dist/chunks/status-dot-CBoQpyL4.js.map +0 -1
  353. package/dist/chunks/textarea-Cj8iR82R.js.map +0 -1
  354. package/dist/chunks/virtual-rows-BZe49bKi.js.map +0 -1
  355. package/dist/chunks/zh-CN-C7GmVswt.js.map +0 -1
  356. package/dist/components/charts/timeseries.js.map +0 -1
@@ -1,10 +1,10 @@
1
1
  "use client";
2
- import { t as e } from "./cn-CidVUKMm.js";
2
+ import { t as e } from "./cn-DUDmdLpZ.js";
3
3
  import { i as t } from "./dev-CR1p7gCm.js";
4
4
  import { i as n, r } from "./context-BELWW79w.js";
5
- import { a as i, o as a, s as o } from "./field-d8V94bvZ.js";
6
- import { n as s } from "./input-group-CYA1MEoZ.js";
7
- import { t as c } from "./input-CNTfI6YE.js";
5
+ import { a as i, o as a, s as o } from "./field-BZriODU7.js";
6
+ import { n as s } from "./input-group-BQLw06B0.js";
7
+ import { t as c } from "./input-B0wtkcNh.js";
8
8
  import { forwardRef as l, useCallback as u, useLayoutEffect as d, useMemo as f, useRef as p, useState as m } from "react";
9
9
  import { jsx as h, jsxs as g } from "react/jsx-runtime";
10
10
  import { Add01Icon as _, MinusSignIcon as v } from "@hugeicons/core-free-icons";
@@ -60,51 +60,55 @@ function D(e, t = C) {
60
60
  var O = { align: {
61
61
  end: { classes: "text-right" },
62
62
  start: { classes: "text-left" }
63
- } }, k = { align: "end" }, A = /* @__PURE__ */ l(function({ value: t, defaultValue: i = "", onValueChange: a, unit: o, step: l = "1", min: u, max: d, hideStepper: p, align: y = "end", onBlur: C, onFocus: O, onKeyDown: k, className: A, disabled: j, readOnly: M, ...N }, P) {
64
- let F = n(), I = r(), L = f(() => w(I), [I]), [R, z] = m(i), [B, V] = m(!1), H = t !== void 0, U = H ? t : R, W = (e) => {
65
- H || z(e), a?.(e);
66
- }, G = (e) => e === "" || e === "-" ? e : u !== void 0 && S(e, u) < 0 ? u : d !== void 0 && S(e, d) > 0 ? d : e, K = (e) => W(G(x(U || "0", e === 1 ? l : `-${l}`))), q = B ? E(U, L) : T(U, L), J = !j && !M, Y = !p && /* @__PURE__ */ g("span", {
67
- className: e("flex shrink-0 items-center opacity-0 transition-control", J ? "group-hover/num:opacity-100 coarse:opacity-100 group-focus-within/num:opacity-100" : "invisible"),
68
- ...J ? {} : { "aria-hidden": !0 },
63
+ } }, k = { align: "end" }, A = /* @__PURE__ */ l(function({ value: t, defaultValue: i = "", onValueChange: a, unit: o, step: l = "1", min: u, max: d, hideStepper: p, integer: y, align: C = "end", onBlur: O, onFocus: k, onKeyDown: A, className: j, disabled: M, readOnly: N, ...P }, F) {
64
+ let I = n(), L = r(), R = f(() => w(L), [L]), [z, B] = m(i), [V, H] = m(!1), U = t !== void 0, W = U ? t : z, G = (e) => {
65
+ U || B(e), a?.(e);
66
+ }, K = (e) => e === "" || e === "-" ? e : u !== void 0 && S(e, u) < 0 ? u : d !== void 0 && S(e, d) > 0 ? d : e, q = (e) => G(K(x(W || "0", e === 1 ? l : `-${l}`))), J = y ? W : V ? E(W, R) : T(W, R), Y = !M && !N, X = !p && /* @__PURE__ */ g("span", {
67
+ className: e("flex shrink-0 items-center opacity-0 transition-control", Y ? "group-hover/num:opacity-100 coarse:opacity-100 group-focus-within/num:opacity-100" : "invisible"),
68
+ ...Y ? {} : { "aria-hidden": !0 },
69
69
  children: [/* @__PURE__ */ h(s.Button, {
70
70
  icon: v,
71
- "aria-label": F("numberInput.decrease", "Decrease"),
72
- onClick: () => K(-1),
73
- disabled: !J
71
+ "aria-label": I("numberInput.decrease", "Decrease"),
72
+ onClick: () => q(-1),
73
+ disabled: !Y
74
74
  }), /* @__PURE__ */ h(s.Button, {
75
75
  icon: _,
76
- "aria-label": F("numberInput.increase", "Increase"),
77
- onClick: () => K(1),
78
- disabled: !J
76
+ "aria-label": I("numberInput.increase", "Increase"),
77
+ onClick: () => q(1),
78
+ disabled: !Y
79
79
  })]
80
80
  });
81
81
  return /* @__PURE__ */ h(c, {
82
- ref: P,
82
+ ref: F,
83
83
  type: "text",
84
- inputMode: "decimal",
84
+ inputMode: y ? "numeric" : "decimal",
85
85
  autoComplete: "off",
86
86
  spellCheck: !1,
87
- value: q,
88
- disabled: j,
89
- readOnly: M,
90
- className: e("group/num", A),
87
+ value: J,
88
+ disabled: M,
89
+ readOnly: N,
90
+ className: e("group/num", j),
91
91
  suffix: o,
92
- trailing: Y || void 0,
92
+ trailing: X || void 0,
93
93
  onChange: (e) => {
94
- let t = D(e.target.value, L);
95
- b(t) && W(t);
94
+ if (y) {
95
+ /^-?\d*$/.test(e.target.value) && G(e.target.value);
96
+ return;
97
+ }
98
+ let t = D(e.target.value, R);
99
+ b(t) && G(t);
96
100
  },
97
101
  onFocus: (e) => {
98
- V(!0), O?.(e);
102
+ H(!0), k?.(e);
99
103
  },
100
104
  onBlur: (e) => {
101
- V(!1), U !== G(U) && W(G(U)), C?.(e);
105
+ H(!1), W !== K(W) && G(K(W)), O?.(e);
102
106
  },
103
107
  onKeyDown: (e) => {
104
- e.key === "ArrowUp" ? (e.preventDefault(), K(1)) : e.key === "ArrowDown" && (e.preventDefault(), K(-1)), k?.(e);
108
+ e.key === "ArrowUp" ? (e.preventDefault(), q(1)) : e.key === "ArrowDown" && (e.preventDefault(), q(-1)), A?.(e);
105
109
  },
106
- align: y,
107
- ...N
110
+ align: C,
111
+ ...P
108
112
  });
109
113
  });
110
114
  process.env.NODE_ENV !== "production" && (A.displayName = "NumberInput");
@@ -153,4 +157,4 @@ process.env.NODE_ENV !== "production" && (F.displayName = "Textarea");
153
157
  //#endregion
154
158
  export { O as a, S as c, k as i, T as l, j as n, A as o, F as r, x as s, M as t };
155
159
 
156
- //# sourceMappingURL=textarea-Cj8iR82R.js.map
160
+ //# sourceMappingURL=textarea-2d373OyU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea-2d373OyU.js","names":["__icon_MinusSignIcon","__icon_Add01Icon","cn","warnStylingClassName","useUiText","useField","useFieldControl","withField","InputGroup","Input","split","m","v","isDecimal","addDecimal","x","a","y","b","scale","toBig","p","sum","neg","digits","int","frac","compareDecimal","d","ENGLISH","decimalSeparators","locale","parts","groupDecimal","seps","localizeDecimal","ungroup","out","KAESO_NUMBER_INPUT_VARIANTS","KAESO_NUMBER_INPUT_DEFAULT_VARIANTS","NumberInput","props","t","useLocale","useMemo","inner","setInner","useState","defaultValue","focused","setFocused","controlled","value","raw","set","onValueChange","clamp","min","max","stepBy","dir","step","display","integer","live","disabled","readOnly","stepper","hideStepper","MinusSignIcon","Add01Icon","className","unit","onFocus","onBlur","onKeyDown","KAESO_TEXTAREA_VARIANTS","KAESO_TEXTAREA_DEFAULT_VARIANTS","LINE","PAD","Textarea","rest","field","fc","useRef","grow","useCallback","el","resize","maxRows","control","ref","onChange","mono","label","description","error","id","invalid"],"sources":["../../src/components/input/decimal.ts","../../src/components/input/number-input.tsx","../../src/components/input/textarea.tsx"],"sourcesContent":["function split(v: string): { neg: boolean; int: string; frac: string } {\n const m = /^(-)?(\\d*)(?:\\.(\\d*))?$/.exec(v.trim());\n if (!m) return { neg: false, int: \"0\", frac: \"\" };\n return { neg: m[1] === \"-\", int: (m[2] || \"0\").replace(/^0+(?=\\d)/, \"\"), frac: m[3] ?? \"\" };\n}\n\nexport function isDecimal(v: string): boolean {\n return /^-?\\d*(?:\\.\\d*)?$/.test(v.trim());\n}\n\nexport function addDecimal(a: string, b: string): string {\n const x = split(a || \"0\");\n const y = split(b || \"0\");\n const scale = Math.max(x.frac.length, y.frac.length);\n const toBig = (p: { neg: boolean; int: string; frac: string }) => BigInt((p.neg ? \"-\" : \"\") + p.int + p.frac.padEnd(scale, \"0\"));\n const sum = toBig(x) + toBig(y);\n const neg = sum < 0n;\n const digits = (neg ? -sum : sum).toString().padStart(scale + 1, \"0\");\n const int = digits.slice(0, digits.length - scale) || \"0\";\n const frac = scale ? digits.slice(-scale) : \"\";\n return `${neg ? \"-\" : \"\"}${int}${frac ? `.${frac}` : \"\"}`;\n}\n\nexport function compareDecimal(a: string, b: string): number {\n const d = addDecimal(a, b.startsWith(\"-\") ? b.slice(1) : `-${b}`);\n if (d.startsWith(\"-\") && /[1-9]/.test(d)) return -1;\n return /[1-9]/.test(d) ? 1 : 0;\n}\n\nexport interface DecimalSeparators {\n group: string;\n decimal: string;\n}\n\nconst ENGLISH: DecimalSeparators = { group: \",\", decimal: \".\" };\n\nexport function decimalSeparators(locale: string): DecimalSeparators {\n if (locale === \"en\") return ENGLISH;\n const parts = new Intl.NumberFormat(locale).formatToParts(1234.5);\n return { group: parts.find((p) => p.type === \"group\")?.value ?? \",\", decimal: parts.find((p) => p.type === \"decimal\")?.value ?? \".\" };\n}\n\nexport function groupDecimal(v: string, seps: DecimalSeparators = ENGLISH): string {\n const p = split(v);\n if (!isDecimal(v) || v.trim() === \"\") return v;\n return `${p.neg ? \"-\" : \"\"}${p.int.replace(/\\B(?=(\\d{3})+(?!\\d))/g, seps.group)}${v.includes(\".\") ? `${seps.decimal}${p.frac}` : \"\"}`;\n}\n\nexport function localizeDecimal(v: string, seps: DecimalSeparators = ENGLISH): string {\n return seps.decimal === \".\" ? v : v.replace(\".\", seps.decimal);\n}\n\nexport function ungroup(v: string, seps: DecimalSeparators = ENGLISH): string {\n const out = seps.group === \".\" ? v : v.split(seps.group).join(\"\");\n return seps.decimal === \".\" ? out : out.split(seps.decimal).join(\".\");\n}\n","import { forwardRef, useMemo, useState, type ChangeEvent, type FocusEvent, type KeyboardEvent } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { Input, type InputProps } from \"./input.js\";\nimport { InputGroup } from \"./input-group.js\";\nimport { MinusSignIcon as __icon_MinusSignIcon, Add01Icon as __icon_Add01Icon } from \"@hugeicons/core-free-icons\";\nimport { addDecimal, compareDecimal, decimalSeparators, groupDecimal, isDecimal, localizeDecimal, ungroup } from \"./decimal.js\";\nimport { useLocale, useUiText } from \"../../i18n/context.js\";\n\nexport const KAESO_NUMBER_INPUT_VARIANTS = {\n align: {\n end: { classes: \"text-right\" },\n start: { classes: \"text-left\" },\n },\n} as const;\nexport const KAESO_NUMBER_INPUT_DEFAULT_VARIANTS = { align: \"end\" } as const;\n\nexport interface NumberInputProps extends Omit<InputProps, \"type\" | \"value\" | \"defaultValue\" | \"onChange\" | \"min\" | \"max\" | \"step\"> {\n value?: string | undefined;\n defaultValue?: string | undefined;\n onValueChange?: ((value: string) => void) | undefined;\n unit?: string | undefined;\n step?: string | undefined;\n min?: string | undefined;\n max?: string | undefined;\n hideStepper?: boolean | undefined;\n integer?: boolean | undefined;\n align?: keyof typeof KAESO_NUMBER_INPUT_VARIANTS.align | undefined;\n}\n\nexport const NumberInput = /* @__PURE__ */ forwardRef<HTMLInputElement, NumberInputProps>(function NumberInput(\n {\n value,\n defaultValue = \"\",\n onValueChange,\n unit,\n step = \"1\",\n min,\n max,\n hideStepper,\n integer,\n align = \"end\",\n onBlur,\n onFocus,\n onKeyDown,\n className,\n disabled,\n readOnly,\n ...props\n },\n ref,\n) {\n const t = useUiText();\n const locale = useLocale();\n const seps = useMemo(() => decimalSeparators(locale), [locale]);\n const [inner, setInner] = useState(defaultValue);\n const [focused, setFocused] = useState(false);\n const controlled = value !== undefined;\n const raw = controlled ? value : inner;\n const set = (v: string) => {\n if (!controlled) setInner(v);\n onValueChange?.(v);\n };\n const clamp = (v: string) => {\n if (v === \"\" || v === \"-\") return v;\n if (min !== undefined && compareDecimal(v, min) < 0) return min;\n if (max !== undefined && compareDecimal(v, max) > 0) return max;\n return v;\n };\n const stepBy = (dir: 1 | -1) => set(clamp(addDecimal(raw || \"0\", dir === 1 ? step : `-${step}`)));\n const display = integer ? raw : focused ? localizeDecimal(raw, seps) : groupDecimal(raw, seps);\n const live = !disabled && !readOnly;\n const stepper = !hideStepper && (\n <span\n className={cn(\n \"flex shrink-0 items-center opacity-0 transition-control\",\n live ? \"group-hover/num:opacity-100 coarse:opacity-100 group-focus-within/num:opacity-100\" : \"invisible\",\n )}\n {...(live ? {} : { \"aria-hidden\": true })}\n >\n <InputGroup.Button icon={__icon_MinusSignIcon} aria-label={t(\"numberInput.decrease\", \"Decrease\")} onClick={() => stepBy(-1)} disabled={!live} />\n <InputGroup.Button icon={__icon_Add01Icon} aria-label={t(\"numberInput.increase\", \"Increase\")} onClick={() => stepBy(1)} disabled={!live} />\n </span>\n );\n return (\n <Input\n ref={ref}\n type=\"text\"\n inputMode={integer ? \"numeric\" : \"decimal\"}\n autoComplete=\"off\"\n spellCheck={false}\n value={display}\n disabled={disabled}\n readOnly={readOnly}\n className={cn(\"group/num\", className)}\n suffix={unit}\n trailing={stepper || undefined}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n if (integer) {\n if (/^-?\\d*$/.test(e.target.value)) set(e.target.value);\n return;\n }\n const v = ungroup(e.target.value, seps);\n if (isDecimal(v)) set(v);\n }}\n onFocus={(e: FocusEvent<HTMLInputElement>) => {\n setFocused(true);\n onFocus?.(e);\n }}\n onBlur={(e: FocusEvent<HTMLInputElement>) => {\n setFocused(false);\n if (raw !== clamp(raw)) set(clamp(raw));\n onBlur?.(e);\n }}\n onKeyDown={(e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n stepBy(1);\n } else if (e.key === \"ArrowDown\") {\n e.preventDefault();\n stepBy(-1);\n }\n onKeyDown?.(e);\n }}\n align={align}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") NumberInput.displayName = \"NumberInput\";\n","import { forwardRef, useCallback, useLayoutEffect, useRef, type TextareaHTMLAttributes } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { warnStylingClassName } from \"../../utils/dev.js\";\nimport { useField, useFieldControl, withField, type FieldWrapProps } from \"../field/field.js\";\n\nexport const KAESO_TEXTAREA_VARIANTS = {\n resize: {\n auto: { classes: \"resize-none\" },\n vertical: { classes: \"resize-y\" },\n },\n} as const;\nexport const KAESO_TEXTAREA_DEFAULT_VARIANTS = { resize: \"auto\" } as const;\n\nexport interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement>, FieldWrapProps {\n resize?: keyof typeof KAESO_TEXTAREA_VARIANTS.resize | undefined;\n maxRows?: number | undefined;\n invalid?: boolean | undefined;\n mono?: boolean | undefined;\n \"data-force\"?: string | undefined;\n}\n\nconst LINE = 20;\nconst PAD = 20;\n\nexport const Textarea = /* @__PURE__ */ forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(props, ref) {\n const {\n resize = \"auto\",\n maxRows = 8,\n rows = 3,\n invalid,\n mono,\n label,\n description,\n error,\n optional,\n required,\n layout,\n className,\n id,\n disabled,\n onChange,\n ...rest\n } = props;\n warnStylingClassName(\"Textarea\", className);\n const field = useField();\n const fc = useFieldControl(props);\n const inner = useRef<HTMLTextAreaElement | null>(null);\n const grow = useCallback(() => {\n const el = inner.current;\n if (!el || resize !== \"auto\") return;\n el.style.height = \"auto\";\n el.style.height = `${Math.min(el.scrollHeight, maxRows * LINE + PAD)}px`;\n }, [maxRows, resize]);\n useLayoutEffect(grow, [grow, rest.value]);\n const control = (\n <textarea\n ref={(el) => {\n inner.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n }}\n rows={rows}\n disabled={disabled}\n required={required}\n onChange={(e) => {\n grow();\n onChange?.(e);\n }}\n className={cn(\n \"block w-full min-w-0 rounded-textarea px-16 py-10 text-body text-fg material-field transition-control outline-none placeholder:text-fg-tertiary scrollbar-quiet\",\n \"disabled:cursor-not-allowed\",\n mono && \"mono text-small\",\n KAESO_TEXTAREA_VARIANTS.resize[resize].classes,\n !(label || description || error) && className,\n )}\n {...(id ? { id } : {})}\n {...fc.controlProps}\n {...(invalid || error ? { \"aria-invalid\": true } : {})}\n {...rest}\n />\n );\n if (field) return control;\n return withField({ label, description, error, optional, required, layout, id: fc.wrapId ?? id, disabled, className }, control);\n});\nif (process.env.NODE_ENV !== \"production\") Textarea.displayName = \"Textarea\";\n"],"mappings":"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"}
@@ -0,0 +1,339 @@
1
+ "use client";
2
+ import { t as e } from "./cn-DUDmdLpZ.js";
3
+ import { i as t, r as n } from "./context-BELWW79w.js";
4
+ import { dateFormatter as r, formatNumber as i, formatPercent as ee, formatTimeZone as te } from "../format.js";
5
+ import { A as a, D as o, E as s, S as ne, _ as c, b as re, g as ie, i as ae, k as oe, n as se, p as ce, r as le, s as ue, t as l, v as de } from "./core-CqLWVMDI.js";
6
+ import { t as fe } from "./linear-scale-BWKeRqDX.js";
7
+ import { forwardRef as u, useId as pe, useMemo as me, useState as he } from "react";
8
+ import { Fragment as ge, jsx as d, jsxs as f } from "react/jsx-runtime";
9
+ import { area as _e, curveMonotoneX as p, line as ve, stack as ye } from "d3-shape";
10
+ import { bisector as be, max as m, min as xe } from "d3-array";
11
+ import { utcTicks as h } from "d3-time";
12
+ //#region src/components/charts/time-axis.ts
13
+ var g = /* @__PURE__ */ new Map();
14
+ function Se(e) {
15
+ if (!e) return (e) => e.getTime() - e.getTimezoneOffset() * 6e4;
16
+ if (e === "UTC") return (e) => e.getTime();
17
+ let t = g.get(e);
18
+ if (!t) {
19
+ let n = new Intl.DateTimeFormat("en-US", {
20
+ timeZone: e,
21
+ hourCycle: "h23",
22
+ year: "numeric",
23
+ month: "numeric",
24
+ day: "numeric",
25
+ hour: "numeric",
26
+ minute: "numeric",
27
+ second: "numeric"
28
+ });
29
+ t = (e) => {
30
+ let t = Object.fromEntries(n.formatToParts(e).map((e) => [e.type, Number(e.value)]));
31
+ return Date.UTC(t.year ?? 1970, (t.month ?? 1) - 1, t.day ?? 1, t.hour ?? 0, t.minute ?? 0, t.second ?? 0) + e.getUTCMilliseconds();
32
+ }, g.set(e, t);
33
+ }
34
+ return t;
35
+ }
36
+ function Ce(e, t) {
37
+ let n = e - (t(new Date(e)) - e);
38
+ return new Date(e - (t(new Date(n)) - n));
39
+ }
40
+ function _(e, t, n, r) {
41
+ return h(new Date(r(e)), new Date(r(t)), n).flatMap((e) => {
42
+ let t = Ce(e.getTime(), r);
43
+ return r(t) === e.getTime() ? [t] : [];
44
+ });
45
+ }
46
+ var we = (e, t) => new Date(t(e)).toISOString().slice(0, 10), Te = { kind: {
47
+ line: { classes: "" },
48
+ area: { classes: "" },
49
+ stacked: { classes: "" }
50
+ } }, Ee = { kind: "line" }, v = {
51
+ top: 8,
52
+ right: 52,
53
+ bottom: 28,
54
+ left: 0
55
+ };
56
+ function y(e, t, n) {
57
+ return r({
58
+ ...t,
59
+ ...n ? { timeZone: n } : {}
60
+ }, e);
61
+ }
62
+ var De = {
63
+ hour: "2-digit",
64
+ minute: "2-digit",
65
+ hourCycle: "h23"
66
+ }, b = {
67
+ month: "short",
68
+ day: "numeric"
69
+ }, x = 36e5;
70
+ function Oe(e, t, n, r) {
71
+ if (t <= 48 * x) return y(e, De, n);
72
+ if (t <= 2160 * x) return y(e, b, n);
73
+ let i = y(e, { month: "short" }, n);
74
+ return (e) => {
75
+ let t = new Date(r(e));
76
+ return t.getUTCMonth() === 0 ? String(t.getUTCFullYear()) : i(e);
77
+ };
78
+ }
79
+ function ke(e, t, n, r, i, ee, te) {
80
+ let a = [];
81
+ for (let o = Math.max(2, Math.min(10, Math.floor(n / 64))); o >= 1; o--) {
82
+ let n = _(e, t, o, te), s = c(n.map((e) => ({
83
+ key: e.getTime(),
84
+ at: Math.round(i(e)),
85
+ label: ee(e)
86
+ })), r);
87
+ if (s.length === n.length && s.length >= 2) return s;
88
+ s.length > a.length && (a = s);
89
+ }
90
+ return a;
91
+ }
92
+ var Ae = /* @__PURE__ */ u(function({ series: r, kind: c = "line", height: u = 240, formatValue: h = (e) => i(e), threshold: g, hideLegend: Ce, highlight: _, formatTime: Te, formatTick: Ee, tickAt: x = "time", timeZone: Ae, shares: je = !0, partial: S, className: Me, "aria-label": Ne, ...C }, Pe) {
93
+ let w = t(), Fe = n(), [Ie, T] = o(), E = pe().replace(/:/g, ""), Le = ne(h), [D, Re] = he(/* @__PURE__ */ new Set()), [O, ze] = he(null), [k, Be] = he(null), A = r.filter((e) => !D.has(e.id)), j = me(() => (r[0]?.points ?? []).map((e) => new Date(e.t)), [r]), M = A.flatMap((e) => e.points.map((e) => e.v)), N = Math.max(0, T.width - v.left - v.right), P = Math.max(0, u - v.top - v.bottom), F = c === "stacked", Ve = F ? m(j.map((e, t) => A.reduce((e, n) => e + (n.points[t]?.v ?? 0), 0))) ?? 0 : m(M) ?? 0, I = fe().domain([0, Math.max(Ve, g?.value ?? 0) * 1.08 || 1]).nice(4).range([P, 0]), L = oe(M, I.domain()[1] ?? 1, !!C.loading), R = me(() => {
94
+ let e = 0;
95
+ return A.map((t) => t.points.map(() => L.values[e++] ?? 0));
96
+ }, [A, L.values]), He = I.copy().domain([0, L.top || 1]), Ue = xe(j) ?? /* @__PURE__ */ new Date(), We = m(j) ?? /* @__PURE__ */ new Date(), Ge = x === "points" && j.length > 0, z = Ge ? N / j.length : 0, Ke = fe().domain([Ue.getTime(), We.getTime()]).range([0, N]), B = (e) => Ge ? (e + .5) * z : Ke(j[e] ?? Ue), V = F ? ye().keys(A.map((e, t) => String(t)))(j.map((e, t) => A.map((e, n) => R[n]?.[t] ?? 0))) : null, H = (e) => Math.max(0, He(e)), qe = (C.loading ? I.ticks(4) : a(de(I, Le), M)).filter((e) => e <= (L.top || 1) + 1e-9), U = Ae ?? te(), W = Se(U), Je = (j[j.length - 1]?.getTime() ?? 0) - (j[0]?.getTime() ?? 0), G = Ee ?? Oe(Fe, Je, U, W), Ye = x === "points" ? ce(j.map(G), z, {
97
+ start: z / 2,
98
+ end: z / 2 + v.right
99
+ }, j.map((e) => we(e, W))).map((e) => ({
100
+ key: j[e].getTime(),
101
+ x: Math.round(B(e)),
102
+ anchor: "middle",
103
+ label: G(j[e])
104
+ })) : ke(Ue, We, N, N + v.right, (e) => Ke(e.getTime()), G, W), Xe = (j[1]?.getTime() ?? 0) - (j[0]?.getTime() ?? 0), Ze = Te ?? y(Fe, Xe && Xe < 864e5 ? {
105
+ weekday: "short",
106
+ ...b,
107
+ ...De
108
+ } : Je <= 7776e6 ? {
109
+ weekday: "short",
110
+ ...b
111
+ } : {
112
+ ...b,
113
+ year: "numeric"
114
+ }, U), K = j.length - 1, q = (e) => {
115
+ let t = Ze(j[e]);
116
+ return S?.ongoing && e === K ? w("chart.soFar", "{heading}, so far", { heading: t }) : S?.last && e === K || S?.first && e === 0 ? w("chart.partial", "{heading}, partial", { heading: t }) : t;
117
+ }, J = !!S?.first && K >= 1, Y = !!(S?.last || S?.ongoing) && K >= 1, Qe = J ? Math.round(B(1)) : -v.left, $e = Y ? Math.round(B(K - 1)) : N + v.right, et = (e) => !J && !Y ? /* @__PURE__ */ d("path", { ...e }) : /* @__PURE__ */ f(ge, { children: [/* @__PURE__ */ d("path", {
118
+ ...e,
119
+ clipPath: `url(#${E}-whole)`
120
+ }), /* @__PURE__ */ d("path", {
121
+ ...e,
122
+ clipPath: `url(#${E}-partial)`,
123
+ strokeDasharray: "4 4",
124
+ "data-partial": ""
125
+ })] }), tt = ve().x((e, t) => Math.round(B(t))).y((e) => H(e)).curve(p), nt = _e().x((e, t) => Math.round(B(t))).y0(P).y1((e) => H(e)).curve(p), rt = _e().x((e, t) => Math.round(B(t))).y0((e) => H(e[0])).y1((e) => H(e[1])).curve(p), it = ve().x((e, t) => Math.round(B(t))).y((e) => H(e[1])).curve(p), at = me(() => re(r.map((e) => e.id)), [r]), X = (e) => e.color ?? at.get(e.id), ot = be((e) => e.getTime()).center, st = (e) => {
126
+ let t = e.currentTarget.getBoundingClientRect(), n = e.clientX - t.left, r = Ge ? Math.max(0, Math.min(j.length - 1, Math.floor(n / z))) : ot(j, Ke.invert(n));
127
+ Be({
128
+ i: r,
129
+ y: Math.round(e.clientY - t.top + v.top)
130
+ });
131
+ }, ct = {
132
+ columns: [w("timeseriesChart.time", "Time"), ...r.map((e) => e.label)],
133
+ rows: j.map((e, t) => [q(t), ...r.map((e) => h(e.points[t]?.v ?? 0))])
134
+ }, lt = C.empty ?? r.every((e) => e.points.every((e) => e.v === 0)), ut = !!C.loading || lt, Z = s(ut || C.error ? 0 : j.length), Q = ut || C.error ? null : k?.i ?? Z.index ?? (_ !== void 0 && _ < j.length ? _ : null), $ = Q === null ? 0 : Math.round(B(Q)) + v.left, dt = Q === null ? 0 : k && k.i === Q ? k.y : v.top + Math.round(H(F ? V?.[V.length - 1]?.[Q]?.[1] ?? 0 : Math.max(0, ...R.map((e) => e[Q] ?? 0)))), ft = (e) => A.map((t) => {
135
+ let n = t.points[e]?.v ?? 0, r = A.reduce((t, n) => t + (n.points[e]?.v ?? 0), 0);
136
+ return {
137
+ id: t.id,
138
+ label: t.label,
139
+ color: X(t),
140
+ value: h(n),
141
+ ...je && A.length > 1 && r ? { share: ee(Math.round(n / r * 100) / 100, 0) } : {}
142
+ };
143
+ });
144
+ return /* @__PURE__ */ d("div", {
145
+ ref: Pe,
146
+ className: e("min-w-0", Me),
147
+ children: /* @__PURE__ */ d(se, {
148
+ label: Ne,
149
+ height: u,
150
+ table: ct,
151
+ state: {
152
+ ...C,
153
+ empty: lt
154
+ },
155
+ legend: !Ce && r.length > 1 ? /* @__PURE__ */ d(ue, {
156
+ items: r.map((e) => ({
157
+ id: e.id,
158
+ label: e.label,
159
+ color: X(e)
160
+ })),
161
+ hidden: D,
162
+ shape: c === "line" ? "line" : "square",
163
+ onToggle: (e) => {
164
+ let t = new Set(D);
165
+ t.has(e) ? t.delete(e) : t.add(e), Re(t);
166
+ },
167
+ onHover: ze
168
+ }) : void 0,
169
+ children: /* @__PURE__ */ f("div", {
170
+ ref: Ie,
171
+ role: "group",
172
+ "aria-label": Ne,
173
+ ...Z.props,
174
+ className: "absolute inset-0 rounded-cell focus-ring",
175
+ children: [
176
+ T.width > 0 && /* @__PURE__ */ f("svg", {
177
+ width: T.width,
178
+ height: u,
179
+ className: "block overflow-visible",
180
+ role: "presentation",
181
+ children: [/* @__PURE__ */ f("defs", { children: [(J || Y) && /* @__PURE__ */ f(ge, { children: [/* @__PURE__ */ d("clipPath", {
182
+ id: `${E}-whole`,
183
+ children: /* @__PURE__ */ d("rect", {
184
+ x: Qe,
185
+ y: -v.top,
186
+ width: Math.max(0, $e - Qe),
187
+ height: u
188
+ })
189
+ }), /* @__PURE__ */ f("clipPath", {
190
+ id: `${E}-partial`,
191
+ children: [J && /* @__PURE__ */ d("rect", {
192
+ x: -v.left,
193
+ y: -v.top,
194
+ width: Qe + v.left,
195
+ height: u
196
+ }), Y && /* @__PURE__ */ d("rect", {
197
+ x: $e,
198
+ y: -v.top,
199
+ width: N + v.right - $e,
200
+ height: u
201
+ })]
202
+ })] }), A.map((e) => /* @__PURE__ */ f("linearGradient", {
203
+ id: `${E}-${e.id}`,
204
+ x1: "0",
205
+ y1: "0",
206
+ x2: "0",
207
+ y2: "1",
208
+ children: [/* @__PURE__ */ d("stop", {
209
+ offset: "0%",
210
+ stopColor: X(e),
211
+ className: "chart-fill-top"
212
+ }), /* @__PURE__ */ d("stop", {
213
+ offset: "100%",
214
+ stopColor: X(e),
215
+ stopOpacity: 0
216
+ })]
217
+ }, e.id))] }), /* @__PURE__ */ f("g", {
218
+ transform: `translate(${v.left},${v.top})`,
219
+ children: [
220
+ qe.map((e) => /* @__PURE__ */ f("g", {
221
+ transform: `translate(0,${Math.round(H(e)) + .5})`,
222
+ children: [e !== 0 && /* @__PURE__ */ d("line", {
223
+ x2: N,
224
+ ...l.grid
225
+ }), !C.loading && /* @__PURE__ */ d("text", {
226
+ x: N + 12,
227
+ dy: "0.32em",
228
+ ...l.label,
229
+ children: Le(e)
230
+ })]
231
+ }, e)),
232
+ /* @__PURE__ */ d("line", {
233
+ x2: N,
234
+ y1: P + .5,
235
+ y2: P + .5,
236
+ ...l.baseline
237
+ }),
238
+ Ye.map((e) => /* @__PURE__ */ d("text", {
239
+ x: e.x,
240
+ y: P + 20,
241
+ textAnchor: e.anchor,
242
+ ...l.label,
243
+ children: e.label
244
+ }, e.key)),
245
+ ut ? null : F && V ? V.map((e, t) => {
246
+ let n = A[t];
247
+ return /* @__PURE__ */ f("g", {
248
+ opacity: O && O !== n.id ? .3 : 1,
249
+ className: "opacity-motion",
250
+ children: [/* @__PURE__ */ d("path", {
251
+ d: rt(e) ?? "",
252
+ fill: X(n),
253
+ className: "chart-stack-fill"
254
+ }), et({
255
+ d: it(e) ?? "",
256
+ fill: "none",
257
+ stroke: X(n),
258
+ strokeWidth: 1.5,
259
+ strokeLinejoin: "round",
260
+ strokeLinecap: "round"
261
+ })]
262
+ }, n.id);
263
+ }) : A.map((e, t) => /* @__PURE__ */ f("g", {
264
+ opacity: O && O !== e.id ? .3 : 1,
265
+ className: "opacity-motion",
266
+ children: [c === "area" && /* @__PURE__ */ d("path", {
267
+ d: nt(R[t] ?? []) ?? "",
268
+ fill: `url(#${E}-${e.id})`
269
+ }), et({
270
+ d: tt(R[t] ?? []) ?? "",
271
+ fill: "none",
272
+ stroke: X(e),
273
+ strokeWidth: 2,
274
+ strokeLinejoin: "round",
275
+ strokeLinecap: "round"
276
+ })]
277
+ }, e.id)),
278
+ g && /* @__PURE__ */ f("g", {
279
+ transform: `translate(0,${Math.round(H(g.value)) + .5})`,
280
+ children: [/* @__PURE__ */ d("line", {
281
+ x2: N,
282
+ stroke: "var(--k-danger)",
283
+ strokeDasharray: "4 4",
284
+ strokeWidth: 1
285
+ }), /* @__PURE__ */ d("text", {
286
+ x: 0,
287
+ dy: -6,
288
+ fill: "var(--k-danger-text)",
289
+ fontSize: 12,
290
+ fontWeight: 500,
291
+ children: g.label
292
+ })]
293
+ }),
294
+ Q !== null && /* @__PURE__ */ f("g", {
295
+ "aria-hidden": !0,
296
+ children: [/* @__PURE__ */ d("line", {
297
+ x1: $ - v.left + .5,
298
+ x2: $ - v.left + .5,
299
+ y2: P,
300
+ ...l.grid,
301
+ stroke: "var(--k-line-strong)"
302
+ }), !F && A.map((e, t) => /* @__PURE__ */ d("circle", {
303
+ cx: $ - v.left,
304
+ cy: H(R[t]?.[Q] ?? 0),
305
+ r: 4,
306
+ fill: X(e),
307
+ stroke: "var(--k-bg-panel)",
308
+ strokeWidth: 2
309
+ }, e.id))]
310
+ }),
311
+ /* @__PURE__ */ d("rect", {
312
+ width: N,
313
+ height: P,
314
+ fill: "transparent",
315
+ onPointerMove: st,
316
+ onPointerLeave: () => Be(null)
317
+ })
318
+ ]
319
+ })]
320
+ }),
321
+ Q !== null && j[Q] && /* @__PURE__ */ d(ae, {
322
+ x: $,
323
+ y: dt,
324
+ width: T.width,
325
+ visible: !0,
326
+ heading: q(Q),
327
+ rows: ft(Q)
328
+ }),
329
+ /* @__PURE__ */ d(le, { children: Z.index !== null && Q !== null && j[Z.index] ? ie(q(Z.index), ft(Z.index), w) : null })
330
+ ]
331
+ })
332
+ })
333
+ });
334
+ });
335
+ process.env.NODE_ENV !== "production" && (Ae.displayName = "TimeseriesChart");
336
+ //#endregion
337
+ export { Te as n, Ae as r, Ee as t };
338
+
339
+ //# sourceMappingURL=timeseries-LRDAZHV0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeseries-LRDAZHV0.js","names":["d3max","d3min","d3stack","_Fragment","d3line","d3area","cn","useUiText","useLocale","wholeTicks","useSize","useChartKeys","tickLabel","placeTimeLabels","seriesColors","liveLine","ChartTooltip","useTweenedScale","ChartFrame","axisLabelIndexes","ChartLive","Legend","AXIS","readableTicks","scaleLinear","Fragment$1","clocks","wallClock","timeZone","d","clock","f","p","x","fromWall","guess","wall","zoneTicks","utcTicks","from","to","count","w","wallDay","KAESO_TIMESERIES_CHART_VARIANTS","KAESO_TIMESERIES_CHART_DEFAULT_VARIANTS","M","timeFormat","dateFormatter","options","locale","CLOCK","DAY","H","tickFormat","span","month","timeLabels","fallback","ticks","t0","t1","placed","at","label","right","TimeseriesChart","formatNumber","v","ariaLabel","state","t","box","size","gid","useId","axisLabel","formatValue","hidden","setHidden","useState","focus","setFocus","hover","setHover","visible","series","s","times","useMemo","flatValues","h","height","stacked","kind","top","max","a","ti","axis","threshold","tween","values","k","yScale","min","ordinal","tickAt","slot","i","stackData","stack","si","y","yTicks","zone","formatTimeZone","fmt","formatTick","xLabels","step","pointFormat","formatTime","last","headingFormat","heading","partial","dashedFirst","dashedLast","cutStart","cutEnd","partialLine","stroke","lineGen","line","curveMonotoneX","areaGen","area","stackArea","stackTop","palette","color","bis","bisector","onMove","r","px","table","empty","blank","keys","active","highlight","activeX","activeY","sv","rowsFor","total","acc","ss","shares","formatPercent","className","hideLegend","n","id","l","li","layer"],"sources":["../../src/components/charts/time-axis.ts","../../src/components/charts/timeseries.tsx"],"sourcesContent":["import { utcTicks } from \"d3-time\";\n\nexport type WallClock = (d: Date) => number;\n\nconst clocks = new Map<string, WallClock>();\n\nexport function wallClock(timeZone: string | undefined): WallClock {\n if (!timeZone) return (d) => d.getTime() - d.getTimezoneOffset() * 60_000;\n if (timeZone === \"UTC\") return (d) => d.getTime();\n let clock = clocks.get(timeZone);\n if (!clock) {\n const f = new Intl.DateTimeFormat(\"en-US\", {\n timeZone,\n hourCycle: \"h23\",\n year: \"numeric\",\n month: \"numeric\",\n day: \"numeric\",\n hour: \"numeric\",\n minute: \"numeric\",\n second: \"numeric\",\n });\n clock = (d) => {\n const p = Object.fromEntries(f.formatToParts(d).map((x) => [x.type, Number(x.value)]));\n return Date.UTC(p.year ?? 1970, (p.month ?? 1) - 1, p.day ?? 1, p.hour ?? 0, p.minute ?? 0, p.second ?? 0) + d.getUTCMilliseconds();\n };\n clocks.set(timeZone, clock);\n }\n return clock;\n}\n\nexport function fromWall(wall: number, clock: WallClock): Date {\n const guess = wall - (clock(new Date(wall)) - wall);\n return new Date(wall - (clock(new Date(guess)) - guess));\n}\n\nexport function zoneTicks(from: Date, to: Date, count: number, clock: WallClock): Date[] {\n return utcTicks(new Date(clock(from)), new Date(clock(to)), count).flatMap((w) => {\n const d = fromWall(w.getTime(), clock);\n // A wall time skipped when clocks spring forward has no instant; it would land on the next tick.\n return clock(d) === w.getTime() ? [d] : [];\n });\n}\n\nexport const wallDay = (d: Date, clock: WallClock) => new Date(clock(d)).toISOString().slice(0, 10);\n","import type * as React from \"react\";\nimport { forwardRef, useId, useMemo, useState, type ReactNode } from \"react\";\nimport { scaleLinear } from \"./linear-scale.js\";\nimport { area as d3area, curveMonotoneX, line as d3line, stack as d3stack, type SeriesPoint } from \"d3-shape\";\nimport { bisector, max as d3max, min as d3min } from \"d3-array\";\nimport { cn } from \"../../utils/cn.js\";\nimport { dateFormatter, formatNumber, formatPercent, formatTimeZone } from \"../../format/index.js\";\nimport { useLocale, useUiText } from \"../../i18n/context.js\";\nimport {\n AXIS,\n axisLabelIndexes,\n ChartFrame,\n ChartLive,\n ChartTooltip,\n Legend,\n placeTimeLabels,\n liveLine,\n seriesColors,\n readableTicks,\n tickLabel,\n useChartKeys,\n useSize,\n useTweenedScale,\n wholeTicks,\n type ChartState,\n} from \"./core.js\";\nimport { wallClock, wallDay, zoneTicks, type WallClock } from \"./time-axis.js\";\n\nexport const KAESO_TIMESERIES_CHART_VARIANTS = {\n kind: {\n line: { classes: \"\" },\n area: { classes: \"\" },\n stacked: { classes: \"\" },\n },\n} as const;\nexport const KAESO_TIMESERIES_CHART_DEFAULT_VARIANTS = { kind: \"line\" } as const;\n\nexport interface TimePoint {\n t: Date | number | string;\n v: number;\n}\nexport interface TimeSeries {\n id: string;\n label: string;\n points: TimePoint[];\n color?: string | undefined;\n}\n\nexport interface TimeseriesChartProps extends ChartState {\n series: TimeSeries[];\n kind?: keyof typeof KAESO_TIMESERIES_CHART_VARIANTS.kind | undefined;\n height?: number | undefined;\n formatValue?: ((v: number) => string) | undefined;\n threshold?: { value: number; label: string } | undefined;\n hideLegend?: boolean | undefined;\n highlight?: number | undefined;\n formatTime?: ((t: Date) => string) | undefined;\n formatTick?: ((t: Date) => string) | undefined;\n tickAt?: \"time\" | \"points\" | undefined;\n timeZone?: string | undefined;\n shares?: boolean | undefined;\n partial?: { first?: boolean | undefined; last?: boolean | undefined; ongoing?: boolean | undefined } | undefined;\n \"aria-label\": string;\n className?: string | undefined;\n}\n\nconst M = { top: 8, right: 52, bottom: 28, left: 0 };\n\nfunction timeFormat(locale: string, options: Intl.DateTimeFormatOptions, timeZone: string | undefined): (d: Date) => string {\n return dateFormatter({ ...options, ...(timeZone ? { timeZone } : {}) }, locale);\n}\nconst CLOCK = { hour: \"2-digit\", minute: \"2-digit\", hourCycle: \"h23\" } as const;\nconst DAY = { month: \"short\", day: \"numeric\" } as const;\nconst H = 3_600_000;\n\nfunction tickFormat(locale: string, span: number, timeZone: string | undefined, clock: WallClock) {\n if (span <= 48 * H) return timeFormat(locale, CLOCK, timeZone);\n if (span <= 90 * 24 * H) return timeFormat(locale, DAY, timeZone);\n const month = timeFormat(locale, { month: \"short\" }, timeZone);\n return (d: Date) => {\n const wall = new Date(clock(d));\n return wall.getUTCMonth() === 0 ? String(wall.getUTCFullYear()) : month(d);\n };\n}\n\ntype PlacedLabel = { key: number; x: number; anchor: \"start\" | \"middle\" | \"end\"; label: string };\n\nfunction timeLabels(t0: Date, t1: Date, w: number, right: number, at: (d: Date) => number, label: (d: Date) => string, clock: WallClock): PlacedLabel[] {\n let fallback: PlacedLabel[] = [];\n for (let count = Math.max(2, Math.min(10, Math.floor(w / 64))); count >= 1; count--) {\n const ticks = zoneTicks(t0, t1, count, clock);\n const placed = placeTimeLabels(\n ticks.map((d) => ({ key: d.getTime(), at: Math.round(at(d)), label: label(d) })),\n right,\n );\n if (placed.length === ticks.length && placed.length >= 2) return placed;\n if (placed.length > fallback.length) fallback = placed;\n }\n return fallback;\n}\n\nexport const TimeseriesChart = /* @__PURE__ */ forwardRef<HTMLDivElement, TimeseriesChartProps>(function TimeseriesChart(\n {\n series,\n kind = \"line\",\n height = 240,\n formatValue = (v) => formatNumber(v),\n threshold,\n hideLegend,\n highlight,\n formatTime,\n formatTick,\n tickAt = \"time\",\n timeZone,\n shares = true,\n partial,\n className,\n \"aria-label\": ariaLabel,\n ...state\n },\n ref,\n) {\n const t = useUiText();\n const locale = useLocale();\n const [box, size] = useSize<HTMLDivElement>();\n const gid = useId().replace(/:/g, \"\");\n const axisLabel = tickLabel(formatValue);\n const [hidden, setHidden] = useState<Set<string>>(new Set());\n const [focus, setFocus] = useState<string | null>(null);\n const [hover, setHover] = useState<{ i: number; y: number } | null>(null);\n const visible = series.filter((s) => !hidden.has(s.id));\n const times = useMemo(() => (series[0]?.points ?? []).map((p) => new Date(p.t)), [series]);\n const flatValues = visible.flatMap((s) => s.points.map((p) => p.v));\n const w = Math.max(0, size.width - M.left - M.right);\n const h = Math.max(0, height - M.top - M.bottom);\n const stacked = kind === \"stacked\";\n const top = stacked ? (d3max(times.map((_, ti) => visible.reduce((a, s) => a + (s.points[ti]?.v ?? 0), 0))) ?? 0) : (d3max(flatValues) ?? 0);\n const axis = scaleLinear()\n .domain([0, Math.max(top, threshold?.value ?? 0) * 1.08 || 1])\n .nice(4)\n .range([h, 0]);\n const tween = useTweenedScale(flatValues, axis.domain()[1] ?? 1, !!state.loading);\n const values = useMemo(() => {\n let k = 0;\n return visible.map((s) => s.points.map(() => tween.values[k++] ?? 0));\n }, [visible, tween.values]);\n const yScale = axis.copy().domain([0, tween.top || 1]);\n const t0 = d3min(times) ?? new Date();\n const t1 = d3max(times) ?? new Date();\n const ordinal = tickAt === \"points\" && times.length > 0;\n const slot = ordinal ? w / times.length : 0;\n const x = scaleLinear().domain([t0.getTime(), t1.getTime()]).range([0, w]);\n const at = (i: number) => (ordinal ? (i + 0.5) * slot : x(times[i] ?? t0));\n const stackData = stacked\n ? d3stack<number[]>().keys(visible.map((_, i) => String(i)))(times.map((_, ti) => visible.map((_, si) => values[si]?.[ti] ?? 0)))\n : null;\n const y = (v: number) => Math.max(0, yScale(v));\n const yTicks = (state.loading ? axis.ticks(4) : wholeTicks(readableTicks(axis, axisLabel), flatValues)).filter((t) => t <= (tween.top || 1) + 1e-9);\n const zone = timeZone ?? formatTimeZone();\n const clock = wallClock(zone);\n const span = (times[times.length - 1]?.getTime() ?? 0) - (times[0]?.getTime() ?? 0);\n const fmt = formatTick ?? tickFormat(locale, span, zone, clock);\n const xLabels: PlacedLabel[] =\n tickAt === \"points\"\n ? axisLabelIndexes(\n times.map(fmt),\n slot,\n { start: slot / 2, end: slot / 2 + M.right },\n times.map((d) => wallDay(d, clock)),\n ).map((i) => ({ key: times[i]!.getTime(), x: Math.round(at(i)), anchor: \"middle\", label: fmt(times[i]!) }))\n : timeLabels(t0, t1, w, w + M.right, (d) => x(d.getTime()), fmt, clock);\n const step = (times[1]?.getTime() ?? 0) - (times[0]?.getTime() ?? 0);\n const pointFormat =\n formatTime ??\n timeFormat(\n locale,\n step && step < 86_400_000 ? { weekday: \"short\", ...DAY, ...CLOCK } : span <= 90 * 86_400_000 ? { weekday: \"short\", ...DAY } : { ...DAY, year: \"numeric\" },\n zone,\n );\n const last = times.length - 1;\n const headingFormat = (i: number) => {\n const heading = pointFormat(times[i]!);\n if (partial?.ongoing && i === last) return t(\"chart.soFar\", \"{heading}, so far\", { heading });\n if ((partial?.last && i === last) || (partial?.first && i === 0)) return t(\"chart.partial\", \"{heading}, partial\", { heading });\n return heading;\n };\n const dashedFirst = !!partial?.first && last >= 1;\n const dashedLast = !!(partial?.last || partial?.ongoing) && last >= 1;\n const cutStart = dashedFirst ? Math.round(at(1)) : -M.left;\n const cutEnd = dashedLast ? Math.round(at(last - 1)) : w + M.right;\n const partialLine = (stroke: React.SVGProps<SVGPathElement>) => {\n if (!dashedFirst && !dashedLast) return <path {...stroke} />;\n return (\n <>\n <path {...stroke} clipPath={`url(#${gid}-whole)`} />\n <path {...stroke} clipPath={`url(#${gid}-partial)`} strokeDasharray=\"4 4\" data-partial=\"\" />\n </>\n );\n };\n const lineGen = d3line<number>()\n .x((_, i) => Math.round(at(i)))\n .y((v) => y(v))\n .curve(curveMonotoneX);\n const areaGen = d3area<number>()\n .x((_, i) => Math.round(at(i)))\n .y0(h)\n .y1((v) => y(v))\n .curve(curveMonotoneX);\n const stackArea = d3area<SeriesPoint<number[]>>()\n .x((_, i) => Math.round(at(i)))\n .y0((d) => y(d[0]))\n .y1((d) => y(d[1]))\n .curve(curveMonotoneX);\n\n const stackTop = d3line<SeriesPoint<number[]>>()\n .x((_, i) => Math.round(at(i)))\n .y((d) => y(d[1]))\n .curve(curveMonotoneX);\n const palette = useMemo(() => seriesColors(series.map((s) => s.id)), [series]);\n const color = (s: TimeSeries) => s.color ?? palette.get(s.id)!;\n const bis = bisector((d: Date) => d.getTime()).center;\n const onMove = (e: React.PointerEvent<SVGRectElement>) => {\n const r = e.currentTarget.getBoundingClientRect();\n const px = e.clientX - r.left;\n const i = ordinal ? Math.max(0, Math.min(times.length - 1, Math.floor(px / slot))) : bis(times, x.invert(px));\n setHover({ i, y: Math.round(e.clientY - r.top + M.top) });\n };\n\n const table = {\n columns: [t(\"timeseriesChart.time\", \"Time\"), ...series.map((s) => s.label)],\n rows: times.map((_, i) => [headingFormat(i), ...series.map((s) => formatValue(s.points[i]?.v ?? 0))]),\n };\n\n const empty = state.empty ?? series.every((s) => s.points.every((p) => p.v === 0));\n const blank = !!state.loading || empty;\n const keys = useChartKeys(blank || state.error ? 0 : times.length);\n const active = blank || !!state.error ? null : (hover?.i ?? keys.index ?? (highlight !== undefined && highlight < times.length ? highlight : null));\n const activeX = active === null ? 0 : Math.round(at(active)) + M.left;\n const activeY =\n active === null\n ? 0\n : hover && hover.i === active\n ? hover.y\n : M.top + Math.round(y(stacked ? (stackData?.[stackData.length - 1]?.[active]?.[1] ?? 0) : Math.max(0, ...values.map((sv) => sv[active] ?? 0))));\n const rowsFor = (i: number) =>\n visible.map((s) => {\n const v = s.points[i]?.v ?? 0;\n const total = visible.reduce((acc, ss) => acc + (ss.points[i]?.v ?? 0), 0);\n return {\n id: s.id,\n label: s.label,\n color: color(s),\n value: formatValue(v),\n ...(shares && visible.length > 1 && total ? { share: formatPercent(Math.round((v / total) * 100) / 100, 0) } : {}),\n } as { id: string; label: ReactNode; color: string; value: ReactNode; share?: ReactNode | undefined };\n });\n\n return (\n <div ref={ref} className={cn(\"min-w-0\", className)}>\n <ChartFrame\n label={ariaLabel}\n height={height}\n table={table}\n state={{ ...state, empty }}\n legend={\n !hideLegend && series.length > 1 ? (\n <Legend\n items={series.map((s) => ({ id: s.id, label: s.label, color: color(s) }))}\n hidden={hidden}\n shape={kind === \"line\" ? \"line\" : \"square\"}\n onToggle={(id) => {\n const n = new Set(hidden);\n if (n.has(id)) n.delete(id);\n else n.add(id);\n setHidden(n);\n }}\n onHover={setFocus}\n />\n ) : undefined\n }\n >\n <div ref={box} role=\"group\" aria-label={ariaLabel} {...keys.props} className=\"absolute inset-0 rounded-cell focus-ring\">\n {size.width > 0 && (\n <svg width={size.width} height={height} className=\"block overflow-visible\" role=\"presentation\">\n <defs>\n {(dashedFirst || dashedLast) && (\n <>\n <clipPath id={`${gid}-whole`}>\n <rect x={cutStart} y={-M.top} width={Math.max(0, cutEnd - cutStart)} height={height} />\n </clipPath>\n <clipPath id={`${gid}-partial`}>\n {dashedFirst && <rect x={-M.left} y={-M.top} width={cutStart + M.left} height={height} />}\n {dashedLast && <rect x={cutEnd} y={-M.top} width={w + M.right - cutEnd} height={height} />}\n </clipPath>\n </>\n )}\n {visible.map((s) => (\n <linearGradient key={s.id} id={`${gid}-${s.id}`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={color(s)} className=\"chart-fill-top\" />\n <stop offset=\"100%\" stopColor={color(s)} stopOpacity={0} />\n </linearGradient>\n ))}\n </defs>\n <g transform={`translate(${M.left},${M.top})`}>\n {yTicks.map((t) => (\n <g key={t} transform={`translate(0,${Math.round(y(t)) + 0.5})`}>\n {t !== 0 && <line x2={w} {...AXIS.grid} />}\n {!state.loading && (\n <text x={w + 12} dy=\"0.32em\" {...AXIS.label}>\n {axisLabel(t)}\n </text>\n )}\n </g>\n ))}\n <line x2={w} y1={h + 0.5} y2={h + 0.5} {...AXIS.baseline} />\n {xLabels.map((l) => (\n <text key={l.key} x={l.x} y={h + 20} textAnchor={l.anchor} {...AXIS.label}>\n {l.label}\n </text>\n ))}\n {blank\n ? null\n : stacked && stackData\n ? stackData.map((layer, li) => {\n const s = visible[li]!;\n return (\n <g key={s.id} opacity={focus && focus !== s.id ? 0.3 : 1} className=\"opacity-motion\">\n <path d={stackArea(layer) ?? \"\"} fill={color(s)} className=\"chart-stack-fill\" />\n {partialLine({\n d: stackTop(layer) ?? \"\",\n fill: \"none\",\n stroke: color(s),\n strokeWidth: 1.5,\n strokeLinejoin: \"round\",\n strokeLinecap: \"round\",\n })}\n </g>\n );\n })\n : visible.map((s, si) => (\n <g key={s.id} opacity={focus && focus !== s.id ? 0.3 : 1} className=\"opacity-motion\">\n {kind === \"area\" && <path d={areaGen(values[si] ?? []) ?? \"\"} fill={`url(#${gid}-${s.id})`} />}\n {partialLine({\n d: lineGen(values[si] ?? []) ?? \"\",\n fill: \"none\",\n stroke: color(s),\n strokeWidth: 2,\n strokeLinejoin: \"round\",\n strokeLinecap: \"round\",\n })}\n </g>\n ))}\n {threshold && (\n <g transform={`translate(0,${Math.round(y(threshold.value)) + 0.5})`}>\n <line x2={w} stroke=\"var(--k-danger)\" strokeDasharray=\"4 4\" strokeWidth={1} />\n <text x={0} dy={-6} fill=\"var(--k-danger-text)\" fontSize={12} fontWeight={500}>\n {threshold.label}\n </text>\n </g>\n )}\n {active !== null && (\n <g aria-hidden>\n <line x1={activeX - M.left + 0.5} x2={activeX - M.left + 0.5} y2={h} {...AXIS.grid} stroke=\"var(--k-line-strong)\" />\n {!stacked &&\n visible.map((s, si) => (\n <circle\n key={s.id}\n cx={activeX - M.left}\n cy={y(values[si]?.[active] ?? 0)}\n r={4}\n fill={color(s)}\n stroke=\"var(--k-bg-panel)\"\n strokeWidth={2}\n />\n ))}\n </g>\n )}\n <rect width={w} height={h} fill=\"transparent\" onPointerMove={onMove} onPointerLeave={() => setHover(null)} />\n </g>\n </svg>\n )}\n {active !== null && times[active] && (\n <ChartTooltip x={activeX} y={activeY} width={size.width} visible heading={headingFormat(active)} rows={rowsFor(active)} />\n )}\n <ChartLive>\n {keys.index !== null && active !== null && times[keys.index] ? liveLine(headingFormat(keys.index), rowsFor(keys.index), t) : null}\n </ChartLive>\n </div>\n </ChartFrame>\n </div>\n );\n});\nif (process.env.NODE_ENV !== \"production\") TimeseriesChart.displayName = \"TimeseriesChart\";\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { t as e } from "./cn-CidVUKMm.js";
3
- import { n as t } from "./inset-BLMdxX4I.js";
2
+ import { t as e } from "./cn-DUDmdLpZ.js";
3
+ import { i as t } from "./inset-BnBj8NJV.js";
4
4
  import { t as n } from "./arrow-focus-BcySmwwU.js";
5
5
  import { forwardRef as r } from "react";
6
6
  import { jsx as i } from "react/jsx-runtime";
@@ -33,4 +33,4 @@ var l = /* @__PURE__ */ Object.assign(s, { Spacer: c });
33
33
  //#endregion
34
34
  export { a as n, l as r, o as t };
35
35
 
36
- //# sourceMappingURL=toolbar-Dw3uxpsE.js.map
36
+ //# sourceMappingURL=toolbar-nVLFWH2i.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar-Dw3uxpsE.js","names":["cn","useInset","arrowFocus","KAESO_TOOLBAR_VARIANTS","KAESO_TOOLBAR_DEFAULT_VARIANTS","Root","sizeProp","props","inset","size","className","onKeyDown","Spacer","Toolbar"],"sources":["../../src/components/toolbar/toolbar.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes, type KeyboardEvent } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useInset } from \"../../utils/inset.js\";\nimport { arrowFocus } from \"../../utils/arrow-focus.js\";\n\nexport const KAESO_TOOLBAR_VARIANTS = {\n size: {\n md: { classes: \"min-h-48 gap-8 px-24 py-6\" },\n inset: { classes: \"min-h-48 gap-8 px-0 py-6\" },\n },\n} as const;\nexport const KAESO_TOOLBAR_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nexport interface ToolbarProps extends HTMLAttributes<HTMLDivElement> {\n size?: keyof typeof KAESO_TOOLBAR_VARIANTS.size | undefined;\n \"aria-label\": string;\n}\n\nconst Root = /* @__PURE__ */ forwardRef<HTMLDivElement, ToolbarProps>(function Toolbar({ size: sizeProp, className, onKeyDown, ...props }, ref) {\n const inset = useInset();\n const size = sizeProp ?? (inset ? \"inset\" : \"md\");\n return (\n <div\n ref={ref}\n role=\"toolbar\"\n aria-orientation=\"horizontal\"\n className={cn(\"flex shrink-0 flex-wrap items-center\", KAESO_TOOLBAR_VARIANTS.size[size].classes, className)}\n onKeyDown={(e: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n arrowFocus(e);\n }}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") Root.displayName = \"Toolbar\";\n\nfunction Spacer() {\n return <span aria-hidden className=\"flex-1\" />;\n}\nif (process.env.NODE_ENV !== \"production\") Spacer.displayName = \"Toolbar.Spacer\";\n\nexport const Toolbar = /* @__PURE__ */ Object.assign(Root, { Spacer });\n"],"mappings":";;;;;;;AAKA,IAAaG,IAAyB,EACpC,MAAM;CACJ,IAAI,EAAE,SAAS,4BAA4B;CAC3C,OAAO,EAAE,SAAS,2BAA2B;AAC/C,EACF,GACaC,IAAiC,EAAE,MAAM,KAAK,GAOrDC,IAAuB,kBAAyC,SAAiB,EAAE,MAAMC,GAAU,cAAW,cAAW,GAAGC,KAAS,GAAK;CAC9I,IAAMC,IAAQP,EAAS,GACjBQ,IAAOH,MAAaE,IAAQ,UAAU;CAC5C,OACE,kBAAC,OAAD;EACO;EACL,MAAK;EACL,oBAAiB;EACjB,WAAWR,EAAG,wCAAwCG,EAAuB,KAAKM,EAAK,CAAC,SAASC,CAAS;EAC1G,YAAY,MAAqC;GAE/C,AADAC,IAAY,CAAC,GACbT,EAAW,CAAC;EACd;EACA,GAAIK;CACL,CAAA;AAEL,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAK,cAAc;AAE9D,SAASK,IAAS;CAChB,OAAO,kBAAC,QAAD;EAAM,eAAA;EAAY,WAAU;CAAU,CAAA;AAC/C;AACA,QAAA,IAAA,aAA6B,iBAAc,EAAO,cAAc;AAEhE,IAAaC,IAA0B,uBAAO,OAAOR,GAAM,EAAE,UAAO,CAAC"}
1
+ {"version":3,"file":"toolbar-nVLFWH2i.js","names":["cn","useInset","arrowFocus","KAESO_TOOLBAR_VARIANTS","KAESO_TOOLBAR_DEFAULT_VARIANTS","Root","sizeProp","props","inset","size","className","onKeyDown","Spacer","Toolbar"],"sources":["../../src/components/toolbar/toolbar.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes, type KeyboardEvent } from \"react\";\nimport { cn } from \"../../utils/cn.js\";\nimport { useInset } from \"../../utils/inset.js\";\nimport { arrowFocus } from \"../../utils/arrow-focus.js\";\n\nexport const KAESO_TOOLBAR_VARIANTS = {\n size: {\n md: { classes: \"min-h-48 gap-8 px-24 py-6\" },\n inset: { classes: \"min-h-48 gap-8 px-0 py-6\" },\n },\n} as const;\nexport const KAESO_TOOLBAR_DEFAULT_VARIANTS = { size: \"md\" } as const;\n\nexport interface ToolbarProps extends HTMLAttributes<HTMLDivElement> {\n size?: keyof typeof KAESO_TOOLBAR_VARIANTS.size | undefined;\n \"aria-label\": string;\n}\n\nconst Root = /* @__PURE__ */ forwardRef<HTMLDivElement, ToolbarProps>(function Toolbar({ size: sizeProp, className, onKeyDown, ...props }, ref) {\n const inset = useInset();\n const size = sizeProp ?? (inset ? \"inset\" : \"md\");\n return (\n <div\n ref={ref}\n role=\"toolbar\"\n aria-orientation=\"horizontal\"\n className={cn(\"flex shrink-0 flex-wrap items-center\", KAESO_TOOLBAR_VARIANTS.size[size].classes, className)}\n onKeyDown={(e: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(e);\n arrowFocus(e);\n }}\n {...props}\n />\n );\n});\nif (process.env.NODE_ENV !== \"production\") Root.displayName = \"Toolbar\";\n\nfunction Spacer() {\n return <span aria-hidden className=\"flex-1\" />;\n}\nif (process.env.NODE_ENV !== \"production\") Spacer.displayName = \"Toolbar.Spacer\";\n\nexport const Toolbar = /* @__PURE__ */ Object.assign(Root, { Spacer });\n"],"mappings":";;;;;;;AAKA,IAAaG,IAAyB,EACpC,MAAM;CACJ,IAAI,EAAE,SAAS,4BAA4B;CAC3C,OAAO,EAAE,SAAS,2BAA2B;AAC/C,EACF,GACaC,IAAiC,EAAE,MAAM,KAAK,GAOrDC,IAAuB,kBAAyC,SAAiB,EAAE,MAAMC,GAAU,cAAW,cAAW,GAAGC,KAAS,GAAK;CAC9I,IAAMC,IAAQP,EAAS,GACjBQ,IAAOH,MAAaE,IAAQ,UAAU;CAC5C,OACE,kBAAC,OAAD;EACO;EACL,MAAK;EACL,oBAAiB;EACjB,WAAWR,EAAG,wCAAwCG,EAAuB,KAAKM,EAAK,CAAC,SAASC,CAAS;EAC1G,YAAY,MAAqC;GAE/C,AADAC,IAAY,CAAC,GACbT,EAAW,CAAC;EACd;EACA,GAAIK;CACL,CAAA;AAEL,CAAC;AACD,QAAA,IAAA,aAA6B,iBAAc,EAAK,cAAc;AAE9D,SAASK,IAAS;CAChB,OAAO,kBAAC,QAAD;EAAM,eAAA;EAAY,WAAU;CAAU,CAAA;AAC/C;AACA,QAAA,IAAA,aAA6B,iBAAc,EAAO,cAAc;AAEhE,IAAaC,IAA0B,uBAAO,OAAOR,GAAM,EAAE,UAAO,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { t as e } from "./cn-CidVUKMm.js";
3
- import { i as t } from "./kbd-CBcBDvqU.js";
2
+ import { t as e } from "./cn-DUDmdLpZ.js";
3
+ import { i as t } from "./kbd-DqWmbr_e.js";
4
4
  import { cloneElement as n, isValidElement as r, useEffect as i, useLayoutEffect as a, useMemo as o, useReducer as s, useRef as c, useState as l, useSyncExternalStore as u } from "react";
5
5
  import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
6
6
  //#region src/utils/lazy-module.ts
@@ -114,7 +114,7 @@ var O = {
114
114
  }, k = {
115
115
  side: "top",
116
116
  shape: "pill"
117
- }, A = /* @__PURE__ */ b(() => import("./tooltip-root-DRd4ciUv.js"), { base: () => import.meta.url });
117
+ }, A = /* @__PURE__ */ b(() => import("./tooltip-root-vjylFUqw.js"), { base: () => import.meta.url });
118
118
  function j(e) {
119
119
  let [t, n] = C(A, !0), [i] = l(w);
120
120
  if (!r(e.children)) return e.children;
@@ -148,4 +148,4 @@ process.env.NODE_ENV !== "production" && (M.displayName = "TooltipSurface");
148
148
  //#endregion
149
149
  export { E as a, x as c, M as i, S as l, O as n, w as o, j as r, b as s, k as t, C as u };
150
150
 
151
- //# sourceMappingURL=tooltip-DEbCCsru.js.map
151
+ //# sourceMappingURL=tooltip-S1DmyLVl.js.map