@hypercli/ui 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +11 -0
  3. package/dist/capabilities/index.d.ts +62 -0
  4. package/dist/capabilities/index.d.ts.map +1 -0
  5. package/dist/capabilities/index.js +182 -0
  6. package/dist/capabilities/index.js.map +1 -0
  7. package/dist/colors.d.ts +32 -0
  8. package/dist/colors.d.ts.map +1 -0
  9. package/dist/colors.js +40 -0
  10. package/dist/colors.js.map +1 -0
  11. package/dist/components/columns.d.ts +28 -0
  12. package/dist/components/columns.d.ts.map +1 -0
  13. package/dist/components/columns.js +70 -0
  14. package/dist/components/columns.js.map +1 -0
  15. package/dist/components/confirmPrompt.d.ts +38 -0
  16. package/dist/components/confirmPrompt.d.ts.map +1 -0
  17. package/dist/components/confirmPrompt.js +109 -0
  18. package/dist/components/confirmPrompt.js.map +1 -0
  19. package/dist/components/diff.d.ts +37 -0
  20. package/dist/components/diff.d.ts.map +1 -0
  21. package/dist/components/diff.js +36 -0
  22. package/dist/components/diff.js.map +1 -0
  23. package/dist/components/helpLayout.d.ts +59 -0
  24. package/dist/components/helpLayout.d.ts.map +1 -0
  25. package/dist/components/helpLayout.js +103 -0
  26. package/dist/components/helpLayout.js.map +1 -0
  27. package/dist/components/index.d.ts +38 -0
  28. package/dist/components/index.d.ts.map +1 -0
  29. package/dist/components/index.js +23 -0
  30. package/dist/components/index.js.map +1 -0
  31. package/dist/components/keyValue.d.ts +31 -0
  32. package/dist/components/keyValue.d.ts.map +1 -0
  33. package/dist/components/keyValue.js +36 -0
  34. package/dist/components/keyValue.js.map +1 -0
  35. package/dist/components/list.d.ts +30 -0
  36. package/dist/components/list.d.ts.map +1 -0
  37. package/dist/components/list.js +80 -0
  38. package/dist/components/list.js.map +1 -0
  39. package/dist/components/message.d.ts +33 -0
  40. package/dist/components/message.d.ts.map +1 -0
  41. package/dist/components/message.js +86 -0
  42. package/dist/components/message.js.map +1 -0
  43. package/dist/components/panel.d.ts +28 -0
  44. package/dist/components/panel.d.ts.map +1 -0
  45. package/dist/components/panel.js +30 -0
  46. package/dist/components/panel.js.map +1 -0
  47. package/dist/components/progressBar.d.ts +44 -0
  48. package/dist/components/progressBar.d.ts.map +1 -0
  49. package/dist/components/progressBar.js +154 -0
  50. package/dist/components/progressBar.js.map +1 -0
  51. package/dist/components/section.d.ts +22 -0
  52. package/dist/components/section.d.ts.map +1 -0
  53. package/dist/components/section.js +48 -0
  54. package/dist/components/section.js.map +1 -0
  55. package/dist/components/selectPrompt.d.ts +58 -0
  56. package/dist/components/selectPrompt.d.ts.map +1 -0
  57. package/dist/components/selectPrompt.js +206 -0
  58. package/dist/components/selectPrompt.js.map +1 -0
  59. package/dist/components/spinner.d.ts +38 -0
  60. package/dist/components/spinner.d.ts.map +1 -0
  61. package/dist/components/spinner.js +125 -0
  62. package/dist/components/spinner.js.map +1 -0
  63. package/dist/components/statusList.d.ts +22 -0
  64. package/dist/components/statusList.d.ts.map +1 -0
  65. package/dist/components/statusList.js +43 -0
  66. package/dist/components/statusList.js.map +1 -0
  67. package/dist/components/table.d.ts +39 -0
  68. package/dist/components/table.d.ts.map +1 -0
  69. package/dist/components/table.js +132 -0
  70. package/dist/components/table.js.map +1 -0
  71. package/dist/components/textPrompt.d.ts +43 -0
  72. package/dist/components/textPrompt.d.ts.map +1 -0
  73. package/dist/components/textPrompt.js +123 -0
  74. package/dist/components/textPrompt.js.map +1 -0
  75. package/dist/components/tree.d.ts +30 -0
  76. package/dist/components/tree.d.ts.map +1 -0
  77. package/dist/components/tree.js +49 -0
  78. package/dist/components/tree.js.map +1 -0
  79. package/dist/ds-index.d.ts +113 -0
  80. package/dist/ds-index.d.ts.map +1 -0
  81. package/dist/ds-index.js +112 -0
  82. package/dist/ds-index.js.map +1 -0
  83. package/dist/help.d.ts +32 -0
  84. package/dist/help.d.ts.map +1 -0
  85. package/dist/help.js +34 -0
  86. package/dist/help.js.map +1 -0
  87. package/dist/hyper-theme.d.ts +8 -0
  88. package/dist/hyper-theme.d.ts.map +1 -0
  89. package/dist/hyper-theme.js +30 -0
  90. package/dist/hyper-theme.js.map +1 -0
  91. package/dist/index.d.ts +50 -0
  92. package/dist/index.d.ts.map +1 -0
  93. package/dist/index.js +39 -0
  94. package/dist/index.js.map +1 -0
  95. package/dist/md.d.ts +12 -0
  96. package/dist/md.d.ts.map +1 -0
  97. package/dist/md.js +19 -0
  98. package/dist/md.js.map +1 -0
  99. package/dist/messages.d.ts +20 -0
  100. package/dist/messages.d.ts.map +1 -0
  101. package/dist/messages.js +65 -0
  102. package/dist/messages.js.map +1 -0
  103. package/dist/palette.d.ts +20 -0
  104. package/dist/palette.d.ts.map +1 -0
  105. package/dist/palette.js +22 -0
  106. package/dist/palette.js.map +1 -0
  107. package/dist/primitives/align.d.ts +23 -0
  108. package/dist/primitives/align.d.ts.map +1 -0
  109. package/dist/primitives/align.js +40 -0
  110. package/dist/primitives/align.js.map +1 -0
  111. package/dist/primitives/badge.d.ts +24 -0
  112. package/dist/primitives/badge.d.ts.map +1 -0
  113. package/dist/primitives/badge.js +40 -0
  114. package/dist/primitives/badge.js.map +1 -0
  115. package/dist/primitives/border.d.ts +29 -0
  116. package/dist/primitives/border.d.ts.map +1 -0
  117. package/dist/primitives/border.js +100 -0
  118. package/dist/primitives/border.js.map +1 -0
  119. package/dist/primitives/context.d.ts +48 -0
  120. package/dist/primitives/context.d.ts.map +1 -0
  121. package/dist/primitives/context.js +64 -0
  122. package/dist/primitives/context.js.map +1 -0
  123. package/dist/primitives/divider.d.ts +25 -0
  124. package/dist/primitives/divider.d.ts.map +1 -0
  125. package/dist/primitives/divider.js +56 -0
  126. package/dist/primitives/divider.js.map +1 -0
  127. package/dist/primitives/indent.d.ts +16 -0
  128. package/dist/primitives/indent.d.ts.map +1 -0
  129. package/dist/primitives/indent.js +25 -0
  130. package/dist/primitives/indent.js.map +1 -0
  131. package/dist/primitives/index.d.ts +32 -0
  132. package/dist/primitives/index.d.ts.map +1 -0
  133. package/dist/primitives/index.js +22 -0
  134. package/dist/primitives/index.js.map +1 -0
  135. package/dist/primitives/line.d.ts +21 -0
  136. package/dist/primitives/line.d.ts.map +1 -0
  137. package/dist/primitives/line.js +29 -0
  138. package/dist/primitives/line.js.map +1 -0
  139. package/dist/primitives/markdown.d.ts +91 -0
  140. package/dist/primitives/markdown.d.ts.map +1 -0
  141. package/dist/primitives/markdown.js +62 -0
  142. package/dist/primitives/markdown.js.map +1 -0
  143. package/dist/primitives/pad.d.ts +24 -0
  144. package/dist/primitives/pad.d.ts.map +1 -0
  145. package/dist/primitives/pad.js +20 -0
  146. package/dist/primitives/pad.js.map +1 -0
  147. package/dist/primitives/stack.d.ts +22 -0
  148. package/dist/primitives/stack.d.ts.map +1 -0
  149. package/dist/primitives/stack.js +21 -0
  150. package/dist/primitives/stack.js.map +1 -0
  151. package/dist/primitives/styledText.d.ts +36 -0
  152. package/dist/primitives/styledText.d.ts.map +1 -0
  153. package/dist/primitives/styledText.js +42 -0
  154. package/dist/primitives/styledText.js.map +1 -0
  155. package/dist/primitives/symbol.d.ts +15 -0
  156. package/dist/primitives/symbol.d.ts.map +1 -0
  157. package/dist/primitives/symbol.js +18 -0
  158. package/dist/primitives/symbol.js.map +1 -0
  159. package/dist/primitives/truncate.d.ts +23 -0
  160. package/dist/primitives/truncate.d.ts.map +1 -0
  161. package/dist/primitives/truncate.js +99 -0
  162. package/dist/primitives/truncate.js.map +1 -0
  163. package/dist/primitives/wrap.d.ts +23 -0
  164. package/dist/primitives/wrap.d.ts.map +1 -0
  165. package/dist/primitives/wrap.js +30 -0
  166. package/dist/primitives/wrap.js.map +1 -0
  167. package/dist/render/ansi-utils.d.ts +49 -0
  168. package/dist/render/ansi-utils.d.ts.map +1 -0
  169. package/dist/render/ansi-utils.js +405 -0
  170. package/dist/render/ansi-utils.js.map +1 -0
  171. package/dist/render/index.d.ts +11 -0
  172. package/dist/render/index.d.ts.map +1 -0
  173. package/dist/render/index.js +11 -0
  174. package/dist/render/index.js.map +1 -0
  175. package/dist/render/sgr.d.ts +60 -0
  176. package/dist/render/sgr.d.ts.map +1 -0
  177. package/dist/render/sgr.js +191 -0
  178. package/dist/render/sgr.js.map +1 -0
  179. package/dist/render/strip.d.ts +24 -0
  180. package/dist/render/strip.d.ts.map +1 -0
  181. package/dist/render/strip.js +81 -0
  182. package/dist/render/strip.js.map +1 -0
  183. package/dist/render/width.d.ts +30 -0
  184. package/dist/render/width.d.ts.map +1 -0
  185. package/dist/render/width.js +149 -0
  186. package/dist/render/width.js.map +1 -0
  187. package/dist/shortcuts.d.ts +76 -0
  188. package/dist/shortcuts.d.ts.map +1 -0
  189. package/dist/shortcuts.js +117 -0
  190. package/dist/shortcuts.js.map +1 -0
  191. package/dist/styles.d.ts +43 -0
  192. package/dist/styles.d.ts.map +1 -0
  193. package/dist/styles.js +44 -0
  194. package/dist/styles.js.map +1 -0
  195. package/dist/symbols.d.ts +19 -0
  196. package/dist/symbols.d.ts.map +1 -0
  197. package/dist/symbols.js +21 -0
  198. package/dist/symbols.js.map +1 -0
  199. package/dist/test/compare.d.ts +28 -0
  200. package/dist/test/compare.d.ts.map +1 -0
  201. package/dist/test/compare.js +37 -0
  202. package/dist/test/compare.js.map +1 -0
  203. package/dist/test/index.d.ts +16 -0
  204. package/dist/test/index.d.ts.map +1 -0
  205. package/dist/test/index.js +14 -0
  206. package/dist/test/index.js.map +1 -0
  207. package/dist/test/mock.d.ts +50 -0
  208. package/dist/test/mock.d.ts.map +1 -0
  209. package/dist/test/mock.js +135 -0
  210. package/dist/test/mock.js.map +1 -0
  211. package/dist/test/render.d.ts +29 -0
  212. package/dist/test/render.d.ts.map +1 -0
  213. package/dist/test/render.js +87 -0
  214. package/dist/test/render.js.map +1 -0
  215. package/dist/test/snapshot.d.ts +16 -0
  216. package/dist/test/snapshot.d.ts.map +1 -0
  217. package/dist/test/snapshot.js +216 -0
  218. package/dist/test/snapshot.js.map +1 -0
  219. package/dist/theme/builtins.d.ts +10 -0
  220. package/dist/theme/builtins.d.ts.map +1 -0
  221. package/dist/theme/builtins.js +102 -0
  222. package/dist/theme/builtins.js.map +1 -0
  223. package/dist/theme/engine.d.ts +51 -0
  224. package/dist/theme/engine.d.ts.map +1 -0
  225. package/dist/theme/engine.js +123 -0
  226. package/dist/theme/engine.js.map +1 -0
  227. package/dist/theme/index.d.ts +10 -0
  228. package/dist/theme/index.d.ts.map +1 -0
  229. package/dist/theme/index.js +12 -0
  230. package/dist/theme/index.js.map +1 -0
  231. package/dist/theme/merge.d.ts +24 -0
  232. package/dist/theme/merge.d.ts.map +1 -0
  233. package/dist/theme/merge.js +66 -0
  234. package/dist/theme/merge.js.map +1 -0
  235. package/dist/theme/types.d.ts +44 -0
  236. package/dist/theme/types.d.ts.map +1 -0
  237. package/dist/theme/types.js +8 -0
  238. package/dist/theme/types.js.map +1 -0
  239. package/dist/theme.d.ts +9 -0
  240. package/dist/theme.d.ts.map +1 -0
  241. package/dist/theme.js +53 -0
  242. package/dist/theme.js.map +1 -0
  243. package/dist/tokens/defaults.d.ts +13 -0
  244. package/dist/tokens/defaults.d.ts.map +1 -0
  245. package/dist/tokens/defaults.js +248 -0
  246. package/dist/tokens/defaults.js.map +1 -0
  247. package/dist/tokens/index.d.ts +10 -0
  248. package/dist/tokens/index.d.ts.map +1 -0
  249. package/dist/tokens/index.js +10 -0
  250. package/dist/tokens/index.js.map +1 -0
  251. package/dist/tokens/resolver.d.ts +100 -0
  252. package/dist/tokens/resolver.d.ts.map +1 -0
  253. package/dist/tokens/resolver.js +138 -0
  254. package/dist/tokens/resolver.js.map +1 -0
  255. package/dist/tokens/types.d.ts +265 -0
  256. package/dist/tokens/types.d.ts.map +1 -0
  257. package/dist/tokens/types.js +10 -0
  258. package/dist/tokens/types.js.map +1 -0
  259. package/dist/tokens.d.ts +26 -0
  260. package/dist/tokens.d.ts.map +1 -0
  261. package/dist/tokens.js +30 -0
  262. package/dist/tokens.js.map +1 -0
  263. package/dist/types.d.ts +38 -0
  264. package/dist/types.d.ts.map +1 -0
  265. package/dist/types.js +11 -0
  266. package/dist/types.js.map +1 -0
  267. package/package.json +78 -0
