@epilot/spark-ui 1.0.0-alpha.1 → 1.0.0-alpha.3

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 (549) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +2 -0
  3. package/README.md +7 -1
  4. package/dist/chunk-aJGBMT86.cjs +29 -0
  5. package/dist/components/accordion.cjs +57 -0
  6. package/dist/components/accordion.cjs.map +1 -0
  7. package/dist/components/accordion.d.cts +45 -0
  8. package/dist/components/accordion.d.ts +45 -0
  9. package/dist/components/accordion.js +51 -0
  10. package/dist/components/accordion.js.map +1 -0
  11. package/dist/components/alert-dialog.cjs +137 -0
  12. package/dist/components/alert-dialog.cjs.map +1 -0
  13. package/dist/components/alert-dialog.d.cts +63 -0
  14. package/dist/components/alert-dialog.d.ts +63 -0
  15. package/dist/components/alert-dialog.js +123 -0
  16. package/dist/components/alert-dialog.js.map +1 -0
  17. package/dist/components/attachment.cjs +119 -0
  18. package/dist/components/attachment.cjs.map +1 -0
  19. package/dist/components/attachment.d.cts +67 -0
  20. package/dist/components/attachment.d.ts +67 -0
  21. package/dist/components/attachment.js +108 -0
  22. package/dist/components/attachment.js.map +1 -0
  23. package/dist/components/badge.cjs +20 -0
  24. package/dist/components/badge.cjs.map +1 -0
  25. package/dist/components/badge.d.cts +12 -0
  26. package/dist/components/badge.d.ts +12 -0
  27. package/dist/components/badge.js +17 -0
  28. package/dist/components/badge.js.map +1 -0
  29. package/dist/components/bar-chart.cjs +519 -0
  30. package/dist/components/bar-chart.cjs.map +1 -0
  31. package/dist/components/bar-chart.d.cts +83 -0
  32. package/dist/components/bar-chart.d.ts +83 -0
  33. package/dist/components/bar-chart.js +517 -0
  34. package/dist/components/bar-chart.js.map +1 -0
  35. package/dist/components/battery-progress-row.cjs +140 -0
  36. package/dist/components/battery-progress-row.cjs.map +1 -0
  37. package/dist/components/battery-progress-row.d.cts +78 -0
  38. package/dist/components/battery-progress-row.d.ts +78 -0
  39. package/dist/components/battery-progress-row.js +129 -0
  40. package/dist/components/battery-progress-row.js.map +1 -0
  41. package/dist/components/breadcrumbs.cjs +65 -0
  42. package/dist/components/breadcrumbs.cjs.map +1 -0
  43. package/dist/components/breadcrumbs.d.cts +44 -0
  44. package/dist/components/breadcrumbs.d.ts +44 -0
  45. package/dist/components/breadcrumbs.js +58 -0
  46. package/dist/components/breadcrumbs.js.map +1 -0
  47. package/dist/components/bubble.cjs +84 -0
  48. package/dist/components/bubble.cjs.map +1 -0
  49. package/dist/components/bubble.d.cts +41 -0
  50. package/dist/components/bubble.d.ts +41 -0
  51. package/dist/components/bubble.js +78 -0
  52. package/dist/components/bubble.js.map +1 -0
  53. package/dist/components/button.cjs +54 -0
  54. package/dist/components/button.cjs.map +1 -0
  55. package/dist/components/button.d.cts +34 -0
  56. package/dist/components/button.d.ts +34 -0
  57. package/dist/components/button.js +50 -0
  58. package/dist/components/button.js.map +1 -0
  59. package/dist/components/calendar.cjs +58 -0
  60. package/dist/components/calendar.cjs.map +1 -0
  61. package/dist/components/calendar.d.cts +17 -0
  62. package/dist/components/calendar.d.ts +17 -0
  63. package/dist/components/calendar.js +55 -0
  64. package/dist/components/calendar.js.map +1 -0
  65. package/dist/components/callout.cjs +95 -0
  66. package/dist/components/callout.cjs.map +1 -0
  67. package/dist/components/callout.d.cts +39 -0
  68. package/dist/components/callout.d.ts +39 -0
  69. package/dist/components/callout.js +88 -0
  70. package/dist/components/callout.js.map +1 -0
  71. package/dist/components/card.cjs +86 -0
  72. package/dist/components/card.cjs.map +1 -0
  73. package/dist/components/card.d.cts +28 -0
  74. package/dist/components/card.d.ts +28 -0
  75. package/dist/components/card.js +76 -0
  76. package/dist/components/card.js.map +1 -0
  77. package/dist/components/chart.cjs +93 -0
  78. package/dist/components/chart.cjs.map +1 -0
  79. package/dist/components/chart.d.cts +83 -0
  80. package/dist/components/chart.d.ts +83 -0
  81. package/dist/components/chart.js +88 -0
  82. package/dist/components/chart.js.map +1 -0
  83. package/dist/components/checkbox.cjs +37 -0
  84. package/dist/components/checkbox.cjs.map +1 -0
  85. package/dist/components/checkbox.d.cts +22 -0
  86. package/dist/components/checkbox.d.ts +22 -0
  87. package/dist/components/checkbox.js +34 -0
  88. package/dist/components/checkbox.js.map +1 -0
  89. package/dist/components/circular-gauge.cjs +74 -0
  90. package/dist/components/circular-gauge.cjs.map +1 -0
  91. package/dist/components/circular-gauge.d.cts +38 -0
  92. package/dist/components/circular-gauge.d.ts +38 -0
  93. package/dist/components/circular-gauge.js +71 -0
  94. package/dist/components/circular-gauge.js.map +1 -0
  95. package/dist/components/day-of-week-picker.cjs +123 -0
  96. package/dist/components/day-of-week-picker.cjs.map +1 -0
  97. package/dist/components/day-of-week-picker.d.cts +39 -0
  98. package/dist/components/day-of-week-picker.d.ts +39 -0
  99. package/dist/components/day-of-week-picker.js +119 -0
  100. package/dist/components/day-of-week-picker.js.map +1 -0
  101. package/dist/components/device-card.cjs +118 -0
  102. package/dist/components/device-card.cjs.map +1 -0
  103. package/dist/components/device-card.d.cts +71 -0
  104. package/dist/components/device-card.d.ts +71 -0
  105. package/dist/components/device-card.js +104 -0
  106. package/dist/components/device-card.js.map +1 -0
  107. package/dist/components/dialog.cjs +115 -0
  108. package/dist/components/dialog.cjs.map +1 -0
  109. package/dist/components/dialog.d.cts +45 -0
  110. package/dist/components/dialog.d.ts +45 -0
  111. package/dist/components/dialog.js +103 -0
  112. package/dist/components/dialog.js.map +1 -0
  113. package/dist/components/donut-chart.cjs +71 -0
  114. package/dist/components/donut-chart.cjs.map +1 -0
  115. package/dist/components/donut-chart.d.cts +22 -0
  116. package/dist/components/donut-chart.d.ts +22 -0
  117. package/dist/components/donut-chart.js +69 -0
  118. package/dist/components/donut-chart.js.map +1 -0
  119. package/dist/components/drawer.cjs +95 -0
  120. package/dist/components/drawer.cjs.map +1 -0
  121. package/dist/components/drawer.d.cts +46 -0
  122. package/dist/components/drawer.d.ts +46 -0
  123. package/dist/components/drawer.js +83 -0
  124. package/dist/components/drawer.js.map +1 -0
  125. package/dist/components/dropdown-menu.cjs +165 -0
  126. package/dist/components/dropdown-menu.cjs.map +1 -0
  127. package/dist/components/dropdown-menu.d.cts +93 -0
  128. package/dist/components/dropdown-menu.d.ts +93 -0
  129. package/dist/components/dropdown-menu.js +148 -0
  130. package/dist/components/dropdown-menu.js.map +1 -0
  131. package/dist/components/empty-state.cjs +35 -0
  132. package/dist/components/empty-state.cjs.map +1 -0
  133. package/dist/components/empty-state.d.cts +22 -0
  134. package/dist/components/empty-state.d.ts +22 -0
  135. package/dist/components/empty-state.js +33 -0
  136. package/dist/components/empty-state.js.map +1 -0
  137. package/dist/components/energy-bar-chart.cjs +23 -0
  138. package/dist/components/energy-bar-chart.cjs.map +1 -0
  139. package/dist/components/energy-bar-chart.d.cts +43 -0
  140. package/dist/components/energy-bar-chart.d.ts +43 -0
  141. package/dist/components/energy-bar-chart.js +21 -0
  142. package/dist/components/energy-bar-chart.js.map +1 -0
  143. package/dist/components/energy-breakdown.cjs +81 -0
  144. package/dist/components/energy-breakdown.cjs.map +1 -0
  145. package/dist/components/energy-breakdown.d.cts +26 -0
  146. package/dist/components/energy-breakdown.d.ts +26 -0
  147. package/dist/components/energy-breakdown.js +79 -0
  148. package/dist/components/energy-breakdown.js.map +1 -0
  149. package/dist/components/energy-history-chart.cjs +56 -0
  150. package/dist/components/energy-history-chart.cjs.map +1 -0
  151. package/dist/components/energy-history-chart.d.cts +58 -0
  152. package/dist/components/energy-history-chart.d.ts +58 -0
  153. package/dist/components/energy-history-chart.js +54 -0
  154. package/dist/components/energy-history-chart.js.map +1 -0
  155. package/dist/components/feed-in-hero.cjs +56 -0
  156. package/dist/components/feed-in-hero.cjs.map +1 -0
  157. package/dist/components/feed-in-hero.d.cts +33 -0
  158. package/dist/components/feed-in-hero.d.ts +33 -0
  159. package/dist/components/feed-in-hero.js +51 -0
  160. package/dist/components/feed-in-hero.js.map +1 -0
  161. package/dist/components/field.cjs +257 -0
  162. package/dist/components/field.cjs.map +1 -0
  163. package/dist/components/field.d.cts +104 -0
  164. package/dist/components/field.d.ts +104 -0
  165. package/dist/components/field.js +243 -0
  166. package/dist/components/field.js.map +1 -0
  167. package/dist/components/icon.cjs +35 -0
  168. package/dist/components/icon.cjs.map +1 -0
  169. package/dist/components/icon.d.cts +27 -0
  170. package/dist/components/icon.d.ts +27 -0
  171. package/dist/components/icon.js +32 -0
  172. package/dist/components/icon.js.map +1 -0
  173. package/dist/components/info-block.cjs +75 -0
  174. package/dist/components/info-block.cjs.map +1 -0
  175. package/dist/components/info-block.d.cts +20 -0
  176. package/dist/components/info-block.d.ts +20 -0
  177. package/dist/components/info-block.js +65 -0
  178. package/dist/components/info-block.js.map +1 -0
  179. package/dist/components/input-group.cjs +164 -0
  180. package/dist/components/input-group.cjs.map +1 -0
  181. package/dist/components/input-group.d.cts +32 -0
  182. package/dist/components/input-group.d.ts +32 -0
  183. package/dist/components/input-group.js +158 -0
  184. package/dist/components/input-group.js.map +1 -0
  185. package/dist/components/input-otp.cjs +113 -0
  186. package/dist/components/input-otp.cjs.map +1 -0
  187. package/dist/components/input-otp.d.cts +22 -0
  188. package/dist/components/input-otp.d.ts +22 -0
  189. package/dist/components/input-otp.js +111 -0
  190. package/dist/components/input-otp.js.map +1 -0
  191. package/dist/components/input.cjs +112 -0
  192. package/dist/components/input.cjs.map +1 -0
  193. package/dist/components/input.d.cts +21 -0
  194. package/dist/components/input.d.ts +21 -0
  195. package/dist/components/input.js +109 -0
  196. package/dist/components/input.js.map +1 -0
  197. package/dist/components/label.cjs +18 -0
  198. package/dist/components/label.cjs.map +1 -0
  199. package/dist/components/label.d.cts +10 -0
  200. package/dist/components/label.d.ts +10 -0
  201. package/dist/components/label.js +15 -0
  202. package/dist/components/label.js.map +1 -0
  203. package/dist/components/layout.cjs +15 -0
  204. package/dist/components/layout.cjs.map +1 -0
  205. package/dist/components/layout.d.cts +12 -0
  206. package/dist/components/layout.d.ts +13 -0
  207. package/dist/components/layout.js +14 -0
  208. package/dist/components/layout.js.map +1 -0
  209. package/dist/components/line-chart.cjs +310 -0
  210. package/dist/components/line-chart.cjs.map +1 -0
  211. package/dist/components/line-chart.d.cts +71 -0
  212. package/dist/components/line-chart.d.ts +71 -0
  213. package/dist/components/line-chart.js +307 -0
  214. package/dist/components/line-chart.js.map +1 -0
  215. package/dist/components/list.cjs +132 -0
  216. package/dist/components/list.cjs.map +1 -0
  217. package/dist/components/list.d.cts +72 -0
  218. package/dist/components/list.d.ts +72 -0
  219. package/dist/components/list.js +122 -0
  220. package/dist/components/list.js.map +1 -0
  221. package/dist/components/marker.cjs +52 -0
  222. package/dist/components/marker.cjs.map +1 -0
  223. package/dist/components/marker.d.cts +29 -0
  224. package/dist/components/marker.d.ts +29 -0
  225. package/dist/components/marker.js +46 -0
  226. package/dist/components/marker.js.map +1 -0
  227. package/dist/components/message-scroller.cjs +73 -0
  228. package/dist/components/message-scroller.cjs.map +1 -0
  229. package/dist/components/message-scroller.d.cts +39 -0
  230. package/dist/components/message-scroller.d.ts +39 -0
  231. package/dist/components/message-scroller.js +62 -0
  232. package/dist/components/message-scroller.js.map +1 -0
  233. package/dist/components/message.cjs +60 -0
  234. package/dist/components/message.cjs.map +1 -0
  235. package/dist/components/message.d.cts +36 -0
  236. package/dist/components/message.d.ts +36 -0
  237. package/dist/components/message.js +52 -0
  238. package/dist/components/message.js.map +1 -0
  239. package/dist/components/metering-row.cjs +43 -0
  240. package/dist/components/metering-row.cjs.map +1 -0
  241. package/dist/components/metering-row.d.cts +32 -0
  242. package/dist/components/metering-row.d.ts +32 -0
  243. package/dist/components/metering-row.js +38 -0
  244. package/dist/components/metering-row.js.map +1 -0
  245. package/dist/components/money-saved-block.cjs +87 -0
  246. package/dist/components/money-saved-block.cjs.map +1 -0
  247. package/dist/components/money-saved-block.d.cts +57 -0
  248. package/dist/components/money-saved-block.d.ts +57 -0
  249. package/dist/components/money-saved-block.js +79 -0
  250. package/dist/components/money-saved-block.js.map +1 -0
  251. package/dist/components/number-flow.cjs +44 -0
  252. package/dist/components/number-flow.cjs.map +1 -0
  253. package/dist/components/number-flow.d.cts +4 -0
  254. package/dist/components/number-flow.d.ts +4 -0
  255. package/dist/components/number-flow.js +42 -0
  256. package/dist/components/number-flow.js.map +1 -0
  257. package/dist/components/on-off-button.cjs +36 -0
  258. package/dist/components/on-off-button.cjs.map +1 -0
  259. package/dist/components/on-off-button.d.cts +20 -0
  260. package/dist/components/on-off-button.d.ts +20 -0
  261. package/dist/components/on-off-button.js +34 -0
  262. package/dist/components/on-off-button.js.map +1 -0
  263. package/dist/components/onboarding-layout.cjs +68 -0
  264. package/dist/components/onboarding-layout.cjs.map +1 -0
  265. package/dist/components/onboarding-layout.d.cts +46 -0
  266. package/dist/components/onboarding-layout.d.ts +46 -0
  267. package/dist/components/onboarding-layout.js +60 -0
  268. package/dist/components/onboarding-layout.js.map +1 -0
  269. package/dist/components/page-header.cjs +50 -0
  270. package/dist/components/page-header.cjs.map +1 -0
  271. package/dist/components/page-header.d.cts +26 -0
  272. package/dist/components/page-header.d.ts +26 -0
  273. package/dist/components/page-header.js +44 -0
  274. package/dist/components/page-header.js.map +1 -0
  275. package/dist/components/page-spinner.cjs +19 -0
  276. package/dist/components/page-spinner.cjs.map +1 -0
  277. package/dist/components/page-spinner.d.cts +14 -0
  278. package/dist/components/page-spinner.d.ts +14 -0
  279. package/dist/components/page-spinner.js +17 -0
  280. package/dist/components/page-spinner.js.map +1 -0
  281. package/dist/components/period-tabs.cjs +79 -0
  282. package/dist/components/period-tabs.cjs.map +1 -0
  283. package/dist/components/period-tabs.d.cts +51 -0
  284. package/dist/components/period-tabs.d.ts +51 -0
  285. package/dist/components/period-tabs.js +73 -0
  286. package/dist/components/period-tabs.js.map +1 -0
  287. package/dist/components/popover.cjs +62 -0
  288. package/dist/components/popover.cjs.map +1 -0
  289. package/dist/components/popover.d.cts +29 -0
  290. package/dist/components/popover.d.ts +29 -0
  291. package/dist/components/popover.js +56 -0
  292. package/dist/components/popover.js.map +1 -0
  293. package/dist/components/power-history-chart.cjs +358 -0
  294. package/dist/components/power-history-chart.cjs.map +1 -0
  295. package/dist/components/power-history-chart.d.cts +54 -0
  296. package/dist/components/power-history-chart.d.ts +54 -0
  297. package/dist/components/power-history-chart.js +355 -0
  298. package/dist/components/power-history-chart.js.map +1 -0
  299. package/dist/components/power-history.cjs +115 -0
  300. package/dist/components/power-history.cjs.map +1 -0
  301. package/dist/components/power-history.d.cts +42 -0
  302. package/dist/components/power-history.d.ts +43 -0
  303. package/dist/components/power-history.js +114 -0
  304. package/dist/components/power-history.js.map +1 -0
  305. package/dist/components/power-network.cjs +530 -0
  306. package/dist/components/power-network.cjs.map +1 -0
  307. package/dist/components/power-network.d.cts +77 -0
  308. package/dist/components/power-network.d.ts +77 -0
  309. package/dist/components/power-network.js +523 -0
  310. package/dist/components/power-network.js.map +1 -0
  311. package/dist/components/progress.cjs +34 -0
  312. package/dist/components/progress.cjs.map +1 -0
  313. package/dist/components/progress.d.cts +17 -0
  314. package/dist/components/progress.d.ts +17 -0
  315. package/dist/components/progress.js +31 -0
  316. package/dist/components/progress.js.map +1 -0
  317. package/dist/components/radio-card-group.cjs +69 -0
  318. package/dist/components/radio-card-group.cjs.map +1 -0
  319. package/dist/components/radio-card-group.d.cts +21 -0
  320. package/dist/components/radio-card-group.d.ts +21 -0
  321. package/dist/components/radio-card-group.js +65 -0
  322. package/dist/components/radio-card-group.js.map +1 -0
  323. package/dist/components/radio.cjs +34 -0
  324. package/dist/components/radio.cjs.map +1 -0
  325. package/dist/components/radio.d.cts +21 -0
  326. package/dist/components/radio.d.ts +21 -0
  327. package/dist/components/radio.js +30 -0
  328. package/dist/components/radio.js.map +1 -0
  329. package/dist/components/reparent.cjs +55 -0
  330. package/dist/components/reparent.cjs.map +1 -0
  331. package/dist/components/reparent.d.cts +29 -0
  332. package/dist/components/reparent.d.ts +29 -0
  333. package/dist/components/reparent.js +49 -0
  334. package/dist/components/reparent.js.map +1 -0
  335. package/dist/components/sankey-chart.cjs +221 -0
  336. package/dist/components/sankey-chart.cjs.map +1 -0
  337. package/dist/components/sankey-chart.d.cts +58 -0
  338. package/dist/components/sankey-chart.d.ts +58 -0
  339. package/dist/components/sankey-chart.js +218 -0
  340. package/dist/components/sankey-chart.js.map +1 -0
  341. package/dist/components/schedule-editor.cjs +82 -0
  342. package/dist/components/schedule-editor.cjs.map +1 -0
  343. package/dist/components/schedule-editor.d.cts +25 -0
  344. package/dist/components/schedule-editor.d.ts +25 -0
  345. package/dist/components/schedule-editor.js +72 -0
  346. package/dist/components/schedule-editor.js.map +1 -0
  347. package/dist/components/schedule-list.cjs +110 -0
  348. package/dist/components/schedule-list.cjs.map +1 -0
  349. package/dist/components/schedule-list.d.cts +29 -0
  350. package/dist/components/schedule-list.d.ts +29 -0
  351. package/dist/components/schedule-list.js +99 -0
  352. package/dist/components/schedule-list.js.map +1 -0
  353. package/dist/components/scroll-area.cjs +53 -0
  354. package/dist/components/scroll-area.cjs.map +1 -0
  355. package/dist/components/scroll-area.d.cts +26 -0
  356. package/dist/components/scroll-area.d.ts +26 -0
  357. package/dist/components/scroll-area.js +44 -0
  358. package/dist/components/scroll-area.js.map +1 -0
  359. package/dist/components/select.cjs +136 -0
  360. package/dist/components/select.cjs.map +1 -0
  361. package/dist/components/select.d.cts +63 -0
  362. package/dist/components/select.d.ts +63 -0
  363. package/dist/components/select.js +124 -0
  364. package/dist/components/select.js.map +1 -0
  365. package/dist/components/separator.cjs +38 -0
  366. package/dist/components/separator.cjs.map +1 -0
  367. package/dist/components/separator.d.cts +13 -0
  368. package/dist/components/separator.d.ts +13 -0
  369. package/dist/components/separator.js +35 -0
  370. package/dist/components/separator.js.map +1 -0
  371. package/dist/components/series-legend.cjs +39 -0
  372. package/dist/components/series-legend.cjs.map +1 -0
  373. package/dist/components/series-legend.d.cts +31 -0
  374. package/dist/components/series-legend.d.ts +31 -0
  375. package/dist/components/series-legend.js +37 -0
  376. package/dist/components/series-legend.js.map +1 -0
  377. package/dist/components/sheet.cjs +102 -0
  378. package/dist/components/sheet.cjs.map +1 -0
  379. package/dist/components/sheet.d.cts +46 -0
  380. package/dist/components/sheet.d.ts +46 -0
  381. package/dist/components/sheet.js +90 -0
  382. package/dist/components/sheet.js.map +1 -0
  383. package/dist/components/skeleton.cjs +24 -0
  384. package/dist/components/skeleton.cjs.map +1 -0
  385. package/dist/components/skeleton.d.cts +24 -0
  386. package/dist/components/skeleton.d.ts +24 -0
  387. package/dist/components/skeleton.js +21 -0
  388. package/dist/components/skeleton.js.map +1 -0
  389. package/dist/components/slider.cjs +276 -0
  390. package/dist/components/slider.cjs.map +1 -0
  391. package/dist/components/slider.d.cts +150 -0
  392. package/dist/components/slider.d.ts +150 -0
  393. package/dist/components/slider.js +266 -0
  394. package/dist/components/slider.js.map +1 -0
  395. package/dist/components/smart-toggle-button.cjs +28 -0
  396. package/dist/components/smart-toggle-button.cjs.map +1 -0
  397. package/dist/components/smart-toggle-button.d.cts +18 -0
  398. package/dist/components/smart-toggle-button.d.ts +18 -0
  399. package/dist/components/smart-toggle-button.js +26 -0
  400. package/dist/components/smart-toggle-button.js.map +1 -0
  401. package/dist/components/solar-forecast-chart.cjs +105 -0
  402. package/dist/components/solar-forecast-chart.cjs.map +1 -0
  403. package/dist/components/solar-forecast-chart.d.cts +66 -0
  404. package/dist/components/solar-forecast-chart.d.ts +66 -0
  405. package/dist/components/solar-forecast-chart.js +99 -0
  406. package/dist/components/solar-forecast-chart.js.map +1 -0
  407. package/dist/components/sortable-list.cjs +69 -0
  408. package/dist/components/sortable-list.cjs.map +1 -0
  409. package/dist/components/sortable-list.d.cts +46 -0
  410. package/dist/components/sortable-list.d.ts +46 -0
  411. package/dist/components/sortable-list.js +67 -0
  412. package/dist/components/sortable-list.js.map +1 -0
  413. package/dist/components/spinner.cjs +42 -0
  414. package/dist/components/spinner.cjs.map +1 -0
  415. package/dist/components/spinner.d.cts +15 -0
  416. package/dist/components/spinner.d.ts +15 -0
  417. package/dist/components/spinner.js +39 -0
  418. package/dist/components/spinner.js.map +1 -0
  419. package/dist/components/stat-card.cjs +58 -0
  420. package/dist/components/stat-card.cjs.map +1 -0
  421. package/dist/components/stat-card.d.cts +36 -0
  422. package/dist/components/stat-card.d.ts +36 -0
  423. package/dist/components/stat-card.js +50 -0
  424. package/dist/components/stat-card.js.map +1 -0
  425. package/dist/components/stepper.cjs +79 -0
  426. package/dist/components/stepper.cjs.map +1 -0
  427. package/dist/components/stepper.d.cts +33 -0
  428. package/dist/components/stepper.d.ts +33 -0
  429. package/dist/components/stepper.js +76 -0
  430. package/dist/components/stepper.js.map +1 -0
  431. package/dist/components/switch.cjs +22 -0
  432. package/dist/components/switch.cjs.map +1 -0
  433. package/dist/components/switch.d.cts +28 -0
  434. package/dist/components/switch.d.ts +28 -0
  435. package/dist/components/switch.js +20 -0
  436. package/dist/components/switch.js.map +1 -0
  437. package/dist/components/tabs.cjs +175 -0
  438. package/dist/components/tabs.cjs.map +1 -0
  439. package/dist/components/tabs.d.cts +45 -0
  440. package/dist/components/tabs.d.ts +45 -0
  441. package/dist/components/tabs.js +167 -0
  442. package/dist/components/tabs.js.map +1 -0
  443. package/dist/components/theme.cjs +6 -0
  444. package/dist/components/theme.d.cts +38 -0
  445. package/dist/components/theme.d.ts +38 -0
  446. package/dist/components/theme.js +4 -0
  447. package/dist/components/thumbnail.cjs +54 -0
  448. package/dist/components/thumbnail.cjs.map +1 -0
  449. package/dist/components/thumbnail.d.cts +34 -0
  450. package/dist/components/thumbnail.d.ts +34 -0
  451. package/dist/components/thumbnail.js +51 -0
  452. package/dist/components/thumbnail.js.map +1 -0
  453. package/dist/components/time-picker.cjs +55 -0
  454. package/dist/components/time-picker.cjs.map +1 -0
  455. package/dist/components/time-picker.d.cts +41 -0
  456. package/dist/components/time-picker.d.ts +41 -0
  457. package/dist/components/time-picker.js +51 -0
  458. package/dist/components/time-picker.js.map +1 -0
  459. package/dist/components/toast.cjs +99 -0
  460. package/dist/components/toast.cjs.map +1 -0
  461. package/dist/components/toast.d.cts +18 -0
  462. package/dist/components/toast.d.ts +18 -0
  463. package/dist/components/toast.js +95 -0
  464. package/dist/components/toast.js.map +1 -0
  465. package/dist/components/tooltip.cjs +75 -0
  466. package/dist/components/tooltip.cjs.map +1 -0
  467. package/dist/components/tooltip.d.cts +47 -0
  468. package/dist/components/tooltip.d.ts +47 -0
  469. package/dist/components/tooltip.js +67 -0
  470. package/dist/components/tooltip.js.map +1 -0
  471. package/dist/components/typography.cjs +52 -0
  472. package/dist/components/typography.cjs.map +1 -0
  473. package/dist/components/typography.d.cts +32 -0
  474. package/dist/components/typography.d.ts +32 -0
  475. package/dist/components/typography.js +45 -0
  476. package/dist/components/typography.js.map +1 -0
  477. package/dist/hooks/use-container-width.cjs +22 -0
  478. package/dist/hooks/use-container-width.cjs.map +1 -0
  479. package/dist/hooks/use-container-width.d.cts +7 -0
  480. package/dist/hooks/use-container-width.d.ts +7 -0
  481. package/dist/hooks/use-container-width.js +20 -0
  482. package/dist/hooks/use-container-width.js.map +1 -0
  483. package/dist/icons/index.cjs +7 -0
  484. package/dist/icons/index.d.cts +4 -0
  485. package/dist/icons/index.d.ts +4 -0
  486. package/dist/icons/index.js +3 -0
  487. package/dist/icons/material-symbol.cjs +105 -0
  488. package/dist/icons/material-symbol.cjs.map +1 -0
  489. package/dist/icons/material-symbol.d.cts +23 -0
  490. package/dist/icons/material-symbol.d.ts +23 -0
  491. package/dist/icons/material-symbol.js +100 -0
  492. package/dist/icons/material-symbol.js.map +1 -0
  493. package/dist/input-box-variants-BMDdwvqg.cjs +40 -0
  494. package/dist/input-box-variants-BMDdwvqg.cjs.map +1 -0
  495. package/dist/input-box-variants-Dr1K7uYE.js +28 -0
  496. package/dist/input-box-variants-Dr1K7uYE.js.map +1 -0
  497. package/dist/number-flow-DMJouddg.d.cts +15 -0
  498. package/dist/number-flow-DSbucQ_K.d.ts +15 -0
  499. package/dist/styles/index.css +223 -0
  500. package/dist/styles/internal.css +5 -0
  501. package/dist/styles/material-symbol.css +22 -0
  502. package/dist/styles/spark-default.css +883 -0
  503. package/dist/styles/theme.css +542 -0
  504. package/dist/styles/utilities.css +557 -0
  505. package/dist/theme-B3WtiByA.js +574 -0
  506. package/dist/theme-B3WtiByA.js.map +1 -0
  507. package/dist/theme-C9_OSe0S.cjs +592 -0
  508. package/dist/theme-C9_OSe0S.cjs.map +1 -0
  509. package/dist/theme-types-DoROIXpi.d.ts +30 -0
  510. package/dist/theme-types-r20EJfEC.d.cts +30 -0
  511. package/dist/tones-DjgKOX3s.d.cts +8 -0
  512. package/dist/tones-DyCkL71h.d.ts +8 -0
  513. package/dist/utils/build-sankey-nodes.cjs +59 -0
  514. package/dist/utils/build-sankey-nodes.cjs.map +1 -0
  515. package/dist/utils/build-sankey-nodes.d.cts +27 -0
  516. package/dist/utils/build-sankey-nodes.d.ts +27 -0
  517. package/dist/utils/build-sankey-nodes.js +58 -0
  518. package/dist/utils/build-sankey-nodes.js.map +1 -0
  519. package/dist/utils/chars.cjs +18 -0
  520. package/dist/utils/chars.cjs.map +1 -0
  521. package/dist/utils/chars.d.cts +10 -0
  522. package/dist/utils/chars.d.ts +10 -0
  523. package/dist/utils/chars.js +14 -0
  524. package/dist/utils/chars.js.map +1 -0
  525. package/dist/utils/cn.cjs +10 -0
  526. package/dist/utils/cn.d.cts +4 -0
  527. package/dist/utils/cn.d.ts +4 -0
  528. package/dist/utils/cn.js +3 -0
  529. package/dist/utils/date-mask.cjs +45 -0
  530. package/dist/utils/date-mask.cjs.map +1 -0
  531. package/dist/utils/date-mask.d.cts +17 -0
  532. package/dist/utils/date-mask.d.ts +17 -0
  533. package/dist/utils/date-mask.js +41 -0
  534. package/dist/utils/date-mask.js.map +1 -0
  535. package/dist/utils/format.cjs +57 -0
  536. package/dist/utils/format.cjs.map +1 -0
  537. package/dist/utils/format.d.cts +23 -0
  538. package/dist/utils/format.d.ts +23 -0
  539. package/dist/utils/format.js +47 -0
  540. package/dist/utils/format.js.map +1 -0
  541. package/package.json +79 -49
  542. package/dist/index.cjs +0 -303
  543. package/dist/index.cjs.map +0 -1
  544. package/dist/index.css +0 -1
  545. package/dist/index.d.cts +0 -75
  546. package/dist/index.d.ts +0 -75
  547. package/dist/index.js +0 -255
  548. package/dist/index.js.map +0 -1
  549. package/dist/styles.js +0 -1
