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,153 @@
1
+ /**
2
+ * Hotkey System for Tuiuiu
3
+ *
4
+ * Provides keyboard shortcut handling for terminal applications.
5
+ * Inspired by hotkeys-js but adapted for terminal raw input.
6
+ *
7
+ * ## Quick Start
8
+ *
9
+ * ```typescript
10
+ * import { useHotkeys } from 'tuiuiu';
11
+ *
12
+ * function MyComponent() {
13
+ * // Simple hotkey
14
+ * useHotkeys('ctrl+s', () => save());
15
+ *
16
+ * // Multiple bindings (cross-platform)
17
+ * useHotkeys(['ctrl+z', 'cmd+z'], () => undo());
18
+ *
19
+ * // With scope (only active when scope matches)
20
+ * useHotkeys('escape', () => closeModal(), { scope: 'modal' });
21
+ *
22
+ * return Box({}, Text({}, 'Press Ctrl+S to save'));
23
+ * }
24
+ * ```
25
+ *
26
+ * ## Standalone Registration (outside components)
27
+ *
28
+ * ```typescript
29
+ * import { registerHotkey, setHotkeyScope } from 'tuiuiu';
30
+ *
31
+ * // Register global hotkeys
32
+ * const unregister = registerHotkey('ctrl+q', () => process.exit(0), {
33
+ * description: 'Quit application',
34
+ * scope: 'global',
35
+ * });
36
+ *
37
+ * // Change scope to enable/disable groups of hotkeys
38
+ * setHotkeyScope('modal'); // Only 'modal' and 'global' hotkeys work
39
+ * setHotkeyScope('global'); // Back to default
40
+ *
41
+ * // Cleanup
42
+ * unregister();
43
+ * ```
44
+ *
45
+ * ## Display Registered Hotkeys
46
+ *
47
+ * ```typescript
48
+ * import { getRegisteredHotkeys, formatHotkeyPlatform } from 'tuiuiu';
49
+ *
50
+ * // Get all registered hotkeys for help screen
51
+ * const hotkeys = getRegisteredHotkeys();
52
+ * hotkeys.forEach(h => console.log(`${h.keys}: ${h.description}`));
53
+ *
54
+ * // Format for display (shows ⌘ on Mac, Ctrl on others)
55
+ * formatHotkeyPlatform('ctrl+s'); // "⌘S" on Mac, "Ctrl+S" on Linux/Windows
56
+ * ```
57
+ *
58
+ * ## Supported Keys
59
+ *
60
+ * **Modifiers:** ctrl, alt, shift, meta, cmd, command, option
61
+ *
62
+ * **Special Keys:** enter, return, escape, esc, tab, space, backspace, delete, del
63
+ *
64
+ * **Navigation:** up, down, left, right, home, end, pageup, pagedown, pgup, pgdn
65
+ *
66
+ * **Function Keys:** f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12
67
+ *
68
+ * **Letters & Numbers:** a-z, 0-9
69
+ */
70
+ import type { Key } from './types.js';
71
+ export interface HotkeyBinding {
72
+ key: string;
73
+ ctrl: boolean;
74
+ alt: boolean;
75
+ shift: boolean;
76
+ meta: boolean;
77
+ }
78
+ export interface HotkeyOptions {
79
+ /** Scope for this hotkey (default: 'global') */
80
+ scope?: string;
81
+ /** Only trigger when input is not focused (default: true) */
82
+ excludeInput?: boolean;
83
+ /** Description for help/display */
84
+ description?: string;
85
+ }
86
+ export type HotkeyHandler = () => void;
87
+ /**
88
+ * Parse a hotkey string like 'ctrl+shift+s' into a binding object
89
+ */
90
+ export declare function parseHotkey(hotkeyStr: string): HotkeyBinding;
91
+ /**
92
+ * Parse multiple hotkey strings (comma or array)
93
+ */
94
+ export declare function parseHotkeys(hotkeys: string | string[]): HotkeyBinding[];
95
+ /**
96
+ * Check if a terminal key event matches a hotkey binding
97
+ */
98
+ export declare function matchesHotkey(input: string, key: Key, binding: HotkeyBinding): boolean;
99
+ /**
100
+ * Get the current active scope
101
+ */
102
+ export declare function getHotkeyScope(): string;
103
+ /**
104
+ * Set the current active scope
105
+ */
106
+ export declare function setHotkeyScope(scope: string): void;
107
+ /**
108
+ * Reset scope to global
109
+ */
110
+ export declare function resetHotkeyScope(): void;
111
+ /**
112
+ * Register a hotkey handler
113
+ */
114
+ export declare function registerHotkey(hotkeys: string | string[], handler: HotkeyHandler, options?: HotkeyOptions): () => void;
115
+ /**
116
+ * Check if a key event matches any registered hotkey and trigger it
117
+ */
118
+ export declare function triggerHotkey(input: string, key: Key): boolean;
119
+ /**
120
+ * Get all registered hotkeys for help display
121
+ */
122
+ export declare function getRegisteredHotkeys(): Array<{
123
+ keys: string;
124
+ description: string;
125
+ scope: string;
126
+ }>;
127
+ /**
128
+ * useHotkeys hook - register keyboard shortcuts in a component
129
+ *
130
+ * @example
131
+ * ```typescript
132
+ * function MyComponent() {
133
+ * useHotkeys('ctrl+s', () => save(), { description: 'Save file' });
134
+ * useHotkeys(['ctrl+z', 'cmd+z'], () => undo());
135
+ * useHotkeys('escape', () => close(), { scope: 'modal' });
136
+ * // ...
137
+ * }
138
+ * ```
139
+ */
140
+ export declare function useHotkeys(hotkeys: string | string[], handler: HotkeyHandler, options?: HotkeyOptions): void;
141
+ /**
142
+ * Format a hotkey for display (e.g., "Ctrl+S")
143
+ */
144
+ export declare function formatHotkey(hotkeyStr: string): string;
145
+ /**
146
+ * Check if running on macOS (for displaying Cmd vs Ctrl)
147
+ */
148
+ export declare function isMac(): boolean;
149
+ /**
150
+ * Format hotkey with platform-aware modifier (Cmd on Mac, Ctrl otherwise)
151
+ */
152
+ export declare function formatHotkeyPlatform(hotkeyStr: string): string;
153
+ //# sourceMappingURL=use-hotkeys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-hotkeys.d.ts","sourceRoot":"","sources":["../../src/hooks/use-hotkeys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AAIH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAMtC,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,gDAAgD;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC;AAuCvC;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,CA4B5D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,aAAa,EAAE,CAMxE;AAMD;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,aAAa,GACrB,OAAO,CA8CT;AAQD;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAElD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAcD;;GAEG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,EAAE,aAAa,EACtB,OAAO,GAAE,aAAkB,GAC1B,MAAM,IAAI,CAqBZ;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAoB9D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,KAAK,CAAC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAgBD;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,OAAO,EAAE,aAAa,EACtB,OAAO,GAAE,aAAkB,GAC1B,IAAI,CAqBN;AAMD;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAiBtD;AAED;;GAEG;AACH,wBAAgB,KAAK,IAAI,OAAO,CAE/B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAM9D"}
@@ -0,0 +1,379 @@
1
+ /**
2
+ * Hotkey System for Tuiuiu
3
+ *
4
+ * Provides keyboard shortcut handling for terminal applications.
5
+ * Inspired by hotkeys-js but adapted for terminal raw input.
6
+ *
7
+ * ## Quick Start
8
+ *
9
+ * ```typescript
10
+ * import { useHotkeys } from 'tuiuiu';
11
+ *
12
+ * function MyComponent() {
13
+ * // Simple hotkey
14
+ * useHotkeys('ctrl+s', () => save());
15
+ *
16
+ * // Multiple bindings (cross-platform)
17
+ * useHotkeys(['ctrl+z', 'cmd+z'], () => undo());
18
+ *
19
+ * // With scope (only active when scope matches)
20
+ * useHotkeys('escape', () => closeModal(), { scope: 'modal' });
21
+ *
22
+ * return Box({}, Text({}, 'Press Ctrl+S to save'));
23
+ * }
24
+ * ```
25
+ *
26
+ * ## Standalone Registration (outside components)
27
+ *
28
+ * ```typescript
29
+ * import { registerHotkey, setHotkeyScope } from 'tuiuiu';
30
+ *
31
+ * // Register global hotkeys
32
+ * const unregister = registerHotkey('ctrl+q', () => process.exit(0), {
33
+ * description: 'Quit application',
34
+ * scope: 'global',
35
+ * });
36
+ *
37
+ * // Change scope to enable/disable groups of hotkeys
38
+ * setHotkeyScope('modal'); // Only 'modal' and 'global' hotkeys work
39
+ * setHotkeyScope('global'); // Back to default
40
+ *
41
+ * // Cleanup
42
+ * unregister();
43
+ * ```
44
+ *
45
+ * ## Display Registered Hotkeys
46
+ *
47
+ * ```typescript
48
+ * import { getRegisteredHotkeys, formatHotkeyPlatform } from 'tuiuiu';
49
+ *
50
+ * // Get all registered hotkeys for help screen
51
+ * const hotkeys = getRegisteredHotkeys();
52
+ * hotkeys.forEach(h => console.log(`${h.keys}: ${h.description}`));
53
+ *
54
+ * // Format for display (shows ⌘ on Mac, Ctrl on others)
55
+ * formatHotkeyPlatform('ctrl+s'); // "⌘S" on Mac, "Ctrl+S" on Linux/Windows
56
+ * ```
57
+ *
58
+ * ## Supported Keys
59
+ *
60
+ * **Modifiers:** ctrl, alt, shift, meta, cmd, command, option
61
+ *
62
+ * **Special Keys:** enter, return, escape, esc, tab, space, backspace, delete, del
63
+ *
64
+ * **Navigation:** up, down, left, right, home, end, pageup, pagedown, pgup, pgdn
65
+ *
66
+ * **Function Keys:** f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12
67
+ *
68
+ * **Letters & Numbers:** a-z, 0-9
69
+ */
70
+ import { createSignal } from '../core/signal.js';
71
+ import { useInput } from './use-input.js';
72
+ // =============================================================================
73
+ // Key Aliases
74
+ // =============================================================================
75
+ const KEY_ALIASES = {
76
+ // Arrow keys
77
+ up: 'upArrow',
78
+ down: 'downArrow',
79
+ left: 'leftArrow',
80
+ right: 'rightArrow',
81
+ arrowup: 'upArrow',
82
+ arrowdown: 'downArrow',
83
+ arrowleft: 'leftArrow',
84
+ arrowright: 'rightArrow',
85
+ // Special keys
86
+ esc: 'escape',
87
+ return: 'enter',
88
+ space: ' ',
89
+ del: 'delete',
90
+ ins: 'insert',
91
+ pgup: 'pageUp',
92
+ pgdn: 'pageDown',
93
+ pageup: 'pageUp',
94
+ pagedown: 'pageDown',
95
+ // Modifier aliases
96
+ command: 'meta',
97
+ cmd: 'meta',
98
+ option: 'alt',
99
+ control: 'ctrl',
100
+ };
101
+ // =============================================================================
102
+ // Parser
103
+ // =============================================================================
104
+ /**
105
+ * Parse a hotkey string like 'ctrl+shift+s' into a binding object
106
+ */
107
+ export function parseHotkey(hotkeyStr) {
108
+ const parts = hotkeyStr.toLowerCase().split('+').map(p => p.trim());
109
+ const binding = {
110
+ key: '',
111
+ ctrl: false,
112
+ alt: false,
113
+ shift: false,
114
+ meta: false,
115
+ };
116
+ for (const part of parts) {
117
+ // Check for modifiers
118
+ if (part === 'ctrl' || part === 'control') {
119
+ binding.ctrl = true;
120
+ }
121
+ else if (part === 'alt' || part === 'option') {
122
+ binding.alt = true;
123
+ }
124
+ else if (part === 'shift') {
125
+ binding.shift = true;
126
+ }
127
+ else if (part === 'meta' || part === 'cmd' || part === 'command') {
128
+ binding.meta = true;
129
+ }
130
+ else {
131
+ // It's a key - normalize via aliases
132
+ binding.key = KEY_ALIASES[part] || part;
133
+ }
134
+ }
135
+ return binding;
136
+ }
137
+ /**
138
+ * Parse multiple hotkey strings (comma or array)
139
+ */
140
+ export function parseHotkeys(hotkeys) {
141
+ if (Array.isArray(hotkeys)) {
142
+ return hotkeys.map(parseHotkey);
143
+ }
144
+ // Split by comma for multiple bindings
145
+ return hotkeys.split(',').map(h => parseHotkey(h.trim()));
146
+ }
147
+ // =============================================================================
148
+ // Matcher
149
+ // =============================================================================
150
+ /**
151
+ * Check if a terminal key event matches a hotkey binding
152
+ */
153
+ export function matchesHotkey(input, key, binding) {
154
+ // Check modifiers
155
+ if (binding.ctrl !== (key.ctrl ?? false))
156
+ return false;
157
+ if (binding.alt !== (key.meta ?? false))
158
+ return false; // Terminal alt comes as meta
159
+ if (binding.shift !== (key.shift ?? false))
160
+ return false;
161
+ // Note: meta key in terminal is complex, often alt+escape sequence
162
+ // Check key
163
+ const normalizedInput = input.toLowerCase();
164
+ const bindingKey = binding.key;
165
+ // Special key checks
166
+ if (bindingKey === 'upArrow')
167
+ return key.upArrow ?? false;
168
+ if (bindingKey === 'downArrow')
169
+ return key.downArrow ?? false;
170
+ if (bindingKey === 'leftArrow')
171
+ return key.leftArrow ?? false;
172
+ if (bindingKey === 'rightArrow')
173
+ return key.rightArrow ?? false;
174
+ if (bindingKey === 'escape')
175
+ return key.escape ?? false;
176
+ if (bindingKey === 'enter' || bindingKey === 'return')
177
+ return key.return ?? false;
178
+ if (bindingKey === 'tab')
179
+ return key.tab ?? false;
180
+ if (bindingKey === 'backspace')
181
+ return key.backspace ?? false;
182
+ if (bindingKey === 'delete')
183
+ return key.delete ?? false;
184
+ if (bindingKey === 'pageUp')
185
+ return key.pageUp ?? false;
186
+ if (bindingKey === 'pageDown')
187
+ return key.pageDown ?? false;
188
+ if (bindingKey === 'home')
189
+ return key.home ?? false;
190
+ if (bindingKey === 'end')
191
+ return key.end ?? false;
192
+ if (bindingKey === 'insert')
193
+ return key.insert ?? false;
194
+ // F-keys (f1 through f12)
195
+ if (bindingKey.startsWith('f') && /^f\d{1,2}$/.test(bindingKey)) {
196
+ const fNum = parseInt(bindingKey.slice(1), 10);
197
+ const fKey = `f${fNum}`;
198
+ return key[fKey] === true;
199
+ }
200
+ // Regular character match
201
+ // For ctrl+letter, input is often a control character
202
+ if (binding.ctrl && bindingKey.length === 1) {
203
+ // Ctrl+A is \x01, Ctrl+B is \x02, etc.
204
+ const expectedCode = bindingKey.charCodeAt(0) - 96; // 'a' -> 1, 'b' -> 2
205
+ if (expectedCode > 0 && expectedCode < 27) {
206
+ return input.charCodeAt(0) === expectedCode;
207
+ }
208
+ }
209
+ // Direct character match
210
+ return normalizedInput === bindingKey;
211
+ }
212
+ // =============================================================================
213
+ // Scope Management
214
+ // =============================================================================
215
+ const [currentScope, setCurrentScope] = createSignal('global');
216
+ /**
217
+ * Get the current active scope
218
+ */
219
+ export function getHotkeyScope() {
220
+ return currentScope();
221
+ }
222
+ /**
223
+ * Set the current active scope
224
+ */
225
+ export function setHotkeyScope(scope) {
226
+ setCurrentScope(scope);
227
+ }
228
+ /**
229
+ * Reset scope to global
230
+ */
231
+ export function resetHotkeyScope() {
232
+ setCurrentScope('global');
233
+ }
234
+ const hotkeyRegistry = [];
235
+ /**
236
+ * Register a hotkey handler
237
+ */
238
+ export function registerHotkey(hotkeys, handler, options = {}) {
239
+ const bindings = parseHotkeys(hotkeys);
240
+ const entry = {
241
+ bindings,
242
+ handler,
243
+ options: {
244
+ scope: 'global',
245
+ excludeInput: true,
246
+ ...options,
247
+ },
248
+ };
249
+ hotkeyRegistry.push(entry);
250
+ // Return unregister function
251
+ return () => {
252
+ const index = hotkeyRegistry.indexOf(entry);
253
+ if (index > -1) {
254
+ hotkeyRegistry.splice(index, 1);
255
+ }
256
+ };
257
+ }
258
+ /**
259
+ * Check if a key event matches any registered hotkey and trigger it
260
+ */
261
+ export function triggerHotkey(input, key) {
262
+ const scope = currentScope();
263
+ for (const entry of hotkeyRegistry) {
264
+ // Check scope
265
+ const entryScope = entry.options.scope || 'global';
266
+ if (entryScope !== 'global' && entryScope !== scope) {
267
+ continue;
268
+ }
269
+ // Check bindings
270
+ for (const binding of entry.bindings) {
271
+ if (matchesHotkey(input, key, binding)) {
272
+ entry.handler();
273
+ return true; // Hotkey was handled
274
+ }
275
+ }
276
+ }
277
+ return false;
278
+ }
279
+ /**
280
+ * Get all registered hotkeys for help display
281
+ */
282
+ export function getRegisteredHotkeys() {
283
+ return hotkeyRegistry.map(entry => ({
284
+ keys: entry.bindings
285
+ .map(b => {
286
+ const parts = [];
287
+ if (b.ctrl)
288
+ parts.push('Ctrl');
289
+ if (b.alt)
290
+ parts.push('Alt');
291
+ if (b.shift)
292
+ parts.push('Shift');
293
+ if (b.meta)
294
+ parts.push('Cmd');
295
+ parts.push(b.key.charAt(0).toUpperCase() + b.key.slice(1));
296
+ return parts.join('+');
297
+ })
298
+ .join(', '),
299
+ description: entry.options.description || '',
300
+ scope: entry.options.scope || 'global',
301
+ }));
302
+ }
303
+ // =============================================================================
304
+ // Hook
305
+ // =============================================================================
306
+ /**
307
+ * useHotkeys hook - register keyboard shortcuts in a component
308
+ *
309
+ * @example
310
+ * ```typescript
311
+ * function MyComponent() {
312
+ * useHotkeys('ctrl+s', () => save(), { description: 'Save file' });
313
+ * useHotkeys(['ctrl+z', 'cmd+z'], () => undo());
314
+ * useHotkeys('escape', () => close(), { scope: 'modal' });
315
+ * // ...
316
+ * }
317
+ * ```
318
+ */
319
+ export function useHotkeys(hotkeys, handler, options = {}) {
320
+ // Parse the hotkey bindings
321
+ const bindings = parseHotkeys(hotkeys);
322
+ const scope = options.scope || 'global';
323
+ // Use the input hook to listen for key events
324
+ useInput((input, key) => {
325
+ // Check scope
326
+ const activeScope = currentScope();
327
+ if (scope !== 'global' && scope !== activeScope) {
328
+ return;
329
+ }
330
+ // Check each binding
331
+ for (const binding of bindings) {
332
+ if (matchesHotkey(input, key, binding)) {
333
+ handler();
334
+ return;
335
+ }
336
+ }
337
+ });
338
+ }
339
+ // =============================================================================
340
+ // Utility Functions
341
+ // =============================================================================
342
+ /**
343
+ * Format a hotkey for display (e.g., "Ctrl+S")
344
+ */
345
+ export function formatHotkey(hotkeyStr) {
346
+ const binding = parseHotkey(hotkeyStr);
347
+ const parts = [];
348
+ if (binding.ctrl)
349
+ parts.push('Ctrl');
350
+ if (binding.alt)
351
+ parts.push('Alt');
352
+ if (binding.shift)
353
+ parts.push('Shift');
354
+ if (binding.meta)
355
+ parts.push('Cmd');
356
+ // Capitalize the key
357
+ const keyName = binding.key.length === 1
358
+ ? binding.key.toUpperCase()
359
+ : binding.key.charAt(0).toUpperCase() + binding.key.slice(1);
360
+ parts.push(keyName);
361
+ return parts.join('+');
362
+ }
363
+ /**
364
+ * Check if running on macOS (for displaying Cmd vs Ctrl)
365
+ */
366
+ export function isMac() {
367
+ return process.platform === 'darwin';
368
+ }
369
+ /**
370
+ * Format hotkey with platform-aware modifier (Cmd on Mac, Ctrl otherwise)
371
+ */
372
+ export function formatHotkeyPlatform(hotkeyStr) {
373
+ const formatted = formatHotkey(hotkeyStr);
374
+ if (isMac()) {
375
+ return formatted.replace('Ctrl', '⌘').replace('Alt', '⌥').replace('Shift', '⇧');
376
+ }
377
+ return formatted;
378
+ }
379
+ //# sourceMappingURL=use-hotkeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-hotkeys.js","sourceRoot":"","sources":["../../src/hooks/use-hotkeys.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,9 @@
1
1
  /**
2
2
  * useInput - Handle keyboard input
3
3
  */
4
- import type { Key, InputHandler } from './types.js';
4
+ import { parseKeypress, type Key, type InputHandler } from '../core/hotkeys.js';
5
5
  export type { Key, InputHandler };
6
- /**
7
- * Parse raw input data into key info
8
- * Supports multiple terminal types: xterm, gnome, rxvt, putty, cygwin
9
- */
10
- export declare function parseKeypress(data: Buffer | string): {
11
- input: string;
12
- key: Key;
13
- length: number;
14
- };
6
+ export { parseKeypress };
15
7
  /**
16
8
  * useInput - Handle keyboard input
17
9
  *
@@ -1 +1 @@
1
- {"version":3,"file":"use-input.d.ts","sourceRoot":"","sources":["../../src/hooks/use-input.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEpD,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC;AAkFlC;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA2LhG;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,IAAI,CAmD1F"}
1
+ {"version":3,"file":"use-input.d.ts","sourceRoot":"","sources":["../../src/hooks/use-input.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,EAAE,aAAa,EAAE,KAAK,GAAG,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEhF,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,IAAI,CAmD1F"}