tuiuiu.js 0.1.1 → 0.1.4-next.64ff654

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 (402) hide show
  1. package/README.md +67 -36
  2. package/dist/atoms/button.d.ts.map +1 -1
  3. package/dist/atoms/button.js +17 -9
  4. package/dist/atoms/button.js.map +1 -1
  5. package/dist/atoms/text-input.d.ts +2 -0
  6. package/dist/atoms/text-input.d.ts.map +1 -1
  7. package/dist/atoms/text-input.js +13 -7
  8. package/dist/atoms/text-input.js.map +1 -1
  9. package/dist/atoms/tooltip.d.ts.map +1 -1
  10. package/dist/atoms/tooltip.js +2 -1
  11. package/dist/atoms/tooltip.js.map +1 -1
  12. package/dist/cli/commands/help.d.ts +5 -0
  13. package/dist/cli/commands/help.d.ts.map +1 -0
  14. package/dist/cli/commands/help.js +31 -0
  15. package/dist/cli/commands/help.js.map +1 -0
  16. package/dist/cli/commands/mcp.d.ts +11 -0
  17. package/dist/cli/commands/mcp.d.ts.map +1 -0
  18. package/dist/cli/commands/mcp.js +21 -0
  19. package/dist/cli/commands/mcp.js.map +1 -0
  20. package/dist/cli/commands/storybook.d.ts +5 -0
  21. package/dist/cli/commands/storybook.d.ts.map +1 -0
  22. package/dist/cli/commands/storybook.js +9 -0
  23. package/dist/cli/commands/storybook.js.map +1 -0
  24. package/dist/cli/index.d.ts +14 -0
  25. package/dist/cli/index.d.ts.map +1 -0
  26. package/dist/cli/index.js +50 -0
  27. package/dist/cli/index.js.map +1 -0
  28. package/dist/core/error-boundary.d.ts.map +1 -1
  29. package/dist/core/error-boundary.js +2 -1
  30. package/dist/core/error-boundary.js.map +1 -1
  31. package/dist/core/hotkeys.d.ts +62 -0
  32. package/dist/core/hotkeys.d.ts.map +1 -0
  33. package/dist/core/hotkeys.js +0 -0
  34. package/dist/core/hotkeys.js.map +1 -0
  35. package/dist/core/index.d.ts +3 -1
  36. package/dist/core/index.d.ts.map +1 -1
  37. package/dist/core/index.js +9 -1
  38. package/dist/core/index.js.map +1 -1
  39. package/dist/core/screen.d.ts.map +1 -1
  40. package/dist/core/screen.js +2 -0
  41. package/dist/core/screen.js.map +1 -1
  42. package/dist/core/theme.d.ts +79 -0
  43. package/dist/core/theme.d.ts.map +1 -1
  44. package/dist/core/theme.js +358 -0
  45. package/dist/core/theme.js.map +1 -1
  46. package/dist/design-system/data-display/index.d.ts +9 -6
  47. package/dist/design-system/data-display/index.d.ts.map +1 -1
  48. package/dist/design-system/data-display/index.js +16 -7
  49. package/dist/design-system/data-display/index.js.map +1 -1
  50. package/dist/design-system/feedback/badge.d.ts +21 -4
  51. package/dist/design-system/feedback/badge.d.ts.map +1 -1
  52. package/dist/design-system/feedback/badge.js +15 -2
  53. package/dist/design-system/feedback/badge.js.map +1 -1
  54. package/dist/design-system/forms/index.d.ts +11 -8
  55. package/dist/design-system/forms/index.d.ts.map +1 -1
  56. package/dist/design-system/forms/index.js +19 -10
  57. package/dist/design-system/forms/index.js.map +1 -1
  58. package/dist/design-system/layout/index.d.ts +7 -4
  59. package/dist/design-system/layout/index.d.ts.map +1 -1
  60. package/dist/design-system/layout/index.js +18 -6
  61. package/dist/design-system/layout/index.js.map +1 -1
  62. package/dist/design-system/media/picture.d.ts.map +1 -1
  63. package/dist/design-system/media/picture.js +2 -1
  64. package/dist/design-system/media/picture.js.map +1 -1
  65. package/dist/design-system/overlays/index.d.ts +6 -3
  66. package/dist/design-system/overlays/index.d.ts.map +1 -1
  67. package/dist/design-system/overlays/index.js +9 -3
  68. package/dist/design-system/overlays/index.js.map +1 -1
  69. package/dist/design-system/visual/splash-screen.d.ts.map +1 -1
  70. package/dist/design-system/visual/splash-screen.js +38 -18
  71. package/dist/design-system/visual/splash-screen.js.map +1 -1
  72. package/dist/hooks/index.d.ts +2 -0
  73. package/dist/hooks/index.d.ts.map +1 -1
  74. package/dist/hooks/index.js +2 -0
  75. package/dist/hooks/index.js.map +1 -1
  76. package/dist/hooks/use-hotkeys.d.ts +153 -0
  77. package/dist/hooks/use-hotkeys.d.ts.map +1 -0
  78. package/dist/hooks/use-hotkeys.js +379 -0
  79. package/dist/hooks/use-hotkeys.js.map +1 -0
  80. package/dist/hooks/use-input.d.ts +2 -10
  81. package/dist/hooks/use-input.d.ts.map +1 -1
  82. package/dist/hooks/use-input.js +2 -287
  83. package/dist/hooks/use-input.js.map +1 -1
  84. package/dist/hooks/use-mouse.d.ts +5 -0
  85. package/dist/hooks/use-mouse.d.ts.map +1 -1
  86. package/dist/hooks/use-mouse.js +29 -11
  87. package/dist/hooks/use-mouse.js.map +1 -1
  88. package/dist/index.d.ts +6 -4
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +15 -3
  91. package/dist/index.js.map +1 -1
  92. package/dist/mcp/docs-data.d.ts +31 -0
  93. package/dist/mcp/docs-data.d.ts.map +1 -0
  94. package/dist/mcp/docs-data.js +637 -0
  95. package/dist/mcp/docs-data.js.map +1 -0
  96. package/dist/mcp/index.d.ts +14 -0
  97. package/dist/mcp/index.d.ts.map +1 -0
  98. package/dist/mcp/index.js +12 -0
  99. package/dist/mcp/index.js.map +1 -0
  100. package/dist/mcp/server.d.ts +31 -0
  101. package/dist/mcp/server.d.ts.map +1 -0
  102. package/dist/mcp/server.js +597 -0
  103. package/dist/mcp/server.js.map +1 -0
  104. package/dist/mcp/types.d.ts +114 -0
  105. package/dist/mcp/types.d.ts.map +1 -0
  106. package/dist/mcp/types.js +16 -0
  107. package/dist/mcp/types.js.map +1 -0
  108. package/dist/molecules/autocomplete.d.ts.map +1 -1
  109. package/dist/molecules/autocomplete.js +2 -1
  110. package/dist/molecules/autocomplete.js.map +1 -1
  111. package/dist/molecules/calendar.d.ts.map +1 -1
  112. package/dist/molecules/calendar.js +5 -3
  113. package/dist/molecules/calendar.js.map +1 -1
  114. package/dist/molecules/data-viz/annotations.d.ts +75 -0
  115. package/dist/molecules/data-viz/annotations.d.ts.map +1 -0
  116. package/dist/molecules/data-viz/annotations.js +40 -0
  117. package/dist/molecules/data-viz/annotations.js.map +1 -0
  118. package/dist/molecules/data-viz/gantt-chart.d.ts +66 -0
  119. package/dist/molecules/data-viz/gantt-chart.d.ts.map +1 -0
  120. package/dist/molecules/data-viz/gantt-chart.js +134 -0
  121. package/dist/molecules/data-viz/gantt-chart.js.map +1 -0
  122. package/dist/molecules/data-viz/gauge.d.ts +2 -2
  123. package/dist/molecules/data-viz/gauge.d.ts.map +1 -1
  124. package/dist/molecules/data-viz/gauge.js +24 -8
  125. package/dist/molecules/data-viz/gauge.js.map +1 -1
  126. package/dist/molecules/data-viz/heatmap.d.ts +8 -2
  127. package/dist/molecules/data-viz/heatmap.d.ts.map +1 -1
  128. package/dist/molecules/data-viz/heatmap.js +41 -9
  129. package/dist/molecules/data-viz/heatmap.js.map +1 -1
  130. package/dist/molecules/data-viz/hooks.d.ts +264 -0
  131. package/dist/molecules/data-viz/hooks.d.ts.map +1 -0
  132. package/dist/molecules/data-viz/hooks.js +373 -0
  133. package/dist/molecules/data-viz/hooks.js.map +1 -0
  134. package/dist/molecules/data-viz/index.d.ts +14 -0
  135. package/dist/molecules/data-viz/index.d.ts.map +1 -1
  136. package/dist/molecules/data-viz/index.js +14 -0
  137. package/dist/molecules/data-viz/index.js.map +1 -1
  138. package/dist/molecules/data-viz/legend.d.ts +82 -0
  139. package/dist/molecules/data-viz/legend.d.ts.map +1 -0
  140. package/dist/molecules/data-viz/legend.js +146 -0
  141. package/dist/molecules/data-viz/legend.js.map +1 -0
  142. package/dist/molecules/data-viz/line-chart.d.ts.map +1 -1
  143. package/dist/molecules/data-viz/line-chart.js +48 -12
  144. package/dist/molecules/data-viz/line-chart.js.map +1 -1
  145. package/dist/molecules/data-viz/radar-chart.d.ts +61 -0
  146. package/dist/molecules/data-viz/radar-chart.d.ts.map +1 -0
  147. package/dist/molecules/data-viz/radar-chart.js +86 -0
  148. package/dist/molecules/data-viz/radar-chart.js.map +1 -0
  149. package/dist/molecules/data-viz/scatter-plot.d.ts +97 -0
  150. package/dist/molecules/data-viz/scatter-plot.d.ts.map +1 -0
  151. package/dist/molecules/data-viz/scatter-plot.js +205 -0
  152. package/dist/molecules/data-viz/scatter-plot.js.map +1 -0
  153. package/dist/molecules/data-viz/time-heatmap.d.ts +48 -0
  154. package/dist/molecules/data-viz/time-heatmap.d.ts.map +1 -0
  155. package/dist/molecules/data-viz/time-heatmap.js +145 -0
  156. package/dist/molecules/data-viz/time-heatmap.js.map +1 -0
  157. package/dist/molecules/select.d.ts +2 -0
  158. package/dist/molecules/select.d.ts.map +1 -1
  159. package/dist/molecules/select.js +4 -3
  160. package/dist/molecules/select.js.map +1 -1
  161. package/dist/molecules/tabs.d.ts.map +1 -1
  162. package/dist/molecules/tabs.js +14 -2
  163. package/dist/molecules/tabs.js.map +1 -1
  164. package/dist/organisms/command-palette.d.ts.map +1 -1
  165. package/dist/organisms/command-palette.js +2 -1
  166. package/dist/organisms/command-palette.js.map +1 -1
  167. package/dist/storybook/app.d.ts.map +1 -1
  168. package/dist/storybook/app.js +53 -44
  169. package/dist/storybook/app.js.map +1 -1
  170. package/dist/storybook/components/compare-view.d.ts.map +1 -1
  171. package/dist/storybook/components/compare-view.js +19 -18
  172. package/dist/storybook/components/compare-view.js.map +1 -1
  173. package/dist/storybook/components/log-viewer.d.ts.map +1 -1
  174. package/dist/storybook/components/log-viewer.js +9 -8
  175. package/dist/storybook/components/log-viewer.js.map +1 -1
  176. package/dist/storybook/components/preview.d.ts.map +1 -1
  177. package/dist/storybook/components/preview.js +34 -33
  178. package/dist/storybook/components/preview.js.map +1 -1
  179. package/dist/storybook/components/sidebar.d.ts.map +1 -1
  180. package/dist/storybook/components/sidebar.js +21 -20
  181. package/dist/storybook/components/sidebar.js.map +1 -1
  182. package/dist/storybook/stories/apps/index.d.ts.map +1 -1
  183. package/dist/storybook/stories/apps/index.js +306 -209
  184. package/dist/storybook/stories/apps/index.js.map +1 -1
  185. package/dist/storybook/stories/atoms/index.d.ts.map +1 -1
  186. package/dist/storybook/stories/atoms/index.js.map +1 -1
  187. package/dist/storybook/stories/molecules/index.d.ts +25 -0
  188. package/dist/storybook/stories/molecules/index.d.ts.map +1 -1
  189. package/dist/storybook/stories/molecules/index.js +402 -20
  190. package/dist/storybook/stories/molecules/index.js.map +1 -1
  191. package/dist/storybook/stories/organisms/index.d.ts.map +1 -1
  192. package/dist/storybook/stories/organisms/index.js +1 -1
  193. package/dist/storybook/stories/organisms/index.js.map +1 -1
  194. package/dist/utils/index.d.ts +2 -0
  195. package/dist/utils/index.d.ts.map +1 -1
  196. package/dist/utils/index.js +2 -0
  197. package/dist/utils/index.js.map +1 -1
  198. package/dist/utils/system-data.d.ts +73 -0
  199. package/dist/utils/system-data.d.ts.map +1 -0
  200. package/dist/utils/system-data.js +367 -0
  201. package/dist/utils/system-data.js.map +1 -0
  202. package/dist/version.d.ts +43 -0
  203. package/dist/version.d.ts.map +1 -0
  204. package/dist/version.js +82 -0
  205. package/dist/version.js.map +1 -0
  206. package/package.json +22 -22
  207. package/dist/components/canvas.d.ts +0 -322
  208. package/dist/components/canvas.d.ts.map +0 -1
  209. package/dist/components/canvas.js +0 -833
  210. package/dist/components/canvas.js.map +0 -1
  211. package/dist/components/code-block.d.ts +0 -75
  212. package/dist/components/code-block.d.ts.map +0 -1
  213. package/dist/components/code-block.js +0 -322
  214. package/dist/components/code-block.js.map +0 -1
  215. package/dist/components/components.d.ts +0 -122
  216. package/dist/components/components.d.ts.map +0 -1
  217. package/dist/components/components.js +0 -151
  218. package/dist/components/components.js.map +0 -1
  219. package/dist/components/data-viz/bar-chart.d.ts +0 -167
  220. package/dist/components/data-viz/bar-chart.d.ts.map +0 -1
  221. package/dist/components/data-viz/bar-chart.js +0 -375
  222. package/dist/components/data-viz/bar-chart.js.map +0 -1
  223. package/dist/components/data-viz/gauge.d.ts +0 -163
  224. package/dist/components/data-viz/gauge.d.ts.map +0 -1
  225. package/dist/components/data-viz/gauge.js +0 -451
  226. package/dist/components/data-viz/gauge.js.map +0 -1
  227. package/dist/components/data-viz/heatmap.d.ts +0 -154
  228. package/dist/components/data-viz/heatmap.d.ts.map +0 -1
  229. package/dist/components/data-viz/heatmap.js +0 -458
  230. package/dist/components/data-viz/heatmap.js.map +0 -1
  231. package/dist/components/data-viz/index.d.ts +0 -16
  232. package/dist/components/data-viz/index.d.ts.map +0 -1
  233. package/dist/components/data-viz/index.js +0 -16
  234. package/dist/components/data-viz/index.js.map +0 -1
  235. package/dist/components/data-viz/line-chart.d.ts +0 -157
  236. package/dist/components/data-viz/line-chart.d.ts.map +0 -1
  237. package/dist/components/data-viz/line-chart.js +0 -578
  238. package/dist/components/data-viz/line-chart.js.map +0 -1
  239. package/dist/components/data-viz/sparkline.d.ts +0 -156
  240. package/dist/components/data-viz/sparkline.d.ts.map +0 -1
  241. package/dist/components/data-viz/sparkline.js +0 -325
  242. package/dist/components/data-viz/sparkline.js.map +0 -1
  243. package/dist/components/grid.d.ts +0 -234
  244. package/dist/components/grid.d.ts.map +0 -1
  245. package/dist/components/grid.js +0 -719
  246. package/dist/components/grid.js.map +0 -1
  247. package/dist/components/index.d.ts +0 -33
  248. package/dist/components/index.d.ts.map +0 -1
  249. package/dist/components/index.js +0 -69
  250. package/dist/components/index.js.map +0 -1
  251. package/dist/components/markdown.d.ts +0 -52
  252. package/dist/components/markdown.d.ts.map +0 -1
  253. package/dist/components/markdown.js +0 -341
  254. package/dist/components/markdown.js.map +0 -1
  255. package/dist/components/modal.d.ts +0 -237
  256. package/dist/components/modal.d.ts.map +0 -1
  257. package/dist/components/modal.js +0 -396
  258. package/dist/components/modal.js.map +0 -1
  259. package/dist/components/progress-bar.d.ts +0 -89
  260. package/dist/components/progress-bar.d.ts.map +0 -1
  261. package/dist/components/progress-bar.js +0 -288
  262. package/dist/components/progress-bar.js.map +0 -1
  263. package/dist/components/select.d.ts +0 -114
  264. package/dist/components/select.d.ts.map +0 -1
  265. package/dist/components/select.js +0 -415
  266. package/dist/components/select.js.map +0 -1
  267. package/dist/components/spinner.d.ts +0 -71
  268. package/dist/components/spinner.d.ts.map +0 -1
  269. package/dist/components/spinner.js +0 -300
  270. package/dist/components/spinner.js.map +0 -1
  271. package/dist/components/split-panel.d.ts +0 -175
  272. package/dist/components/split-panel.d.ts.map +0 -1
  273. package/dist/components/split-panel.js +0 -322
  274. package/dist/components/split-panel.js.map +0 -1
  275. package/dist/components/table.d.ts +0 -103
  276. package/dist/components/table.d.ts.map +0 -1
  277. package/dist/components/table.js +0 -359
  278. package/dist/components/table.js.map +0 -1
  279. package/dist/components/text-input.d.ts +0 -79
  280. package/dist/components/text-input.d.ts.map +0 -1
  281. package/dist/components/text-input.js +0 -332
  282. package/dist/components/text-input.js.map +0 -1
  283. package/dist/design-system/data-display/calendar.d.ts +0 -141
  284. package/dist/design-system/data-display/calendar.d.ts.map +0 -1
  285. package/dist/design-system/data-display/calendar.js +0 -524
  286. package/dist/design-system/data-display/calendar.js.map +0 -1
  287. package/dist/design-system/data-display/code-block.d.ts +0 -75
  288. package/dist/design-system/data-display/code-block.d.ts.map +0 -1
  289. package/dist/design-system/data-display/code-block.js +0 -311
  290. package/dist/design-system/data-display/code-block.js.map +0 -1
  291. package/dist/design-system/data-display/data-table.d.ts +0 -173
  292. package/dist/design-system/data-display/data-table.d.ts.map +0 -1
  293. package/dist/design-system/data-display/data-table.js +0 -428
  294. package/dist/design-system/data-display/data-table.js.map +0 -1
  295. package/dist/design-system/data-display/markdown.d.ts +0 -52
  296. package/dist/design-system/data-display/markdown.d.ts.map +0 -1
  297. package/dist/design-system/data-display/markdown.js +0 -341
  298. package/dist/design-system/data-display/markdown.js.map +0 -1
  299. package/dist/design-system/data-display/table.d.ts +0 -103
  300. package/dist/design-system/data-display/table.d.ts.map +0 -1
  301. package/dist/design-system/data-display/table.js +0 -342
  302. package/dist/design-system/data-display/table.js.map +0 -1
  303. package/dist/design-system/data-display/tree.d.ts +0 -166
  304. package/dist/design-system/data-display/tree.d.ts.map +0 -1
  305. package/dist/design-system/data-display/tree.js +0 -428
  306. package/dist/design-system/data-display/tree.js.map +0 -1
  307. package/dist/design-system/forms/autocomplete.d.ts +0 -163
  308. package/dist/design-system/forms/autocomplete.d.ts.map +0 -1
  309. package/dist/design-system/forms/autocomplete.js +0 -455
  310. package/dist/design-system/forms/autocomplete.js.map +0 -1
  311. package/dist/design-system/forms/button.d.ts +0 -106
  312. package/dist/design-system/forms/button.d.ts.map +0 -1
  313. package/dist/design-system/forms/button.js +0 -170
  314. package/dist/design-system/forms/button.js.map +0 -1
  315. package/dist/design-system/forms/multi-select.d.ts +0 -102
  316. package/dist/design-system/forms/multi-select.d.ts.map +0 -1
  317. package/dist/design-system/forms/multi-select.js +0 -309
  318. package/dist/design-system/forms/multi-select.js.map +0 -1
  319. package/dist/design-system/forms/radio-group.d.ts +0 -88
  320. package/dist/design-system/forms/radio-group.d.ts.map +0 -1
  321. package/dist/design-system/forms/radio-group.js +0 -145
  322. package/dist/design-system/forms/radio-group.js.map +0 -1
  323. package/dist/design-system/forms/select.d.ts +0 -116
  324. package/dist/design-system/forms/select.d.ts.map +0 -1
  325. package/dist/design-system/forms/select.js +0 -441
  326. package/dist/design-system/forms/select.js.map +0 -1
  327. package/dist/design-system/forms/slider.d.ts +0 -134
  328. package/dist/design-system/forms/slider.d.ts.map +0 -1
  329. package/dist/design-system/forms/slider.js +0 -314
  330. package/dist/design-system/forms/slider.js.map +0 -1
  331. package/dist/design-system/forms/switch.d.ts +0 -99
  332. package/dist/design-system/forms/switch.d.ts.map +0 -1
  333. package/dist/design-system/forms/switch.js +0 -173
  334. package/dist/design-system/forms/switch.js.map +0 -1
  335. package/dist/design-system/forms/text-input.d.ts +0 -79
  336. package/dist/design-system/forms/text-input.d.ts.map +0 -1
  337. package/dist/design-system/forms/text-input.js +0 -344
  338. package/dist/design-system/forms/text-input.js.map +0 -1
  339. package/dist/design-system/layout/collapsible.d.ts +0 -166
  340. package/dist/design-system/layout/collapsible.d.ts.map +0 -1
  341. package/dist/design-system/layout/collapsible.js +0 -286
  342. package/dist/design-system/layout/collapsible.js.map +0 -1
  343. package/dist/design-system/layout/scroll-area.d.ts +0 -188
  344. package/dist/design-system/layout/scroll-area.d.ts.map +0 -1
  345. package/dist/design-system/layout/scroll-area.js +0 -348
  346. package/dist/design-system/layout/scroll-area.js.map +0 -1
  347. package/dist/design-system/layout/split-panel.d.ts +0 -183
  348. package/dist/design-system/layout/split-panel.d.ts.map +0 -1
  349. package/dist/design-system/layout/split-panel.js +0 -323
  350. package/dist/design-system/layout/split-panel.js.map +0 -1
  351. package/dist/design-system/layout/tabs.d.ts +0 -129
  352. package/dist/design-system/layout/tabs.d.ts.map +0 -1
  353. package/dist/design-system/layout/tabs.js +0 -373
  354. package/dist/design-system/layout/tabs.js.map +0 -1
  355. package/dist/design-system/overlays/command-palette.d.ts +0 -217
  356. package/dist/design-system/overlays/command-palette.d.ts.map +0 -1
  357. package/dist/design-system/overlays/command-palette.js +0 -443
  358. package/dist/design-system/overlays/command-palette.js.map +0 -1
  359. package/dist/design-system/overlays/modal.d.ts +0 -251
  360. package/dist/design-system/overlays/modal.d.ts.map +0 -1
  361. package/dist/design-system/overlays/modal.js +0 -461
  362. package/dist/design-system/overlays/modal.js.map +0 -1
  363. package/dist/design-system/overlays/overlay-stack.d.ts +0 -200
  364. package/dist/design-system/overlays/overlay-stack.d.ts.map +0 -1
  365. package/dist/design-system/overlays/overlay-stack.js +0 -341
  366. package/dist/design-system/overlays/overlay-stack.js.map +0 -1
  367. package/dist/design-system/primitives/box.d.ts +0 -16
  368. package/dist/design-system/primitives/box.d.ts.map +0 -1
  369. package/dist/design-system/primitives/box.js +0 -23
  370. package/dist/design-system/primitives/box.js.map +0 -1
  371. package/dist/design-system/primitives/divider.d.ts +0 -52
  372. package/dist/design-system/primitives/divider.d.ts.map +0 -1
  373. package/dist/design-system/primitives/divider.js +0 -72
  374. package/dist/design-system/primitives/divider.js.map +0 -1
  375. package/dist/design-system/primitives/helpers.d.ts +0 -10
  376. package/dist/design-system/primitives/helpers.d.ts.map +0 -1
  377. package/dist/design-system/primitives/helpers.js +0 -27
  378. package/dist/design-system/primitives/helpers.js.map +0 -1
  379. package/dist/design-system/primitives/index.d.ts +0 -11
  380. package/dist/design-system/primitives/index.d.ts.map +0 -1
  381. package/dist/design-system/primitives/index.js +0 -14
  382. package/dist/design-system/primitives/index.js.map +0 -1
  383. package/dist/design-system/primitives/slot.d.ts +0 -35
  384. package/dist/design-system/primitives/slot.d.ts.map +0 -1
  385. package/dist/design-system/primitives/slot.js +0 -17
  386. package/dist/design-system/primitives/slot.js.map +0 -1
  387. package/dist/design-system/primitives/spacer.d.ts +0 -34
  388. package/dist/design-system/primitives/spacer.d.ts.map +0 -1
  389. package/dist/design-system/primitives/spacer.js +0 -53
  390. package/dist/design-system/primitives/spacer.js.map +0 -1
  391. package/dist/design-system/primitives/text.d.ts +0 -12
  392. package/dist/design-system/primitives/text.d.ts.map +0 -1
  393. package/dist/design-system/primitives/text.js +0 -25
  394. package/dist/design-system/primitives/text.js.map +0 -1
  395. package/dist/design-system/primitives/utilities.d.ts +0 -70
  396. package/dist/design-system/primitives/utilities.d.ts.map +0 -1
  397. package/dist/design-system/primitives/utilities.js +0 -56
  398. package/dist/design-system/primitives/utilities.js.map +0 -1
  399. package/dist/storybook/cli.d.ts +0 -10
  400. package/dist/storybook/cli.d.ts.map +0 -1
  401. package/dist/storybook/cli.js +0 -14
  402. package/dist/storybook/cli.js.map +0 -1