@@ -0,0 +1,21 @@
1
+ /**
2
+ * stack Primitive
3
+ *
4
+ * Joins lines vertically with configurable spacing and an optional
5
+ * prefix prepended to each line.
6
+ */
7
+ /**
8
+ * Joins lines vertically with optional spacing and a per-line prefix.
9
+ *
10
+ * @param lines - The lines to stack vertically.
11
+ * @param options - Stacking configuration.
12
+ * @returns The joined multi-line string.
13
+ */
14
+ export function stack(lines, options) {
15
+ const spacing = options?.spacing ?? 0;
16
+ const prefix = options?.prefix;
17
+ const processed = prefix ? lines.map((l) => prefix + l) : lines;
18
+ const separator = `\n${"\n".repeat(spacing)}`;
19
+ return processed.join(separator);
20
+ }
21
+ //# sourceMappingURL=stack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stack.js","sourceRoot":"","sources":["../../src/primitives/stack.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAAC,KAAe,EAAE,OAAsB;IAC5D,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC;IAE/B,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAEhE,MAAM,SAAS,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9C,OAAO,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * styledText Primitive
3
+ *
4
+ * Applies semantic color tokens and typography attributes to text,
5
+ * respecting terminal capabilities (isDumb, noColor).
6
+ */
7
+ import type { ColorTokens } from "../tokens/index.ts";
8
+ /** Options for styling text with semantic color tokens and typography attributes. */
9
+ export type StyledTextOptions = {
10
+ /** Foreground color token name. */
11
+ color?: keyof ColorTokens;
12
+ /** Background color token name. */
13
+ bg?: keyof ColorTokens;
14
+ /** Render text in bold weight. */
15
+ bold?: boolean;
16
+ /** Render text with reduced intensity. */
17
+ dim?: boolean;
18
+ /** Render text in italic style. */
19
+ italic?: boolean;
20
+ /** Render text with an underline. */
21
+ underline?: boolean;
22
+ /** Render text with a strikethrough line. */
23
+ strikethrough?: boolean;
24
+ /** Swap foreground and background colors. */
25
+ inverse?: boolean;
26
+ };
27
+ /**
28
+ * Applies semantic styling to text, respecting terminal capabilities.
29
+ * Dumb terminals receive no styling; noColor terminals keep typography but strip color.
30
+ *
31
+ * @param text - The text content to style.
32
+ * @param style - Styling options including color tokens and typography attributes.
33
+ * @returns The styled text string with ANSI escape codes applied.
34
+ */
35
+ export declare function styledText(text: string, style: StyledTextOptions): string;
36
+ //# sourceMappingURL=styledText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styledText.d.ts","sourceRoot":"","sources":["../../src/primitives/styledText.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,qFAAqF;AACrF,MAAM,MAAM,iBAAiB,GAAG;IAC/B,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,WAAW,CAAC;IAC1B,mCAAmC;IACnC,EAAE,CAAC,EAAE,MAAM,WAAW,CAAC;IACvB,kCAAkC;IAClC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,0CAA0C;IAC1C,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,mCAAmC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qCAAqC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6CAA6C;IAC7C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,MAAM,CA4BzE"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * styledText Primitive
3
+ *
4
+ * Applies semantic color tokens and typography attributes to text,
5
+ * respecting terminal capabilities (isDumb, noColor).
6
+ */
7
+ import { applyStyle } from "../render/index.js";
8
+ import { getContext } from "./context.js";
9
+ /**
10
+ * Applies semantic styling to text, respecting terminal capabilities.
11
+ * Dumb terminals receive no styling; noColor terminals keep typography but strip color.
12
+ *
13
+ * @param text - The text content to style.
14
+ * @param style - Styling options including color tokens and typography attributes.
15
+ * @returns The styled text string with ANSI escape codes applied.
16
+ */
17
+ export function styledText(text, style) {
18
+ const ctx = getContext();
19
+ // Dumb terminals get no styling at all
20
+ if (ctx.capabilities.isDumb) {
21
+ return text;
22
+ }
23
+ const spec = {
24
+ bold: style.bold,
25
+ dim: style.dim,
26
+ italic: style.italic,
27
+ underline: style.underline,
28
+ strikethrough: style.strikethrough,
29
+ inverse: style.inverse,
30
+ };
31
+ // noColor: keep typography attributes but strip color
32
+ if (!ctx.capabilities.noColor) {
33
+ if (style.color) {
34
+ spec.color = ctx.tokens.color[style.color];
35
+ }
36
+ if (style.bg) {
37
+ spec.bg = ctx.tokens.color[style.bg];
38
+ }
39
+ }
40
+ return applyStyle(text, spec);
41
+ }
42
+ //# sourceMappingURL=styledText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styledText.js","sourceRoot":"","sources":["../../src/primitives/styledText.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAsB1C;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,KAAwB;IAChE,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IAEzB,uCAAuC;IACvC,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,IAAI,GAAc;QACvB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,OAAO,EAAE,KAAK,CAAC,OAAO;KACtB,CAAC;IAEF,sDAAsD;IACtD,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACjB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;YACd,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC;IACF,CAAC;IAED,OAAO,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * symbol Primitive
3
+ *
4
+ * Returns the resolved symbol glyph (unicode or ascii) for a given
5
+ * semantic symbol name.
6
+ */
7
+ import type { SymbolTokens } from "../tokens/index.ts";
8
+ /**
9
+ * Returns the resolved glyph for a semantic symbol name.
10
+ *
11
+ * @param name - The symbol token name to resolve (e.g. `'tick'`, `'cross'`).
12
+ * @returns The resolved glyph string (unicode or ascii depending on capabilities).
13
+ */
14
+ export declare function symbol(name: keyof SymbolTokens): string;
15
+ //# sourceMappingURL=symbol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol.d.ts","sourceRoot":"","sources":["../../src/primitives/symbol.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGvD;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,YAAY,GAAG,MAAM,CAGvD"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * symbol Primitive
3
+ *
4
+ * Returns the resolved symbol glyph (unicode or ascii) for a given
5
+ * semantic symbol name.
6
+ */
7
+ import { getContext } from "./context.js";
8
+ /**
9
+ * Returns the resolved glyph for a semantic symbol name.
10
+ *
11
+ * @param name - The symbol token name to resolve (e.g. `'tick'`, `'cross'`).
12
+ * @returns The resolved glyph string (unicode or ascii depending on capabilities).
13
+ */
14
+ export function symbol(name) {
15
+ const ctx = getContext();
16
+ return ctx.tokens.symbol[name];
17
+ }
18
+ //# sourceMappingURL=symbol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol.js","sourceRoot":"","sources":["../../src/primitives/symbol.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,IAAwB;IAC9C,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * truncate Primitive
3
+ *
4
+ * Truncates a string to a maximum visual width, with support for
5
+ * end, start, and middle truncation positions. ANSI-aware.
6
+ */
7
+ /** Options for truncating text. */
8
+ export type TruncateOptions = {
9
+ /** Where to truncate: `'end'` (default), `'start'`, or `'middle'`. */
10
+ position?: "end" | "middle" | "start";
11
+ /** Ellipsis string inserted at the truncation point. Defaults to the resolved symbol token. */
12
+ ellipsis?: string;
13
+ };
14
+ /**
15
+ * Truncates text to fit within a maximum visual width, inserting an ellipsis at the cut point.
16
+ *
17
+ * @param text - The text to truncate.
18
+ * @param maxWidth - Maximum visual width in columns.
19
+ * @param options - Truncation configuration.
20
+ * @returns The truncated text string, or the original if it already fits.
21
+ */
22
+ export declare function truncate(text: string, maxWidth: number, options?: TruncateOptions): string;
23
+ //# sourceMappingURL=truncate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"truncate.d.ts","sourceRoot":"","sources":["../../src/primitives/truncate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,mCAAmC;AACnC,MAAM,MAAM,eAAe,GAAG;IAC7B,sEAAsE;IACtE,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IACtC,+FAA+F;IAC/F,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,CA2E1F"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * truncate Primitive
3
+ *
4
+ * Truncates a string to a maximum visual width, with support for
5
+ * end, start, and middle truncation positions. ANSI-aware.
6
+ */
7
+ import { ansiTruncate, stringWidth, stripAnsi } from "../render/index.js";
8
+ import { getContext } from "./context.js";
9
+ /**
10
+ * Truncates text to fit within a maximum visual width, inserting an ellipsis at the cut point.
11
+ *
12
+ * @param text - The text to truncate.
13
+ * @param maxWidth - Maximum visual width in columns.
14
+ * @param options - Truncation configuration.
15
+ * @returns The truncated text string, or the original if it already fits.
16
+ */
17
+ export function truncate(text, maxWidth, options) {
18
+ const ctx = getContext();
19
+ const position = options?.position ?? "end";
20
+ const ellipsis = options?.ellipsis ?? ctx.tokens.symbol.ellipsis;
21
+ const currentWidth = stringWidth(text);
22
+ if (currentWidth <= maxWidth)
23
+ return text;
24
+ const ellipsisWidth = stringWidth(ellipsis);
25
+ if (position === "end") {
26
+ return ansiTruncate(text, maxWidth, ellipsis);
27
+ }
28
+ if (position === "start") {
29
+ // Keep the end of the string, prepend ellipsis
30
+ const targetWidth = maxWidth - ellipsisWidth;
31
+ if (targetWidth <= 0) {
32
+ return ellipsisWidth <= maxWidth ? ellipsis : "";
33
+ }
34
+ // For start truncation, work on plain text for simplicity
35
+ // (ANSI in the middle of a start-truncated string is edge-case)
36
+ const plain = stripAnsi(text);
37
+ // Walk backwards to find the cut point
38
+ let width = 0;
39
+ let cutIndex = plain.length;
40
+ for (let i = plain.length - 1; i >= 0; i--) {
41
+ const code = plain.codePointAt(i);
42
+ // Skip low surrogates
43
+ if (code >= 0xdc00 && code <= 0xdfff)
44
+ continue;
45
+ const charW = code > 0xffff ? 2 : code >= 0x1100 && isFullWidth(code) ? 2 : 1;
46
+ if (width + charW > targetWidth)
47
+ break;
48
+ width += charW;
49
+ cutIndex = i;
50
+ }
51
+ return ellipsis + plain.slice(cutIndex);
52
+ }
53
+ // Middle truncation: keep first half + ellipsis + last half
54
+ const targetWidth = maxWidth - ellipsisWidth;
55
+ if (targetWidth <= 0) {
56
+ return ellipsisWidth <= maxWidth ? ellipsis : "";
57
+ }
58
+ const plain = stripAnsi(text);
59
+ const firstHalfWidth = Math.ceil(targetWidth / 2);
60
+ const lastHalfWidth = Math.floor(targetWidth / 2);
61
+ // Find first half end
62
+ let width = 0;
63
+ let firstEnd = 0;
64
+ for (let i = 0; i < plain.length; i++) {
65
+ const code = plain.codePointAt(i);
66
+ if (code >= 0xdc00 && code <= 0xdfff)
67
+ continue;
68
+ const charW = code > 0xffff ? 2 : code >= 0x1100 && isFullWidth(code) ? 2 : 1;
69
+ if (width + charW > firstHalfWidth)
70
+ break;
71
+ width += charW;
72
+ firstEnd = i + (code > 0xffff ? 2 : 1);
73
+ }
74
+ // Find last half start (walk backwards)
75
+ width = 0;
76
+ let lastStart = plain.length;
77
+ for (let i = plain.length - 1; i >= 0; i--) {
78
+ const code = plain.codePointAt(i);
79
+ if (code >= 0xdc00 && code <= 0xdfff)
80
+ continue;
81
+ const charW = code > 0xffff ? 2 : code >= 0x1100 && isFullWidth(code) ? 2 : 1;
82
+ if (width + charW > lastHalfWidth)
83
+ break;
84
+ width += charW;
85
+ lastStart = i;
86
+ }
87
+ return plain.slice(0, firstEnd) + ellipsis + plain.slice(lastStart);
88
+ }
89
+ /** Checks whether a Unicode code point is a full-width character. */
90
+ function isFullWidth(code) {
91
+ return ((code >= 0x1100 && code <= 0x115f) ||
92
+ (code >= 0x2e80 && code <= 0xa4cf) ||
93
+ (code >= 0xac00 && code <= 0xd7a3) ||
94
+ (code >= 0xf900 && code <= 0xfaff) ||
95
+ (code >= 0xfe10 && code <= 0xfe6f) ||
96
+ (code >= 0xff01 && code <= 0xff60) ||
97
+ (code >= 0xffe0 && code <= 0xffe6));
98
+ }
99
+ //# sourceMappingURL=truncate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"truncate.js","sourceRoot":"","sources":["../../src/primitives/truncate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * wrap Primitive
3
+ *
4
+ * Word-wraps text to a maximum width, defaulting to the resolved
5
+ * layout.maxWidth token.
6
+ */
7
+ /** Options for word-wrapping text. */
8
+ export type WrapOptions = {
9
+ /** Break words that exceed the max width instead of only breaking at spaces. Defaults to `false`. */
10
+ hard?: boolean;
11
+ /** Trim trailing whitespace from each wrapped line. Defaults to `false`. */
12
+ trim?: boolean;
13
+ };
14
+ /**
15
+ * Word-wraps text to a maximum column width.
16
+ *
17
+ * @param text - The text to wrap.
18
+ * @param maxWidth - Maximum line width in columns. Defaults to the `layout.maxWidth` token.
19
+ * @param options - Wrapping configuration.
20
+ * @returns The wrapped text string.
21
+ */
22
+ export declare function wrap(text: string, maxWidth?: number, options?: WrapOptions): string;
23
+ //# sourceMappingURL=wrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../src/primitives/wrap.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,sCAAsC;AACtC,MAAM,MAAM,WAAW,GAAG;IACzB,qGAAqG;IACrG,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,4EAA4E;IAC5E,IAAI,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,MAAM,CAenF"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * wrap Primitive
3
+ *
4
+ * Word-wraps text to a maximum width, defaulting to the resolved
5
+ * layout.maxWidth token.
6
+ */
7
+ import { ansiWrap } from "../render/index.js";
8
+ import { getContext } from "./context.js";
9
+ /**
10
+ * Word-wraps text to a maximum column width.
11
+ *
12
+ * @param text - The text to wrap.
13
+ * @param maxWidth - Maximum line width in columns. Defaults to the `layout.maxWidth` token.
14
+ * @param options - Wrapping configuration.
15
+ * @returns The wrapped text string.
16
+ */
17
+ export function wrap(text, maxWidth, options) {
18
+ const ctx = getContext();
19
+ const width = maxWidth ?? ctx.tokens.layout.maxWidth;
20
+ const hard = options?.hard ?? false;
21
+ let result = ansiWrap(text, width, hard);
22
+ if (options?.trim) {
23
+ result = result
24
+ .split("\n")
25
+ .map((l) => l.trimEnd())
26
+ .join("\n");
27
+ }
28
+ return result;
29
+ }
30
+ //# sourceMappingURL=wrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrap.js","sourceRoot":"","sources":["../../src/primitives/wrap.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAU1C;;;;;;;GAOG;AACH,MAAM,UAAU,IAAI,CAAC,IAAY,EAAE,QAAiB,EAAE,OAAqB;IAC1E,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;IACrD,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,KAAK,CAAC;IAEpC,IAAI,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAEzC,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;QACnB,MAAM,GAAG,MAAM;aACb,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;aACvB,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * ANSI-Aware String Operations
3
+ *
4
+ * String manipulation functions that understand ANSI escape sequences,
5
+ * ensuring styles are properly preserved, carried, and closed across
6
+ * truncation, padding, slicing, and wrapping operations.
7
+ */
8
+ /**
9
+ * Truncates a string to `maxWidth` visual columns, appending an ellipsis if truncated.
10
+ * Preserves ANSI styling and properly closes any open styles at the truncation point.
11
+ *
12
+ * @param str - The string to truncate.
13
+ * @param maxWidth - Maximum visual width in terminal columns.
14
+ * @param ellipsis - Ellipsis string appended at the truncation point. Defaults to `''`.
15
+ * @returns The truncated string, or the original if it fits within `maxWidth`.
16
+ */
17
+ export declare function ansiTruncate(str: string, maxWidth: number, ellipsis?: string): string;
18
+ /**
19
+ * Pads a string to an exact visual width using spaces.
20
+ *
21
+ * @param str - The string to pad.
22
+ * @param width - Target visual width in terminal columns.
23
+ * @param align - Alignment: `'left'` (default), `'right'`, or `'center'`.
24
+ * @returns The padded string.
25
+ */
26
+ export declare function ansiPad(str: string, width: number, align?: "left" | "right" | "center"): string;
27
+ /**
28
+ * Slices a string by visual column positions, preserving active ANSI styles.
29
+ *
30
+ * Returns the substring from visual column `start` to `end` (exclusive),
31
+ * with any active styles from before the slice re-applied at the beginning
32
+ * and a reset appended at the end if styles were active.
33
+ *
34
+ * @param str - The string to slice.
35
+ * @param start - Start visual column (inclusive).
36
+ * @param end - End visual column (exclusive). Defaults to end of string.
37
+ * @returns The sliced substring with ANSI styles preserved.
38
+ */
39
+ export declare function ansiSlice(str: string, start: number, end?: number): string;
40
+ /**
41
+ * Word-wraps a string to `maxWidth` visual columns, preserving ANSI styles across line breaks.
42
+ *
43
+ * @param str - The string to wrap.
44
+ * @param maxWidth - Maximum visual width per line in terminal columns.
45
+ * @param hard - When `true`, breaks mid-word if a single word exceeds `maxWidth`. Defaults to `false`.
46
+ * @returns The wrapped string with `\n` inserted at break points.
47
+ */
48
+ export declare function ansiWrap(str: string, maxWidth: number, hard?: boolean): string;
49
+ //# sourceMappingURL=ansi-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ansi-utils.d.ts","sourceRoot":"","sources":["../../src/render/ansi-utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgFH;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,MAAM,CAkDjF;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CACtB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAM,GAAG,OAAO,GAAG,QAAiB,GACzC,MAAM,CAiBR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAgF1E;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,UAAQ,GAAG,MAAM,CAuB5E"}