@nuxt/ui 3.0.0-alpha.0 → 3.0.0-alpha.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 (170) hide show
  1. package/README.md +1 -1
  2. package/cli/node_modules/.ignored/citty/LICENSE +36 -0
  3. package/cli/node_modules/.ignored/citty/README.md +134 -0
  4. package/cli/node_modules/.ignored/citty/dist/index.cjs +475 -0
  5. package/cli/node_modules/.ignored/citty/dist/index.d.cts +80 -0
  6. package/cli/node_modules/.ignored/citty/dist/index.d.mts +80 -0
  7. package/cli/node_modules/.ignored/citty/dist/index.d.ts +80 -0
  8. package/cli/node_modules/.ignored/citty/dist/index.mjs +463 -0
  9. package/cli/node_modules/.ignored/citty/package.json +49 -0
  10. package/cli/node_modules/.ignored/consola/LICENSE +47 -0
  11. package/cli/node_modules/.ignored/consola/README.md +318 -0
  12. package/cli/node_modules/.ignored/consola/core.d.ts +1 -0
  13. package/cli/node_modules/.ignored/consola/dist/basic.cjs +32 -0
  14. package/cli/node_modules/.ignored/consola/dist/basic.d.ts +9 -0
  15. package/cli/node_modules/.ignored/consola/dist/basic.mjs +24 -0
  16. package/cli/node_modules/.ignored/consola/dist/browser.cjs +80 -0
  17. package/cli/node_modules/.ignored/consola/dist/browser.d.ts +7 -0
  18. package/cli/node_modules/.ignored/consola/dist/browser.mjs +72 -0
  19. package/cli/node_modules/.ignored/consola/dist/chunks/prompt.cjs +436 -0
  20. package/cli/node_modules/.ignored/consola/dist/chunks/prompt.mjs +429 -0
  21. package/cli/node_modules/.ignored/consola/dist/core.cjs +415 -0
  22. package/cli/node_modules/.ignored/consola/dist/core.d.ts +124 -0
  23. package/cli/node_modules/.ignored/consola/dist/core.mjs +410 -0
  24. package/cli/node_modules/.ignored/consola/dist/index.cjs +21 -0
  25. package/cli/node_modules/.ignored/consola/dist/index.d.ts +9 -0
  26. package/cli/node_modules/.ignored/consola/dist/index.mjs +8 -0
  27. package/cli/node_modules/.ignored/consola/dist/shared/consola.06ad8a64.mjs +62 -0
  28. package/cli/node_modules/.ignored/consola/dist/shared/consola.36c0034f.mjs +636 -0
  29. package/cli/node_modules/.ignored/consola/dist/shared/consola.4bbae468.cjs +645 -0
  30. package/cli/node_modules/.ignored/consola/dist/shared/consola.deac7d5a.cjs +65 -0
  31. package/cli/node_modules/.ignored/consola/dist/utils.cjs +308 -0
  32. package/cli/node_modules/.ignored/consola/dist/utils.d.ts +169 -0
  33. package/cli/node_modules/.ignored/consola/dist/utils.mjs +284 -0
  34. package/cli/node_modules/.ignored/consola/lib/index.cjs +9 -0
  35. package/cli/node_modules/.ignored/consola/package.json +101 -0
  36. package/cli/node_modules/.ignored/consola/utils.d.ts +1 -0
  37. package/cli/node_modules/.ignored/pathe/LICENSE +44 -0
  38. package/cli/node_modules/.ignored/pathe/README.md +69 -0
  39. package/cli/node_modules/.ignored/pathe/dist/index.cjs +23 -0
  40. package/cli/node_modules/.ignored/pathe/dist/index.d.cts +36 -0
  41. package/cli/node_modules/.ignored/pathe/dist/index.d.mts +36 -0
  42. package/cli/node_modules/.ignored/pathe/dist/index.d.ts +36 -0
  43. package/cli/node_modules/.ignored/pathe/dist/index.mjs +1 -0
  44. package/cli/node_modules/.ignored/pathe/dist/shared/pathe.1f0a373c.cjs +238 -0
  45. package/cli/node_modules/.ignored/pathe/dist/shared/pathe.ff20891b.mjs +221 -0
  46. package/cli/node_modules/.ignored/pathe/dist/utils.cjs +58 -0
  47. package/cli/node_modules/.ignored/pathe/dist/utils.d.cts +5 -0
  48. package/cli/node_modules/.ignored/pathe/dist/utils.d.mts +5 -0
  49. package/cli/node_modules/.ignored/pathe/dist/utils.d.ts +5 -0
  50. package/cli/node_modules/.ignored/pathe/dist/utils.mjs +54 -0
  51. package/cli/node_modules/.ignored/pathe/package.json +48 -0
  52. package/cli/node_modules/.ignored/pathe/utils.d.ts +1 -0
  53. package/cli/node_modules/.ignored/scule/LICENSE +21 -0
  54. package/cli/node_modules/.ignored/scule/README.md +149 -0
  55. package/cli/node_modules/.ignored/scule/dist/index.cjs +92 -0
  56. package/cli/node_modules/.ignored/scule/dist/index.d.cts +57 -0
  57. package/cli/node_modules/.ignored/scule/dist/index.d.mts +57 -0
  58. package/cli/node_modules/.ignored/scule/dist/index.d.ts +57 -0
  59. package/cli/node_modules/.ignored/scule/dist/index.mjs +80 -0
  60. package/cli/node_modules/.ignored/scule/package.json +43 -0
  61. package/cli/node_modules/.package-lock.json +33 -0
  62. package/dist/module.json +3 -3
  63. package/dist/module.mjs +7 -55
  64. package/dist/runtime/components/Accordion.vue +49 -6
  65. package/dist/runtime/components/Alert.vue +58 -6
  66. package/dist/runtime/components/App.vue +12 -2
  67. package/dist/runtime/components/Avatar.vue +27 -6
  68. package/dist/runtime/components/AvatarGroup.vue +30 -6
  69. package/dist/runtime/components/Badge.vue +28 -6
  70. package/dist/runtime/components/Breadcrumb.vue +44 -6
  71. package/dist/runtime/components/Button.vue +33 -6
  72. package/dist/runtime/components/ButtonGroup.vue +30 -6
  73. package/dist/runtime/components/Card.vue +25 -6
  74. package/dist/runtime/components/Checkbox.vue +45 -6
  75. package/dist/runtime/components/Chip.vue +39 -6
  76. package/dist/runtime/components/Collapsible.vue +27 -6
  77. package/dist/runtime/components/CommandPalette.vue +99 -6
  78. package/dist/runtime/components/Container.vue +22 -6
  79. package/dist/runtime/components/ContextMenu.vue +58 -6
  80. package/dist/runtime/components/ContextMenuContent.vue +18 -4
  81. package/dist/runtime/components/Drawer.vue +48 -6
  82. package/dist/runtime/components/DropdownMenu.vue +66 -6
  83. package/dist/runtime/components/DropdownMenuContent.vue +22 -4
  84. package/dist/runtime/components/Form.vue +34 -13
  85. package/dist/runtime/components/FormField.vue +41 -16
  86. package/dist/runtime/components/Icon.vue +12 -2
  87. package/dist/runtime/components/Input.vue +46 -6
  88. package/dist/runtime/components/InputMenu.vue +113 -6
  89. package/dist/runtime/components/Kbd.vue +28 -6
  90. package/dist/runtime/components/Link.vue +81 -17
  91. package/dist/runtime/components/LinkBase.vue +12 -2
  92. package/dist/runtime/components/Modal.vue +69 -6
  93. package/dist/runtime/components/NavigationMenu.vue +76 -6
  94. package/dist/runtime/components/Pagination.vue +99 -6
  95. package/dist/runtime/components/Popover.vue +42 -6
  96. package/dist/runtime/components/Progress.vue +44 -6
  97. package/dist/runtime/components/RadioGroup.vue +55 -7
  98. package/dist/runtime/components/Select.vue +88 -6
  99. package/dist/runtime/components/SelectMenu.vue +104 -6
  100. package/dist/runtime/components/Separator.vue +41 -6
  101. package/dist/runtime/components/Skeleton.vue +18 -6
  102. package/dist/runtime/components/Slideover.vue +67 -6
  103. package/dist/runtime/components/Slider.vue +36 -6
  104. package/dist/runtime/components/Switch.vue +50 -6
  105. package/dist/runtime/components/Tabs.vue +59 -6
  106. package/dist/runtime/components/Textarea.vue +46 -6
  107. package/dist/runtime/components/Toast.vue +55 -6
  108. package/dist/runtime/components/Toaster.vue +27 -6
  109. package/dist/runtime/components/Tooltip.vue +42 -6
  110. package/dist/runtime/composables/useAvatarGroup.d.ts +2 -2
  111. package/dist/runtime/composables/useButtonGroup.d.ts +3 -3
  112. package/dist/runtime/composables/useFormField.d.ts +6 -3
  113. package/dist/runtime/composables/useFormField.js +11 -7
  114. package/dist/runtime/composables/useModal.d.ts +1 -1
  115. package/dist/runtime/composables/useSlideover.d.ts +1 -1
  116. package/dist/runtime/composables/useToast.d.ts +1 -1
  117. package/dist/runtime/index.css +1 -0
  118. package/dist/runtime/plugins/colors.d.ts +2 -0
  119. package/dist/runtime/plugins/modal.d.ts +2 -0
  120. package/dist/runtime/plugins/slideover.d.ts +2 -0
  121. package/dist/runtime/types/form.d.ts +1 -2
  122. package/dist/runtime/utils/link.d.ts +23 -55
  123. package/package.json +13 -14
  124. package/dist/runtime/assets/css/animations.css +0 -1
  125. package/dist/runtime/components/Accordion.vue.d.ts +0 -492
  126. package/dist/runtime/components/Alert.vue.d.ts +0 -548
  127. package/dist/runtime/components/App.vue.d.ts +0 -25
  128. package/dist/runtime/components/Avatar.vue.d.ts +0 -384
  129. package/dist/runtime/components/AvatarGroup.vue.d.ts +0 -381
  130. package/dist/runtime/components/Badge.vue.d.ts +0 -422
  131. package/dist/runtime/components/Breadcrumb.vue.d.ts +0 -307
  132. package/dist/runtime/components/Button.vue.d.ts +0 -949
  133. package/dist/runtime/components/ButtonGroup.vue.d.ts +0 -182
  134. package/dist/runtime/components/Card.vue.d.ts +0 -191
  135. package/dist/runtime/components/Checkbox.vue.d.ts +0 -819
  136. package/dist/runtime/components/Chip.vue.d.ts +0 -590
  137. package/dist/runtime/components/Collapsible.vue.d.ts +0 -159
  138. package/dist/runtime/components/CommandPalette.vue.d.ts +0 -684
  139. package/dist/runtime/components/Container.vue.d.ts +0 -27
  140. package/dist/runtime/components/ContextMenu.vue.d.ts +0 -796
  141. package/dist/runtime/components/ContextMenuContent.vue.d.ts +0 -0
  142. package/dist/runtime/components/Drawer.vue.d.ts +0 -343
  143. package/dist/runtime/components/DropdownMenu.vue.d.ts +0 -815
  144. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +0 -0
  145. package/dist/runtime/components/Form.vue.d.ts +0 -39
  146. package/dist/runtime/components/FormField.vue.d.ts +0 -356
  147. package/dist/runtime/components/Icon.vue.d.ts +0 -17
  148. package/dist/runtime/components/Input.vue.d.ts +0 -1137
  149. package/dist/runtime/components/InputMenu.vue.d.ts +0 -2121
  150. package/dist/runtime/components/Kbd.vue.d.ts +0 -169
  151. package/dist/runtime/components/Link.vue.d.ts +0 -76
  152. package/dist/runtime/components/LinkBase.vue.d.ts +0 -49
  153. package/dist/runtime/components/Modal.vue.d.ts +0 -319
  154. package/dist/runtime/components/NavigationMenu.vue.d.ts +0 -1789
  155. package/dist/runtime/components/Pagination.vue.d.ts +0 -295
  156. package/dist/runtime/components/Popover.vue.d.ts +0 -197
  157. package/dist/runtime/components/Progress.vue.d.ts +0 -1781
  158. package/dist/runtime/components/RadioGroup.vue.d.ts +0 -1715
  159. package/dist/runtime/components/Select.vue.d.ts +0 -1569
  160. package/dist/runtime/components/SelectMenu.vue.d.ts +0 -1661
  161. package/dist/runtime/components/Separator.vue.d.ts +0 -0
  162. package/dist/runtime/components/Skeleton.vue.d.ts +0 -26
  163. package/dist/runtime/components/Slideover.vue.d.ts +0 -375
  164. package/dist/runtime/components/Slider.vue.d.ts +0 -0
  165. package/dist/runtime/components/Switch.vue.d.ts +0 -1676
  166. package/dist/runtime/components/Tabs.vue.d.ts +0 -934
  167. package/dist/runtime/components/Textarea.vue.d.ts +0 -1133
  168. package/dist/runtime/components/Toast.vue.d.ts +0 -0
  169. package/dist/runtime/components/Toaster.vue.d.ts +0 -362
  170. package/dist/runtime/components/Tooltip.vue.d.ts +0 -248
