@nuxt/ui 3.0.0-alpha.0 → 3.0.0-alpha.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 (173) 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.d.mts +9 -2
  63. package/dist/module.d.ts +9 -2
  64. package/dist/module.json +3 -3
  65. package/dist/module.mjs +62 -103
  66. package/dist/runtime/components/Accordion.vue +49 -6
  67. package/dist/runtime/components/Alert.vue +58 -6
  68. package/dist/runtime/components/App.vue +12 -2
  69. package/dist/runtime/components/Avatar.vue +27 -6
  70. package/dist/runtime/components/AvatarGroup.vue +30 -6
  71. package/dist/runtime/components/Badge.vue +28 -6
  72. package/dist/runtime/components/Breadcrumb.vue +44 -6
  73. package/dist/runtime/components/Button.vue +68 -10
  74. package/dist/runtime/components/ButtonGroup.vue +30 -6
  75. package/dist/runtime/components/Card.vue +25 -6
  76. package/dist/runtime/components/Checkbox.vue +45 -6
  77. package/dist/runtime/components/Chip.vue +39 -6
  78. package/dist/runtime/components/Collapsible.vue +27 -6
  79. package/dist/runtime/components/CommandPalette.vue +100 -7
  80. package/dist/runtime/components/Container.vue +22 -6
  81. package/dist/runtime/components/ContextMenu.vue +58 -6
  82. package/dist/runtime/components/ContextMenuContent.vue +18 -4
  83. package/dist/runtime/components/Drawer.vue +48 -6
  84. package/dist/runtime/components/DropdownMenu.vue +66 -6
  85. package/dist/runtime/components/DropdownMenuContent.vue +22 -4
  86. package/dist/runtime/components/Form.vue +58 -26
  87. package/dist/runtime/components/FormField.vue +41 -16
  88. package/dist/runtime/components/Icon.vue +12 -2
  89. package/dist/runtime/components/Input.vue +46 -6
  90. package/dist/runtime/components/InputMenu.vue +113 -6
  91. package/dist/runtime/components/Kbd.vue +28 -6
  92. package/dist/runtime/components/Link.vue +81 -17
  93. package/dist/runtime/components/LinkBase.vue +18 -7
  94. package/dist/runtime/components/Modal.vue +69 -6
  95. package/dist/runtime/components/NavigationMenu.vue +76 -6
  96. package/dist/runtime/components/Pagination.vue +99 -6
  97. package/dist/runtime/components/Popover.vue +42 -6
  98. package/dist/runtime/components/Progress.vue +44 -6
  99. package/dist/runtime/components/RadioGroup.vue +55 -7
  100. package/dist/runtime/components/Select.vue +89 -7
  101. package/dist/runtime/components/SelectMenu.vue +105 -7
  102. package/dist/runtime/components/Separator.vue +41 -6
  103. package/dist/runtime/components/Skeleton.vue +18 -6
  104. package/dist/runtime/components/Slideover.vue +67 -6
  105. package/dist/runtime/components/Slider.vue +36 -6
  106. package/dist/runtime/components/Switch.vue +50 -6
  107. package/dist/runtime/components/Tabs.vue +59 -6
  108. package/dist/runtime/components/Textarea.vue +46 -6
  109. package/dist/runtime/components/Toast.vue +55 -6
  110. package/dist/runtime/components/Toaster.vue +28 -7
  111. package/dist/runtime/components/Tooltip.vue +42 -6
  112. package/dist/runtime/composables/useAvatarGroup.d.ts +2 -2
  113. package/dist/runtime/composables/useButtonGroup.d.ts +3 -3
  114. package/dist/runtime/composables/useFormField.d.ts +7 -3
  115. package/dist/runtime/composables/useFormField.js +12 -7
  116. package/dist/runtime/composables/useModal.d.ts +1 -1
  117. package/dist/runtime/composables/useSlideover.d.ts +1 -1
  118. package/dist/runtime/composables/useToast.d.ts +2 -2
  119. package/dist/runtime/index.css +1 -0
  120. package/dist/runtime/plugins/colors.d.ts +2 -0
  121. package/dist/runtime/plugins/modal.d.ts +2 -0
  122. package/dist/runtime/plugins/slideover.d.ts +2 -0
  123. package/dist/runtime/types/form.d.ts +1 -2
  124. package/dist/runtime/utils/index.d.ts +1 -1
  125. package/dist/runtime/utils/link.d.ts +23 -55
  126. package/package.json +26 -25
  127. package/dist/runtime/assets/css/animations.css +0 -1
  128. package/dist/runtime/components/Accordion.vue.d.ts +0 -492
  129. package/dist/runtime/components/Alert.vue.d.ts +0 -548
  130. package/dist/runtime/components/App.vue.d.ts +0 -25
  131. package/dist/runtime/components/Avatar.vue.d.ts +0 -384
  132. package/dist/runtime/components/AvatarGroup.vue.d.ts +0 -381
  133. package/dist/runtime/components/Badge.vue.d.ts +0 -422
  134. package/dist/runtime/components/Breadcrumb.vue.d.ts +0 -307
  135. package/dist/runtime/components/Button.vue.d.ts +0 -949
  136. package/dist/runtime/components/ButtonGroup.vue.d.ts +0 -182
  137. package/dist/runtime/components/Card.vue.d.ts +0 -191
  138. package/dist/runtime/components/Checkbox.vue.d.ts +0 -819
  139. package/dist/runtime/components/Chip.vue.d.ts +0 -590
  140. package/dist/runtime/components/Collapsible.vue.d.ts +0 -159
  141. package/dist/runtime/components/CommandPalette.vue.d.ts +0 -684
  142. package/dist/runtime/components/Container.vue.d.ts +0 -27
  143. package/dist/runtime/components/ContextMenu.vue.d.ts +0 -796
  144. package/dist/runtime/components/ContextMenuContent.vue.d.ts +0 -0
  145. package/dist/runtime/components/Drawer.vue.d.ts +0 -343
  146. package/dist/runtime/components/DropdownMenu.vue.d.ts +0 -815
  147. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +0 -0
  148. package/dist/runtime/components/Form.vue.d.ts +0 -39
  149. package/dist/runtime/components/FormField.vue.d.ts +0 -356
  150. package/dist/runtime/components/Icon.vue.d.ts +0 -17
  151. package/dist/runtime/components/Input.vue.d.ts +0 -1137
  152. package/dist/runtime/components/InputMenu.vue.d.ts +0 -2121
  153. package/dist/runtime/components/Kbd.vue.d.ts +0 -169
  154. package/dist/runtime/components/Link.vue.d.ts +0 -76
  155. package/dist/runtime/components/LinkBase.vue.d.ts +0 -49
  156. package/dist/runtime/components/Modal.vue.d.ts +0 -319
  157. package/dist/runtime/components/NavigationMenu.vue.d.ts +0 -1789
  158. package/dist/runtime/components/Pagination.vue.d.ts +0 -295
  159. package/dist/runtime/components/Popover.vue.d.ts +0 -197
  160. package/dist/runtime/components/Progress.vue.d.ts +0 -1781
  161. package/dist/runtime/components/RadioGroup.vue.d.ts +0 -1715
  162. package/dist/runtime/components/Select.vue.d.ts +0 -1569
  163. package/dist/runtime/components/SelectMenu.vue.d.ts +0 -1661
  164. package/dist/runtime/components/Separator.vue.d.ts +0 -0
  165. package/dist/runtime/components/Skeleton.vue.d.ts +0 -26
  166. package/dist/runtime/components/Slideover.vue.d.ts +0 -375
  167. package/dist/runtime/components/Slider.vue.d.ts +0 -0
  168. package/dist/runtime/components/Switch.vue.d.ts +0 -1676
  169. package/dist/runtime/components/Tabs.vue.d.ts +0 -934
  170. package/dist/runtime/components/Textarea.vue.d.ts +0 -1133
  171. package/dist/runtime/components/Toast.vue.d.ts +0 -0
  172. package/dist/runtime/components/Toaster.vue.d.ts +0 -362
  173. 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 };