termui 0.1.0 → 0.1.2

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 (257) hide show
  1. package/dist/chunk-B2VO7M2O.js +3493 -0
  2. package/dist/chunk-B2VO7M2O.js.map +1 -0
  3. package/dist/chunk-ZZKFZA2U.js +694 -0
  4. package/dist/chunk-ZZKFZA2U.js.map +1 -0
  5. package/dist/components.d.ts +668 -0
  6. package/dist/components.js +130 -0
  7. package/dist/components.js.map +1 -0
  8. package/dist/core.d.ts +144 -0
  9. package/dist/core.js +99 -0
  10. package/dist/core.js.map +1 -0
  11. package/dist/hooks-YADffFjU.d.ts +237 -0
  12. package/dist/hooks.d.ts +3 -0
  13. package/dist/hooks.js +29 -0
  14. package/dist/hooks.js.map +1 -0
  15. package/dist/index.d.ts +6 -0
  16. package/dist/index.js +225 -0
  17. package/dist/index.js.map +1 -0
  18. package/package.json +41 -10
  19. package/packages/cli/package.json +0 -36
  20. package/packages/components/dist/data/List.d.ts +0 -15
  21. package/packages/components/dist/data/List.d.ts.map +0 -1
  22. package/packages/components/dist/data/List.js +0 -40
  23. package/packages/components/dist/data/List.js.map +0 -1
  24. package/packages/components/dist/data/Table.d.ts +0 -17
  25. package/packages/components/dist/data/Table.d.ts.map +0 -1
  26. package/packages/components/dist/data/Table.js +0 -74
  27. package/packages/components/dist/data/Table.js.map +0 -1
  28. package/packages/components/dist/data/index.d.ts +0 -5
  29. package/packages/components/dist/data/index.d.ts.map +0 -1
  30. package/packages/components/dist/data/index.js +0 -3
  31. package/packages/components/dist/data/index.js.map +0 -1
  32. package/packages/components/dist/feedback/Alert.d.ts +0 -10
  33. package/packages/components/dist/feedback/Alert.d.ts.map +0 -1
  34. package/packages/components/dist/feedback/Alert.js +0 -23
  35. package/packages/components/dist/feedback/Alert.js.map +0 -1
  36. package/packages/components/dist/feedback/ProgressBar.d.ts +0 -13
  37. package/packages/components/dist/feedback/ProgressBar.d.ts.map +0 -1
  38. package/packages/components/dist/feedback/ProgressBar.js +0 -13
  39. package/packages/components/dist/feedback/ProgressBar.js.map +0 -1
  40. package/packages/components/dist/feedback/Spinner.d.ts +0 -9
  41. package/packages/components/dist/feedback/Spinner.d.ts.map +0 -1
  42. package/packages/components/dist/feedback/Spinner.js +0 -26
  43. package/packages/components/dist/feedback/Spinner.js.map +0 -1
  44. package/packages/components/dist/feedback/index.d.ts +0 -7
  45. package/packages/components/dist/feedback/index.d.ts.map +0 -1
  46. package/packages/components/dist/feedback/index.js +0 -4
  47. package/packages/components/dist/feedback/index.js.map +0 -1
  48. package/packages/components/dist/forms/Form.d.ts +0 -22
  49. package/packages/components/dist/forms/Form.d.ts.map +0 -1
  50. package/packages/components/dist/forms/Form.js +0 -45
  51. package/packages/components/dist/forms/Form.js.map +0 -1
  52. package/packages/components/dist/forms/index.d.ts +0 -3
  53. package/packages/components/dist/forms/index.d.ts.map +0 -1
  54. package/packages/components/dist/forms/index.js +0 -2
  55. package/packages/components/dist/forms/index.js.map +0 -1
  56. package/packages/components/dist/index.d.ts +0 -11
  57. package/packages/components/dist/index.d.ts.map +0 -1
  58. package/packages/components/dist/index.js +0 -21
  59. package/packages/components/dist/index.js.map +0 -1
  60. package/packages/components/dist/input/TextInput.d.ts +0 -14
  61. package/packages/components/dist/input/TextInput.d.ts.map +0 -1
  62. package/packages/components/dist/input/TextInput.js +0 -44
  63. package/packages/components/dist/input/TextInput.js.map +0 -1
  64. package/packages/components/dist/input/index.d.ts +0 -3
  65. package/packages/components/dist/input/index.d.ts.map +0 -1
  66. package/packages/components/dist/input/index.js +0 -2
  67. package/packages/components/dist/input/index.js.map +0 -1
  68. package/packages/components/dist/layout/Box.d.ts +0 -11
  69. package/packages/components/dist/layout/Box.d.ts.map +0 -1
  70. package/packages/components/dist/layout/Box.js +0 -18
  71. package/packages/components/dist/layout/Box.js.map +0 -1
  72. package/packages/components/dist/layout/Grid.d.ts +0 -8
  73. package/packages/components/dist/layout/Grid.d.ts.map +0 -1
  74. package/packages/components/dist/layout/Grid.js +0 -12
  75. package/packages/components/dist/layout/Grid.js.map +0 -1
  76. package/packages/components/dist/layout/ScrollView.d.ts +0 -9
  77. package/packages/components/dist/layout/ScrollView.d.ts.map +0 -1
  78. package/packages/components/dist/layout/ScrollView.js +0 -26
  79. package/packages/components/dist/layout/ScrollView.js.map +0 -1
  80. package/packages/components/dist/layout/Stack.d.ts +0 -12
  81. package/packages/components/dist/layout/Stack.d.ts.map +0 -1
  82. package/packages/components/dist/layout/Stack.js +0 -6
  83. package/packages/components/dist/layout/Stack.js.map +0 -1
  84. package/packages/components/dist/layout/index.d.ts +0 -9
  85. package/packages/components/dist/layout/index.d.ts.map +0 -1
  86. package/packages/components/dist/layout/index.js +0 -5
  87. package/packages/components/dist/layout/index.js.map +0 -1
  88. package/packages/components/dist/navigation/Tabs.d.ts +0 -15
  89. package/packages/components/dist/navigation/Tabs.d.ts.map +0 -1
  90. package/packages/components/dist/navigation/Tabs.js +0 -34
  91. package/packages/components/dist/navigation/Tabs.js.map +0 -1
  92. package/packages/components/dist/navigation/index.d.ts +0 -3
  93. package/packages/components/dist/navigation/index.d.ts.map +0 -1
  94. package/packages/components/dist/navigation/index.js +0 -2
  95. package/packages/components/dist/navigation/index.js.map +0 -1
  96. package/packages/components/dist/overlays/Modal.d.ts +0 -10
  97. package/packages/components/dist/overlays/Modal.d.ts.map +0 -1
  98. package/packages/components/dist/overlays/Modal.js +0 -16
  99. package/packages/components/dist/overlays/Modal.js.map +0 -1
  100. package/packages/components/dist/overlays/index.d.ts +0 -3
  101. package/packages/components/dist/overlays/index.d.ts.map +0 -1
  102. package/packages/components/dist/overlays/index.js +0 -2
  103. package/packages/components/dist/overlays/index.js.map +0 -1
  104. package/packages/components/dist/selection/Checkbox.d.ts +0 -10
  105. package/packages/components/dist/selection/Checkbox.d.ts.map +0 -1
  106. package/packages/components/dist/selection/Checkbox.js +0 -26
  107. package/packages/components/dist/selection/Checkbox.js.map +0 -1
  108. package/packages/components/dist/selection/Select.d.ts +0 -17
  109. package/packages/components/dist/selection/Select.d.ts.map +0 -1
  110. package/packages/components/dist/selection/Select.js +0 -44
  111. package/packages/components/dist/selection/Select.js.map +0 -1
  112. package/packages/components/dist/selection/index.d.ts +0 -5
  113. package/packages/components/dist/selection/index.d.ts.map +0 -1
  114. package/packages/components/dist/selection/index.js +0 -3
  115. package/packages/components/dist/selection/index.js.map +0 -1
  116. package/packages/components/dist/typography/Badge.d.ts +0 -9
  117. package/packages/components/dist/typography/Badge.d.ts.map +0 -1
  118. package/packages/components/dist/typography/Badge.js +0 -18
  119. package/packages/components/dist/typography/Badge.js.map +0 -1
  120. package/packages/components/dist/typography/Text.d.ts +0 -15
  121. package/packages/components/dist/typography/Text.d.ts.map +0 -1
  122. package/packages/components/dist/typography/Text.js +0 -6
  123. package/packages/components/dist/typography/Text.js.map +0 -1
  124. package/packages/components/dist/typography/index.d.ts +0 -5
  125. package/packages/components/dist/typography/index.d.ts.map +0 -1
  126. package/packages/components/dist/typography/index.js +0 -3
  127. package/packages/components/dist/typography/index.js.map +0 -1
  128. package/packages/components/dist/utility/Panel.d.ts +0 -14
  129. package/packages/components/dist/utility/Panel.d.ts.map +0 -1
  130. package/packages/components/dist/utility/Panel.js +0 -8
  131. package/packages/components/dist/utility/Panel.js.map +0 -1
  132. package/packages/components/dist/utility/Toggle.d.ts +0 -11
  133. package/packages/components/dist/utility/Toggle.d.ts.map +0 -1
  134. package/packages/components/dist/utility/Toggle.js +0 -23
  135. package/packages/components/dist/utility/Toggle.js.map +0 -1
  136. package/packages/components/dist/utility/index.d.ts +0 -5
  137. package/packages/components/dist/utility/index.d.ts.map +0 -1
  138. package/packages/components/dist/utility/index.js +0 -3
  139. package/packages/components/dist/utility/index.js.map +0 -1
  140. package/packages/components/package.json +0 -36
  141. package/packages/core/dist/hooks/index.d.ts +0 -18
  142. package/packages/core/dist/hooks/index.d.ts.map +0 -1
  143. package/packages/core/dist/hooks/index.js +0 -13
  144. package/packages/core/dist/hooks/index.js.map +0 -1
  145. package/packages/core/dist/hooks/useAnimation.d.ts +0 -7
  146. package/packages/core/dist/hooks/useAnimation.d.ts.map +0 -1
  147. package/packages/core/dist/hooks/useAnimation.js +0 -40
  148. package/packages/core/dist/hooks/useAnimation.js.map +0 -1
  149. package/packages/core/dist/hooks/useAsync.d.ts +0 -25
  150. package/packages/core/dist/hooks/useAsync.d.ts.map +0 -1
  151. package/packages/core/dist/hooks/useAsync.js +0 -37
  152. package/packages/core/dist/hooks/useAsync.js.map +0 -1
  153. package/packages/core/dist/hooks/useClipboard.d.ts +0 -9
  154. package/packages/core/dist/hooks/useClipboard.d.ts.map +0 -1
  155. package/packages/core/dist/hooks/useClipboard.js +0 -14
  156. package/packages/core/dist/hooks/useClipboard.js.map +0 -1
  157. package/packages/core/dist/hooks/useFocus.d.ts +0 -10
  158. package/packages/core/dist/hooks/useFocus.d.ts.map +0 -1
  159. package/packages/core/dist/hooks/useFocus.js +0 -6
  160. package/packages/core/dist/hooks/useFocus.js.map +0 -1
  161. package/packages/core/dist/hooks/useFocusManager.d.ts +0 -9
  162. package/packages/core/dist/hooks/useFocusManager.d.ts.map +0 -1
  163. package/packages/core/dist/hooks/useFocusManager.js +0 -6
  164. package/packages/core/dist/hooks/useFocusManager.js.map +0 -1
  165. package/packages/core/dist/hooks/useInput.d.ts +0 -22
  166. package/packages/core/dist/hooks/useInput.d.ts.map +0 -1
  167. package/packages/core/dist/hooks/useInput.js +0 -6
  168. package/packages/core/dist/hooks/useInput.js.map +0 -1
  169. package/packages/core/dist/hooks/useInterval.d.ts +0 -6
  170. package/packages/core/dist/hooks/useInterval.d.ts.map +0 -1
  171. package/packages/core/dist/hooks/useInterval.js +0 -18
  172. package/packages/core/dist/hooks/useInterval.js.map +0 -1
  173. package/packages/core/dist/hooks/useKeymap.d.ts +0 -13
  174. package/packages/core/dist/hooks/useKeymap.d.ts.map +0 -1
  175. package/packages/core/dist/hooks/useKeymap.js +0 -36
  176. package/packages/core/dist/hooks/useKeymap.js.map +0 -1
  177. package/packages/core/dist/hooks/useMouse.d.ts +0 -19
  178. package/packages/core/dist/hooks/useMouse.d.ts.map +0 -1
  179. package/packages/core/dist/hooks/useMouse.js +0 -60
  180. package/packages/core/dist/hooks/useMouse.js.map +0 -1
  181. package/packages/core/dist/hooks/useResize.d.ts +0 -7
  182. package/packages/core/dist/hooks/useResize.d.ts.map +0 -1
  183. package/packages/core/dist/hooks/useResize.js +0 -27
  184. package/packages/core/dist/hooks/useResize.js.map +0 -1
  185. package/packages/core/dist/hooks/useTerminal.d.ts +0 -4
  186. package/packages/core/dist/hooks/useTerminal.d.ts.map +0 -1
  187. package/packages/core/dist/hooks/useTerminal.js +0 -17
  188. package/packages/core/dist/hooks/useTerminal.js.map +0 -1
  189. package/packages/core/dist/hooks/useTheme.d.ts +0 -2
  190. package/packages/core/dist/hooks/useTheme.d.ts.map +0 -1
  191. package/packages/core/dist/hooks/useTheme.js +0 -3
  192. package/packages/core/dist/hooks/useTheme.js.map +0 -1
  193. package/packages/core/dist/index.d.ts +0 -4
  194. package/packages/core/dist/index.d.ts.map +0 -1
  195. package/packages/core/dist/index.js +0 -7
  196. package/packages/core/dist/index.js.map +0 -1
  197. package/packages/core/dist/styling/ThemeProvider.d.ts +0 -15
  198. package/packages/core/dist/styling/ThemeProvider.d.ts.map +0 -1
  199. package/packages/core/dist/styling/ThemeProvider.js +0 -44
  200. package/packages/core/dist/styling/ThemeProvider.js.map +0 -1
  201. package/packages/core/dist/styling/index.d.ts +0 -7
  202. package/packages/core/dist/styling/index.d.ts.map +0 -1
  203. package/packages/core/dist/styling/index.js +0 -7
  204. package/packages/core/dist/styling/index.js.map +0 -1
  205. package/packages/core/dist/styling/style.d.ts +0 -25
  206. package/packages/core/dist/styling/style.d.ts.map +0 -1
  207. package/packages/core/dist/styling/style.js +0 -57
  208. package/packages/core/dist/styling/style.js.map +0 -1
  209. package/packages/core/dist/styling/themes/default.d.ts +0 -3
  210. package/packages/core/dist/styling/themes/default.d.ts.map +0 -1
  211. package/packages/core/dist/styling/themes/default.js +0 -49
  212. package/packages/core/dist/styling/themes/default.js.map +0 -1
  213. package/packages/core/dist/styling/themes/dracula.d.ts +0 -3
  214. package/packages/core/dist/styling/themes/dracula.d.ts.map +0 -1
  215. package/packages/core/dist/styling/themes/dracula.js +0 -49
  216. package/packages/core/dist/styling/themes/dracula.js.map +0 -1
  217. package/packages/core/dist/styling/themes/nord.d.ts +0 -3
  218. package/packages/core/dist/styling/themes/nord.d.ts.map +0 -1
  219. package/packages/core/dist/styling/themes/nord.js +0 -49
  220. package/packages/core/dist/styling/themes/nord.js.map +0 -1
  221. package/packages/core/dist/styling/tokens.d.ts +0 -57
  222. package/packages/core/dist/styling/tokens.d.ts.map +0 -1
  223. package/packages/core/dist/styling/tokens.js +0 -6
  224. package/packages/core/dist/styling/tokens.js.map +0 -1
  225. package/packages/core/dist/terminal/ansi.d.ts +0 -107
  226. package/packages/core/dist/terminal/ansi.d.ts.map +0 -1
  227. package/packages/core/dist/terminal/ansi.js +0 -153
  228. package/packages/core/dist/terminal/ansi.js.map +0 -1
  229. package/packages/core/dist/terminal/capabilities.d.ts +0 -21
  230. package/packages/core/dist/terminal/capabilities.d.ts.map +0 -1
  231. package/packages/core/dist/terminal/capabilities.js +0 -74
  232. package/packages/core/dist/terminal/capabilities.js.map +0 -1
  233. package/packages/core/dist/terminal/index.d.ts +0 -3
  234. package/packages/core/dist/terminal/index.d.ts.map +0 -1
  235. package/packages/core/dist/terminal/index.js +0 -3
  236. package/packages/core/dist/terminal/index.js.map +0 -1
  237. package/packages/core/package.json +0 -49
  238. package/registry/components/alert/meta.json +0 -9
  239. package/registry/components/badge/meta.json +0 -9
  240. package/registry/components/box/meta.json +0 -9
  241. package/registry/components/checkbox/meta.json +0 -9
  242. package/registry/components/form/meta.json +0 -9
  243. package/registry/components/grid/meta.json +0 -9
  244. package/registry/components/list/meta.json +0 -9
  245. package/registry/components/modal/meta.json +0 -9
  246. package/registry/components/panel/meta.json +0 -9
  247. package/registry/components/progress-bar/meta.json +0 -9
  248. package/registry/components/scroll-view/meta.json +0 -9
  249. package/registry/components/select/meta.json +0 -9
  250. package/registry/components/spinner/meta.json +0 -9
  251. package/registry/components/stack/meta.json +0 -9
  252. package/registry/components/table/meta.json +0 -9
  253. package/registry/components/tabs/meta.json +0 -9
  254. package/registry/components/text/meta.json +0 -9
  255. package/registry/components/text-input/meta.json +0 -9
  256. package/registry/components/toggle/meta.json +0 -9
  257. package/registry/schema.json +0 -178
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../packages/core/src/terminal/ansi.ts","../packages/core/src/terminal/capabilities.ts","../packages/core/src/styling/themes/default.ts","../packages/core/src/styling/ThemeProvider.tsx","../packages/core/src/styling/style.ts","../packages/core/src/styling/themes/dracula.ts","../packages/core/src/styling/themes/nord.ts","../packages/core/src/hooks/useInput.ts","../packages/core/src/hooks/useFocus.ts","../packages/core/src/hooks/useFocusManager.ts","../packages/core/src/hooks/useTerminal.ts","../packages/core/src/hooks/useAnimation.ts","../packages/core/src/hooks/useInterval.ts","../packages/core/src/hooks/useClipboard.ts","../packages/core/src/hooks/useKeymap.ts","../packages/core/src/hooks/useMouse.ts","../packages/core/src/hooks/useResize.ts","../packages/core/src/hooks/useAsync.ts"],"sourcesContent":["/**\n * ANSI escape code utilities for terminal output.\n * Covers: colors, styles, cursor movement, screen control.\n */\n\n// ESC character\nconst ESC = '\\x1b';\n\n// Reset\nexport const reset = `${ESC}[0m`;\n\n// Text styles\nexport const bold = `${ESC}[1m`;\nexport const dim = `${ESC}[2m`;\nexport const italic = `${ESC}[3m`;\nexport const underline = `${ESC}[4m`;\nexport const blink = `${ESC}[5m`;\nexport const inverse = `${ESC}[7m`;\nexport const hidden = `${ESC}[8m`;\nexport const strikethrough = `${ESC}[9m`;\n\n// Standard foreground colors (30–37)\nexport const fg = {\n black: `${ESC}[30m`,\n red: `${ESC}[31m`,\n green: `${ESC}[32m`,\n yellow: `${ESC}[33m`,\n blue: `${ESC}[34m`,\n magenta: `${ESC}[35m`,\n cyan: `${ESC}[36m`,\n white: `${ESC}[37m`,\n default: `${ESC}[39m`,\n // Bright variants (90–97)\n brightBlack: `${ESC}[90m`,\n brightRed: `${ESC}[91m`,\n brightGreen: `${ESC}[92m`,\n brightYellow: `${ESC}[93m`,\n brightBlue: `${ESC}[94m`,\n brightMagenta: `${ESC}[95m`,\n brightCyan: `${ESC}[96m`,\n brightWhite: `${ESC}[97m`,\n} as const;\n\n// Standard background colors (40–47)\nexport const bg = {\n black: `${ESC}[40m`,\n red: `${ESC}[41m`,\n green: `${ESC}[42m`,\n yellow: `${ESC}[43m`,\n blue: `${ESC}[44m`,\n magenta: `${ESC}[45m`,\n cyan: `${ESC}[46m`,\n white: `${ESC}[47m`,\n default: `${ESC}[49m`,\n // Bright backgrounds\n brightBlack: `${ESC}[100m`,\n brightRed: `${ESC}[101m`,\n brightGreen: `${ESC}[102m`,\n brightYellow: `${ESC}[103m`,\n brightBlue: `${ESC}[104m`,\n brightMagenta: `${ESC}[105m`,\n brightCyan: `${ESC}[106m`,\n brightWhite: `${ESC}[107m`,\n} as const;\n\n/** 256-color foreground: \\x1b[38;5;<n>m */\nexport function fg256(n: number): string {\n return `${ESC}[38;5;${n}m`;\n}\n\n/** 256-color background: \\x1b[48;5;<n>m */\nexport function bg256(n: number): string {\n return `${ESC}[48;5;${n}m`;\n}\n\n/** True-color (24-bit) foreground: \\x1b[38;2;<r>;<g>;<b>m */\nexport function fgRgb(r: number, g: number, b: number): string {\n return `${ESC}[38;2;${r};${g};${b}m`;\n}\n\n/** True-color (24-bit) background: \\x1b[48;2;<r>;<g>;<b>m */\nexport function bgRgb(r: number, g: number, b: number): string {\n return `${ESC}[48;2;${r};${g};${b}m`;\n}\n\n/** Parse a hex color string (#RRGGBB or #RGB) into {r,g,b} */\nexport function parseHex(hex: string): { r: number; g: number; b: number } {\n const clean = hex.replace('#', '');\n if (clean.length === 3) {\n const r = parseInt(clean[0] + clean[0], 16);\n const g = parseInt(clean[1] + clean[1], 16);\n const b = parseInt(clean[2] + clean[2], 16);\n return { r, g, b };\n }\n const r = parseInt(clean.slice(0, 2), 16);\n const g = parseInt(clean.slice(2, 4), 16);\n const b = parseInt(clean.slice(4, 6), 16);\n return { r, g, b };\n}\n\n/** Apply true-color foreground from a hex string */\nexport function fgHex(hex: string): string {\n const { r, g, b } = parseHex(hex);\n return fgRgb(r, g, b);\n}\n\n/** Apply true-color background from a hex string */\nexport function bgHex(hex: string): string {\n const { r, g, b } = parseHex(hex);\n return bgRgb(r, g, b);\n}\n\n// Cursor movement\nexport const cursor = {\n up: (n = 1) => `${ESC}[${n}A`,\n down: (n = 1) => `${ESC}[${n}B`,\n forward: (n = 1) => `${ESC}[${n}C`,\n back: (n = 1) => `${ESC}[${n}D`,\n nextLine: (n = 1) => `${ESC}[${n}E`,\n prevLine: (n = 1) => `${ESC}[${n}F`,\n column: (n = 1) => `${ESC}[${n}G`,\n position: (row: number, col: number) => `${ESC}[${row};${col}H`,\n hide: `${ESC}[?25l`,\n show: `${ESC}[?25h`,\n save: `${ESC}[s`,\n restore: `${ESC}[u`,\n} as const;\n\n// Screen control\nexport const screen = {\n clear: `${ESC}[2J`,\n clearToEnd: `${ESC}[0J`,\n clearToStart: `${ESC}[1J`,\n clearLine: `${ESC}[2K`,\n clearLineToEnd: `${ESC}[0K`,\n clearLineToStart: `${ESC}[1K`,\n alternateBuffer: `${ESC}[?1049h`,\n mainBuffer: `${ESC}[?1049l`,\n} as const;\n\n// OSC (Operating System Command) sequences\nexport const osc = {\n /** OSC 8 — hyperlink: \\x1b]8;;url\\x1b\\\\ text \\x1b]8;;\\x1b\\\\ */\n hyperlink: (url: string, text: string) => `${ESC}]8;;${url}${ESC}\\\\${text}${ESC}]8;;${ESC}\\\\`,\n /** OSC 52 — clipboard write (base64-encoded) */\n clipboardWrite: (data: string) => {\n const encoded = Buffer.from(data).toString('base64');\n return `${ESC}]52;c;${encoded}\\x07`;\n },\n /** OSC 0 — set window title */\n setTitle: (title: string) => `${ESC}]0;${title}\\x07`,\n} as const;\n\n/** Wrap text with a style and reset */\nexport function style(code: string, text: string): string {\n return `${code}${text}${reset}`;\n}\n\n/** Strip all ANSI escape sequences from a string */\n// We implement a fast inline stripper here;\n// consumers should prefer the 'strip-ansi' package for full coverage\nconst ANSI_REGEX = /\\x1b\\[[0-9;]*[mGKHFABCDJn]|\\x1b\\][^\\\\]*\\x1b\\\\|\\x1b[()][AB012]/g;\nexport function stripAnsi(str: string): string {\n return str.replace(ANSI_REGEX, '');\n}\n\n/** Measure visible width of a string (strips ANSI first) */\nexport function visibleWidth(str: string): number {\n return stripAnsi(str).length;\n}\n","/**\n * Terminal capability detection.\n * Detects: color depth, unicode support, mouse support, true-color.\n */\n\nexport type ColorDepth = 1 | 4 | 8 | 24; // 1=mono, 4=16-color, 8=256-color, 24=true-color\n\nexport interface TerminalCapabilities {\n colorDepth: ColorDepth;\n supportsUnicode: boolean;\n supportsTrueColor: boolean;\n supports256Color: boolean;\n supportsMouse: boolean;\n columns: number;\n rows: number;\n isTTY: boolean;\n}\n\n/** Detect current terminal capabilities from process environment */\nexport function detectCapabilities(): TerminalCapabilities {\n const isTTY = Boolean(process.stdout.isTTY);\n const columns = process.stdout.columns ?? 80;\n const rows = process.stdout.rows ?? 24;\n\n // NO_COLOR / FORCE_COLOR env vars\n const noColor = 'NO_COLOR' in process.env;\n const forceColor = process.env['FORCE_COLOR'];\n\n // Color depth detection\n let colorDepth: ColorDepth = 1;\n\n if (!noColor) {\n if (forceColor === '3' || forceColor === 'true' || forceColor === '1') {\n colorDepth = 24;\n } else if (forceColor === '2') {\n colorDepth = 8;\n } else if (isTTY) {\n // Check COLORTERM env for true-color\n const colorterm = (process.env['COLORTERM'] ?? '').toLowerCase();\n if (colorterm === 'truecolor' || colorterm === '24bit') {\n colorDepth = 24;\n } else if (\n (process.env['TERM_PROGRAM'] ?? '').toLowerCase().includes('iterm') ||\n (process.env['TERM_PROGRAM'] ?? '').toLowerCase() === 'hyper'\n ) {\n colorDepth = 24;\n } else if ((process.env['TERM'] ?? '').includes('256color')) {\n colorDepth = 8;\n } else if (process.env['TERM'] === 'xterm' || isTTY) {\n colorDepth = 4;\n }\n }\n }\n\n const supportsTrueColor = colorDepth === 24;\n const supports256Color = colorDepth >= 8;\n\n // Unicode detection\n const lang = process.env['LANG'] ?? process.env['LC_ALL'] ?? '';\n const supportsUnicode =\n lang.toLowerCase().includes('utf-8') ||\n lang.toLowerCase().includes('utf8') ||\n process.platform === 'darwin' ||\n (process.env['TERM_PROGRAM'] ?? '') !== '';\n\n // Mouse support (most modern terminals support xterm mouse protocol)\n const supportsMouse = isTTY;\n\n return {\n colorDepth,\n supportsUnicode,\n supportsTrueColor,\n supports256Color,\n supportsMouse,\n columns,\n rows,\n isTTY,\n };\n}\n\n/** Singleton instance for the current terminal session */\nlet _capabilities: TerminalCapabilities | null = null;\n\nexport function getCapabilities(): TerminalCapabilities {\n if (!_capabilities) {\n _capabilities = detectCapabilities();\n }\n return _capabilities;\n}\n\n/** Force re-detect capabilities (useful after SIGWINCH) */\nexport function refreshCapabilities(): TerminalCapabilities {\n _capabilities = detectCapabilities();\n return _capabilities;\n}\n","import type { Theme } from '../tokens.js';\n\nexport const defaultTheme: Theme = {\n name: 'default',\n colors: {\n primary: '#7C3AED',\n primaryForeground: '#FFFFFF',\n secondary: '#6B7280',\n secondaryForeground: '#FFFFFF',\n accent: '#8B5CF6',\n accentForeground: '#FFFFFF',\n\n success: '#10B981',\n successForeground: '#FFFFFF',\n warning: '#F59E0B',\n warningForeground: '#000000',\n error: '#EF4444',\n errorForeground: '#FFFFFF',\n info: '#3B82F6',\n infoForeground: '#FFFFFF',\n\n background: '#000000',\n foreground: '#FFFFFF',\n muted: '#374151',\n mutedForeground: '#9CA3AF',\n border: '#4B5563',\n\n focusRing: '#8B5CF6',\n selection: '#7C3AED',\n selectionForeground: '#FFFFFF',\n },\n spacing: {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 6: 6,\n 8: 8,\n },\n typography: {\n bold: true,\n sm: 'dim',\n base: '',\n lg: 'bold',\n xl: 'bold',\n },\n border: {\n style: 'round',\n color: '#4B5563',\n focusColor: '#8B5CF6',\n },\n};\n","import React, { createContext, useContext, type ReactNode } from 'react';\nimport type { Theme } from './tokens.js';\nimport { defaultTheme } from './themes/default.js';\n\ninterface ThemeContextValue {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n}\n\nconst ThemeContext = createContext<ThemeContextValue>({\n theme: defaultTheme,\n setTheme: () => {},\n});\n\ninterface ThemeProviderProps {\n theme?: Theme;\n children: ReactNode;\n}\n\nexport function ThemeProvider({ theme = defaultTheme, children }: ThemeProviderProps) {\n const [currentTheme, setCurrentTheme] = React.useState<Theme>(theme);\n\n React.useEffect(() => {\n setCurrentTheme(theme);\n }, [theme]);\n\n return (\n <ThemeContext.Provider value={{ theme: currentTheme, setTheme: setCurrentTheme }}>\n {children}\n </ThemeContext.Provider>\n );\n}\n\nexport function useTheme(): Theme {\n return useContext(ThemeContext).theme;\n}\n\nexport function useThemeUpdater(): (theme: Theme) => void {\n return useContext(ThemeContext).setTheme;\n}\n\n/** Create a custom theme by merging with the default theme */\nexport function createTheme(overrides: Partial<Theme> & { name: string }): Theme {\n return {\n ...defaultTheme,\n ...overrides,\n colors: {\n ...defaultTheme.colors,\n ...(overrides.colors ?? {}),\n },\n spacing: {\n ...defaultTheme.spacing,\n ...(overrides.spacing ?? {}),\n },\n typography: {\n ...defaultTheme.typography,\n ...(overrides.typography ?? {}),\n },\n border: {\n ...defaultTheme.border,\n ...(overrides.border ?? {}),\n },\n };\n}\n","import {\n fgHex,\n bgHex,\n bold,\n dim,\n italic,\n underline,\n strikethrough,\n reset,\n} from '../terminal/ansi.js';\n\ntype BorderStyle = 'single' | 'double' | 'round' | 'bold' | 'classic';\n\n/**\n * Chainable style builder for ANSI-styled strings.\n *\n * Usage:\n * style('Hello').bold().fg('#FF0000').build()\n * style('World').dim().underline().build()\n */\nexport class StyleBuilder {\n private _text: string;\n private _codes: string[] = [];\n\n constructor(text: string) {\n this._text = text;\n }\n\n bold(): this {\n this._codes.push(bold);\n return this;\n }\n\n dim(): this {\n this._codes.push(dim);\n return this;\n }\n\n italic(): this {\n this._codes.push(italic);\n return this;\n }\n\n underline(): this {\n this._codes.push(underline);\n return this;\n }\n\n strikethrough(): this {\n this._codes.push(strikethrough);\n return this;\n }\n\n fg(color: string): this {\n this._codes.push(fgHex(color));\n return this;\n }\n\n bg(color: string): this {\n this._codes.push(bgHex(color));\n return this;\n }\n\n /** Build the final ANSI-styled string */\n build(): string {\n if (this._codes.length === 0) return this._text;\n return `${this._codes.join('')}${this._text}${reset}`;\n }\n\n toString(): string {\n return this.build();\n }\n}\n\n/** Entry point: style('text').bold().fg('#fff').build() */\nexport function style(text: string): StyleBuilder {\n return new StyleBuilder(text);\n}\n","import type { Theme } from '../tokens.js';\n\nexport const draculaTheme: Theme = {\n name: 'dracula',\n colors: {\n primary: '#BD93F9',\n primaryForeground: '#282A36',\n secondary: '#6272A4',\n secondaryForeground: '#F8F8F2',\n accent: '#FF79C6',\n accentForeground: '#282A36',\n\n success: '#50FA7B',\n successForeground: '#282A36',\n warning: '#F1FA8C',\n warningForeground: '#282A36',\n error: '#FF5555',\n errorForeground: '#F8F8F2',\n info: '#8BE9FD',\n infoForeground: '#282A36',\n\n background: '#282A36',\n foreground: '#F8F8F2',\n muted: '#44475A',\n mutedForeground: '#6272A4',\n border: '#6272A4',\n\n focusRing: '#BD93F9',\n selection: '#44475A',\n selectionForeground: '#F8F8F2',\n },\n spacing: {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 6: 6,\n 8: 8,\n },\n typography: {\n bold: true,\n sm: 'dim',\n base: '',\n lg: 'bold',\n xl: 'bold',\n },\n border: {\n style: 'round',\n color: '#6272A4',\n focusColor: '#BD93F9',\n },\n};\n","import type { Theme } from '../tokens.js';\n\nexport const nordTheme: Theme = {\n name: 'nord',\n colors: {\n primary: '#88C0D0',\n primaryForeground: '#2E3440',\n secondary: '#4C566A',\n secondaryForeground: '#ECEFF4',\n accent: '#81A1C1',\n accentForeground: '#2E3440',\n\n success: '#A3BE8C',\n successForeground: '#2E3440',\n warning: '#EBCB8B',\n warningForeground: '#2E3440',\n error: '#BF616A',\n errorForeground: '#ECEFF4',\n info: '#5E81AC',\n infoForeground: '#ECEFF4',\n\n background: '#2E3440',\n foreground: '#ECEFF4',\n muted: '#3B4252',\n mutedForeground: '#4C566A',\n border: '#4C566A',\n\n focusRing: '#88C0D0',\n selection: '#3B4252',\n selectionForeground: '#ECEFF4',\n },\n spacing: {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 6: 6,\n 8: 8,\n },\n typography: {\n bold: true,\n sm: 'dim',\n base: '',\n lg: 'bold',\n xl: 'bold',\n },\n border: {\n style: 'round',\n color: '#4C566A',\n focusColor: '#88C0D0',\n },\n};\n","import { useInput as inkUseInput } from 'ink';\n\nexport type Key = {\n upArrow: boolean;\n downArrow: boolean;\n leftArrow: boolean;\n rightArrow: boolean;\n pageDown: boolean;\n pageUp: boolean;\n return: boolean;\n escape: boolean;\n ctrl: boolean;\n shift: boolean;\n tab: boolean;\n backspace: boolean;\n delete: boolean;\n meta: boolean;\n};\n\nexport type InputHandler = (input: string, key: Key) => void;\n\n/** Keyboard input hook — delegates to Ink's useInput */\nexport function useInput(handler: InputHandler, options?: { isActive?: boolean }): void {\n inkUseInput(handler, options);\n}\n","import { useFocus as inkUseFocus } from 'ink';\n\n/** Single component focus state — delegates to Ink's useFocus */\nexport function useFocus(options?: { autoFocus?: boolean; isActive?: boolean; id?: string }) {\n return inkUseFocus(options);\n}\n","import { useFocusManager as inkUseFocusManager } from 'ink';\n\n/** Global programmatic focus control — delegates to Ink's useFocusManager */\nexport function useFocusManager() {\n return inkUseFocusManager();\n}\n","import { useState, useEffect } from 'react';\nimport {\n getCapabilities,\n refreshCapabilities,\n type TerminalCapabilities,\n} from '../terminal/capabilities.js';\n\n/** Returns current terminal capabilities, updates on resize */\nexport function useTerminal(): TerminalCapabilities {\n const [caps, setCaps] = useState<TerminalCapabilities>(getCapabilities);\n\n useEffect(() => {\n const handler = () => {\n setCaps(refreshCapabilities());\n };\n process.stdout.on('resize', handler);\n return () => {\n process.stdout.off('resize', handler);\n };\n }, []);\n\n return caps;\n}\n","import { useState, useEffect } from 'react';\n\n// Shared interval pool: one setInterval per fps bucket.\n// All spinners at the same fps share one timer, so React 18 can batch\n// their setState calls into a single re-render per tick.\ntype Subscriber = (tick: number) => void;\nconst pool = new Map<\n number,\n { id: ReturnType<typeof setInterval>; tick: number; subs: Set<Subscriber> }\n>();\n\nfunction subscribe(ms: number, cb: Subscriber) {\n if (!pool.has(ms)) {\n const entry = {\n id: null as unknown as ReturnType<typeof setInterval>,\n tick: 0,\n subs: new Set<Subscriber>(),\n };\n entry.id = setInterval(() => {\n entry.tick++;\n for (const sub of entry.subs) sub(entry.tick);\n }, ms);\n pool.set(ms, entry);\n }\n pool.get(ms)!.subs.add(cb);\n}\n\nfunction unsubscribe(ms: number, cb: Subscriber) {\n const entry = pool.get(ms);\n if (!entry) return;\n entry.subs.delete(cb);\n if (entry.subs.size === 0) {\n clearInterval(entry.id);\n pool.delete(ms);\n }\n}\n\n/**\n * Frame-based animation hook at configurable fps.\n * Returns the current frame index (increments every tick).\n * All instances at the same fps share a single interval for efficient batching.\n */\nexport function useAnimation(fps = 12): number {\n const [frame, setFrame] = useState(0);\n\n useEffect(() => {\n const ms = Math.round(1000 / fps);\n const cb: Subscriber = (tick) => setFrame(tick);\n subscribe(ms, cb);\n return () => unsubscribe(ms, cb);\n }, [fps]);\n\n return frame;\n}\n","import { useEffect, useRef } from 'react';\n\n/**\n * React-safe setInterval hook with automatic cleanup.\n * The callback is always fresh (via ref) so stale closure is not an issue.\n */\nexport function useInterval(callback: () => void, delay: number | null): void {\n const savedCallback = useRef(callback);\n\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n useEffect(() => {\n if (delay === null) return;\n const id = setInterval(() => savedCallback.current(), delay);\n return () => clearInterval(id);\n }, [delay]);\n}\n","import { useCallback } from 'react';\nimport { osc } from '../terminal/ansi.js';\n\n/**\n * OSC 52 clipboard hook.\n * write() sends data to the terminal's clipboard via OSC 52.\n * Note: read() is not universally supported; returns null on unsupported terminals.\n */\nexport function useClipboard() {\n const write = useCallback((text: string) => {\n process.stdout.write(osc.clipboardWrite(text));\n }, []);\n\n return { write };\n}\n","import { useEffect, useRef } from 'react';\nimport { useInput } from './useInput.js';\nimport type { Key } from './useInput.js';\n\nexport type KeyBinding = {\n key?: string;\n ctrl?: boolean;\n shift?: boolean;\n meta?: boolean;\n action: () => void;\n};\n\n/**\n * Declarative keybinding registration with conflict detection.\n * Pass an array of KeyBinding objects; the hook handles matching and invocation.\n */\nexport function useKeymap(bindings: KeyBinding[], isActive = true): void {\n const bindingsRef = useRef(bindings);\n\n useEffect(() => {\n bindingsRef.current = bindings;\n }, [bindings]);\n\n // Detect conflicts on mount\n useEffect(() => {\n const seen = new Set<string>();\n for (const b of bindings) {\n const id = `${b.key ?? ''}:${b.ctrl ? 'ctrl' : ''}:${b.shift ? 'shift' : ''}:${b.meta ? 'meta' : ''}`;\n if (seen.has(id)) {\n console.warn(`[useKeymap] Conflicting keybinding: ${id}`);\n }\n seen.add(id);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useInput(\n (input: string, key: Key) => {\n for (const binding of bindingsRef.current) {\n const keyMatch = !binding.key || input === binding.key;\n const ctrlMatch = binding.ctrl === undefined || binding.ctrl === key.ctrl;\n const shiftMatch = binding.shift === undefined || binding.shift === key.shift;\n const metaMatch = binding.meta === undefined || binding.meta === key.meta;\n if (keyMatch && ctrlMatch && shiftMatch && metaMatch) {\n binding.action();\n }\n }\n },\n { isActive }\n );\n}\n","import { useState, useEffect } from 'react';\n\nexport type MouseButton = 'left' | 'middle' | 'right' | 'scrollUp' | 'scrollDown';\n\nexport interface MouseEvent {\n type: 'press' | 'release' | 'move';\n button: MouseButton;\n x: number;\n y: number;\n ctrl: boolean;\n shift: boolean;\n meta: boolean;\n}\n\ntype MouseHandler = (event: MouseEvent) => void;\n\n/**\n * Mouse events hook (click, scroll, drag).\n * Requires terminal to support xterm mouse protocol.\n * Enables mouse tracking on mount, disables on unmount.\n */\nexport function useMouse(handler: MouseHandler): void {\n const handlerRef = { current: handler };\n\n useEffect(() => {\n handlerRef.current = handler;\n });\n\n useEffect(() => {\n if (!process.stdout.isTTY) return;\n\n // Enable xterm mouse protocol (button + any event tracking)\n process.stdout.write('\\x1b[?1000h'); // basic mouse\n process.stdout.write('\\x1b[?1002h'); // button event tracking\n process.stdout.write('\\x1b[?1006h'); // SGR extended coordinates\n\n const rawHandler = (data: Buffer) => {\n const str = data.toString();\n // Parse SGR mouse sequence: \\x1b[<Cb;Cx;CyM or m\n const match = str.match(/\\x1b\\[<(\\d+);(\\d+);(\\d+)([Mm])/);\n if (!match) return;\n\n const cb = parseInt(match[1], 10);\n const x = parseInt(match[2], 10);\n const y = parseInt(match[3], 10);\n const released = match[4] === 'm';\n\n const ctrl = Boolean(cb & 16);\n const meta = Boolean(cb & 8);\n const shift = Boolean(cb & 4);\n const buttonCode = cb & 3;\n\n let button: MouseButton;\n if (cb & 64) {\n button = buttonCode === 0 ? 'scrollUp' : 'scrollDown';\n } else {\n button = (['left', 'middle', 'right'] as const)[buttonCode] ?? 'left';\n }\n\n handlerRef.current({\n type: released ? 'release' : 'press',\n button,\n x,\n y,\n ctrl,\n shift,\n meta,\n });\n };\n\n process.stdin.on('data', rawHandler);\n\n return () => {\n // Disable mouse tracking\n process.stdout.write('\\x1b[?1000l');\n process.stdout.write('\\x1b[?1002l');\n process.stdout.write('\\x1b[?1006l');\n process.stdin.off('data', rawHandler);\n };\n }, []);\n}\n","import { useState, useEffect } from 'react';\n\nexport interface TerminalSize {\n columns: number;\n rows: number;\n}\n\n/** Returns terminal dimensions, updates on resize with debounce */\nexport function useResize(debounceMs = 50): TerminalSize {\n const [size, setSize] = useState<TerminalSize>({\n columns: process.stdout.columns ?? 80,\n rows: process.stdout.rows ?? 24,\n });\n\n useEffect(() => {\n let timer: ReturnType<typeof setTimeout>;\n const handler = () => {\n clearTimeout(timer);\n timer = setTimeout(() => {\n setSize({\n columns: process.stdout.columns ?? 80,\n rows: process.stdout.rows ?? 24,\n });\n }, debounceMs);\n };\n process.stdout.on('resize', handler);\n return () => {\n clearTimeout(timer);\n process.stdout.off('resize', handler);\n };\n }, [debounceMs]);\n\n return size;\n}\n","import { useState, useEffect, useCallback, useRef } from 'react';\n\nexport type AsyncState<T> =\n | { status: 'idle'; data: null; error: null }\n | { status: 'loading'; data: null; error: null }\n | { status: 'success'; data: T; error: null }\n | { status: 'error'; data: null; error: Error };\n\n/**\n * Async data loading hook with loading/error/data states.\n * Automatically cancels stale requests.\n */\nexport function useAsync<T>(\n asyncFn: () => Promise<T>,\n deps: unknown[] = []\n): AsyncState<T> & { refetch: () => void } {\n const [state, setState] = useState<AsyncState<T>>({\n status: 'idle',\n data: null,\n error: null,\n });\n\n const mountedRef = useRef(true);\n\n const execute = useCallback(async () => {\n setState({ status: 'loading', data: null, error: null });\n try {\n const data = await asyncFn();\n if (mountedRef.current) {\n setState({ status: 'success', data, error: null });\n }\n } catch (e) {\n if (mountedRef.current) {\n setState({\n status: 'error',\n data: null,\n error: e instanceof Error ? e : new Error(String(e)),\n });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n\n useEffect(() => {\n mountedRef.current = true;\n execute();\n return () => {\n mountedRef.current = false;\n };\n }, [execute]);\n\n return { ...state, refetch: execute };\n}\n"],"mappings":"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","names":["r","g","b","style","useState","useEffect","useEffect","useRef","useEffect","useRef","useRef","useEffect","useEffect","useState","useEffect","useState","useEffect","useCallback","useRef"]}