@@ -0,0 +1,97 @@
1
+ /**
2
+ * ScatterPlot - Two-dimensional scatter plot for correlation analysis
3
+ *
4
+ * Features:
5
+ * - X/Y coordinate plotting
6
+ * - Configurable marker styles
7
+ * - Color by value or category
8
+ * - Size scaling for third dimension
9
+ * - Legend with distinct marker styles
10
+ * - Interactive tooltips and selection
11
+ */
12
+ import type { VNode, ColorValue } from '../../utils/types.js';
13
+ export interface ScatterPoint {
14
+ /** X coordinate */
15
+ x: number;
16
+ /** Y coordinate */
17
+ y: number;
18
+ /** Optional value for color mapping */
19
+ value?: number;
20
+ /** Optional category for color grouping */
21
+ category?: string;
22
+ /** Optional size value */
23
+ size?: number;
24
+ /** Optional label */
25
+ label?: string;
26
+ }
27
+ export type MarkerStyle = 'circle' | 'square' | 'diamond' | 'plus' | 'star' | 'cross';
28
+ export interface AxisOptions {
29
+ /** Show axis line */
30
+ show?: boolean;
31
+ /** Axis label */
32
+ label?: string;
33
+ /** Minimum value (auto-detected if not set) */
34
+ min?: number;
35
+ /** Maximum value (auto-detected if not set) */
36
+ max?: number;
37
+ /** Number of tick marks */
38
+ ticks?: number;
39
+ /** Custom tick formatter */
40
+ formatter?: (value: number) => string;
41
+ }
42
+ export interface ScatterPlotOptions {
43
+ /** Data points to display */
44
+ points: ScatterPoint[];
45
+ /** Chart width in characters */
46
+ width?: number;
47
+ /** Chart height in rows */
48
+ height?: number;
49
+ /** X-axis options */
50
+ xAxis?: AxisOptions;
51
+ /** Y-axis options */
52
+ yAxis?: AxisOptions;
53
+ /** Marker style */
54
+ markerStyle?: MarkerStyle;
55
+ /** Color by value or category */
56
+ colorMode?: 'value' | 'category' | 'uniform';
57
+ /** Color for uniform mode */
58
+ color?: ColorValue;
59
+ /** Color scale for value mode */
60
+ colorScale?: ColorValue[];
61
+ /** Title */
62
+ title?: string;
63
+ /** Show legend */
64
+ showLegend?: boolean;
65
+ /** Click handler */
66
+ onPointClick?: (point: ScatterPoint, index: number) => void;
67
+ }
68
+ export interface ScatterPlotProps extends ScatterPlotOptions {
69
+ }
70
+ /**
71
+ * ScatterPlot - Two-dimensional scatter plot
72
+ *
73
+ * @example
74
+ * // Basic scatter plot
75
+ * ScatterPlot({
76
+ * points: [
77
+ * { x: 1, y: 2 },
78
+ * { x: 2, y: 4 },
79
+ * { x: 3, y: 6 },
80
+ * ],
81
+ * width: 50,
82
+ * height: 15,
83
+ * })
84
+ *
85
+ * @example
86
+ * // Scatter plot with color by value
87
+ * ScatterPlot({
88
+ * points: [
89
+ * { x: 1, y: 2, value: 10 },
90
+ * { x: 2, y: 4, value: 20 },
91
+ * ],
92
+ * colorMode: 'value',
93
+ * colorScale: ['blue', 'cyan', 'green', 'yellow', 'red'],
94
+ * })
95
+ */
96
+ export declare function ScatterPlot(props: ScatterPlotProps): VNode;
97
+ //# sourceMappingURL=scatter-plot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scatter-plot.d.ts","sourceRoot":"","sources":["../../../src/molecules/data-viz/scatter-plot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAQ9D,MAAM,WAAW,YAAY;IAC3B,mBAAmB;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,mBAAmB;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEtF,MAAM,WAAW,WAAW;IAC1B,qBAAqB;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACvC;AAED,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qBAAqB;IACrB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,qBAAqB;IACrB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,mBAAmB;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,iCAAiC;IACjC,SAAS,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7C,6BAA6B;IAC7B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,iCAAiC;IACjC,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC;IAC1B,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oBAAoB;IACpB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7D;AAwGD,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;CAAG;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,KAAK,CAqH1D"}
@@ -0,0 +1,205 @@
1
+ /**
2
+ * ScatterPlot - Two-dimensional scatter plot for correlation analysis
3
+ *
4
+ * Features:
5
+ * - X/Y coordinate plotting
6
+ * - Configurable marker styles
7
+ * - Color by value or category
8
+ * - Size scaling for third dimension
9
+ * - Legend with distinct marker styles
10
+ * - Interactive tooltips and selection
11
+ */
12
+ import { Box, Text } from '../../primitives/nodes.js';
13
+ import { getRenderMode } from '../../core/capabilities.js';
14
+ // =============================================================================
15
+ // Helper Functions
16
+ // =============================================================================
17
+ /**
18
+ * Get marker character for style
19
+ */
20
+ function getMarkerChar(style, useAscii) {
21
+ if (useAscii) {
22
+ switch (style) {
23
+ case 'circle':
24
+ return 'o';
25
+ case 'square':
26
+ return '#';
27
+ case 'diamond':
28
+ return '*';
29
+ case 'plus':
30
+ return '+';
31
+ case 'star':
32
+ return '*';
33
+ case 'cross':
34
+ return 'x';
35
+ default:
36
+ return 'o';
37
+ }
38
+ }
39
+ // Unicode markers
40
+ switch (style) {
41
+ case 'circle':
42
+ return '●';
43
+ case 'square':
44
+ return '■';
45
+ case 'diamond':
46
+ return '◆';
47
+ case 'plus':
48
+ return '✚';
49
+ case 'star':
50
+ return '★';
51
+ case 'cross':
52
+ return '✕';
53
+ default:
54
+ return '●';
55
+ }
56
+ }
57
+ /**
58
+ * Calculate bounds from points
59
+ */
60
+ function calculateBounds(points, xAxis, yAxis) {
61
+ let xMin = Infinity;
62
+ let xMax = -Infinity;
63
+ let yMin = Infinity;
64
+ let yMax = -Infinity;
65
+ let valueMin = Infinity;
66
+ let valueMax = -Infinity;
67
+ for (const p of points) {
68
+ xMin = Math.min(xMin, p.x);
69
+ xMax = Math.max(xMax, p.x);
70
+ yMin = Math.min(yMin, p.y);
71
+ yMax = Math.max(yMax, p.y);
72
+ if (p.value !== undefined) {
73
+ valueMin = Math.min(valueMin, p.value);
74
+ valueMax = Math.max(valueMax, p.value);
75
+ }
76
+ }
77
+ // Apply axis overrides
78
+ if (xAxis?.min !== undefined)
79
+ xMin = xAxis.min;
80
+ if (xAxis?.max !== undefined)
81
+ xMax = xAxis.max;
82
+ if (yAxis?.min !== undefined)
83
+ yMin = yAxis.min;
84
+ if (yAxis?.max !== undefined)
85
+ yMax = yAxis.max;
86
+ // Handle edge cases
87
+ if (!isFinite(xMin))
88
+ xMin = 0;
89
+ if (!isFinite(xMax))
90
+ xMax = 1;
91
+ if (!isFinite(yMin))
92
+ yMin = 0;
93
+ if (!isFinite(yMax))
94
+ yMax = 1;
95
+ if (xMin === xMax)
96
+ xMax = xMin + 1;
97
+ if (yMin === yMax)
98
+ yMax = yMin + 1;
99
+ if (!isFinite(valueMin))
100
+ valueMin = 0;
101
+ if (!isFinite(valueMax))
102
+ valueMax = 1;
103
+ if (valueMin === valueMax)
104
+ valueMax = valueMin + 1;
105
+ return { xMin, xMax, yMin, yMax, valueMin, valueMax };
106
+ }
107
+ /**
108
+ * Format tick value
109
+ */
110
+ function formatTick(value, formatter) {
111
+ if (formatter)
112
+ return formatter(value);
113
+ if (Number.isInteger(value))
114
+ return String(value);
115
+ return value.toFixed(2);
116
+ }
117
+ /**
118
+ * ScatterPlot - Two-dimensional scatter plot
119
+ *
120
+ * @example
121
+ * // Basic scatter plot
122
+ * ScatterPlot({
123
+ * points: [
124
+ * { x: 1, y: 2 },
125
+ * { x: 2, y: 4 },
126
+ * { x: 3, y: 6 },
127
+ * ],
128
+ * width: 50,
129
+ * height: 15,
130
+ * })
131
+ *
132
+ * @example
133
+ * // Scatter plot with color by value
134
+ * ScatterPlot({
135
+ * points: [
136
+ * { x: 1, y: 2, value: 10 },
137
+ * { x: 2, y: 4, value: 20 },
138
+ * ],
139
+ * colorMode: 'value',
140
+ * colorScale: ['blue', 'cyan', 'green', 'yellow', 'red'],
141
+ * })
142
+ */
143
+ export function ScatterPlot(props) {
144
+ const { points, width = 60, height = 15, xAxis = {}, yAxis = {}, markerStyle = 'circle', colorMode = 'uniform', color = 'cyan', colorScale = ['blue', 'cyan', 'green', 'yellow', 'red'], title, showLegend = false, } = props;
145
+ const isAscii = getRenderMode() === 'ascii';
146
+ const marker = getMarkerChar(markerStyle, isAscii);
147
+ if (points.length === 0) {
148
+ return Text({ color: 'gray', dim: true }, 'No data');
149
+ }
150
+ const bounds = calculateBounds(points, xAxis, yAxis);
151
+ // Build grid (ASCII mode for now)
152
+ const grid = Array(height)
153
+ .fill(null)
154
+ .map(() => Array(width).fill(' '));
155
+ // Plot points
156
+ for (const point of points) {
157
+ const x = Math.round(((point.x - bounds.xMin) / (bounds.xMax - bounds.xMin)) * (width - 1));
158
+ const y = Math.round(((point.y - bounds.yMin) / (bounds.yMax - bounds.yMin)) * (height - 1));
159
+ if (x >= 0 && x < width && y >= 0 && y < height) {
160
+ grid[height - 1 - y][x] = marker;
161
+ }
162
+ }
163
+ // Render grid
164
+ const chartRows = [];
165
+ for (let y = 0; y < height; y++) {
166
+ const rowStr = grid[y].join('');
167
+ // Determine row color based on color mode
168
+ let rowColor = color;
169
+ if (colorMode === 'value' && colorScale.length > 0) {
170
+ rowColor = colorScale[0];
171
+ }
172
+ chartRows.push(Text({ color: rowColor }, rowStr));
173
+ }
174
+ // Build Y-axis labels
175
+ const yTicks = yAxis.ticks ?? 5;
176
+ const yLabels = [];
177
+ for (let i = 0; i <= yTicks; i++) {
178
+ const value = bounds.yMax - (i / yTicks) * (bounds.yMax - bounds.yMin);
179
+ const label = formatTick(value, yAxis.formatter);
180
+ if (i === 0 || i === yTicks || i === Math.floor(yTicks / 2)) {
181
+ yLabels.push(Box({ height: Math.round(height / yTicks) }, Text({ color: 'gray', dim: true }, label.padStart(6))));
182
+ }
183
+ }
184
+ // Build X-axis labels
185
+ const xTicks = xAxis.ticks ?? 5;
186
+ const xLabels = [];
187
+ for (let i = 0; i <= xTicks; i++) {
188
+ const value = bounds.xMin + (i / xTicks) * (bounds.xMax - bounds.xMin);
189
+ const label = formatTick(value, xAxis.formatter);
190
+ const spacing = Math.floor(width / xTicks);
191
+ xLabels.push(Box({ width: spacing }, Text({ color: 'gray', dim: true }, label.padStart(spacing))));
192
+ }
193
+ // Assemble chart
194
+ const chartWithYAxis = Box({ flexDirection: 'row' }, yAxis.show !== false ? Box({ flexDirection: 'column' }, ...yLabels.slice(0, 3)) : null, Box({ flexDirection: 'column' }, ...chartRows));
195
+ const parts = [];
196
+ if (title) {
197
+ parts.push(Box({ marginBottom: 1 }, Text({ color: 'white', bold: true }, title)));
198
+ }
199
+ parts.push(chartWithYAxis);
200
+ if (xAxis.show !== false) {
201
+ parts.push(Box({ flexDirection: 'row', marginLeft: yAxis.show !== false ? 6 : 0 }, ...xLabels));
202
+ }
203
+ return Box({ flexDirection: 'column' }, ...parts);
204
+ }
205
+ //# sourceMappingURL=scatter-plot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scatter-plot.js","sourceRoot":"","sources":["../../../src/molecules/data-viz/scatter-plot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * TimeHeatmap - Calendar-based heatmap for activity visualization
3
+ *
4
+ * Features:
5
+ * - Day/week/month granularity
6
+ * - Multiple color scales
7
+ * - Date range support
8
+ * - Activity level visualization
9
+ */
10
+ import type { VNode, ColorValue } from '../../utils/types.js';
11
+ export interface TimeHeatmapData {
12
+ /** Date (ISO 8601 or Date) */
13
+ date: Date | string;
14
+ /** Value for color intensity */
15
+ value: number;
16
+ }
17
+ export type TimeGranularity = 'day' | 'week' | 'month';
18
+ export interface TimeHeatmapOptions {
19
+ /** Data points */
20
+ data: TimeHeatmapData[];
21
+ /** Granularity level */
22
+ granularity?: TimeGranularity;
23
+ /** Start date (default: 1 year ago) */
24
+ startDate?: Date | string;
25
+ /** End date (default: today) */
26
+ endDate?: Date | string;
27
+ /** Color scale */
28
+ colorScale?: ColorValue[] | 'greens' | 'blues' | 'reds' | 'heat';
29
+ /** Show legend */
30
+ showLegend?: boolean;
31
+ /** Title */
32
+ title?: string;
33
+ }
34
+ /**
35
+ * TimeHeatmap - Calendar-based activity heatmap
36
+ *
37
+ * @example
38
+ * TimeHeatmap({
39
+ * data: [
40
+ * { date: '2024-01-01', value: 5 },
41
+ * { date: '2024-01-02', value: 10 },
42
+ * ],
43
+ * granularity: 'day',
44
+ * colorScale: 'greens',
45
+ * })
46
+ */
47
+ export declare function TimeHeatmap(props: TimeHeatmapOptions): VNode;
48
+ //# sourceMappingURL=time-heatmap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-heatmap.d.ts","sourceRoot":"","sources":["../../../src/molecules/data-viz/time-heatmap.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAQ9D,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC;IACpB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAEvD,MAAM,WAAW,kBAAkB;IACjC,kBAAkB;IAClB,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,wBAAwB;IACxB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,uCAAuC;IACvC,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAC1B,gCAAgC;IAChC,OAAO,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACxB,kBAAkB;IAClB,UAAU,CAAC,EAAE,UAAU,EAAE,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACjE,kBAAkB;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA4ED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,kBAAkB,GAAG,KAAK,CAsF5D"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * TimeHeatmap - Calendar-based heatmap for activity visualization
3
+ *
4
+ * Features:
5
+ * - Day/week/month granularity
6
+ * - Multiple color scales
7
+ * - Date range support
8
+ * - Activity level visualization
9
+ */
10
+ import { Box, Text } from '../../primitives/nodes.js';
11
+ import { getRenderMode } from '../../core/capabilities.js';
12
+ // =============================================================================
13
+ // Helper Functions
14
+ // =============================================================================
15
+ /**
16
+ * Parse date
17
+ */
18
+ function parseDate(date) {
19
+ return typeof date === 'string' ? new Date(date) : date;
20
+ }
21
+ /**
22
+ * Get date range start of period
23
+ */
24
+ function getPeriodStart(date, granularity) {
25
+ const d = new Date(date);
26
+ switch (granularity) {
27
+ case 'day':
28
+ return d;
29
+ case 'week': {
30
+ const day = d.getDay();
31
+ d.setDate(d.getDate() - day);
32
+ return d;
33
+ }
34
+ case 'month': {
35
+ d.setDate(1);
36
+ return d;
37
+ }
38
+ }
39
+ }
40
+ /**
41
+ * Format date for display
42
+ */
43
+ function formatDate(date, granularity) {
44
+ const options = granularity === 'day'
45
+ ? { month: 'short', day: 'numeric' }
46
+ : granularity === 'week'
47
+ ? { month: 'short', day: 'numeric' }
48
+ : { month: 'short', year: '2-digit' };
49
+ return new Intl.DateTimeFormat('en', options).format(date);
50
+ }
51
+ /**
52
+ * Get color scales
53
+ */
54
+ function getColorScale(scale) {
55
+ if (!scale)
56
+ return ['#161b22', '#0e4429', '#006d32', '#26a641', '#39d353']; // greens
57
+ if (typeof scale === 'string') {
58
+ switch (scale) {
59
+ case 'greens':
60
+ return ['#161b22', '#0e4429', '#006d32', '#26a641', '#39d353'];
61
+ case 'blues':
62
+ return ['#161b22', '#0a3069', '#0969da', '#54aeff', '#79c0ff'];
63
+ case 'reds':
64
+ return ['#161b22', '#67060c', '#a61e4d', '#da3633', '#f85149'];
65
+ case 'heat':
66
+ return ['blue', 'cyan', 'green', 'yellow', 'red'];
67
+ default:
68
+ return ['#161b22', '#0e4429', '#006d32', '#26a641', '#39d353'];
69
+ }
70
+ }
71
+ return scale;
72
+ }
73
+ // =============================================================================
74
+ // Component
75
+ // =============================================================================
76
+ /**
77
+ * TimeHeatmap - Calendar-based activity heatmap
78
+ *
79
+ * @example
80
+ * TimeHeatmap({
81
+ * data: [
82
+ * { date: '2024-01-01', value: 5 },
83
+ * { date: '2024-01-02', value: 10 },
84
+ * ],
85
+ * granularity: 'day',
86
+ * colorScale: 'greens',
87
+ * })
88
+ */
89
+ export function TimeHeatmap(props) {
90
+ const { data, granularity = 'day', startDate: customStart, endDate: customEnd, colorScale = 'greens', showLegend = true, title, } = props;
91
+ const isAscii = getRenderMode() === 'ascii';
92
+ const colors = getColorScale(colorScale);
93
+ const INTENSITY_BLOCKS = [' ', '░', '▒', '▓', '█'];
94
+ const ASCII_INTENSITY = [' ', '.', ':', '+', '#'];
95
+ const intensityChars = isAscii ? ASCII_INTENSITY : INTENSITY_BLOCKS;
96
+ if (data.length === 0) {
97
+ return Text({ color: 'gray', dim: true }, 'No data');
98
+ }
99
+ // Build data map
100
+ const dataMap = new Map();
101
+ let maxValue = 0;
102
+ for (const item of data) {
103
+ const d = parseDate(item.date);
104
+ const periodStart = getPeriodStart(d, granularity);
105
+ const key = periodStart.toISOString().split('T')[0];
106
+ const existing = dataMap.get(key) ?? 0;
107
+ const newValue = existing + item.value;
108
+ dataMap.set(key, newValue);
109
+ maxValue = Math.max(maxValue, newValue);
110
+ }
111
+ // Build display
112
+ const displayLines = [];
113
+ if (title) {
114
+ displayLines.push(Box({ marginBottom: 1 }, Text({ color: 'white', bold: true }, title)));
115
+ }
116
+ // Date labels and values
117
+ const rows = [];
118
+ const sortedDates = Array.from(dataMap.entries())
119
+ .sort((a, b) => a[0].localeCompare(b[0]))
120
+ .slice(0, 12); // Limit to 12 rows
121
+ for (const [dateStr, value] of sortedDates) {
122
+ const date = new Date(dateStr + 'T00:00:00');
123
+ const label = formatDate(date, granularity);
124
+ const normalized = maxValue > 0 ? value / maxValue : 0;
125
+ const colorIdx = Math.floor(normalized * (colors.length - 1));
126
+ const intensity = intensityChars[Math.floor(normalized * (intensityChars.length - 1))];
127
+ const color = colors[colorIdx] ?? colors[colors.length - 1];
128
+ const rowItems = [];
129
+ rowItems.push(Text({ color: 'gray', dim: true }, label.padEnd(12)));
130
+ rowItems.push(Text({ color }, intensity.repeat(5) + ` ${value}`));
131
+ rows.push(Box({ flexDirection: 'row', gap: 1 }, ...rowItems));
132
+ }
133
+ displayLines.push(Box({ flexDirection: 'column' }, ...rows));
134
+ // Legend
135
+ if (showLegend) {
136
+ const legendItems = [Text({ color: 'gray', dim: true }, 'Low ')];
137
+ for (const color of colors) {
138
+ legendItems.push(Text({ color }, '█'));
139
+ }
140
+ legendItems.push(Text({ color: 'gray', dim: true }, ' High'));
141
+ displayLines.push(Box({ flexDirection: 'row', gap: 1, marginTop: 1 }, ...legendItems));
142
+ }
143
+ return Box({ flexDirection: 'column' }, ...displayLines);
144
+ }
145
+ //# sourceMappingURL=time-heatmap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time-heatmap.js","sourceRoot":"","sources":["../../../src/molecules/data-viz/time-heatmap.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@
16
16
  * - Descriptions and hints
