@seekalfred/primitives 0.5.1 → 0.7.1

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 (446) hide show
  1. package/README.md +682 -19
  2. package/dist/accordion/accordion.js +10 -4
  3. package/dist/accordion/accordion.js.map +1 -1
  4. package/dist/action-button/action-button.d.ts +50 -0
  5. package/dist/action-button/action-button.js +159 -0
  6. package/dist/action-button/action-button.js.map +1 -0
  7. package/dist/action-button/index.d.ts +2 -0
  8. package/dist/action-button/index.js +2 -0
  9. package/dist/activity-heatmap/activity-heatmap.d.ts +92 -0
  10. package/dist/activity-heatmap/activity-heatmap.js +699 -0
  11. package/dist/activity-heatmap/activity-heatmap.js.map +1 -0
  12. package/dist/activity-heatmap/index.d.ts +2 -0
  13. package/dist/activity-heatmap/index.js +2 -0
  14. package/dist/alert/alert.d.ts +19 -1
  15. package/dist/alert/alert.js +180 -23
  16. package/dist/alert/alert.js.map +1 -1
  17. package/dist/alert-dialog/alert-dialog.d.ts +45 -18
  18. package/dist/alert-dialog/alert-dialog.js +128 -9
  19. package/dist/alert-dialog/alert-dialog.js.map +1 -1
  20. package/dist/alert-dialog/index.d.ts +2 -2
  21. package/dist/alert-dialog/index.js +2 -2
  22. package/dist/animated-counter/animated-counter.d.ts +38 -0
  23. package/dist/animated-counter/animated-counter.js +230 -0
  24. package/dist/animated-counter/animated-counter.js.map +1 -0
  25. package/dist/animated-counter/index.d.ts +2 -0
  26. package/dist/animated-counter/index.js +2 -0
  27. package/dist/announcement-bar/announcement-bar.d.ts +67 -0
  28. package/dist/announcement-bar/announcement-bar.js +364 -0
  29. package/dist/announcement-bar/announcement-bar.js.map +1 -0
  30. package/dist/announcement-bar/index.d.ts +2 -0
  31. package/dist/announcement-bar/index.js +2 -0
  32. package/dist/avatar/avatar.d.ts +6 -0
  33. package/dist/avatar/avatar.js +47 -16
  34. package/dist/avatar/avatar.js.map +1 -1
  35. package/dist/badge/badge.d.ts +10 -3
  36. package/dist/badge/badge.js +35 -5
  37. package/dist/badge/badge.js.map +1 -1
  38. package/dist/bar-chart/bar-chart.d.ts +51 -0
  39. package/dist/bar-chart/bar-chart.js +565 -0
  40. package/dist/bar-chart/bar-chart.js.map +1 -0
  41. package/dist/bar-chart/index.d.ts +2 -0
  42. package/dist/bar-chart/index.js +2 -0
  43. package/dist/breadcrumb/breadcrumb.d.ts +2 -29
  44. package/dist/breadcrumb/breadcrumb.js +32 -9
  45. package/dist/breadcrumb/breadcrumb.js.map +1 -1
  46. package/dist/brush-chart/brush-chart.d.ts +64 -0
  47. package/dist/brush-chart/brush-chart.js +1056 -0
  48. package/dist/brush-chart/brush-chart.js.map +1 -0
  49. package/dist/brush-chart/index.d.ts +2 -0
  50. package/dist/brush-chart/index.js +2 -0
  51. package/dist/button/button.d.ts +36 -23
  52. package/dist/button/button.js +198 -45
  53. package/dist/button/button.js.map +1 -1
  54. package/dist/button-group/button-group.d.ts +76 -0
  55. package/dist/button-group/button-group.js +402 -0
  56. package/dist/button-group/button-group.js.map +1 -0
  57. package/dist/button-group/index.d.ts +2 -0
  58. package/dist/button-group/index.js +2 -0
  59. package/dist/calendar/calendar.d.ts +1 -1
  60. package/dist/calendar/calendar.js +257 -30
  61. package/dist/calendar/calendar.js.map +1 -1
  62. package/dist/card/card.d.ts +9 -2
  63. package/dist/card/card.js +16 -5
  64. package/dist/card/card.js.map +1 -1
  65. package/dist/card-stack/card-stack.d.ts +54 -0
  66. package/dist/card-stack/card-stack.js +492 -0
  67. package/dist/card-stack/card-stack.js.map +1 -0
  68. package/dist/card-stack/index.d.ts +2 -0
  69. package/dist/card-stack/index.js +2 -0
  70. package/dist/carousel/carousel.d.ts +56 -0
  71. package/dist/carousel/carousel.js +389 -0
  72. package/dist/carousel/carousel.js.map +1 -0
  73. package/dist/carousel/index.d.ts +2 -0
  74. package/dist/carousel/index.js +2 -0
  75. package/dist/checkbox/checkbox.d.ts +0 -7
  76. package/dist/checkbox/checkbox.js +26 -29
  77. package/dist/checkbox/checkbox.js.map +1 -1
  78. package/dist/chip-group/chip-group.d.ts +37 -0
  79. package/dist/chip-group/chip-group.js +148 -0
  80. package/dist/chip-group/chip-group.js.map +1 -0
  81. package/dist/chip-group/index.d.ts +2 -0
  82. package/dist/chip-group/index.js +2 -0
  83. package/dist/confirm-morph/confirm-morph.d.ts +85 -0
  84. package/dist/confirm-morph/confirm-morph.js +652 -0
  85. package/dist/confirm-morph/confirm-morph.js.map +1 -0
  86. package/dist/confirm-morph/index.d.ts +2 -0
  87. package/dist/confirm-morph/index.js +2 -0
  88. package/dist/copy-button/copy-button.d.ts +32 -0
  89. package/dist/copy-button/copy-button.js +134 -0
  90. package/dist/copy-button/copy-button.js.map +1 -0
  91. package/dist/copy-button/index.d.ts +2 -0
  92. package/dist/copy-button/index.js +2 -0
  93. package/dist/countdown/countdown.d.ts +45 -0
  94. package/dist/countdown/countdown.js +298 -0
  95. package/dist/countdown/countdown.js.map +1 -0
  96. package/dist/countdown/index.d.ts +2 -0
  97. package/dist/countdown/index.js +2 -0
  98. package/dist/date-picker/date-picker.d.ts +51 -0
  99. package/dist/date-picker/date-picker.js +241 -0
  100. package/dist/date-picker/date-picker.js.map +1 -0
  101. package/dist/date-picker/date-range-picker.d.ts +78 -0
  102. package/dist/date-picker/date-range-picker.js +1015 -0
  103. package/dist/date-picker/date-range-picker.js.map +1 -0
  104. package/dist/date-picker/index.d.ts +4 -0
  105. package/dist/date-picker/index.js +4 -0
  106. package/dist/date-picker/picker-parts.d.ts +46 -0
  107. package/dist/date-picker/picker-parts.js +135 -0
  108. package/dist/date-picker/picker-parts.js.map +1 -0
  109. package/dist/dialog/dialog.d.ts +10 -14
  110. package/dist/dialog/dialog.js +40 -12
  111. package/dist/dialog/dialog.js.map +1 -1
  112. package/dist/donut-chart/donut-chart.d.ts +64 -0
  113. package/dist/donut-chart/donut-chart.js +576 -0
  114. package/dist/donut-chart/donut-chart.js.map +1 -0
  115. package/dist/donut-chart/index.d.ts +2 -0
  116. package/dist/donut-chart/index.js +2 -0
  117. package/dist/empty-state/empty-state.d.ts +55 -0
  118. package/dist/empty-state/empty-state.js +89 -0
  119. package/dist/empty-state/empty-state.js.map +1 -0
  120. package/dist/empty-state/index.d.ts +2 -0
  121. package/dist/empty-state/index.js +2 -0
  122. package/dist/expanding-button-group/expanding-button-group.d.ts +54 -0
  123. package/dist/expanding-button-group/expanding-button-group.js +350 -0
  124. package/dist/expanding-button-group/expanding-button-group.js.map +1 -0
  125. package/dist/expanding-button-group/index.d.ts +2 -0
  126. package/dist/expanding-button-group/index.js +2 -0
  127. package/dist/file-drop-zone/file-drop-zone.d.ts +71 -0
  128. package/dist/file-drop-zone/file-drop-zone.js +116 -0
  129. package/dist/file-drop-zone/file-drop-zone.js.map +1 -0
  130. package/dist/file-drop-zone/index.d.ts +2 -0
  131. package/dist/file-drop-zone/index.js +2 -0
  132. package/dist/filter-bar/filter-bar.d.ts +142 -0
  133. package/dist/filter-bar/filter-bar.js +416 -0
  134. package/dist/filter-bar/filter-bar.js.map +1 -0
  135. package/dist/filter-bar/index.d.ts +2 -0
  136. package/dist/filter-bar/index.js +2 -0
  137. package/dist/floating-button-group/floating-button-group.d.ts +61 -0
  138. package/dist/floating-button-group/floating-button-group.js +340 -0
  139. package/dist/floating-button-group/floating-button-group.js.map +1 -0
  140. package/dist/floating-button-group/index.d.ts +2 -0
  141. package/dist/floating-button-group/index.js +2 -0
  142. package/dist/gauge/gauge.d.ts +45 -0
  143. package/dist/gauge/gauge.js +219 -0
  144. package/dist/gauge/gauge.js.map +1 -0
  145. package/dist/gauge/index.d.ts +2 -0
  146. package/dist/gauge/index.js +2 -0
  147. package/dist/icon-morph/icon-morph.d.ts +55 -0
  148. package/dist/icon-morph/icon-morph.js +331 -0
  149. package/dist/icon-morph/icon-morph.js.map +1 -0
  150. package/dist/icon-morph/index.d.ts +2 -0
  151. package/dist/icon-morph/index.js +2 -0
  152. package/dist/in-view-title/in-view-title.d.ts +33 -0
  153. package/dist/in-view-title/in-view-title.js +119 -0
  154. package/dist/in-view-title/in-view-title.js.map +1 -0
  155. package/dist/in-view-title/index.d.ts +2 -0
  156. package/dist/in-view-title/index.js +2 -0
  157. package/dist/index.d.ts +71 -6
  158. package/dist/index.js +73 -11
  159. package/dist/input/input.d.ts +22 -0
  160. package/dist/input/input.js +36 -12
  161. package/dist/input/input.js.map +1 -1
  162. package/dist/lib/cn.js +11 -1
  163. package/dist/lib/cn.js.map +1 -1
  164. package/dist/lib/count-to.js +113 -0
  165. package/dist/lib/count-to.js.map +1 -0
  166. package/dist/lib/eye-morph.js +62 -0
  167. package/dist/lib/eye-morph.js.map +1 -0
  168. package/dist/lib/field-message.js +354 -0
  169. package/dist/lib/field-message.js.map +1 -0
  170. package/dist/lib/field-shell.js +81 -0
  171. package/dist/lib/field-shell.js.map +1 -0
  172. package/dist/lib/field-surface.js +11 -8
  173. package/dist/lib/field-surface.js.map +1 -1
  174. package/dist/lib/flag-emoji.js +50 -0
  175. package/dist/lib/flag-emoji.js.map +1 -0
  176. package/dist/lib/flip.js +88 -0
  177. package/dist/lib/flip.js.map +1 -0
  178. package/dist/lib/height-follow.js +59 -0
  179. package/dist/lib/height-follow.js.map +1 -0
  180. package/dist/lib/icon-swap.js +47 -0
  181. package/dist/lib/icon-swap.js.map +1 -0
  182. package/dist/lib/leaving-list.js +57 -0
  183. package/dist/lib/leaving-list.js.map +1 -0
  184. package/dist/lib/menu-highlight.js +64 -0
  185. package/dist/lib/menu-highlight.js.map +1 -0
  186. package/dist/lib/merge-refs.js +3 -3
  187. package/dist/lib/merge-refs.js.map +1 -1
  188. package/dist/lib/morph-text.js +128 -0
  189. package/dist/lib/morph-text.js.map +1 -0
  190. package/dist/lib/motion.js +169 -0
  191. package/dist/lib/motion.js.map +1 -0
  192. package/dist/lib/pausable-timeout.js +67 -0
  193. package/dist/lib/pausable-timeout.js.map +1 -0
  194. package/dist/lib/rolling-value.js +31 -0
  195. package/dist/lib/rolling-value.js.map +1 -0
  196. package/dist/lib/spring-progress.js +114 -0
  197. package/dist/lib/spring-progress.js.map +1 -0
  198. package/dist/lib/spring-tween.js +500 -0
  199. package/dist/lib/spring-tween.js.map +1 -0
  200. package/dist/lib/svg-id.js +10 -0
  201. package/dist/lib/svg-id.js.map +1 -0
  202. package/dist/lib/swap-text.js +79 -0
  203. package/dist/lib/swap-text.js.map +1 -0
  204. package/dist/lib/use-copy-feedback.js +36 -0
  205. package/dist/lib/use-copy-feedback.js.map +1 -0
  206. package/dist/line-chart/index.d.ts +2 -0
  207. package/dist/line-chart/index.js +2 -0
  208. package/dist/line-chart/line-chart.d.ts +76 -0
  209. package/dist/line-chart/line-chart.js +611 -0
  210. package/dist/line-chart/line-chart.js.map +1 -0
  211. package/dist/mention-input/index.d.ts +2 -0
  212. package/dist/mention-input/index.js +2 -0
  213. package/dist/mention-input/mention-input.d.ts +98 -0
  214. package/dist/mention-input/mention-input.js +576 -0
  215. package/dist/mention-input/mention-input.js.map +1 -0
  216. package/dist/menu/menu.d.ts +2 -0
  217. package/dist/menu/menu.js +23 -12
  218. package/dist/menu/menu.js.map +1 -1
  219. package/dist/money-input/index.d.ts +2 -0
  220. package/dist/money-input/index.js +2 -0
  221. package/dist/money-input/money-input.d.ts +65 -0
  222. package/dist/money-input/money-input.js +607 -0
  223. package/dist/money-input/money-input.js.map +1 -0
  224. package/dist/morph-select/index.d.ts +2 -0
  225. package/dist/morph-select/index.js +2 -0
  226. package/dist/morph-select/morph-select.d.ts +71 -0
  227. package/dist/morph-select/morph-select.js +693 -0
  228. package/dist/morph-select/morph-select.js.map +1 -0
  229. package/dist/multi-select/index.d.ts +2 -0
  230. package/dist/multi-select/index.js +2 -0
  231. package/dist/multi-select/multi-select.d.ts +36 -0
  232. package/dist/multi-select/multi-select.js +152 -0
  233. package/dist/multi-select/multi-select.js.map +1 -0
  234. package/dist/number-field/index.d.ts +2 -0
  235. package/dist/number-field/index.js +2 -0
  236. package/dist/number-field/number-field.d.ts +42 -0
  237. package/dist/number-field/number-field.js +199 -0
  238. package/dist/number-field/number-field.js.map +1 -0
  239. package/dist/onboarding-checklist/index.d.ts +2 -0
  240. package/dist/onboarding-checklist/index.js +2 -0
  241. package/dist/onboarding-checklist/onboarding-checklist.d.ts +55 -0
  242. package/dist/onboarding-checklist/onboarding-checklist.js +577 -0
  243. package/dist/onboarding-checklist/onboarding-checklist.js.map +1 -0
  244. package/dist/page-header/index.d.ts +2 -0
  245. package/dist/page-header/index.js +2 -0
  246. package/dist/page-header/page-header.d.ts +75 -0
  247. package/dist/page-header/page-header.js +83 -0
  248. package/dist/page-header/page-header.js.map +1 -0
  249. package/dist/password-field/index.d.ts +2 -0
  250. package/dist/password-field/index.js +2 -0
  251. package/dist/password-field/password-field.d.ts +37 -0
  252. package/dist/password-field/password-field.js +101 -0
  253. package/dist/password-field/password-field.js.map +1 -0
  254. package/dist/password-strength/index.d.ts +2 -0
  255. package/dist/password-strength/index.js +2 -0
  256. package/dist/password-strength/password-strength.d.ts +127 -0
  257. package/dist/password-strength/password-strength.js +455 -0
  258. package/dist/password-strength/password-strength.js.map +1 -0
  259. package/dist/phone-input/index.d.ts +3 -0
  260. package/dist/phone-input/index.js +3 -0
  261. package/dist/phone-input/phone-countries.d.ts +29 -0
  262. package/dist/phone-input/phone-countries.js +170 -0
  263. package/dist/phone-input/phone-countries.js.map +1 -0
  264. package/dist/phone-input/phone-input.d.ts +66 -0
  265. package/dist/phone-input/phone-input.js +440 -0
  266. package/dist/phone-input/phone-input.js.map +1 -0
  267. package/dist/popover/popover.d.ts +20 -0
  268. package/dist/popover/popover.js +33 -9
  269. package/dist/popover/popover.js.map +1 -1
  270. package/dist/progress/progress.js +46 -5
  271. package/dist/progress/progress.js.map +1 -1
  272. package/dist/radio-group/radio-group.js +8 -7
  273. package/dist/radio-group/radio-group.js.map +1 -1
  274. package/dist/reactions/index.d.ts +2 -0
  275. package/dist/reactions/index.js +2 -0
  276. package/dist/reactions/reactions.d.ts +50 -0
  277. package/dist/reactions/reactions.js +315 -0
  278. package/dist/reactions/reactions.js.map +1 -0
  279. package/dist/rich-text-editor/index.d.ts +3 -0
  280. package/dist/rich-text-editor/index.js +2 -0
  281. package/dist/rich-text-editor/rich-text-editor.d.ts +70 -0
  282. package/dist/rich-text-editor/rich-text-editor.js +909 -0
  283. package/dist/rich-text-editor/rich-text-editor.js.map +1 -0
  284. package/dist/rich-text-editor/rich-text-engine.d.ts +16 -0
  285. package/dist/rich-text-editor/rich-text-engine.js +366 -0
  286. package/dist/rich-text-editor/rich-text-engine.js.map +1 -0
  287. package/dist/rich-text-editor/rich-text-html.js +174 -0
  288. package/dist/rich-text-editor/rich-text-html.js.map +1 -0
  289. package/dist/rich-text-editor/rich-text-icons.js +43 -0
  290. package/dist/rich-text-editor/rich-text-icons.js.map +1 -0
  291. package/dist/ridgeline/index.d.ts +2 -0
  292. package/dist/ridgeline/index.js +2 -0
  293. package/dist/ridgeline/ridgeline.d.ts +55 -0
  294. package/dist/ridgeline/ridgeline.js +701 -0
  295. package/dist/ridgeline/ridgeline.js.map +1 -0
  296. package/dist/scroll-area/index.d.ts +2 -2
  297. package/dist/scroll-area/index.js +2 -2
  298. package/dist/scroll-area/scroll-area.d.ts +75 -28
  299. package/dist/scroll-area/scroll-area.js +212 -41
  300. package/dist/scroll-area/scroll-area.js.map +1 -1
  301. package/dist/scrub-input/evaluate.d.ts +14 -0
  302. package/dist/scrub-input/evaluate.js +72 -0
  303. package/dist/scrub-input/evaluate.js.map +1 -0
  304. package/dist/scrub-input/index.d.ts +3 -0
  305. package/dist/scrub-input/index.js +3 -0
  306. package/dist/scrub-input/scrub-input.d.ts +74 -0
  307. package/dist/scrub-input/scrub-input.js +486 -0
  308. package/dist/scrub-input/scrub-input.js.map +1 -0
  309. package/dist/search-field/index.d.ts +2 -0
  310. package/dist/search-field/index.js +2 -0
  311. package/dist/search-field/search-field.d.ts +27 -0
  312. package/dist/search-field/search-field.js +155 -0
  313. package/dist/search-field/search-field.js.map +1 -0
  314. package/dist/select/select.d.ts +3 -1
  315. package/dist/select/select.js +95 -25
  316. package/dist/select/select.js.map +1 -1
  317. package/dist/separator/separator.d.ts +1 -1
  318. package/dist/sheet/sheet.js +4 -2
  319. package/dist/sheet/sheet.js.map +1 -1
  320. package/dist/shortcut-recorder/index.d.ts +3 -0
  321. package/dist/shortcut-recorder/index.js +3 -0
  322. package/dist/shortcut-recorder/shortcut-model.d.ts +27 -0
  323. package/dist/shortcut-recorder/shortcut-model.js +206 -0
  324. package/dist/shortcut-recorder/shortcut-model.js.map +1 -0
  325. package/dist/shortcut-recorder/shortcut-recorder.d.ts +93 -0
  326. package/dist/shortcut-recorder/shortcut-recorder.js +489 -0
  327. package/dist/shortcut-recorder/shortcut-recorder.js.map +1 -0
  328. package/dist/side-nav/index.d.ts +2 -0
  329. package/dist/side-nav/index.js +2 -0
  330. package/dist/side-nav/side-nav.d.ts +72 -0
  331. package/dist/side-nav/side-nav.js +142 -0
  332. package/dist/side-nav/side-nav.js.map +1 -0
  333. package/dist/skeleton/skeleton.d.ts +8 -2
  334. package/dist/skeleton/skeleton.js +6 -2
  335. package/dist/skeleton/skeleton.js.map +1 -1
  336. package/dist/slider/index.d.ts +2 -2
  337. package/dist/slider/slider.d.ts +46 -14
  338. package/dist/slider/slider.js +188 -50
  339. package/dist/slider/slider.js.map +1 -1
  340. package/dist/slope-chart/index.d.ts +2 -0
  341. package/dist/slope-chart/index.js +2 -0
  342. package/dist/slope-chart/slope-chart.d.ts +54 -0
  343. package/dist/slope-chart/slope-chart.js +568 -0
  344. package/dist/slope-chart/slope-chart.js.map +1 -0
  345. package/dist/sparkline/index.d.ts +2 -0
  346. package/dist/sparkline/index.js +2 -0
  347. package/dist/sparkline/sparkline.d.ts +46 -0
  348. package/dist/sparkline/sparkline.js +390 -0
  349. package/dist/sparkline/sparkline.js.map +1 -0
  350. package/dist/split-bar/index.d.ts +2 -0
  351. package/dist/split-bar/index.js +2 -0
  352. package/dist/split-bar/split-bar.d.ts +62 -0
  353. package/dist/split-bar/split-bar.js +513 -0
  354. package/dist/split-bar/split-bar.js.map +1 -0
  355. package/dist/split-button/index.d.ts +2 -0
  356. package/dist/split-button/index.js +2 -0
  357. package/dist/split-button/split-button.d.ts +46 -0
  358. package/dist/split-button/split-button.js +123 -0
  359. package/dist/split-button/split-button.js.map +1 -0
  360. package/dist/stat-card/index.d.ts +2 -0
  361. package/dist/stat-card/index.js +2 -0
  362. package/dist/stat-card/stat-card.d.ts +101 -0
  363. package/dist/stat-card/stat-card.js +249 -0
  364. package/dist/stat-card/stat-card.js.map +1 -0
  365. package/dist/stepper/index.d.ts +2 -0
  366. package/dist/stepper/index.js +2 -0
  367. package/dist/stepper/stepper.d.ts +51 -0
  368. package/dist/stepper/stepper.js +215 -0
  369. package/dist/stepper/stepper.js.map +1 -0
  370. package/dist/streamgraph/index.d.ts +2 -0
  371. package/dist/streamgraph/index.js +2 -0
  372. package/dist/streamgraph/streamgraph.d.ts +70 -0
  373. package/dist/streamgraph/streamgraph.js +613 -0
  374. package/dist/streamgraph/streamgraph.js.map +1 -0
  375. package/dist/styles.css +1 -1
  376. package/dist/swipe-actions/index.d.ts +2 -0
  377. package/dist/swipe-actions/index.js +2 -0
  378. package/dist/swipe-actions/swipe-actions.d.ts +67 -0
  379. package/dist/swipe-actions/swipe-actions.js +552 -0
  380. package/dist/swipe-actions/swipe-actions.js.map +1 -0
  381. package/dist/switch/switch.js +10 -9
  382. package/dist/switch/switch.js.map +1 -1
  383. package/dist/table/index.d.ts +2 -2
  384. package/dist/table/index.js +2 -2
  385. package/dist/table/table.d.ts +87 -4
  386. package/dist/table/table.js +441 -165
  387. package/dist/table/table.js.map +1 -1
  388. package/dist/tabs/tabs.js +143 -7
  389. package/dist/tabs/tabs.js.map +1 -1
  390. package/dist/tag-input/index.d.ts +2 -0
  391. package/dist/tag-input/index.js +2 -0
  392. package/dist/tag-input/tag-input.d.ts +40 -0
  393. package/dist/tag-input/tag-input.js +269 -0
  394. package/dist/tag-input/tag-input.js.map +1 -0
  395. package/dist/text-morph/index.d.ts +2 -0
  396. package/dist/text-morph/index.js +2 -0
  397. package/dist/text-morph/text-morph.d.ts +23 -0
  398. package/dist/text-morph/text-morph.js +21 -0
  399. package/dist/text-morph/text-morph.js.map +1 -0
  400. package/dist/text-reveal/index.d.ts +2 -0
  401. package/dist/text-reveal/index.js +2 -0
  402. package/dist/text-reveal/text-reveal.d.ts +27 -0
  403. package/dist/text-reveal/text-reveal.js +51 -0
  404. package/dist/text-reveal/text-reveal.js.map +1 -0
  405. package/dist/text-shimmer/index.d.ts +2 -0
  406. package/dist/text-shimmer/index.js +2 -0
  407. package/dist/text-shimmer/text-shimmer.d.ts +29 -0
  408. package/dist/text-shimmer/text-shimmer.js +29 -0
  409. package/dist/text-shimmer/text-shimmer.js.map +1 -0
  410. package/dist/textarea/textarea.d.ts +23 -0
  411. package/dist/textarea/textarea.js +24 -2
  412. package/dist/textarea/textarea.js.map +1 -1
  413. package/dist/theme-switch/index.d.ts +2 -0
  414. package/dist/theme-switch/index.js +2 -0
  415. package/dist/theme-switch/theme-switch.d.ts +37 -0
  416. package/dist/theme-switch/theme-switch.js +123 -0
  417. package/dist/theme-switch/theme-switch.js.map +1 -0
  418. package/dist/time-picker/index.d.ts +2 -0
  419. package/dist/time-picker/index.js +2 -0
  420. package/dist/time-picker/time-picker.d.ts +54 -0
  421. package/dist/time-picker/time-picker.js +201 -0
  422. package/dist/time-picker/time-picker.js.map +1 -0
  423. package/dist/toast/index.d.ts +2 -2
  424. package/dist/toast/index.js +2 -2
  425. package/dist/toast/toast.d.ts +6 -0
  426. package/dist/toast/toast.js +98 -36
  427. package/dist/toast/toast.js.map +1 -1
  428. package/dist/tooltip/tooltip.d.ts +10 -3
  429. package/dist/tooltip/tooltip.js +67 -18
  430. package/dist/tooltip/tooltip.js.map +1 -1
  431. package/dist/treemap/index.d.ts +2 -0
  432. package/dist/treemap/index.js +2 -0
  433. package/dist/treemap/treemap.d.ts +53 -0
  434. package/dist/treemap/treemap.js +699 -0
  435. package/dist/treemap/treemap.js.map +1 -0
  436. package/dist/usage-meter/index.d.ts +2 -0
  437. package/dist/usage-meter/index.js +2 -0
  438. package/dist/usage-meter/usage-meter.d.ts +50 -0
  439. package/dist/usage-meter/usage-meter.js +440 -0
  440. package/dist/usage-meter/usage-meter.js.map +1 -0
  441. package/dist/waffle-chart/index.d.ts +2 -0
  442. package/dist/waffle-chart/index.js +2 -0
  443. package/dist/waffle-chart/waffle-chart.d.ts +57 -0
  444. package/dist/waffle-chart/waffle-chart.js +426 -0
  445. package/dist/waffle-chart/waffle-chart.js.map +1 -0
  446. package/package.json +245 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamgraph.js","names":[],"sources":["../../src/streamgraph/streamgraph.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type KeyboardEvent,\n type PointerEvent,\n} from \"react\";\n\nimport { cn } from \"../lib/cn.js\";\nimport { mergeRefs } from \"../lib/merge-refs.js\";\nimport { prefersReducedMotion, useIsomorphicLayoutEffect } from \"../lib/motion.js\";\nimport { live, retarget, SMOOTH, SNAPPY, SWELL, tween, type Live } from \"../lib/spring-tween.js\";\n\n/**\n * Streamgraph: how the mix of several parts changes over time, when the overall\n * shape matters more than exact values. Layers flow around a centre line, the\n * first through the middle and the rest alternating above and below it.\n *\n * The stream swells out of a hairline along its centre the first time it is\n * seen. New data blends every layer from the shape on screen to the new one;\n * switching a layer off thins it to nothing while the others close over it.\n * Hovering, touching or the arrow keys read the stream at a point in time: a\n * crosshair glides to it and a tooltip lists every layer. The layer under the\n * pointer (or chosen with the up and down keys, or the legend) comes forward and\n * the rest step back. Each layer is named inside its widest stretch when it is\n * thick enough to hold the text.\n *\n * Plain SVG written straight to the DOM by one small spring tween; the curves\n * are resampled onto a shared grid, so datasets of any length morph into each\n * other.\n */\nexport interface StreamgraphSeries {\n /** Stable identity. A layer keeps its place and colour across data changes, so switching datasets morphs it. */\n key: string;\n /** Name in the legend, the direct label, the tooltip and the data table. */\n label: string;\n /** Any CSS colour. Defaults to chart-1 to chart-4 for the first four layers, then neutral steps. */\n color?: string;\n}\n\nexport interface StreamgraphDatum {\n /** Stable identity, such as an ISO week. */\n key: string;\n /** Full label for the tooltip and screen readers, such as \"Week of Sep 14\". */\n label: string;\n /** Short label on the time axis. Leave it out to keep the axis quiet at that point. */\n axisLabel?: string;\n /** One value per series key. Missing values count as zero; negatives are treated as zero. */\n values: Record<string, number | undefined>;\n}\n\nexport interface StreamgraphProps {\n data: StreamgraphDatum[];\n /** Layers from the centre out: the first runs through the middle of the stream, the rest alternate above and below it. */\n series: StreamgraphSeries[];\n /** What is measured, such as \"Support tickets by topic\". Names the chart for assistive technology. */\n label: string;\n /** Unit after each value, such as \"tickets\". */\n unit?: string;\n /** Plot height in pixels. The width follows the container. @default 260 */\n height?: number;\n /** \"wiggle\" minimises layer slopes for a flowing stream, \"silhouette\" centres the stack, \"zero\" stacks from a flat baseline. @default \"wiggle\" */\n offset?: \"wiggle\" | \"silhouette\" | \"zero\";\n formatValue?: (value: number, series: StreamgraphSeries) => string;\n /** Controlled hidden layer keys. A hidden layer thins to nothing and the rest reflow. */\n hiddenSeries?: string[];\n defaultHiddenSeries?: string[];\n onHiddenSeriesChange?: (hidden: string[]) => void;\n /** Called as the reading moves, and with nulls when it leaves. */\n onActiveChange?: (index: number | null, seriesKey: string | null) => void;\n /** Layer toggles above the plot. @default true */\n legend?: boolean;\n /** Names each layer inside its widest stretch when it is thick enough to hold the text. @default true */\n directLabels?: boolean;\n /** Header of the first column in the screen reader table. @default \"Date\" */\n categoryLabel?: string;\n /** @default \"No data for this range\" */\n emptyLabel?: string;\n /** Extra classes for the root. Merged last. */\n className?: string;\n}\n\ntype Hover = { index: number; key: string | null; y: number | null };\ntype Frame = { lower: number[][]; upper: number[][]; toY: (value: number) => number };\n\n/** Samples across the plot: every layer is resampled onto the same grid, so datasets of any length morph into each other. */\nconst N = 161;\n/** Room above and below the stream, and the gap between the crosshair and its tooltip, in pixels. */\nconst PAD = 10;\nconst GAP = 14;\n/** The first four layers take chart-1 to chart-4; later layers fall back to neutral steps that alternate in lightness. */\nconst SHADES = [30, 18, 24, 14];\nconst colorOf = (item: StreamgraphSeries, index: number) =>\n item.color ??\n (index < 4\n ? `var(--color-chart-${index + 1})`\n : `color-mix(in oklab, var(--color-foreground) ${SHADES[(index - 4) % SHADES.length]}%, var(--color-surface))`);\nconst GROUPED = new Intl.NumberFormat(\"en-US\", { maximumFractionDigits: 1 });\nconst clamp = (value: number, low: number, high: number) => Math.min(high, Math.max(low, value));\n\n/** The first layer sits in the middle of the stream and the rest alternate above and below it; a flat baseline stacks them in order. */\nfunction stackOrder(count: number, mode: StreamgraphProps[\"offset\"]) {\n const order = Array.from({ length: count }, (_, index) => index);\n if (mode === \"zero\") return order;\n return order.reduce<number[]>((list, index) => (index === 0 ? [0] : index % 2 ? [...list, index] : [index, ...list]), []);\n}\n\n/** Resamples values onto the shared grid with monotone cubic tangents, so curves never swing past the data or below zero. */\nfunction resample(raw: number[]): number[] {\n const values = raw.map((value) => Math.max(0, value || 0));\n const out = new Array<number>(N);\n if (!values.length) return out.fill(0);\n if (values.length === 1) return out.fill(values[0]!);\n const last = values.length - 1;\n const slopes = values.slice(1).map((value, index) => value - values[index]!);\n const tangents = values.map((_, index) =>\n index === 0 || index === last\n ? 0\n : (Math.sign(slopes[index - 1]!) + Math.sign(slopes[index]!)) *\n Math.min(Math.abs(slopes[index - 1]!), Math.abs(slopes[index]!), Math.abs(slopes[index - 1]! + slopes[index]!) / 4) || 0,\n );\n if (last > 1) {\n tangents[0] = (3 * slopes[0]! - tangents[1]!) / 2;\n tangents[last] = (3 * slopes[last - 1]! - tangents[last - 1]!) / 2;\n } else {\n tangents[0] = tangents[1] = slopes[0]!;\n }\n for (let k = 0; k < N; k++) {\n const at = (k / (N - 1)) * last;\n const seg = Math.min(last - 1, Math.floor(at));\n const t = at - seg;\n const t2 = t * t;\n const t3 = t2 * t;\n const a = values[seg]!;\n const b = values[seg + 1]!;\n const value = (2 * t3 - 3 * t2 + 1) * a + (t3 - 2 * t2 + t) * tangents[seg]! + (3 * t2 - 2 * t3) * b + (t3 - t2) * tangents[seg + 1]!;\n out[k] = clamp(value, Math.min(a, b), Math.max(a, b));\n }\n return out;\n}\n\n/** The baseline under the stack. Wiggle follows Byron and Wattenberg, then removes its linear drift so the stream stays level. */\nfunction baseline(layers: number[][], mode: StreamgraphProps[\"offset\"]): number[] {\n const g = new Array<number>(N).fill(0);\n const totals = g.map((_, j) => layers.reduce((sum, layer) => sum + layer[j]!, 0));\n if (mode === \"zero\" || !layers.length) return g;\n if (mode === \"silhouette\") return totals.map((total) => -total / 2);\n for (let j = 1; j < N; j++) {\n let s1 = 0;\n let s2 = 0;\n let below = 0;\n for (const layer of layers) {\n const change = layer[j]! - layer[j - 1]!;\n s1 += layer[j]!;\n s2 += (below + change / 2) * layer[j]!;\n below += change;\n }\n g[j] = g[j - 1]! - (s1 ? s2 / s1 : 0);\n }\n // A least squares line through the centre of the stream, subtracted so it never tilts off the plot.\n const centers = g.map((value, j) => value + totals[j]! / 2);\n const mx = (N - 1) / 2;\n const my = centers.reduce((sum, value) => sum + value, 0) / N;\n let num = 0;\n let den = 0;\n centers.forEach((value, j) => {\n num += (j - mx) * (value - my);\n den += (j - mx) ** 2;\n });\n const slope = den ? num / den : 0;\n return g.map((value, j) => value - (my + slope * (j - mx)));\n}\n\n/** Axis labels that fit: at most one per 72 pixels, counted back from the latest. */\nfunction axisPicks(data: StreamgraphDatum[], width: number) {\n const labeled = data.flatMap((item, index) => (item.axisLabel ? [index] : []));\n if (!width || !labeled.length) return [];\n const stride = Math.ceil(labeled.length / Math.max(2, Math.floor(width / 72)));\n return labeled\n .reverse()\n .filter((_, rank) => rank % stride === 0)\n .reverse();\n}\n\nexport const Streamgraph = forwardRef<HTMLElement, StreamgraphProps>(function Streamgraph(\n {\n data,\n series,\n label,\n unit = \"\",\n height = 260,\n offset = \"wiggle\",\n formatValue,\n hiddenSeries,\n defaultHiddenSeries,\n onHiddenSeriesChange,\n onActiveChange,\n legend = true,\n directLabels = true,\n categoryLabel = \"Date\",\n emptyLabel = \"No data for this range\",\n className,\n },\n ref,\n) {\n const figure = useRef<HTMLElement | null>(null);\n const refs = useMemo(() => mergeRefs(ref, figure), [ref]);\n const plot = useRef<HTMLDivElement>(null);\n const svg = useRef<SVGSVGElement>(null);\n const tip = useRef<HTMLDivElement>(null);\n const last = data.length - 1;\n const empty = data.length === 0;\n\n const [ownHidden, setOwnHidden] = useState<string[]>(defaultHiddenSeries ?? []);\n const hidden = hiddenSeries ?? ownHidden;\n const toggle = (key: string) => {\n const next = hidden.includes(key) ? hidden.filter((item) => item !== key) : [...hidden, key];\n if (hiddenSeries === undefined) setOwnHidden(next);\n onHiddenSeriesChange?.(next);\n };\n const visible = series.filter((item) => !hidden.includes(item.key));\n\n // Each layer becomes a dense curve on the shared grid; the painter blends from what is on screen to it.\n const signature = `${series.map((item) => item.key).join(\",\")}|${data.map((item) => series.map((line) => item.values[line.key] ?? 0).join(\",\")).join(\";\")}`;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const targets = useMemo(() => new Map(series.map((line) => [line.key, resample(data.map((item) => item.values[line.key] ?? 0))])), [signature]);\n\n const [hover, setHover] = useState<Hover | null>(null);\n const [seenSignature, setSeenSignature] = useState(signature);\n if (seenSignature !== signature) {\n setSeenSignature(signature);\n setHover(null);\n }\n const index = hover && !empty ? Math.min(hover.index, last) : null;\n const [legendKey, setLegendKey] = useState<string | null>(null);\n const wanted = hover?.key ?? legendKey;\n const activeKey = wanted && visible.some((item) => item.key === wanted) ? wanted : null;\n\n const width = useRef(0);\n const [plotWidth, setPlotWidth] = useState(0);\n const shapes = useRef(new Map<string, number[]>());\n const presence = useRef(new Map<string, Live>());\n const frame = useRef<Frame | null>(null);\n const spots = useRef(new Map<string, number>());\n const grow = useRef(live(0));\n const cursor = useRef(live(1));\n const current = useRef({ series, offset, height });\n useIsomorphicLayoutEffect(() => {\n current.current = { series, offset, height };\n });\n\n /** One writer for every drawn attribute: morphs, toggles, the first swell, the crosshair and resizes all repaint through here. */\n const paint = useCallback(() => {\n const root = svg.current;\n const w = width.current;\n if (!root || !w) return;\n const { series: order, offset: mode, height: h } = current.current;\n const layers = order.map((line) => {\n const shape = shapes.current.get(line.key);\n const p = presence.current.get(line.key)?.value ?? 1;\n return shape ? shape.map((value) => value * p) : new Array<number>(N).fill(0);\n });\n const stack = stackOrder(order.length, mode);\n const g = baseline(\n stack.map((i) => layers[i]!),\n mode,\n );\n const lower = new Array<number[]>(order.length);\n const upper = new Array<number[]>(order.length);\n let running = g.slice();\n for (const i of stack) {\n const layer = layers[i]!;\n lower[i] = running;\n running = running.map((value, j) => value + layer[j]!);\n upper[i] = running;\n }\n let lo = Infinity;\n let hi = -Infinity;\n for (let j = 0; j < N; j++) {\n lo = Math.min(lo, g[j]!);\n hi = Math.max(hi, running[j]!);\n }\n if (!Number.isFinite(lo) || hi - lo < 1e-9) {\n lo = -1;\n hi = 1;\n }\n const span = hi - lo;\n const s = grow.current.value;\n const center = g.map((value, j) => (value + running[j]!) / 2);\n const toY = (value: number) => PAD + (1 - (value - lo) / span) * (h - PAD * 2);\n const yAt = (value: number, j: number) => toY(center[j]! + (value - center[j]!) * s);\n frame.current = { lower, upper, toY };\n const xs = Array.from({ length: N }, (_, j) => (j / (N - 1)) * w);\n order.forEach((line, i) => {\n const top = upper[i]!;\n const bottom = lower[i]!;\n const node = root.querySelector(`[data-layer=\"${CSS.escape(line.key)}\"]`);\n if (node) {\n let d = \"\";\n for (let j = 0; j < N; j++) d += `${j ? \"L\" : \"M\"}${xs[j]!.toFixed(1)},${yAt(top[j]!, j).toFixed(1)}`;\n for (let j = N - 1; j >= 0; j--) d += `L${xs[j]!.toFixed(1)},${yAt(bottom[j]!, j).toFixed(1)}`;\n node.setAttribute(\"d\", `${d}Z`);\n }\n // The label sits where its layer is thickest, and holds its spot until another stretch is clearly thicker.\n const text = root.querySelector<SVGTextElement>(`[data-name=\"${CSS.escape(line.key)}\"]`);\n if (!text) return;\n let best = 4;\n for (let j = 4; j < N - 4; j++) if (top[j]! - bottom[j]! > top[best]! - bottom[best]!) best = j;\n const held = spots.current.get(line.key);\n const j = held !== undefined && top[held]! - bottom[held]! >= (top[best]! - bottom[best]!) * 0.8 ? held : best;\n spots.current.set(line.key, j);\n const thickness = ((top[j]! - bottom[j]!) / span) * (h - PAD * 2) * s;\n const room = text.getComputedTextLength?.() ?? 60;\n text.setAttribute(\"x\", clamp(xs[j]!, room / 2 + 6, w - room / 2 - 6).toFixed(1));\n text.setAttribute(\"y\", yAt((top[j]! + bottom[j]!) / 2, j).toFixed(1));\n text.style.opacity = thickness >= 19 && room + 16 < w ? \"1\" : \"0\";\n });\n const x = cursor.current.value * w;\n const cross = root.querySelector(\"[data-part=crosshair]\");\n cross?.setAttribute(\"x1\", x.toFixed(1));\n cross?.setAttribute(\"x2\", x.toFixed(1));\n }, []);\n\n useIsomorphicLayoutEffect(() => {\n const node = plot.current;\n if (!node) return;\n const read = () => {\n width.current = node.clientWidth;\n setPlotWidth(node.clientWidth);\n paint();\n };\n read();\n if (typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver(read);\n observer.observe(node);\n return () => observer.disconnect();\n }, [paint]);\n useIsomorphicLayoutEffect(paint, [height, offset, paint, series]);\n\n // New data blends every layer from the shape on screen; a layer that arrives thickens from nothing.\n const mounted = useRef(false);\n useEffect(() => {\n const moves: { key: string; from: number[]; to: number[] }[] = [];\n for (const [key, to] of targets) {\n const from = shapes.current.get(key);\n if (!from) {\n shapes.current.set(key, to);\n if (mounted.current) {\n const entering = live(0);\n presence.current.set(key, entering);\n retarget(entering, hidden.includes(key) ? 0 : 1, SMOOTH, paint);\n }\n continue;\n }\n moves.push({ key, from, to });\n }\n for (const key of [...shapes.current.keys()]) if (!targets.has(key)) shapes.current.delete(key);\n mounted.current = true;\n if (!moves.length) {\n paint();\n return;\n }\n return tween(\n SMOOTH,\n (p) => {\n for (const move of moves) shapes.current.set(move.key, move.from.map((value, j) => value + (move.to[j]! - value) * p));\n paint();\n },\n () => {\n for (const move of moves) shapes.current.set(move.key, move.to);\n paint();\n },\n );\n // The hidden set is read once for a layer that arrives; toggles have their own effect.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [paint, targets]);\n\n // A hidden layer thins to nothing while the others close over it.\n const hiddenKey = hidden.join(\"|\");\n useEffect(() => {\n for (const line of series) {\n const to = hidden.includes(line.key) ? 0 : 1;\n const track = presence.current.get(line.key);\n if (!track) presence.current.set(line.key, live(to));\n else retarget(track, to, SMOOTH, paint);\n }\n paint();\n // The key stands for the hidden set.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hiddenKey, paint, series.length]);\n useEffect(\n () => () => {\n grow.current.stop();\n cursor.current.stop();\n for (const track of presence.current.values()) track.stop();\n },\n [],\n );\n\n // The first time a third of the chart is seen, the stream swells out of a hairline along its centre.\n useEffect(() => {\n const node = figure.current;\n if (empty || !node) return;\n if (prefersReducedMotion() || typeof IntersectionObserver === \"undefined\") {\n grow.current.value = 1;\n paint();\n return;\n }\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (!entry?.isIntersecting) return;\n observer.disconnect();\n retarget(grow.current, 1, SWELL, paint);\n },\n { threshold: 0.3 },\n );\n observer.observe(node);\n return () => observer.disconnect();\n }, [empty, paint]);\n\n // The crosshair glides between points; the tooltip follows on a CSS transition and never leaves the plot.\n const shownBefore = useRef(false);\n useIsomorphicLayoutEffect(() => {\n const bubble = tip.current;\n const w = width.current;\n if (index === null || !bubble || !w) {\n shownBefore.current = false;\n return;\n }\n const share = last > 0 ? index / last : 0.5;\n const x = share * w;\n if (!shownBefore.current) {\n cursor.current.stop();\n cursor.current.value = share;\n paint();\n } else retarget(cursor.current, share, SNAPPY, paint);\n let y = hover?.y ?? null;\n const f = frame.current;\n if (y === null && f && activeKey) {\n const i = series.findIndex((line) => line.key === activeKey);\n const j = Math.round(share * (N - 1));\n if (i >= 0) y = f.toY((f.upper[i]![j]! + f.lower[i]![j]!) / 2);\n }\n const tw = bubble.offsetWidth;\n const th = bubble.offsetHeight;\n let left = x + GAP;\n if (left + tw > w) left = x - GAP - tw;\n if (!shownBefore.current) bubble.style.transition = \"none\";\n bubble.style.translate = `${clamp(left, 0, Math.max(0, w - tw))}px ${clamp((y ?? height / 2) - th / 2, 0, Math.max(0, height - th))}px`;\n if (!shownBefore.current) {\n void bubble.offsetWidth;\n bubble.style.transition = \"\";\n }\n shownBefore.current = true;\n });\n\n const onActive = useRef(onActiveChange);\n useIsomorphicLayoutEffect(() => {\n onActive.current = onActiveChange;\n });\n useEffect(() => {\n onActive.current?.(index, activeKey);\n }, [index, activeKey]);\n\n // The layer under the pointer, found in the frame that is on screen.\n const read = (clientX: number, clientY: number): Hover | null => {\n const rect = plot.current?.getBoundingClientRect();\n const f = frame.current;\n if (!rect?.width || empty) return null;\n const share = clamp((clientX - rect.left) / rect.width, 0, 1);\n const y = clientY - rect.top;\n const at = last > 0 ? Math.round(share * last) : 0;\n const j = Math.round(share * (N - 1));\n let key: string | null = null;\n if (f) {\n series.forEach((line, i) => {\n if (hidden.includes(line.key)) return;\n const top = f.toY(f.upper[i]![j]!);\n const bottom = f.toY(f.lower[i]![j]!);\n if (y >= top - 1 && y <= bottom + 1) key = line.key;\n });\n }\n return { index: at, key, y };\n };\n const onKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (empty) return;\n if (event.key === \"Escape\" && hover) {\n event.preventDefault();\n setHover(null);\n return;\n }\n const from = index ?? last;\n const keys = visible.map((line) => line.key);\n const at = activeKey ? keys.indexOf(activeKey) : -1;\n const page = Math.max(1, Math.round(data.length / 6));\n const moves: Record<string, () => Hover> = {\n ArrowLeft: () => ({ index: clamp(from - 1, 0, last), key: activeKey, y: null }),\n ArrowRight: () => ({ index: clamp(index === null ? last : from + 1, 0, last), key: activeKey, y: null }),\n PageDown: () => ({ index: clamp(from - page, 0, last), key: activeKey, y: null }),\n PageUp: () => ({ index: clamp(from + page, 0, last), key: activeKey, y: null }),\n Home: () => ({ index: 0, key: activeKey, y: null }),\n End: () => ({ index: last, key: activeKey, y: null }),\n ArrowUp: () => ({ index: from, key: keys[at < 0 ? keys.length - 1 : Math.min(keys.length - 1, at + 1)] ?? null, y: null }),\n ArrowDown: () => ({ index: from, key: keys[at < 0 ? 0 : Math.max(0, at - 1)] ?? null, y: null }),\n };\n const move = moves[event.key];\n if (!move) return;\n event.preventDefault();\n setHover(move());\n };\n\n const suffix = unit ? ` ${unit}` : \"\";\n const format = (value: number, line: StreamgraphSeries) => `${formatValue ? formatValue(value, line) : GROUPED.format(value)}${suffix}`;\n const reading = index === null ? null : data[index];\n const total = (datum: StreamgraphDatum) => visible.reduce((sum, line) => sum + Math.max(0, datum.values[line.key] ?? 0), 0);\n const activeLine = series.find((line) => line.key === activeKey);\n const announce = reading\n ? `${reading.label}. ${activeLine && activeKey ? `${activeLine.label} ${format(reading.values[activeKey] ?? 0, activeLine)}, ` : \"\"}${visible.length} layers, ${GROUPED.format(total(reading))}${suffix} in total`\n : \"\";\n const summary = empty\n ? `${label}. ${emptyLabel}.`\n : `${label}, ${data[0]!.label} to ${data[last]!.label}. ${visible.map((line) => `${line.label}, latest ${format(data[last]!.values[line.key] ?? 0, line)}`).join(\". \")}.`;\n const picks = axisPicks(data, plotWidth);\n\n return (\n <figure ref={refs} data-slot=\"streamgraph\" aria-label={label} className={cn(\"streamgraph box-border font-sans text-foreground\", className)}>\n {legend && series.length > 1 ? (\n <div role=\"group\" aria-label={`${label} layers`} onPointerLeave={() => setLegendKey(null)} className=\"-mx-2 flex min-w-0 flex-wrap gap-x-1 gap-y-0.5\">\n {series.map((line, at) => (\n <button\n key={line.key}\n type=\"button\"\n data-slot=\"streamgraph-toggle\"\n aria-pressed={!hidden.includes(line.key)}\n onClick={() => toggle(line.key)}\n onPointerEnter={(event) => {\n if (event.pointerType === \"mouse\") setLegendKey(line.key);\n }}\n onFocus={(event) => {\n if (event.currentTarget.matches(\":focus-visible\")) setLegendKey(line.key);\n }}\n onBlur={() => setLegendKey(null)}\n style={{ \"--series\": colorOf(line, at) } as CSSProperties}\n className=\"chart-legend-toggle\"\n >\n <span aria-hidden=\"true\" className=\"chart-layer-swatch\" />\n <span className=\"chart-toggle-label\">{line.label}</span>\n </button>\n ))}\n </div>\n ) : null}\n <div data-slot=\"streamgraph-chart\" data-scrubbing={index !== null || undefined} data-focus={activeKey ? \"\" : undefined} className=\"streamgraph-frame\">\n <div\n ref={plot}\n role=\"slider\"\n tabIndex={empty ? -1 : 0}\n aria-label={`${label}, explore by ${categoryLabel.toLowerCase()}`}\n aria-orientation=\"horizontal\"\n aria-valuemin={1}\n aria-valuemax={Math.max(1, data.length)}\n aria-valuenow={(index ?? last) + 1}\n aria-valuetext={reading ? announce : summary}\n className=\"line-chart-plot streamgraph-plot\"\n style={{ height }}\n onPointerMove={(event: PointerEvent<HTMLDivElement>) => {\n if (event.pointerType === \"mouse\" || event.buttons) setHover(read(event.clientX, event.clientY));\n }}\n onPointerDown={(event: PointerEvent<HTMLDivElement>) => {\n if (event.pointerType !== \"mouse\") event.currentTarget.setPointerCapture?.(event.pointerId);\n setHover(read(event.clientX, event.clientY));\n }}\n onPointerUp={(event) => {\n if (event.pointerType !== \"mouse\") setHover(null);\n }}\n onPointerCancel={() => setHover(null)}\n onPointerLeave={(event) => {\n if (event.pointerType === \"mouse\") setHover(null);\n }}\n onKeyDown={onKeyDown}\n onBlur={() => setHover(null)}\n onFocus={(event) => {\n if (event.currentTarget.matches(\":focus-visible\") && !empty) setHover((now) => now ?? { index: last, key: null, y: null });\n }}\n >\n <svg ref={svg} width=\"100%\" height={height} aria-hidden=\"true\" focusable=\"false\" className=\"block overflow-visible\">\n {series.map((line, at) => (\n <path\n key={line.key}\n data-layer={line.key}\n data-active={activeKey === line.key || undefined}\n className=\"streamgraph-layer\"\n style={{ \"--series\": colorOf(line, at) } as CSSProperties}\n />\n ))}\n <line data-part=\"crosshair\" className=\"line-chart-crosshair\" y1={0} y2={height} />\n {directLabels\n ? series.map((line) => (\n <text\n key={line.key}\n data-name={line.key}\n data-hidden={hidden.includes(line.key) || undefined}\n data-dim={(activeKey !== null && activeKey !== line.key) || undefined}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n className=\"streamgraph-name\"\n >\n {line.label}\n </text>\n ))\n : null}\n </svg>\n <div ref={tip} aria-hidden=\"true\" data-slot=\"streamgraph-tooltip\" className=\"line-chart-tooltip\">\n <p className=\"m-0 mb-0.5 whitespace-nowrap text-xs tabular-nums text-text-secondary\">{reading?.label ?? \"\"}</p>\n {stackOrder(series.length, offset)\n .reverse()\n .map((at) => series[at]!)\n .filter((line) => !hidden.includes(line.key))\n .map((line) => (\n <p\n key={line.key}\n data-active={activeKey === line.key || undefined}\n className=\"streamgraph-tip-row\"\n style={{ \"--series\": colorOf(line, series.indexOf(line)) } as CSSProperties}\n >\n <span className=\"chart-tip-swatch\" />\n <span className=\"streamgraph-tip-name\">{line.label}</span>\n <span className=\"ms-2 flex-none whitespace-nowrap font-medium tabular-nums text-foreground\">\n {reading ? format(reading.values[line.key] ?? 0, line) : \"\"}\n </span>\n </p>\n ))}\n </div>\n {empty || visible.length === 0 ? (\n <p className=\"pointer-events-none absolute inset-0 m-0 grid place-items-center text-sm text-muted-foreground motion-safe:animate-fade-in\">\n {empty ? emptyLabel : \"Choose a layer to show\"}\n </p>\n ) : null}\n </div>\n <div aria-hidden=\"true\" className=\"relative min-w-0 [grid-area:2/1]\">\n {picks.map((at) => {\n const share = last > 0 ? at / last : 0.5;\n return (\n <span\n key={data[at]!.key}\n className=\"absolute top-2 whitespace-nowrap text-xs leading-none tabular-nums text-muted-foreground motion-safe:animate-fade-in\"\n style={{ left: `${share * 100}%`, translate: `${-share * 100}% 0` }}\n >\n {data[at]!.axisLabel}\n </span>\n );\n })}\n </div>\n </div>\n <p className=\"sr-only\" aria-live=\"polite\" aria-atomic=\"true\">\n {announce}\n </p>\n <p className=\"sr-only\">{summary}</p>\n {empty ? null : (\n <div className=\"sr-only\">\n <table>\n <caption>{label}</caption>\n <thead>\n <tr>\n <th scope=\"col\">{categoryLabel}</th>\n {series.map((line) => (\n <th key={line.key} scope=\"col\">\n {line.label}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data.map((item) => (\n <tr key={item.key}>\n <th scope=\"row\">{item.label}</th>\n {series.map((line) => (\n <td key={line.key}>{format(item.values[line.key] ?? 0, line)}</td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )}\n </figure>\n );\n});\n"],"mappings":"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"}