@@ -0,0 +1,28 @@
1
+ "use client";
2
+
3
+ import { n as SparkCardColor, r as SparkCardVariant } from "../theme-types-DoROIXpi.js";
4
+ import * as React$1 from "react";
5
+
6
+ //#region src/components/card.d.ts
7
+ interface CardProps extends React$1.HTMLAttributes<HTMLDivElement> {
8
+ /**
9
+ * Container chrome scoped to this card — NOT the ambient `data-style` knob
10
+ * (that drives controls and would cascade into the card's content). Unset →
11
+ * follows the app-level `[data-card-variant]` knob (default soft-neutral).
12
+ * (`solid` is hidden for now — see `SparkCardVariant`.)
13
+ */
14
+ variant?: SparkCardVariant;
15
+ /** Chrome palette. `neutral` (default) tracks the app neutral; `accent` tints with the brand accent. */
16
+ color?: SparkCardColor;
17
+ }
18
+ declare const Card: React$1.ForwardRefExoticComponent<CardProps & React$1.RefAttributes<HTMLDivElement>>;
19
+ declare const CardHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
20
+ declare const CardIcon: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
21
+ declare const CardTitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLHeadingElement> & React$1.RefAttributes<HTMLHeadingElement>>;
22
+ declare const CardDescription: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
23
+ declare const CardContent: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
24
+ declare const CardFooter: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
25
+ declare const CardSkeleton: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
26
+ //#endregion
27
+ export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardIcon, type CardProps, CardSkeleton, CardTitle };
28
+ //# sourceMappingURL=card.d.ts.map
@@ -0,0 +1,76 @@
1
+ "use client";
2
+ import { cn } from "../utils/cn.js";
3
+ import * as React$1 from "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { cva } from "class-variance-authority";
6
+ //#region src/components/card.tsx
7
+ const cardVariants = cva("relative flex w-full flex-col gap-1 rounded-2xl py-3", {
8
+ variants: { variant: {
9
+ ambient: "border-[length:var(--spark-card-border-width,0px)] border-[color:var(--spark-card-border,transparent)] bg-(--spark-card-bg,var(--neutral-a3)) px-[var(--spark-card-px,1rem)]",
10
+ soft: "bg-(--spark-card-c-soft,var(--neutral-a3)) px-4",
11
+ surface: "border border-[color:var(--spark-card-c-border,var(--neutral-a6))] bg-(--spark-card-c-surface,var(--neutral-2)) px-4",
12
+ outline: "border border-[color:var(--spark-card-c-border,var(--neutral-a6))] px-4",
13
+ ghost: "",
14
+ solid: "bg-(--spark-card-c-solid,var(--neutral-9)) px-4 [--spark-card-fg-muted:var(--spark-card-c-contrast,var(--neutral-contrast))] [--spark-card-fg:var(--spark-card-c-contrast,var(--neutral-contrast))] [--spark-card-icon:var(--spark-card-c-contrast,var(--neutral-contrast))]"
15
+ } },
16
+ defaultVariants: { variant: "ambient" }
17
+ });
18
+ const Card = React$1.forwardRef(({ className, variant, color, ...props }, ref) => /* @__PURE__ */ jsx("div", {
19
+ className: cn(cardVariants({ variant }), className),
20
+ "data-slot": "card",
21
+ "data-variant": variant,
22
+ "data-card-color": color === "accent" ? "accent" : void 0,
23
+ ref,
24
+ ...props
25
+ }));
26
+ Card.displayName = "Card";
27
+ const CardHeader = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", {
28
+ className: cn("flex items-center gap-4", className),
29
+ ref,
30
+ ...props
31
+ }));
32
+ CardHeader.displayName = "CardHeader";
33
+ const CardIcon = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", {
34
+ className: cn("flex shrink-0 items-center justify-center text-(--spark-card-icon,var(--spark-a11))", className),
35
+ ref,
36
+ ...props
37
+ }));
38
+ CardIcon.displayName = "CardIcon";
39
+ const CardTitle = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("h3", {
40
+ className: cn("text-base leading-5 font-medium text-(--spark-card-fg,var(--neutral-a12))", className),
41
+ ref,
42
+ ...props
43
+ }));
44
+ CardTitle.displayName = "CardTitle";
45
+ const CardDescription = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("p", {
46
+ className: cn("text-sm leading-5 text-(--spark-card-fg-muted,var(--neutral-a11))", className),
47
+ ref,
48
+ ...props
49
+ }));
50
+ CardDescription.displayName = "CardDescription";
51
+ const CardContent = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", {
52
+ className: cn("", className),
53
+ ref,
54
+ ...props
55
+ }));
56
+ CardContent.displayName = "CardContent";
57
+ const CardFooter = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", {
58
+ className: cn("flex items-center justify-end gap-2 pt-2 text-(--spark-card-fg,var(--neutral-a12))", className),
59
+ ref,
60
+ ...props
61
+ }));
62
+ CardFooter.displayName = "CardFooter";
63
+ const CardSkeleton = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs("div", {
64
+ className: cn("relative flex w-full items-center gap-4 rounded-2xl bg-spark-a3 p-4 opacity-80", className),
65
+ ref,
66
+ ...props,
67
+ children: [/* @__PURE__ */ jsx("div", { className: "size-10 shrink-0 animate-pulse rounded-full bg-base-gray-soft motion-reduce:animate-none" }), /* @__PURE__ */ jsxs("div", {
68
+ className: "flex flex-1 flex-col gap-y-2",
69
+ children: [/* @__PURE__ */ jsx("div", { className: "h-5 w-1/3 max-w-32 animate-pulse rounded-md bg-base-gray-soft motion-reduce:animate-none" }), /* @__PURE__ */ jsx("div", { className: "h-4 w-1/2 max-w-48 animate-pulse rounded-md bg-base-gray-soft motion-reduce:animate-none" })]
70
+ })]
71
+ }));
72
+ CardSkeleton.displayName = "CardSkeleton";
73
+ //#endregion
74
+ export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardIcon, CardSkeleton, CardTitle };
75
+
76
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.js","names":["React"],"sources":["../../src/components/card.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority'\nimport * as React from 'react'\nimport type { SparkCardColor, SparkCardVariant } from '../lib/theme-types'\nimport { cn } from '../utils/cn'\n\nconst cardVariants = cva(\n // Layout + constant VERTICAL padding + radius (rounded-2xl tracks the [data-radius]\n // knob). Chrome (bg/border) and HORIZONTAL padding live per-variant so `ghost` sits\n // flush. Container chrome ONLY (contract §11): reads/sets --spark-card-* — never\n // data-style or the --spark-* scale — so styling/colouring a card never repaints the\n // controls inside it.\n 'relative flex w-full flex-col gap-1 rounded-2xl py-3',\n {\n variants: {\n variant: {\n // Prop unset → follow the app-level [data-card-variant] knob; fallbacks == today's look.\n ambient:\n 'border-[length:var(--spark-card-border-width,0px)] border-[color:var(--spark-card-border,transparent)] bg-(--spark-card-bg,var(--neutral-a3)) px-[var(--spark-card-px,1rem)]',\n soft: 'bg-(--spark-card-c-soft,var(--neutral-a3)) px-4',\n surface:\n 'border border-[color:var(--spark-card-c-border,var(--neutral-a6))] bg-(--spark-card-c-surface,var(--neutral-2)) px-4',\n outline:\n 'border border-[color:var(--spark-card-c-border,var(--neutral-a6))] px-4',\n // no horizontal inset (no chrome to pad against); py-3 keeps the vertical rhythm.\n ghost: '',\n // HIDDEN: `SparkCardVariant` excludes `solid` for now (content-contrast TBD).\n // Recipe kept so re-enabling is only widening the type back to SparkStyle.\n solid:\n 'bg-(--spark-card-c-solid,var(--neutral-9)) px-4 [--spark-card-fg-muted:var(--spark-card-c-contrast,var(--neutral-contrast))] [--spark-card-fg:var(--spark-card-c-contrast,var(--neutral-contrast))] [--spark-card-icon:var(--spark-card-c-contrast,var(--neutral-contrast))]',\n },\n },\n defaultVariants: {\n variant: 'ambient',\n },\n },\n)\n\ninterface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n /**\n * Container chrome scoped to this card — NOT the ambient `data-style` knob\n * (that drives controls and would cascade into the card's content). Unset →\n * follows the app-level `[data-card-variant]` knob (default soft-neutral).\n * (`solid` is hidden for now — see `SparkCardVariant`.)\n */\n variant?: SparkCardVariant\n /** Chrome palette. `neutral` (default) tracks the app neutral; `accent` tints with the brand accent. */\n color?: SparkCardColor\n}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, color, ...props }, ref) => (\n <div\n className={cn(cardVariants({ variant }), className)}\n data-slot=\"card\"\n data-variant={variant}\n data-card-color={color === 'accent' ? 'accent' : undefined}\n ref={ref}\n {...props}\n />\n ),\n)\n\nCard.displayName = 'Card'\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn('flex items-center gap-4', className)}\n ref={ref}\n {...props}\n />\n))\n\nCardHeader.displayName = 'CardHeader'\n\nconst CardIcon = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\n 'flex shrink-0 items-center justify-center text-(--spark-card-icon,var(--spark-a11))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardIcon.displayName = 'CardIcon'\n\nconst CardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n className={cn(\n 'text-base leading-5 font-medium text-(--spark-card-fg,var(--neutral-a12))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardTitle.displayName = 'CardTitle'\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n className={cn(\n 'text-sm leading-5 text-(--spark-card-fg-muted,var(--neutral-a11))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardDescription.displayName = 'CardDescription'\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div className={cn('', className)} ref={ref} {...props} />\n))\n\nCardContent.displayName = 'CardContent'\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\n 'flex items-center justify-end gap-2 pt-2 text-(--spark-card-fg,var(--neutral-a12))',\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nCardFooter.displayName = 'CardFooter'\n\nconst CardSkeleton = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\n 'relative flex w-full items-center gap-4 rounded-2xl bg-spark-a3 p-4 opacity-80',\n className,\n )}\n ref={ref}\n {...props}\n >\n <div className=\"size-10 shrink-0 animate-pulse rounded-full bg-base-gray-soft motion-reduce:animate-none\" />\n <div className=\"flex flex-1 flex-col gap-y-2\">\n <div className=\"h-5 w-1/3 max-w-32 animate-pulse rounded-md bg-base-gray-soft motion-reduce:animate-none\" />\n <div className=\"h-4 w-1/2 max-w-48 animate-pulse rounded-md bg-base-gray-soft motion-reduce:animate-none\" />\n </div>\n </div>\n))\n\nCardSkeleton.displayName = 'CardSkeleton'\n\nexport {\n Card,\n CardContent,\n CardDescription,\n CardFooter,\n CardHeader,\n CardIcon,\n CardSkeleton,\n CardTitle,\n}\nexport type { CardProps }\n"],"mappings":";;;;;;AAKA,MAAM,eAAe,IAMnB,wDACA;CACE,UAAU,EACR,SAAS;EAEP,SACE;EACF,MAAM;EACN,SACE;EACF,SACE;EAEF,OAAO;EAGP,OACE;EACH,EACF;CACD,iBAAiB,EACf,SAAS,WACV;CACF,CACF;AAcD,MAAM,OAAOA,QAAM,YAChB,EAAE,WAAW,SAAS,OAAO,GAAG,SAAS,QACxC,oBAAC,OAAD;CACE,WAAW,GAAG,aAAa,EAAE,SAAS,CAAC,EAAE,UAAU;CACnD,aAAU;CACV,gBAAc;CACd,mBAAiB,UAAU,WAAW,WAAW,KAAA;CAC5C;CACL,GAAI;CACJ,CAAA,CAEL;AAED,KAAK,cAAc;AAEnB,MAAM,aAAaA,QAAM,YAGtB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,OAAD;CACE,WAAW,GAAG,2BAA2B,UAAU;CAC9C;CACL,GAAI;CACJ,CAAA,CACF;AAEF,WAAW,cAAc;AAEzB,MAAM,WAAWA,QAAM,YAGpB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,OAAD;CACE,WAAW,GACT,uFACA,UACD;CACI;CACL,GAAI;CACJ,CAAA,CACF;AAEF,SAAS,cAAc;AAEvB,MAAM,YAAYA,QAAM,YAGrB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,MAAD;CACE,WAAW,GACT,6EACA,UACD;CACI;CACL,GAAI;CACJ,CAAA,CACF;AAEF,UAAU,cAAc;AAExB,MAAM,kBAAkBA,QAAM,YAG3B,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,KAAD;CACE,WAAW,GACT,qEACA,UACD;CACI;CACL,GAAI;CACJ,CAAA,CACF;AAEF,gBAAgB,cAAc;AAE9B,MAAM,cAAcA,QAAM,YAGvB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,OAAD;CAAK,WAAW,GAAG,IAAI,UAAU;CAAO;CAAK,GAAI;CAAS,CAAA,CAC1D;AAEF,YAAY,cAAc;AAE1B,MAAM,aAAaA,QAAM,YAGtB,EAAE,WAAW,GAAG,SAAS,QAC1B,oBAAC,OAAD;CACE,WAAW,GACT,sFACA,UACD;CACI;CACL,GAAI;CACJ,CAAA,CACF;AAEF,WAAW,cAAc;AAEzB,MAAM,eAAeA,QAAM,YAGxB,EAAE,WAAW,GAAG,SAAS,QAC1B,qBAAC,OAAD;CACE,WAAW,GACT,kFACA,UACD;CACI;CACL,GAAI;WANN,CAQE,oBAAC,OAAD,EAAK,WAAU,4FAA6F,CAAA,EAC5G,qBAAC,OAAD;EAAK,WAAU;YAAf,CACE,oBAAC,OAAD,EAAK,WAAU,4FAA6F,CAAA,EAC5G,oBAAC,OAAD,EAAK,WAAU,4FAA6F,CAAA,CACxG;IACF;GACN;AAEF,aAAa,cAAc"}
@@ -0,0 +1,93 @@
1
+ "use client";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const require_chunk = require("../chunk-aJGBMT86.cjs");
4
+ let react = require("react");
5
+ react = require_chunk.__toESM(react);
6
+ let react_jsx_runtime = require("react/jsx-runtime");
7
+ let cnfast = require("cnfast");
8
+ //#region src/components/chart.tsx
9
+ /**
10
+ * Tracks an element's rendered size via ResizeObserver. The element must stay
11
+ * mounted (e.g. an always-rendered, possibly-hidden tooltip wrapper) so the ref
12
+ * is attached when the observer is set up.
13
+ */
14
+ function useMeasuredSize() {
15
+ const ref = (0, react.useRef)(null);
16
+ const [size, setSize] = (0, react.useState)({
17
+ width: 0,
18
+ height: 0
19
+ });
20
+ (0, react.useEffect)(() => {
21
+ const element = ref.current;
22
+ if (!element) return;
23
+ const resizeObserver = new ResizeObserver((entries) => {
24
+ const entry = entries[0];
25
+ if (!entry) return;
26
+ setSize({
27
+ width: entry.contentRect.width,
28
+ height: entry.contentRect.height
29
+ });
30
+ });
31
+ resizeObserver.observe(element);
32
+ return () => resizeObserver.disconnect();
33
+ }, []);
34
+ return [ref, size];
35
+ }
36
+ /**
37
+ * Positions a tooltip relative to an anchor while keeping it fully inside the
38
+ * chart: clamped on every edge, flipped above/below or left/right as needed.
39
+ */
40
+ function clampTooltipPosition({ anchorX, anchorY, width, height, tipWidth, tipHeight, gap = 12, pad = 8, placement = "above" }) {
41
+ const maxLeft = Math.max(pad, width - tipWidth - pad);
42
+ const maxTop = Math.max(pad, height - tipHeight - pad);
43
+ if (placement === "beside") {
44
+ const right = anchorX + gap;
45
+ const left = right + tipWidth + pad <= width ? right : anchorX - gap - tipWidth;
46
+ return {
47
+ left: Math.min(Math.max(left, pad), maxLeft),
48
+ top: Math.min(Math.max(anchorY, pad), maxTop)
49
+ };
50
+ }
51
+ const above = anchorY - gap - tipHeight;
52
+ const desiredTop = above >= pad ? above : anchorY + gap;
53
+ return {
54
+ left: Math.min(Math.max(anchorX - tipWidth / 2, pad), maxLeft),
55
+ top: Math.min(Math.max(desiredTop, pad), maxTop)
56
+ };
57
+ }
58
+ /**
59
+ * Card-style multi-series tooltip body: an optional header plus one
60
+ * coloured-dot row per series. Rendered inside `@visx/tooltip` by the chart
61
+ * components so every chart shares the same tooltip look.
62
+ */
63
+ function ChartTooltipCard({ label, rows, className }) {
64
+ if (rows.length === 0) return null;
65
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
66
+ className: (0, cnfast.cn)("grid min-w-40 gap-1.5 rounded-lg border border-slate-a6 bg-slate-1 px-3 py-2 text-xs shadow-lg shadow-gray-a3", className),
67
+ children: [label !== void 0 && label !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
68
+ className: "font-medium text-gray",
69
+ children: label
70
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
71
+ className: "grid gap-1.5",
72
+ children: rows.map((row) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
73
+ className: "flex items-center justify-between gap-4",
74
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
75
+ className: "flex items-center gap-1.5 text-gray-light",
76
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
77
+ className: "size-2 shrink-0 rounded-[2px]",
78
+ style: { backgroundColor: row.color }
79
+ }), row.label]
80
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
81
+ className: "font-medium whitespace-nowrap text-gray tabular-nums",
82
+ children: row.value
83
+ })]
84
+ }, row.key))
85
+ })]
86
+ });
87
+ }
88
+ //#endregion
89
+ exports.ChartTooltipCard = ChartTooltipCard;
90
+ exports.clampTooltipPosition = clampTooltipPosition;
91
+ exports.useMeasuredSize = useMeasuredSize;
92
+
93
+ //# sourceMappingURL=chart.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart.cjs","names":[],"sources":["../../src/components/chart.tsx"],"sourcesContent":["import * as React from 'react'\nimport { useEffect, useRef, useState } from 'react'\nimport { cn } from '../utils/cn'\n\nexport type ChartConfig = Record<\n string,\n {\n label?: React.ReactNode\n color?: string\n }\n>\n\nexport interface ChartTooltipRow {\n key: string\n label: React.ReactNode\n /** CSS color value for the legend dot (e.g. `var(--orange-a9)`). */\n color: string\n value: React.ReactNode\n}\n\nexport interface ChartTooltipCardProps {\n label?: React.ReactNode\n rows: ChartTooltipRow[]\n className?: string\n}\n\n/**\n * Tracks an element's rendered size via ResizeObserver. The element must stay\n * mounted (e.g. an always-rendered, possibly-hidden tooltip wrapper) so the ref\n * is attached when the observer is set up.\n */\nexport function useMeasuredSize<T extends HTMLElement>() {\n const ref = useRef<T>(null)\n const [size, setSize] = useState({ width: 0, height: 0 })\n\n useEffect(() => {\n const element = ref.current\n if (!element) return\n\n const resizeObserver = new ResizeObserver((entries) => {\n const entry = entries[0]\n if (!entry) return\n setSize({\n width: entry.contentRect.width,\n height: entry.contentRect.height,\n })\n })\n\n resizeObserver.observe(element)\n return () => resizeObserver.disconnect()\n }, [])\n\n return [ref, size] as const\n}\n\ninterface ClampTooltipArgs {\n /** Anchor point (chart-local px) the tooltip should sit at, horizontally centred. */\n anchorX: number\n anchorY: number\n /** Chart bounds (px). */\n width: number\n height: number\n /** Measured tooltip size (px). */\n tipWidth: number\n tipHeight: number\n /** Gap between the anchor and the tooltip. */\n gap?: number\n /** Minimum distance kept from every chart edge. */\n pad?: number\n /**\n * `above` (default): centred above the anchor, flipped below if it would clip\n * the top — good for bars. `beside`: offset to the side of the anchor so it\n * never sits on top of the hovered point/line — good for line/area charts.\n */\n placement?: 'above' | 'beside'\n}\n\n/**\n * Positions a tooltip relative to an anchor while keeping it fully inside the\n * chart: clamped on every edge, flipped above/below or left/right as needed.\n */\nexport function clampTooltipPosition({\n anchorX,\n anchorY,\n width,\n height,\n tipWidth,\n tipHeight,\n gap = 12,\n pad = 8,\n placement = 'above',\n}: ClampTooltipArgs): { left: number; top: number } {\n const maxLeft = Math.max(pad, width - tipWidth - pad)\n const maxTop = Math.max(pad, height - tipHeight - pad)\n\n if (placement === 'beside') {\n // Prefer the right of the anchor; flip to the left if it would overflow.\n const right = anchorX + gap\n const left =\n right + tipWidth + pad <= width ? right : anchorX - gap - tipWidth\n return {\n left: Math.min(Math.max(left, pad), maxLeft),\n top: Math.min(Math.max(anchorY, pad), maxTop),\n }\n }\n\n const above = anchorY - gap - tipHeight\n const desiredTop = above >= pad ? above : anchorY + gap\n return {\n left: Math.min(Math.max(anchorX - tipWidth / 2, pad), maxLeft),\n top: Math.min(Math.max(desiredTop, pad), maxTop),\n }\n}\n\n/**\n * Card-style multi-series tooltip body: an optional header plus one\n * coloured-dot row per series. Rendered inside `@visx/tooltip` by the chart\n * components so every chart shares the same tooltip look.\n */\nexport function ChartTooltipCard({\n label,\n rows,\n className,\n}: ChartTooltipCardProps) {\n if (rows.length === 0) return null\n\n return (\n <div\n className={cn(\n 'grid min-w-40 gap-1.5 rounded-lg border border-slate-a6 bg-slate-1 px-3 py-2 text-xs shadow-lg shadow-gray-a3',\n className,\n )}\n >\n {label !== undefined && label !== null && (\n <div className=\"font-medium text-gray\">{label}</div>\n )}\n <div className=\"grid gap-1.5\">\n {rows.map((row) => (\n <div\n key={row.key}\n className=\"flex items-center justify-between gap-4\"\n >\n <span className=\"flex items-center gap-1.5 text-gray-light\">\n <span\n className=\"size-2 shrink-0 rounded-[2px]\"\n style={{ backgroundColor: row.color }}\n />\n {row.label}\n </span>\n <span className=\"font-medium whitespace-nowrap text-gray tabular-nums\">\n {row.value}\n </span>\n </div>\n ))}\n </div>\n </div>\n )\n}\n"],"mappings":";;;;;;;;;;;;;AA+BA,SAAgB,kBAAyC;CACvD,MAAM,OAAA,GAAA,MAAA,QAAgB,KAAK;CAC3B,MAAM,CAAC,MAAM,YAAA,GAAA,MAAA,UAAoB;EAAE,OAAO;EAAG,QAAQ;EAAG,CAAC;AAEzD,EAAA,GAAA,MAAA,iBAAgB;EACd,MAAM,UAAU,IAAI;AACpB,MAAI,CAAC,QAAS;EAEd,MAAM,iBAAiB,IAAI,gBAAgB,YAAY;GACrD,MAAM,QAAQ,QAAQ;AACtB,OAAI,CAAC,MAAO;AACZ,WAAQ;IACN,OAAO,MAAM,YAAY;IACzB,QAAQ,MAAM,YAAY;IAC3B,CAAC;IACF;AAEF,iBAAe,QAAQ,QAAQ;AAC/B,eAAa,eAAe,YAAY;IACvC,EAAE,CAAC;AAEN,QAAO,CAAC,KAAK,KAAK;;;;;;AA6BpB,SAAgB,qBAAqB,EACnC,SACA,SACA,OACA,QACA,UACA,WACA,MAAM,IACN,MAAM,GACN,YAAY,WACsC;CAClD,MAAM,UAAU,KAAK,IAAI,KAAK,QAAQ,WAAW,IAAI;CACrD,MAAM,SAAS,KAAK,IAAI,KAAK,SAAS,YAAY,IAAI;AAEtD,KAAI,cAAc,UAAU;EAE1B,MAAM,QAAQ,UAAU;EACxB,MAAM,OACJ,QAAQ,WAAW,OAAO,QAAQ,QAAQ,UAAU,MAAM;AAC5D,SAAO;GACL,MAAM,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,EAAE,QAAQ;GAC5C,KAAK,KAAK,IAAI,KAAK,IAAI,SAAS,IAAI,EAAE,OAAO;GAC9C;;CAGH,MAAM,QAAQ,UAAU,MAAM;CAC9B,MAAM,aAAa,SAAS,MAAM,QAAQ,UAAU;AACpD,QAAO;EACL,MAAM,KAAK,IAAI,KAAK,IAAI,UAAU,WAAW,GAAG,IAAI,EAAE,QAAQ;EAC9D,KAAK,KAAK,IAAI,KAAK,IAAI,YAAY,IAAI,EAAE,OAAO;EACjD;;;;;;;AAQH,SAAgB,iBAAiB,EAC/B,OACA,MACA,aACwB;AACxB,KAAI,KAAK,WAAW,EAAG,QAAO;AAE9B,QACE,iBAAA,GAAA,kBAAA,MAAC,OAAD;EACE,YAAA,GAAA,OAAA,IACE,iHACA,UACD;YAJH,CAMG,UAAU,KAAA,KAAa,UAAU,QAChC,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aAAyB;GAAY,CAAA,EAEtD,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAU;aACZ,KAAK,KAAK,QACT,iBAAA,GAAA,kBAAA,MAAC,OAAD;IAEE,WAAU;cAFZ,CAIE,iBAAA,GAAA,kBAAA,MAAC,QAAD;KAAM,WAAU;eAAhB,CACE,iBAAA,GAAA,kBAAA,KAAC,QAAD;MACE,WAAU;MACV,OAAO,EAAE,iBAAiB,IAAI,OAAO;MACrC,CAAA,EACD,IAAI,MACA;QACP,iBAAA,GAAA,kBAAA,KAAC,QAAD;KAAM,WAAU;eACb,IAAI;KACA,CAAA,CACH;MAbC,IAAI,IAaL,CACN;GACE,CAAA,CACF"}
@@ -0,0 +1,83 @@
1
+ "use client";
2
+
3
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
4
+ import * as React$1 from "react";
5
+
6
+ //#region src/components/chart.d.ts
7
+ type ChartConfig = Record<string, {
8
+ label?: React$1.ReactNode;
9
+ color?: string;
10
+ }>;
11
+ interface ChartTooltipRow {
12
+ key: string;
13
+ label: React$1.ReactNode;
14
+ /** CSS color value for the legend dot (e.g. `var(--orange-a9)`). */
15
+ color: string;
16
+ value: React$1.ReactNode;
17
+ }
18
+ interface ChartTooltipCardProps {
19
+ label?: React$1.ReactNode;
20
+ rows: ChartTooltipRow[];
21
+ className?: string;
22
+ }
23
+ /**
24
+ * Tracks an element's rendered size via ResizeObserver. The element must stay
25
+ * mounted (e.g. an always-rendered, possibly-hidden tooltip wrapper) so the ref
26
+ * is attached when the observer is set up.
27
+ */
28
+ declare function useMeasuredSize<T extends HTMLElement>(): readonly [React$1.RefObject<T | null>, {
29
+ width: number;
30
+ height: number;
31
+ }];
32
+ interface ClampTooltipArgs {
33
+ /** Anchor point (chart-local px) the tooltip should sit at, horizontally centred. */
34
+ anchorX: number;
35
+ anchorY: number;
36
+ /** Chart bounds (px). */
37
+ width: number;
38
+ height: number;
39
+ /** Measured tooltip size (px). */
40
+ tipWidth: number;
41
+ tipHeight: number;
42
+ /** Gap between the anchor and the tooltip. */
43
+ gap?: number;
44
+ /** Minimum distance kept from every chart edge. */
45
+ pad?: number;
46
+ /**
47
+ * `above` (default): centred above the anchor, flipped below if it would clip
48
+ * the top — good for bars. `beside`: offset to the side of the anchor so it
49
+ * never sits on top of the hovered point/line — good for line/area charts.
50
+ */
51
+ placement?: 'above' | 'beside';
52
+ }
53
+ /**
54
+ * Positions a tooltip relative to an anchor while keeping it fully inside the
55
+ * chart: clamped on every edge, flipped above/below or left/right as needed.
56
+ */
57
+ declare function clampTooltipPosition({
58
+ anchorX,
59
+ anchorY,
60
+ width,
61
+ height,
62
+ tipWidth,
63
+ tipHeight,
64
+ gap,
65
+ pad,
66
+ placement
67
+ }: ClampTooltipArgs): {
68
+ left: number;
69
+ top: number;
70
+ };
71
+ /**
72
+ * Card-style multi-series tooltip body: an optional header plus one
73
+ * coloured-dot row per series. Rendered inside `@visx/tooltip` by the chart
74
+ * components so every chart shares the same tooltip look.
75
+ */
76
+ declare function ChartTooltipCard({
77
+ label,
78
+ rows,
79
+ className
80
+ }: ChartTooltipCardProps): _$react_jsx_runtime0.JSX.Element | null;
81
+ //#endregion
82
+ export { ChartConfig, ChartTooltipCard, ChartTooltipCardProps, ChartTooltipRow, clampTooltipPosition, useMeasuredSize };
83
+ //# sourceMappingURL=chart.d.cts.map
@@ -0,0 +1,83 @@
1
+ "use client";
2
+
3
+ import * as React$1 from "react";
4
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
5
+
6
+ //#region src/components/chart.d.ts
7
+ type ChartConfig = Record<string, {
8
+ label?: React$1.ReactNode;
9
+ color?: string;
10
+ }>;
11
+ interface ChartTooltipRow {
12
+ key: string;
13
+ label: React$1.ReactNode;
14
+ /** CSS color value for the legend dot (e.g. `var(--orange-a9)`). */
15
+ color: string;
16
+ value: React$1.ReactNode;
17
+ }
18
+ interface ChartTooltipCardProps {
19
+ label?: React$1.ReactNode;
20
+ rows: ChartTooltipRow[];
21
+ className?: string;
22
+ }
23
+ /**
24
+ * Tracks an element's rendered size via ResizeObserver. The element must stay
25
+ * mounted (e.g. an always-rendered, possibly-hidden tooltip wrapper) so the ref
26
+ * is attached when the observer is set up.
27
+ */
28
+ declare function useMeasuredSize<T extends HTMLElement>(): readonly [React$1.RefObject<T | null>, {
29
+ width: number;
30
+ height: number;
31
+ }];
32
+ interface ClampTooltipArgs {
33
+ /** Anchor point (chart-local px) the tooltip should sit at, horizontally centred. */
34
+ anchorX: number;
35
+ anchorY: number;
36
+ /** Chart bounds (px). */
37
+ width: number;
38
+ height: number;
39
+ /** Measured tooltip size (px). */
40
+ tipWidth: number;
41
+ tipHeight: number;
42
+ /** Gap between the anchor and the tooltip. */
43
+ gap?: number;
44
+ /** Minimum distance kept from every chart edge. */
45
+ pad?: number;
46
+ /**
47
+ * `above` (default): centred above the anchor, flipped below if it would clip
48
+ * the top — good for bars. `beside`: offset to the side of the anchor so it
49
+ * never sits on top of the hovered point/line — good for line/area charts.
50
+ */
51
+ placement?: 'above' | 'beside';
52
+ }
53
+ /**
54
+ * Positions a tooltip relative to an anchor while keeping it fully inside the
55
+ * chart: clamped on every edge, flipped above/below or left/right as needed.
56
+ */
57
+ declare function clampTooltipPosition({
58
+ anchorX,
59
+ anchorY,
60
+ width,
61
+ height,
62
+ tipWidth,
63
+ tipHeight,
64
+ gap,
65
+ pad,
66
+ placement
67
+ }: ClampTooltipArgs): {
68
+ left: number;
69
+ top: number;
70
+ };
71
+ /**
72
+ * Card-style multi-series tooltip body: an optional header plus one
73
+ * coloured-dot row per series. Rendered inside `@visx/tooltip` by the chart
74
+ * components so every chart shares the same tooltip look.
75
+ */
76
+ declare function ChartTooltipCard({
77
+ label,
78
+ rows,
79
+ className
80
+ }: ChartTooltipCardProps): _$react_jsx_runtime0.JSX.Element | null;
81
+ //#endregion
82
+ export { ChartConfig, ChartTooltipCard, ChartTooltipCardProps, ChartTooltipRow, clampTooltipPosition, useMeasuredSize };
83
+ //# sourceMappingURL=chart.d.ts.map
@@ -0,0 +1,88 @@
1
+ "use client";
2
+ import { cn } from "../utils/cn.js";
3
+ import { useEffect, useRef, useState } from "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/components/chart.tsx
6
+ /**
7
+ * Tracks an element's rendered size via ResizeObserver. The element must stay
8
+ * mounted (e.g. an always-rendered, possibly-hidden tooltip wrapper) so the ref
9
+ * is attached when the observer is set up.
10
+ */
11
+ function useMeasuredSize() {
12
+ const ref = useRef(null);
13
+ const [size, setSize] = useState({
14
+ width: 0,
15
+ height: 0
16
+ });
17
+ useEffect(() => {
18
+ const element = ref.current;
19
+ if (!element) return;
20
+ const resizeObserver = new ResizeObserver((entries) => {
21
+ const entry = entries[0];
22
+ if (!entry) return;
23
+ setSize({
24
+ width: entry.contentRect.width,
25
+ height: entry.contentRect.height
26
+ });
27
+ });
28
+ resizeObserver.observe(element);
29
+ return () => resizeObserver.disconnect();
30
+ }, []);
31
+ return [ref, size];
32
+ }
33
+ /**
34
+ * Positions a tooltip relative to an anchor while keeping it fully inside the
35
+ * chart: clamped on every edge, flipped above/below or left/right as needed.
36
+ */
37
+ function clampTooltipPosition({ anchorX, anchorY, width, height, tipWidth, tipHeight, gap = 12, pad = 8, placement = "above" }) {
38
+ const maxLeft = Math.max(pad, width - tipWidth - pad);
39
+ const maxTop = Math.max(pad, height - tipHeight - pad);
40
+ if (placement === "beside") {
41
+ const right = anchorX + gap;
42
+ const left = right + tipWidth + pad <= width ? right : anchorX - gap - tipWidth;
43
+ return {
44
+ left: Math.min(Math.max(left, pad), maxLeft),
45
+ top: Math.min(Math.max(anchorY, pad), maxTop)
46
+ };
47
+ }
48
+ const above = anchorY - gap - tipHeight;
49
+ const desiredTop = above >= pad ? above : anchorY + gap;
50
+ return {
51
+ left: Math.min(Math.max(anchorX - tipWidth / 2, pad), maxLeft),
52
+ top: Math.min(Math.max(desiredTop, pad), maxTop)
53
+ };
54
+ }
55
+ /**
56
+ * Card-style multi-series tooltip body: an optional header plus one
57
+ * coloured-dot row per series. Rendered inside `@visx/tooltip` by the chart
58
+ * components so every chart shares the same tooltip look.
59
+ */
60
+ function ChartTooltipCard({ label, rows, className }) {
61
+ if (rows.length === 0) return null;
62
+ return /* @__PURE__ */ jsxs("div", {
63
+ className: cn("grid min-w-40 gap-1.5 rounded-lg border border-slate-a6 bg-slate-1 px-3 py-2 text-xs shadow-lg shadow-gray-a3", className),
64
+ children: [label !== void 0 && label !== null && /* @__PURE__ */ jsx("div", {
65
+ className: "font-medium text-gray",
66
+ children: label
67
+ }), /* @__PURE__ */ jsx("div", {
68
+ className: "grid gap-1.5",
69
+ children: rows.map((row) => /* @__PURE__ */ jsxs("div", {
70
+ className: "flex items-center justify-between gap-4",
71
+ children: [/* @__PURE__ */ jsxs("span", {
72
+ className: "flex items-center gap-1.5 text-gray-light",
73
+ children: [/* @__PURE__ */ jsx("span", {
74
+ className: "size-2 shrink-0 rounded-[2px]",
75
+ style: { backgroundColor: row.color }
76
+ }), row.label]
77
+ }), /* @__PURE__ */ jsx("span", {
78
+ className: "font-medium whitespace-nowrap text-gray tabular-nums",
79
+ children: row.value
80
+ })]
81
+ }, row.key))
82
+ })]
83
+ });
84
+ }
85
+ //#endregion
86
+ export { ChartTooltipCard, clampTooltipPosition, useMeasuredSize };
87
+
88
+ //# sourceMappingURL=chart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart.js","names":[],"sources":["../../src/components/chart.tsx"],"sourcesContent":["import * as React from 'react'\nimport { useEffect, useRef, useState } from 'react'\nimport { cn } from '../utils/cn'\n\nexport type ChartConfig = Record<\n string,\n {\n label?: React.ReactNode\n color?: string\n }\n>\n\nexport interface ChartTooltipRow {\n key: string\n label: React.ReactNode\n /** CSS color value for the legend dot (e.g. `var(--orange-a9)`). */\n color: string\n value: React.ReactNode\n}\n\nexport interface ChartTooltipCardProps {\n label?: React.ReactNode\n rows: ChartTooltipRow[]\n className?: string\n}\n\n/**\n * Tracks an element's rendered size via ResizeObserver. The element must stay\n * mounted (e.g. an always-rendered, possibly-hidden tooltip wrapper) so the ref\n * is attached when the observer is set up.\n */\nexport function useMeasuredSize<T extends HTMLElement>() {\n const ref = useRef<T>(null)\n const [size, setSize] = useState({ width: 0, height: 0 })\n\n useEffect(() => {\n const element = ref.current\n if (!element) return\n\n const resizeObserver = new ResizeObserver((entries) => {\n const entry = entries[0]\n if (!entry) return\n setSize({\n width: entry.contentRect.width,\n height: entry.contentRect.height,\n })\n })\n\n resizeObserver.observe(element)\n return () => resizeObserver.disconnect()\n }, [])\n\n return [ref, size] as const\n}\n\ninterface ClampTooltipArgs {\n /** Anchor point (chart-local px) the tooltip should sit at, horizontally centred. */\n anchorX: number\n anchorY: number\n /** Chart bounds (px). */\n width: number\n height: number\n /** Measured tooltip size (px). */\n tipWidth: number\n tipHeight: number\n /** Gap between the anchor and the tooltip. */\n gap?: number\n /** Minimum distance kept from every chart edge. */\n pad?: number\n /**\n * `above` (default): centred above the anchor, flipped below if it would clip\n * the top — good for bars. `beside`: offset to the side of the anchor so it\n * never sits on top of the hovered point/line — good for line/area charts.\n */\n placement?: 'above' | 'beside'\n}\n\n/**\n * Positions a tooltip relative to an anchor while keeping it fully inside the\n * chart: clamped on every edge, flipped above/below or left/right as needed.\n */\nexport function clampTooltipPosition({\n anchorX,\n anchorY,\n width,\n height,\n tipWidth,\n tipHeight,\n gap = 12,\n pad = 8,\n placement = 'above',\n}: ClampTooltipArgs): { left: number; top: number } {\n const maxLeft = Math.max(pad, width - tipWidth - pad)\n const maxTop = Math.max(pad, height - tipHeight - pad)\n\n if (placement === 'beside') {\n // Prefer the right of the anchor; flip to the left if it would overflow.\n const right = anchorX + gap\n const left =\n right + tipWidth + pad <= width ? right : anchorX - gap - tipWidth\n return {\n left: Math.min(Math.max(left, pad), maxLeft),\n top: Math.min(Math.max(anchorY, pad), maxTop),\n }\n }\n\n const above = anchorY - gap - tipHeight\n const desiredTop = above >= pad ? above : anchorY + gap\n return {\n left: Math.min(Math.max(anchorX - tipWidth / 2, pad), maxLeft),\n top: Math.min(Math.max(desiredTop, pad), maxTop),\n }\n}\n\n/**\n * Card-style multi-series tooltip body: an optional header plus one\n * coloured-dot row per series. Rendered inside `@visx/tooltip` by the chart\n * components so every chart shares the same tooltip look.\n */\nexport function ChartTooltipCard({\n label,\n rows,\n className,\n}: ChartTooltipCardProps) {\n if (rows.length === 0) return null\n\n return (\n <div\n className={cn(\n 'grid min-w-40 gap-1.5 rounded-lg border border-slate-a6 bg-slate-1 px-3 py-2 text-xs shadow-lg shadow-gray-a3',\n className,\n )}\n >\n {label !== undefined && label !== null && (\n <div className=\"font-medium text-gray\">{label}</div>\n )}\n <div className=\"grid gap-1.5\">\n {rows.map((row) => (\n <div\n key={row.key}\n className=\"flex items-center justify-between gap-4\"\n >\n <span className=\"flex items-center gap-1.5 text-gray-light\">\n <span\n className=\"size-2 shrink-0 rounded-[2px]\"\n style={{ backgroundColor: row.color }}\n />\n {row.label}\n </span>\n <span className=\"font-medium whitespace-nowrap text-gray tabular-nums\">\n {row.value}\n </span>\n </div>\n ))}\n </div>\n </div>\n )\n}\n"],"mappings":";;;;;;;;;;AA+BA,SAAgB,kBAAyC;CACvD,MAAM,MAAM,OAAU,KAAK;CAC3B,MAAM,CAAC,MAAM,WAAW,SAAS;EAAE,OAAO;EAAG,QAAQ;EAAG,CAAC;AAEzD,iBAAgB;EACd,MAAM,UAAU,IAAI;AACpB,MAAI,CAAC,QAAS;EAEd,MAAM,iBAAiB,IAAI,gBAAgB,YAAY;GACrD,MAAM,QAAQ,QAAQ;AACtB,OAAI,CAAC,MAAO;AACZ,WAAQ;IACN,OAAO,MAAM,YAAY;IACzB,QAAQ,MAAM,YAAY;IAC3B,CAAC;IACF;AAEF,iBAAe,QAAQ,QAAQ;AAC/B,eAAa,eAAe,YAAY;IACvC,EAAE,CAAC;AAEN,QAAO,CAAC,KAAK,KAAK;;;;;;AA6BpB,SAAgB,qBAAqB,EACnC,SACA,SACA,OACA,QACA,UACA,WACA,MAAM,IACN,MAAM,GACN,YAAY,WACsC;CAClD,MAAM,UAAU,KAAK,IAAI,KAAK,QAAQ,WAAW,IAAI;CACrD,MAAM,SAAS,KAAK,IAAI,KAAK,SAAS,YAAY,IAAI;AAEtD,KAAI,cAAc,UAAU;EAE1B,MAAM,QAAQ,UAAU;EACxB,MAAM,OACJ,QAAQ,WAAW,OAAO,QAAQ,QAAQ,UAAU,MAAM;AAC5D,SAAO;GACL,MAAM,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,EAAE,QAAQ;GAC5C,KAAK,KAAK,IAAI,KAAK,IAAI,SAAS,IAAI,EAAE,OAAO;GAC9C;;CAGH,MAAM,QAAQ,UAAU,MAAM;CAC9B,MAAM,aAAa,SAAS,MAAM,QAAQ,UAAU;AACpD,QAAO;EACL,MAAM,KAAK,IAAI,KAAK,IAAI,UAAU,WAAW,GAAG,IAAI,EAAE,QAAQ;EAC9D,KAAK,KAAK,IAAI,KAAK,IAAI,YAAY,IAAI,EAAE,OAAO;EACjD;;;;;;;AAQH,SAAgB,iBAAiB,EAC/B,OACA,MACA,aACwB;AACxB,KAAI,KAAK,WAAW,EAAG,QAAO;AAE9B,QACE,qBAAC,OAAD;EACE,WAAW,GACT,iHACA,UACD;YAJH,CAMG,UAAU,KAAA,KAAa,UAAU,QAChC,oBAAC,OAAD;GAAK,WAAU;aAAyB;GAAY,CAAA,EAEtD,oBAAC,OAAD;GAAK,WAAU;aACZ,KAAK,KAAK,QACT,qBAAC,OAAD;IAEE,WAAU;cAFZ,CAIE,qBAAC,QAAD;KAAM,WAAU;eAAhB,CACE,oBAAC,QAAD;MACE,WAAU;MACV,OAAO,EAAE,iBAAiB,IAAI,OAAO;MACrC,CAAA,EACD,IAAI,MACA;QACP,oBAAC,QAAD;KAAM,WAAU;eACb,IAAI;KACA,CAAA,CACH;MAbC,IAAI,IAaL,CACN;GACE,CAAA,CACF"}
@@ -0,0 +1,37 @@
1
+ "use client";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const require_chunk = require("../chunk-aJGBMT86.cjs");
4
+ let react = require("react");
5
+ react = require_chunk.__toESM(react);
6
+ let react_jsx_runtime = require("react/jsx-runtime");
7
+ let _base_ui_react_checkbox = require("@base-ui/react/checkbox");
8
+ let cnfast = require("cnfast");
9
+ //#region src/components/checkbox.tsx
10
+ const Checkbox = react.forwardRef(({ className, size: _size, bordered: _bordered, ...props }, ref) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_base_ui_react_checkbox.Checkbox.Root, {
11
+ className: (0, cnfast.cn)("peer relative inline-flex size-6 shrink-0 cursor-pointer items-center justify-center border-[length:var(--spark-style-border-width,2px)] transition-colors", "before:absolute before:top-1/2 before:left-1/2 before:size-10 before:-translate-x-1/2 before:-translate-y-1/2 before:content-['']", "rounded-[min(var(--spark-rounded-sm),40%)]", "focus-visible:ring focus-visible:ring-offset-2 focus-visible:outline-hidden", "data-disabled:cursor-not-allowed data-disabled:opacity-50", "border-[color:var(--spark-style-idle-border,var(--spark-a7))] bg-base-accent-soft", "data-checked:border-[color:var(--spark-style-border,var(--spark-9))] data-checked:bg-[var(--spark-style-bg,var(--spark-9))]", "data-indeterminate:border-[color:var(--spark-style-border,var(--spark-9))] data-indeterminate:bg-[var(--spark-style-bg,var(--spark-9))]", className),
12
+ ref,
13
+ ...props,
14
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(_base_ui_react_checkbox.Checkbox.Indicator, {
15
+ className: "group inline-flex items-center justify-center text-[color:var(--spark-style-fg,var(--spark-on-solid))]",
16
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
17
+ "aria-hidden": "true",
18
+ className: "hidden size-5 group-data-checked:block",
19
+ fill: "none",
20
+ viewBox: "0 0 24 24",
21
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
22
+ className: "animate-check-draw [stroke-dasharray:1] motion-reduce:animate-none",
23
+ d: "M5.5 12.5 L10 17 L18.5 7.5",
24
+ pathLength: 1,
25
+ stroke: "currentColor",
26
+ strokeLinecap: "round",
27
+ strokeLinejoin: "round",
28
+ strokeWidth: 2.5
29
+ })
30
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: "hidden h-0.5 w-3 origin-center animate-dash-pop rounded-full bg-current group-data-indeterminate:block motion-reduce:animate-none" })]
31
+ })
32
+ }));
33
+ Checkbox.displayName = "Checkbox";
34
+ //#endregion
35
+ exports.Checkbox = Checkbox;
36
+
37
+ //# sourceMappingURL=checkbox.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.cjs","names":["React","CheckboxPrimitive"],"sources":["../../src/components/checkbox.tsx"],"sourcesContent":["import { Checkbox as CheckboxPrimitive } from '@base-ui/react/checkbox'\nimport * as React from 'react'\nimport { cn } from '../utils/cn'\n\ntype CheckboxProps = CheckboxPrimitive.Root.Props & {\n /**\n * @deprecated The checkbox now renders a single 24px size (with a 40px hit\n * area). Accepted for back-compat but ignored.\n */\n size?: 'default' | 'large'\n /**\n * @deprecated The checkbox is always bordered now. Accepted for back-compat\n * but ignored.\n */\n bordered?: boolean\n}\n\nconst Checkbox = React.forwardRef<\n React.ComponentRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n // `size`/`bordered` are deprecated no-ops — pulled out of the rest so they\n // don't leak onto the DOM element as unknown attributes.\n>(({ className, size: _size, bordered: _bordered, ...props }, ref) => (\n <CheckboxPrimitive.Root\n className={cn(\n // 24px visible box with a 40px hit area (the ::before overlay, WCAG 2.5.5).\n // Border width follows the style knob (surface thins to 1px; the rest stay 2px).\n 'peer relative inline-flex size-6 shrink-0 cursor-pointer items-center justify-center border-[length:var(--spark-style-border-width,2px)] transition-colors',\n \"before:absolute before:top-1/2 before:left-1/2 before:size-10 before:-translate-x-1/2 before:-translate-y-1/2 before:content-['']\",\n // Capped radius: follows the [data-radius] factor, but the 40% ceiling (a\n // circle needs 50%) keeps a checkbox from ever rounding into a circle at\n // large/full or small sizes. A % radius tracks the box itself, so it holds\n // across every spacing/scaling combo (Radix idiom: cap small-control radius).\n 'rounded-[min(var(--spark-rounded-sm),40%)]',\n 'focus-visible:ring focus-visible:ring-offset-2 focus-visible:outline-hidden',\n // Base UI renders a <span>, so disabled state comes via data-disabled\n 'data-disabled:cursor-not-allowed data-disabled:opacity-50',\n // Unchecked: subtle fill + a style-aware border (soft sets the idle-border\n // to none). The a7 fallback keeps the default (no data-style) affordance.\n 'border-[color:var(--spark-style-idle-border,var(--spark-a7))] bg-base-accent-soft',\n // Checked / indeterminate: style-aware fill + border (--spark-style-*,\n // solid by default). Mirrors the Button's style knob.\n 'data-checked:border-[color:var(--spark-style-border,var(--spark-9))] data-checked:bg-[var(--spark-style-bg,var(--spark-9))]',\n 'data-indeterminate:border-[color:var(--spark-style-border,var(--spark-9))] data-indeterminate:bg-[var(--spark-style-bg,var(--spark-9))]',\n className,\n )}\n ref={ref}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"group inline-flex items-center justify-center text-[color:var(--spark-style-fg,var(--spark-on-solid))]\">\n {/* custom-drawn glyphs; group-data toggles which one the mounted indicator shows */}\n <svg\n aria-hidden=\"true\"\n className=\"hidden size-5 group-data-checked:block\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <path\n className=\"animate-check-draw [stroke-dasharray:1] motion-reduce:animate-none\"\n d=\"M5.5 12.5 L10 17 L18.5 7.5\"\n pathLength={1}\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2.5}\n />\n </svg>\n <span className=\"hidden h-0.5 w-3 origin-center animate-dash-pop rounded-full bg-current group-data-indeterminate:block motion-reduce:animate-none\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\n\nCheckbox.displayName = 'Checkbox'\n\nexport { Checkbox }\nexport type { CheckboxProps }\n"],"mappings":";;;;;;;;;AAiBA,MAAM,WAAWA,MAAM,YAKpB,EAAE,WAAW,MAAM,OAAO,UAAU,WAAW,GAAG,SAAS,QAC5D,iBAAA,GAAA,kBAAA,KAACC,wBAAAA,SAAkB,MAAnB;CACE,YAAA,GAAA,OAAA,IAGE,8JACA,qIAKA,8CACA,+EAEA,6DAGA,qFAGA,+HACA,2IACA,UACD;CACI;CACL,GAAI;WAEJ,iBAAA,GAAA,kBAAA,MAACA,wBAAAA,SAAkB,WAAnB;EAA6B,WAAU;YAAvC,CAEE,iBAAA,GAAA,kBAAA,KAAC,OAAD;GACE,eAAY;GACZ,WAAU;GACV,MAAK;GACL,SAAQ;aAER,iBAAA,GAAA,kBAAA,KAAC,QAAD;IACE,WAAU;IACV,GAAE;IACF,YAAY;IACZ,QAAO;IACP,eAAc;IACd,gBAAe;IACf,aAAa;IACb,CAAA;GACE,CAAA,EACN,iBAAA,GAAA,kBAAA,KAAC,QAAD,EAAM,WAAU,qIAAsI,CAAA,CAC1H;;CACP,CAAA,CACzB;AAEF,SAAS,cAAc"}
@@ -0,0 +1,22 @@
1
+ "use client";
2
+
3
+ import * as React$1 from "react";
4
+ import { Checkbox as Checkbox$1 } from "@base-ui/react/checkbox";
5
+
6
+ //#region src/components/checkbox.d.ts
7
+ type CheckboxProps = Checkbox$1.Root.Props & {
8
+ /**
9
+ * @deprecated The checkbox now renders a single 24px size (with a 40px hit
10
+ * area). Accepted for back-compat but ignored.
11
+ */
12
+ size?: 'default' | 'large';
13
+ /**
14
+ * @deprecated The checkbox is always bordered now. Accepted for back-compat
15
+ * but ignored.
16
+ */
17
+ bordered?: boolean;
18
+ };
19
+ declare const Checkbox: React$1.ForwardRefExoticComponent<Omit<CheckboxProps, "ref"> & React$1.RefAttributes<HTMLElement>>;
20
+ //#endregion
21
+ export { Checkbox, type CheckboxProps };
22
+ //# sourceMappingURL=checkbox.d.cts.map
@@ -0,0 +1,22 @@
1
+ "use client";
2
+
3
+ import * as React$1 from "react";
4
+ import { Checkbox as Checkbox$1 } from "@base-ui/react/checkbox";
5
+
6
+ //#region src/components/checkbox.d.ts
7
+ type CheckboxProps = Checkbox$1.Root.Props & {
8
+ /**
9
+ * @deprecated The checkbox now renders a single 24px size (with a 40px hit
10
+ * area). Accepted for back-compat but ignored.
11
+ */
12
+ size?: 'default' | 'large';
13
+ /**
14
+ * @deprecated The checkbox is always bordered now. Accepted for back-compat
15
+ * but ignored.
16
+ */
17
+ bordered?: boolean;
18
+ };
19
+ declare const Checkbox: React$1.ForwardRefExoticComponent<Omit<CheckboxProps, "ref"> & React$1.RefAttributes<HTMLElement>>;
20
+ //#endregion
21
+ export { Checkbox, type CheckboxProps };
22
+ //# sourceMappingURL=checkbox.d.ts.map
@@ -0,0 +1,34 @@
1
+ "use client";
2
+ import { cn } from "../utils/cn.js";
3
+ import * as React$1 from "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { Checkbox as Checkbox$1 } from "@base-ui/react/checkbox";
6
+ //#region src/components/checkbox.tsx
7
+ const Checkbox = React$1.forwardRef(({ className, size: _size, bordered: _bordered, ...props }, ref) => /* @__PURE__ */ jsx(Checkbox$1.Root, {
8
+ className: cn("peer relative inline-flex size-6 shrink-0 cursor-pointer items-center justify-center border-[length:var(--spark-style-border-width,2px)] transition-colors", "before:absolute before:top-1/2 before:left-1/2 before:size-10 before:-translate-x-1/2 before:-translate-y-1/2 before:content-['']", "rounded-[min(var(--spark-rounded-sm),40%)]", "focus-visible:ring focus-visible:ring-offset-2 focus-visible:outline-hidden", "data-disabled:cursor-not-allowed data-disabled:opacity-50", "border-[color:var(--spark-style-idle-border,var(--spark-a7))] bg-base-accent-soft", "data-checked:border-[color:var(--spark-style-border,var(--spark-9))] data-checked:bg-[var(--spark-style-bg,var(--spark-9))]", "data-indeterminate:border-[color:var(--spark-style-border,var(--spark-9))] data-indeterminate:bg-[var(--spark-style-bg,var(--spark-9))]", className),
9
+ ref,
10
+ ...props,
11
+ children: /* @__PURE__ */ jsxs(Checkbox$1.Indicator, {
12
+ className: "group inline-flex items-center justify-center text-[color:var(--spark-style-fg,var(--spark-on-solid))]",
13
+ children: [/* @__PURE__ */ jsx("svg", {
14
+ "aria-hidden": "true",
15
+ className: "hidden size-5 group-data-checked:block",
16
+ fill: "none",
17
+ viewBox: "0 0 24 24",
18
+ children: /* @__PURE__ */ jsx("path", {
19
+ className: "animate-check-draw [stroke-dasharray:1] motion-reduce:animate-none",
20
+ d: "M5.5 12.5 L10 17 L18.5 7.5",
21
+ pathLength: 1,
22
+ stroke: "currentColor",
23
+ strokeLinecap: "round",
24
+ strokeLinejoin: "round",
25
+ strokeWidth: 2.5
26
+ })
27
+ }), /* @__PURE__ */ jsx("span", { className: "hidden h-0.5 w-3 origin-center animate-dash-pop rounded-full bg-current group-data-indeterminate:block motion-reduce:animate-none" })]
28
+ })
29
+ }));
30
+ Checkbox.displayName = "Checkbox";
31
+ //#endregion
32
+ export { Checkbox };
33
+
34
+ //# sourceMappingURL=checkbox.js.map