17
17
  */
18
18
  import type { VNode } from '../utils/types.js';
19
+ import { type Key } from '../hooks/index.js';
19
20
  export interface SelectItem<T = any> {
20
21
  /** Unique value */
21
22
  value: T;
@@ -92,6 +93,7 @@ export declare function createSelect<T = any>(options: SelectOptions<T>): {
92
93
  moveUp: () => void;
93
94
  moveDown: () => void;
94
95
  selectIndex: (index: number) => void;
96
+ handleInput: (input: string, key: Key) => void;
95
97
  };
96
98
  /**
97
99
  * Render a select component
@@ -1 +1 @@
1
- {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/molecules/select.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/molecules/select.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAY,KAAK,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAIvD,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,GAAG;IACjC,mBAAmB;IACnB,KAAK,EAAE,CAAC,CAAC;IACT,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,GAAG;IACpC,2BAA2B;IAC3B,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;IACvB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kCAAkC;IAClC,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IACvB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6BAA6B;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uBAAuB;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kCAAkC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gCAAgC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kCAAkC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0BAA0B;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0BAA0B;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sBAAsB;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC;IACpC,wBAAwB;IACxB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC;IACpC,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC;IACrC,qCAAqC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;;;;;;4BAoChC,UAAU,CAAC,CAAC,CAAC,EAAE;2BAUhB;QAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;;;;;;yBA+N9C,MAAM;yBA9HN,MAAM,OAAO,GAAG;EA4K7C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,GAAG,GAAG,EAClC,KAAK,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,EACzC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GACxB,KAAK,CA+KP;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,KAAK,CAGhE;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,KAAK,CA8BR;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,KAAK,CAEpF"}
@@ -258,10 +258,8 @@ export function createSelect(options) {
258
258
  updateSearch(input);
259
259
  }
260
260
  };
261
- // Register input handler
262
- // Note: We always register and check isActive dynamically in handleInput
261
+ // handleInput is exposed to be registered during render phase
263
262
  // This allows isActive to be a reactive getter function
264
- useInput(handleInput);
265
263
  // Select specific index (for mouse clicks)
266
264
  const selectIndex = (index) => {
267
265
  const filtered = getFilteredItems();
@@ -307,6 +305,7 @@ export function createSelect(options) {
307
305
  moveUp,
308
306
  moveDown,
309
307
  selectIndex,
308
+ handleInput, // Expose handler to be registered during render
310
309
  };
311
310
  }
312
311
  /**
@@ -316,6 +315,8 @@ export function renderSelect(state, options) {
316
315
  const chars = getChars();
317
316
  const isAscii = getRenderMode() === 'ascii';
318
317
  const { multiple = false, cursorIndicator = chars.arrows.right, selectedIndicator = chars.radio.selected, checkedIndicator = chars.checkbox.checked, uncheckedIndicator = chars.checkbox.unchecked, activeColor = themeColor('info'), selectedColor = themeColor('success'), disabledColor = themeColor('mutedForeground'), showCount = true, searchable = false, searchPlaceholder = 'Type to search...', fullWidth = false, } = options;
318
+ // Register input handler during render phase
319
+ useInput(state.handleInput);
319
320
  const { items: visibleItems, startIndex } = state.getVisibleItems();
320
321
  const filtered = state.getFilteredItems();
321
322
  const selected = state.selected();