@@ -0,0 +1,65 @@
1
+ 'use strict';
2
+
3
+ const node_util = require('node:util');
4
+ const node_path = require('node:path');
5
+
6
+ function parseStack(stack) {
7
+ const cwd = process.cwd() + node_path.sep;
8
+ const lines = stack.split("\n").splice(1).map((l) => l.trim().replace("file://", "").replace(cwd, ""));
9
+ return lines;
10
+ }
11
+
12
+ function writeStream(data, stream) {
13
+ const write = stream.__write || stream.write;
14
+ return write.call(stream, data);
15
+ }
16
+
17
+ const bracket = (x) => x ? `[${x}]` : "";
18
+ class BasicReporter {
19
+ formatStack(stack, opts) {
20
+ return " " + parseStack(stack).join("\n ");
21
+ }
22
+ formatArgs(args, opts) {
23
+ const _args = args.map((arg) => {
24
+ if (arg && typeof arg.stack === "string") {
25
+ return arg.message + "\n" + this.formatStack(arg.stack, opts);
26
+ }
27
+ return arg;
28
+ });
29
+ return node_util.formatWithOptions(opts, ..._args);
30
+ }
31
+ formatDate(date, opts) {
32
+ return opts.date ? date.toLocaleTimeString() : "";
33
+ }
34
+ filterAndJoin(arr) {
35
+ return arr.filter(Boolean).join(" ");
36
+ }
37
+ formatLogObj(logObj, opts) {
38
+ const message = this.formatArgs(logObj.args, opts);
39
+ if (logObj.type === "box") {
40
+ return "\n" + [
41
+ bracket(logObj.tag),
42
+ logObj.title && logObj.title,
43
+ ...message.split("\n")
44
+ ].filter(Boolean).map((l) => " > " + l).join("\n") + "\n";
45
+ }
46
+ return this.filterAndJoin([
47
+ bracket(logObj.type),
48
+ bracket(logObj.tag),
49
+ message
50
+ ]);
51
+ }
52
+ log(logObj, ctx) {
53
+ const line = this.formatLogObj(logObj, {
54
+ columns: ctx.options.stdout.columns || 0,
55
+ ...ctx.options.formatOptions
56
+ });
57
+ return writeStream(
58
+ line + "\n",
59
+ logObj.level < 2 ? ctx.options.stderr || process.stderr : ctx.options.stdout || process.stdout
60
+ );
61
+ }
62
+ }
63
+
64
+ exports.BasicReporter = BasicReporter;
65
+ exports.parseStack = parseStack;
@@ -0,0 +1,308 @@
1
+ 'use strict';
2
+
3
+ const tty = require('node:tty');
4
+
5
+ function _interopNamespaceCompat(e) {
6
+ if (e && typeof e === 'object' && 'default' in e) return e;
7
+ const n = Object.create(null);
8
+ if (e) {
9
+ for (const k in e) {
10
+ n[k] = e[k];
11
+ }
12
+ }
13
+ n.default = e;
14
+ return n;
15
+ }
16
+
17
+ const tty__namespace = /*#__PURE__*/_interopNamespaceCompat(tty);
18
+
19
+ const {
20
+ env = {},
21
+ argv = [],
22
+ platform = ""
23
+ } = typeof process === "undefined" ? {} : process;
24
+ const isDisabled = "NO_COLOR" in env || argv.includes("--no-color");
25
+ const isForced = "FORCE_COLOR" in env || argv.includes("--color");
26
+ const isWindows = platform === "win32";
27
+ const isDumbTerminal = env.TERM === "dumb";
28
+ const isCompatibleTerminal = tty__namespace && tty__namespace.isatty && tty__namespace.isatty(1) && env.TERM && !isDumbTerminal;
29
+ const isCI = "CI" in env && ("GITHUB_ACTIONS" in env || "GITLAB_CI" in env || "CIRCLECI" in env);
30
+ const isColorSupported = !isDisabled && (isForced || isWindows && !isDumbTerminal || isCompatibleTerminal || isCI);
31
+ function replaceClose(index, string, close, replace, head = string.slice(0, Math.max(0, index)) + replace, tail = string.slice(Math.max(0, index + close.length)), next = tail.indexOf(close)) {
32
+ return head + (next < 0 ? tail : replaceClose(next, tail, close, replace));
33
+ }
34
+ function clearBleed(index, string, open, close, replace) {
35
+ return index < 0 ? open + string + close : open + replaceClose(index, string, close, replace) + close;
36
+ }
37
+ function filterEmpty(open, close, replace = open, at = open.length + 1) {
38
+ return (string) => string || !(string === "" || string === void 0) ? clearBleed(
39
+ ("" + string).indexOf(close, at),
40
+ string,
41
+ open,
42
+ close,
43
+ replace
44
+ ) : "";
45
+ }
46
+ function init(open, close, replace) {
47
+ return filterEmpty(`\x1B[${open}m`, `\x1B[${close}m`, replace);
48
+ }
49
+ const colorDefs = {
50
+ reset: init(0, 0),
51
+ bold: init(1, 22, "\x1B[22m\x1B[1m"),
52
+ dim: init(2, 22, "\x1B[22m\x1B[2m"),
53
+ italic: init(3, 23),
54
+ underline: init(4, 24),
55
+ inverse: init(7, 27),
56
+ hidden: init(8, 28),
57
+ strikethrough: init(9, 29),
58
+ black: init(30, 39),
59
+ red: init(31, 39),
60
+ green: init(32, 39),
61
+ yellow: init(33, 39),
62
+ blue: init(34, 39),
63
+ magenta: init(35, 39),
64
+ cyan: init(36, 39),
65
+ white: init(37, 39),
66
+ gray: init(90, 39),
67
+ bgBlack: init(40, 49),
68
+ bgRed: init(41, 49),
69
+ bgGreen: init(42, 49),
70
+ bgYellow: init(43, 49),
71
+ bgBlue: init(44, 49),
72
+ bgMagenta: init(45, 49),
73
+ bgCyan: init(46, 49),
74
+ bgWhite: init(47, 49),
75
+ blackBright: init(90, 39),
76
+ redBright: init(91, 39),
77
+ greenBright: init(92, 39),
78
+ yellowBright: init(93, 39),
79
+ blueBright: init(94, 39),
80
+ magentaBright: init(95, 39),
81
+ cyanBright: init(96, 39),
82
+ whiteBright: init(97, 39),
83
+ bgBlackBright: init(100, 49),
84
+ bgRedBright: init(101, 49),
85
+ bgGreenBright: init(102, 49),
86
+ bgYellowBright: init(103, 49),
87
+ bgBlueBright: init(104, 49),
88
+ bgMagentaBright: init(105, 49),
89
+ bgCyanBright: init(106, 49),
90
+ bgWhiteBright: init(107, 49)
91
+ };
92
+ function createColors(useColor = isColorSupported) {
93
+ return useColor ? colorDefs : Object.fromEntries(Object.keys(colorDefs).map((key) => [key, String]));
94
+ }
95
+ const colors = createColors();
96
+ function getColor(color, fallback = "reset") {
97
+ return colors[color] || colors[fallback];
98
+ }
99
+ function colorize(color, text) {
100
+ return getColor(color)(text);
101
+ }
102
+
103
+ const ansiRegex = [
104
+ "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)",
105
+ "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"
106
+ ].join("|");
107
+ function stripAnsi(text) {
108
+ return text.replace(new RegExp(ansiRegex, "g"), "");
109
+ }
110
+ function centerAlign(str, len, space = " ") {
111
+ const free = len - str.length;
112
+ if (free <= 0) {
113
+ return str;
114
+ }
115
+ const freeLeft = Math.floor(free / 2);
116
+ let _str = "";
117
+ for (let i = 0; i < len; i++) {
118
+ _str += i < freeLeft || i >= freeLeft + str.length ? space : str[i - freeLeft];
119
+ }
120
+ return _str;
121
+ }
122
+ function rightAlign(str, len, space = " ") {
123
+ const free = len - str.length;
124
+ if (free <= 0) {
125
+ return str;
126
+ }
127
+ let _str = "";
128
+ for (let i = 0; i < len; i++) {
129
+ _str += i < free ? space : str[i - free];
130
+ }
131
+ return _str;
132
+ }
133
+ function leftAlign(str, len, space = " ") {
134
+ let _str = "";
135
+ for (let i = 0; i < len; i++) {
136
+ _str += i < str.length ? str[i] : space;
137
+ }
138
+ return _str;
139
+ }
140
+ function align(alignment, str, len, space = " ") {
141
+ switch (alignment) {
142
+ case "left": {
143
+ return leftAlign(str, len, space);
144
+ }
145
+ case "right": {
146
+ return rightAlign(str, len, space);
147
+ }
148
+ case "center": {
149
+ return centerAlign(str, len, space);
150
+ }
151
+ default: {
152
+ return str;
153
+ }
154
+ }
155
+ }
156
+
157
+ const boxStylePresets = {
158
+ solid: {
159
+ tl: "\u250C",
160
+ tr: "\u2510",
161
+ bl: "\u2514",
162
+ br: "\u2518",
163
+ h: "\u2500",
164
+ v: "\u2502"
165
+ },
166
+ double: {
167
+ tl: "\u2554",
168
+ tr: "\u2557",
169
+ bl: "\u255A",
170
+ br: "\u255D",
171
+ h: "\u2550",
172
+ v: "\u2551"
173
+ },
174
+ doubleSingle: {
175
+ tl: "\u2553",
176
+ tr: "\u2556",
177
+ bl: "\u2559",
178
+ br: "\u255C",
179
+ h: "\u2500",
180
+ v: "\u2551"
181
+ },
182
+ doubleSingleRounded: {
183
+ tl: "\u256D",
184
+ tr: "\u256E",
185
+ bl: "\u2570",
186
+ br: "\u256F",
187
+ h: "\u2500",
188
+ v: "\u2551"
189
+ },
190
+ singleThick: {
191
+ tl: "\u250F",
192
+ tr: "\u2513",
193
+ bl: "\u2517",
194
+ br: "\u251B",
195
+ h: "\u2501",
196
+ v: "\u2503"
197
+ },
198
+ singleDouble: {
199
+ tl: "\u2552",
200
+ tr: "\u2555",
201
+ bl: "\u2558",
202
+ br: "\u255B",
203
+ h: "\u2550",
204
+ v: "\u2502"
205
+ },
206
+ singleDoubleRounded: {
207
+ tl: "\u256D",
208
+ tr: "\u256E",
209
+ bl: "\u2570",
210
+ br: "\u256F",
211
+ h: "\u2550",
212
+ v: "\u2502"
213
+ },
214
+ rounded: {
215
+ tl: "\u256D",
216
+ tr: "\u256E",
217
+ bl: "\u2570",
218
+ br: "\u256F",
219
+ h: "\u2500",
220
+ v: "\u2502"
221
+ }
222
+ };
223
+ const defaultStyle = {
224
+ borderColor: "white",
225
+ borderStyle: "rounded",
226
+ valign: "center",
227
+ padding: 2,
228
+ marginLeft: 1,
229
+ marginTop: 1,
230
+ marginBottom: 1
231
+ };
232
+ function box(text, _opts = {}) {
233
+ const opts = {
234
+ ..._opts,
235
+ style: {
236
+ ...defaultStyle,
237
+ ..._opts.style
238
+ }
239
+ };
240
+ const textLines = text.split("\n");
241
+ const boxLines = [];
242
+ const _color = getColor(opts.style.borderColor);
243
+ const borderStyle = {
244
+ ...typeof opts.style.borderStyle === "string" ? boxStylePresets[opts.style.borderStyle] || boxStylePresets.solid : opts.style.borderStyle
245
+ };
246
+ if (_color) {
247
+ for (const key in borderStyle) {
248
+ borderStyle[key] = _color(
249
+ borderStyle[key]
250
+ );
251
+ }
252
+ }
253
+ const paddingOffset = opts.style.padding % 2 === 0 ? opts.style.padding : opts.style.padding + 1;
254
+ const height = textLines.length + paddingOffset;
255
+ const width = Math.max(...textLines.map((line) => line.length)) + paddingOffset;
256
+ const widthOffset = width + paddingOffset;
257
+ const leftSpace = opts.style.marginLeft > 0 ? " ".repeat(opts.style.marginLeft) : "";
258
+ if (opts.style.marginTop > 0) {
259
+ boxLines.push("".repeat(opts.style.marginTop));
260
+ }
261
+ if (opts.title) {
262
+ const left = borderStyle.h.repeat(
263
+ Math.floor((width - stripAnsi(opts.title).length) / 2)
264
+ );
265
+ const right = borderStyle.h.repeat(
266
+ width - stripAnsi(opts.title).length - stripAnsi(left).length + paddingOffset
267
+ );
268
+ boxLines.push(
269
+ `${leftSpace}${borderStyle.tl}${left}${opts.title}${right}${borderStyle.tr}`
270
+ );
271
+ } else {
272
+ boxLines.push(
273
+ `${leftSpace}${borderStyle.tl}${borderStyle.h.repeat(widthOffset)}${borderStyle.tr}`
274
+ );
275
+ }
276
+ const valignOffset = opts.style.valign === "center" ? Math.floor((height - textLines.length) / 2) : opts.style.valign === "top" ? height - textLines.length - paddingOffset : height - textLines.length;
277
+ for (let i = 0; i < height; i++) {
278
+ if (i < valignOffset || i >= valignOffset + textLines.length) {
279
+ boxLines.push(
280
+ `${leftSpace}${borderStyle.v}${" ".repeat(widthOffset)}${borderStyle.v}`
281
+ );
282
+ } else {
283
+ const line = textLines[i - valignOffset];
284
+ const left = " ".repeat(paddingOffset);
285
+ const right = " ".repeat(width - stripAnsi(line).length);
286
+ boxLines.push(
287
+ `${leftSpace}${borderStyle.v}${left}${line}${right}${borderStyle.v}`
288
+ );
289
+ }
290
+ }
291
+ boxLines.push(
292
+ `${leftSpace}${borderStyle.bl}${borderStyle.h.repeat(widthOffset)}${borderStyle.br}`
293
+ );
294
+ if (opts.style.marginBottom > 0) {
295
+ boxLines.push("".repeat(opts.style.marginBottom));
296
+ }
297
+ return boxLines.join("\n");
298
+ }
299
+
300
+ exports.align = align;
301
+ exports.box = box;
302
+ exports.centerAlign = centerAlign;
303
+ exports.colorize = colorize;
304
+ exports.colors = colors;
305
+ exports.getColor = getColor;
306
+ exports.leftAlign = leftAlign;
307
+ exports.rightAlign = rightAlign;
308
+ exports.stripAnsi = stripAnsi;
@@ -0,0 +1,169 @@
1
+ type BoxBorderStyle = {
2
+ /**
3
+ * Top left corner
4
+ * @example `┌`
5
+ * @example `╔`
6
+ * @example `╓`
7
+ */
8
+ tl: string;
9
+ /**
10
+ * Top right corner
11
+ * @example `┐`
12
+ * @example `╗`
13
+ * @example `╖`
14
+ */
15
+ tr: string;
16
+ /**
17
+ * Bottom left corner
18
+ * @example `└`
19
+ * @example `╚`
20
+ * @example `╙`
21
+ */
22
+ bl: string;
23
+ /**
24
+ * Bottom right corner
25
+ * @example `┘`
26
+ * @example `╝`
27
+ * @example `╜`
28
+ */
29
+ br: string;
30
+ /**
31
+ * Horizontal line
32
+ * @example `─`
33
+ * @example `═`
34
+ * @example `─`
35
+ */
36
+ h: string;
37
+ /**
38
+ * Vertical line
39
+ * @example `│`
40
+ * @example `║`
41
+ * @example `║`
42
+ */
43
+ v: string;
44
+ };
45
+ declare const boxStylePresets: Record<string, BoxBorderStyle>;
46
+ type BoxStyle = {
47
+ /**
48
+ * The border color
49
+ * @default 'white'
50
+ */
51
+ borderColor: "black" | "red" | "green" | "yellow" | "blue" | "magenta" | "cyan" | "white" | "gray" | "blackBright" | "redBright" | "greenBright" | "yellowBright" | "blueBright" | "magentaBright" | "cyanBright" | "whiteBright";
52
+ /**
53
+ * The border style
54
+ * @default 'solid'
55
+ * @example 'single-double-rounded'
56
+ * @example
57
+ * ```ts
58
+ * {
59
+ * tl: '┌',
60
+ * tr: '┐',
61
+ * bl: '└',
62
+ * br: '┘',
63
+ * h: '─',
64
+ * v: '│',
65
+ * }
66
+ * ```
67
+ */
68
+ borderStyle: BoxBorderStyle | keyof typeof boxStylePresets;
69
+ /**
70
+ * The vertical alignment of the text
71
+ * @default 'center'
72
+ */
73
+ valign: "top" | "center" | "bottom";
74
+ /**
75
+ * The padding of the box
76
+ * @default 2
77
+ */
78
+ padding: number;
79
+ /**
80
+ * The left margin of the box
81
+ * @default 1
82
+ */
83
+ marginLeft: number;
84
+ /**
85
+ * The top margin of the box
86
+ * @default 1
87
+ */
88
+ marginTop: number;
89
+ /**
90
+ * The top margin of the box
91
+ * @default 1
92
+ */
93
+ marginBottom: number;
94
+ };
95
+ /**
96
+ * The border options of the box
97
+ */
98
+ type BoxOpts = {
99
+ /**
100
+ * Title that will be displayed on top of the box
101
+ * @example 'Hello World'
102
+ * @example 'Hello {name}'
103
+ */
104
+ title?: string;
105
+ style?: Partial<BoxStyle>;
106
+ };
107
+ declare function box(text: string, _opts?: BoxOpts): string;
108
+
109
+ /**
110
+ * Based on https://github.com/jorgebucaran/colorette
111
+ * Read LICENSE file for more information
112
+ * https://github.com/jorgebucaran/colorette/blob/20fc196d07d0f87c61e0256eadd7831c79b24108/index.js
113
+ */
114
+ declare const colorDefs: {
115
+ reset: (string: string) => string;
116
+ bold: (string: string) => string;
117
+ dim: (string: string) => string;
118
+ italic: (string: string) => string;
119
+ underline: (string: string) => string;
120
+ inverse: (string: string) => string;
121
+ hidden: (string: string) => string;
122
+ strikethrough: (string: string) => string;
123
+ black: (string: string) => string;
124
+ red: (string: string) => string;
125
+ green: (string: string) => string;
126
+ yellow: (string: string) => string;
127
+ blue: (string: string) => string;
128
+ magenta: (string: string) => string;
129
+ cyan: (string: string) => string;
130
+ white: (string: string) => string;
131
+ gray: (string: string) => string;
132
+ bgBlack: (string: string) => string;
133
+ bgRed: (string: string) => string;
134
+ bgGreen: (string: string) => string;
135
+ bgYellow: (string: string) => string;
136
+ bgBlue: (string: string) => string;
137
+ bgMagenta: (string: string) => string;
138
+ bgCyan: (string: string) => string;
139
+ bgWhite: (string: string) => string;
140
+ blackBright: (string: string) => string;
141
+ redBright: (string: string) => string;
142
+ greenBright: (string: string) => string;
143
+ yellowBright: (string: string) => string;
144
+ blueBright: (string: string) => string;
145
+ magentaBright: (string: string) => string;
146
+ cyanBright: (string: string) => string;
147
+ whiteBright: (string: string) => string;
148
+ bgBlackBright: (string: string) => string;
149
+ bgRedBright: (string: string) => string;
150
+ bgGreenBright: (string: string) => string;
151
+ bgYellowBright: (string: string) => string;
152
+ bgBlueBright: (string: string) => string;
153
+ bgMagentaBright: (string: string) => string;
154
+ bgCyanBright: (string: string) => string;
155
+ bgWhiteBright: (string: string) => string;
156
+ };
157
+ type ColorName = keyof typeof colorDefs;
158
+ type ColorFunction = (text: string | number) => string;
159
+ declare const colors: Record<"reset" | "bold" | "dim" | "italic" | "underline" | "inverse" | "hidden" | "strikethrough" | "black" | "red" | "green" | "yellow" | "blue" | "magenta" | "cyan" | "white" | "gray" | "bgBlack" | "bgRed" | "bgGreen" | "bgYellow" | "bgBlue" | "bgMagenta" | "bgCyan" | "bgWhite" | "blackBright" | "redBright" | "greenBright" | "yellowBright" | "blueBright" | "magentaBright" | "cyanBright" | "whiteBright" | "bgBlackBright" | "bgRedBright" | "bgGreenBright" | "bgYellowBright" | "bgBlueBright" | "bgMagentaBright" | "bgCyanBright" | "bgWhiteBright", ColorFunction>;
160
+ declare function getColor(color: ColorName, fallback?: ColorName): ColorFunction;
161
+ declare function colorize(color: ColorName, text: string | number): string;
162
+
163
+ declare function stripAnsi(text: string): string;
164
+ declare function centerAlign(str: string, len: number, space?: string): string;
165
+ declare function rightAlign(str: string, len: number, space?: string): string;
166
+ declare function leftAlign(str: string, len: number, space?: string): string;
167
+ declare function align(alignment: "left" | "right" | "center", str: string, len: number, space?: string): string;
168
+
169
+ export { BoxBorderStyle, BoxOpts, BoxStyle, ColorFunction, ColorName, align, box, centerAlign, colorize, colors, getColor, leftAlign, rightAlign, stripAnsi };