@zakmandhro/bunti 0.1.4 → 0.2.0
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.
- package/AGENTS.md +65 -0
- package/README.md +145 -34
- package/dist/cli.d.ts +44 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +147 -0
- package/dist/cli.js.map +1 -0
- package/dist/colors.d.ts +144 -0
- package/dist/colors.d.ts.map +1 -0
- package/dist/colors.js +426 -0
- package/dist/colors.js.map +1 -0
- package/dist/components/Box.d.ts +11 -0
- package/dist/components/Box.d.ts.map +1 -0
- package/dist/components/Box.js +9 -0
- package/dist/components/Box.js.map +1 -0
- package/dist/components/Button.d.ts +24 -0
- package/dist/components/Button.d.ts.map +1 -0
- package/dist/components/Button.js +102 -0
- package/dist/components/Button.js.map +1 -0
- package/dist/components/Card.d.ts +33 -0
- package/dist/components/Card.d.ts.map +1 -0
- package/dist/components/Card.js +79 -0
- package/dist/components/Card.js.map +1 -0
- package/dist/components/Header.d.ts +23 -0
- package/dist/components/Header.d.ts.map +1 -0
- package/dist/components/Header.js +58 -0
- package/dist/components/Header.js.map +1 -0
- package/dist/components/Input.d.ts +25 -0
- package/dist/components/Input.d.ts.map +1 -0
- package/dist/components/Input.js +232 -0
- package/dist/components/Input.js.map +1 -0
- package/dist/components/Link.d.ts +21 -0
- package/dist/components/Link.d.ts.map +1 -0
- package/dist/components/Link.js +29 -0
- package/dist/components/Link.js.map +1 -0
- package/dist/components/Modal.d.ts +38 -0
- package/dist/components/Modal.d.ts.map +1 -0
- package/dist/components/Modal.js +87 -0
- package/dist/components/Modal.js.map +1 -0
- package/dist/components/Progress.d.ts +27 -0
- package/dist/components/Progress.d.ts.map +1 -0
- package/dist/components/Progress.js +39 -0
- package/dist/components/Progress.js.map +1 -0
- package/dist/components/Spinner.d.ts +19 -0
- package/dist/components/Spinner.d.ts.map +1 -0
- package/dist/components/Spinner.js +27 -0
- package/dist/components/Spinner.js.map +1 -0
- package/dist/components/index.d.ts +10 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +10 -0
- package/dist/components/index.js.map +1 -0
- package/dist/data/nf-glyphs.d.ts +11 -0
- package/dist/data/nf-glyphs.d.ts.map +1 -0
- package/dist/data/nf-glyphs.js +535 -0
- package/dist/data/nf-glyphs.js.map +1 -0
- package/dist/data/nf-names.d.ts +8 -0
- package/dist/data/nf-names.d.ts.map +1 -0
- package/dist/data/nf-names.js +2 -0
- package/dist/data/nf-names.js.map +1 -0
- package/dist/demo-registry.d.ts +27 -0
- package/dist/demo-registry.d.ts.map +1 -0
- package/dist/demo-registry.js +57 -0
- package/dist/demo-registry.js.map +1 -0
- package/dist/demos/2048.ts +743 -0
- package/dist/demos/animation.ts +246 -0
- package/dist/demos/demo-layout.ts +124 -0
- package/dist/demos/engine.ts +374 -0
- package/dist/demos/interaction.ts +91 -0
- package/dist/demos/login.ts +203 -0
- package/dist/demos/mission-control.ts +558 -0
- package/dist/demos/showcase.ts +224 -0
- package/dist/detect.d.ts +104 -0
- package/dist/detect.d.ts.map +1 -0
- package/dist/detect.js +227 -0
- package/dist/detect.js.map +1 -0
- package/dist/diagnostics.d.ts +73 -0
- package/dist/diagnostics.d.ts.map +1 -0
- package/dist/diagnostics.js +225 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/dsl/context.d.ts +11 -0
- package/dist/dsl/context.d.ts.map +1 -0
- package/dist/dsl/context.js +563 -0
- package/dist/dsl/context.js.map +1 -0
- package/dist/dsl/hooks.d.ts +12 -0
- package/dist/dsl/hooks.d.ts.map +1 -0
- package/dist/dsl/hooks.js +148 -0
- package/dist/dsl/hooks.js.map +1 -0
- package/dist/dsl/interaction.d.ts +16 -0
- package/dist/dsl/interaction.d.ts.map +1 -0
- package/dist/dsl/interaction.js +101 -0
- package/dist/dsl/interaction.js.map +1 -0
- package/dist/dsl/layers.d.ts +14 -0
- package/dist/dsl/layers.d.ts.map +1 -0
- package/dist/dsl/layers.js +87 -0
- package/dist/dsl/layers.js.map +1 -0
- package/dist/dsl/motion.d.ts +10 -0
- package/dist/dsl/motion.d.ts.map +1 -0
- package/dist/dsl/motion.js +150 -0
- package/dist/dsl/motion.js.map +1 -0
- package/dist/dsl/render.d.ts +22 -0
- package/dist/dsl/render.d.ts.map +1 -0
- package/dist/dsl/render.js +69 -0
- package/dist/dsl/render.js.map +1 -0
- package/dist/dsl/types.d.ts +510 -0
- package/dist/dsl/types.d.ts.map +1 -0
- package/dist/dsl/types.js +33 -0
- package/dist/dsl/types.js.map +1 -0
- package/dist/dsl.d.ts +18 -0
- package/dist/dsl.d.ts.map +1 -0
- package/dist/dsl.js +17 -0
- package/dist/dsl.js.map +1 -0
- package/dist/easing.d.ts +45 -0
- package/dist/easing.d.ts.map +1 -0
- package/dist/easing.js +121 -0
- package/dist/easing.js.map +1 -0
- package/dist/geometry.d.ts +77 -0
- package/dist/geometry.d.ts.map +1 -0
- package/dist/geometry.js +130 -0
- package/dist/geometry.js.map +1 -0
- package/dist/icons-full.d.ts +5 -0
- package/dist/icons-full.d.ts.map +1 -0
- package/dist/icons-full.js +31 -0
- package/dist/icons-full.js.map +1 -0
- package/dist/icons.d.ts +442 -0
- package/dist/icons.d.ts.map +1 -0
- package/dist/icons.js +314 -0
- package/dist/icons.js.map +1 -0
- package/dist/index.d.ts +228 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +46 -0
- package/dist/index.js.map +1 -0
- package/dist/input.d.ts +177 -0
- package/dist/input.d.ts.map +1 -0
- package/dist/input.js +533 -0
- package/dist/input.js.map +1 -0
- package/dist/layout.d.ts +194 -0
- package/dist/layout.d.ts.map +1 -0
- package/dist/layout.js +673 -0
- package/dist/layout.js.map +1 -0
- package/dist/render.d.ts +49 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +650 -0
- package/dist/render.js.map +1 -0
- package/dist/state.d.ts +226 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +130 -0
- package/dist/state.js.map +1 -0
- package/dist/theme.d.ts +129 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +167 -0
- package/dist/theme.js.map +1 -0
- package/dist/themes/catppuccin-mocha.d.ts +19 -0
- package/dist/themes/catppuccin-mocha.d.ts.map +1 -0
- package/dist/themes/catppuccin-mocha.js +36 -0
- package/dist/themes/catppuccin-mocha.js.map +1 -0
- package/dist/themes/dracula.d.ts +21 -0
- package/dist/themes/dracula.d.ts.map +1 -0
- package/dist/themes/dracula.js +37 -0
- package/dist/themes/dracula.js.map +1 -0
- package/dist/themes/github-light.d.ts +21 -0
- package/dist/themes/github-light.d.ts.map +1 -0
- package/dist/themes/github-light.js +36 -0
- package/dist/themes/github-light.js.map +1 -0
- package/dist/themes/index.d.ts +19 -0
- package/dist/themes/index.d.ts.map +1 -0
- package/dist/themes/index.js +17 -0
- package/dist/themes/index.js.map +1 -0
- package/dist/themes/nord.d.ts +23 -0
- package/dist/themes/nord.d.ts.map +1 -0
- package/dist/themes/nord.js +38 -0
- package/dist/themes/nord.js.map +1 -0
- package/dist/themes/one-dark-pro.d.ts +21 -0
- package/dist/themes/one-dark-pro.d.ts.map +1 -0
- package/dist/themes/one-dark-pro.js +36 -0
- package/dist/themes/one-dark-pro.js.map +1 -0
- package/dist/themes/tokyo-night.d.ts +20 -0
- package/dist/themes/tokyo-night.d.ts.map +1 -0
- package/dist/themes/tokyo-night.js +37 -0
- package/dist/themes/tokyo-night.js.map +1 -0
- package/dist/utils.d.ts +28 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +158 -0
- package/dist/utils.js.map +1 -0
- package/dist/vendor/colors.d.ts +45 -0
- package/dist/vendor/colors.d.ts.map +1 -0
- package/dist/vendor/colors.js +72 -0
- package/dist/vendor/colors.js.map +1 -0
- package/llms.txt +79 -0
- package/package.json +52 -11
- package/src/colors.ts +0 -255
- package/src/components/Button.ts +0 -104
- package/src/components/Card.ts +0 -53
- package/src/components/Header.ts +0 -65
- package/src/components/Input.ts +0 -124
- package/src/components/index.ts +0 -4
- package/src/data/glyphs.ts +0 -30
- package/src/detect.ts +0 -60
- package/src/dsl.ts +0 -661
- package/src/icons.ts +0 -186
- package/src/index.ts +0 -72
- package/src/layout.ts +0 -640
- package/src/render.ts +0 -302
- package/src/state.ts +0 -148
- package/src/utils.ts +0 -165
package/dist/icons.js
ADDED
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
import { identifyTerminal, } from './detect';
|
|
2
|
+
import { hintsSuppressed, nearestMatch, registerHintFlusher, } from './diagnostics';
|
|
3
|
+
const CURATED_ICONS = {
|
|
4
|
+
add: { nf: '\uf067', ascii: '+' },
|
|
5
|
+
'arrow-left': { nf: '\uf060', ascii: '<' },
|
|
6
|
+
'arrow-right': { nf: '\uf061', ascii: '>' },
|
|
7
|
+
bars: { nf: '\uf0c9', ascii: '=' },
|
|
8
|
+
bell: { nf: '\uf0f3', ascii: '!' },
|
|
9
|
+
branch: { nf: '\uf418', ascii: '*' },
|
|
10
|
+
bullet: { nf: '\uf111', ascii: '*' },
|
|
11
|
+
bun: { nf: '\ue76f', ascii: 'B' },
|
|
12
|
+
bunti: { nf: '\u{f0065}', ascii: '@' },
|
|
13
|
+
check: { nf: '\uf00c', ascii: 'v' },
|
|
14
|
+
checkbox: { nf: '\uf0c8', ascii: '#' },
|
|
15
|
+
'checkbox-check': { nf: '\uf14a', ascii: 'X' },
|
|
16
|
+
'chevron-down': { nf: '\uf078', ascii: 'v' },
|
|
17
|
+
'chevron-left': { nf: '\uf053', ascii: '<' },
|
|
18
|
+
'chevron-right': { nf: '\uf054', ascii: '>' },
|
|
19
|
+
close: { nf: '\uf00d', ascii: 'x' },
|
|
20
|
+
cloud: { nf: '\uf0c2', ascii: 'C' },
|
|
21
|
+
code: { nf: '\uf121', ascii: '{' },
|
|
22
|
+
commit: { nf: '\uf172', ascii: '+' },
|
|
23
|
+
copy: { nf: '\uf0c5', ascii: '=' },
|
|
24
|
+
cpu: { nf: '\uf2db', ascii: 'C' },
|
|
25
|
+
database: { nf: '\uf1c0', ascii: 'D' },
|
|
26
|
+
desktop: { nf: '\u{f01c4}', ascii: 'D' },
|
|
27
|
+
disk: { nf: '\uf0a0', ascii: 'D' },
|
|
28
|
+
download: { nf: '\uf019', ascii: 'v' },
|
|
29
|
+
'draft-pr': { nf: '\uebdb', ascii: '!' },
|
|
30
|
+
edit: { nf: '\uf044', ascii: 'e' },
|
|
31
|
+
error: { nf: '\uf00d', ascii: 'x' },
|
|
32
|
+
exit: { nf: '\uf08b', ascii: '<' },
|
|
33
|
+
external: { nf: '\uf08e', ascii: '>' },
|
|
34
|
+
eye: { nf: '\uf06e', ascii: 'v' },
|
|
35
|
+
'eye-off': { nf: '\uf070', ascii: 'h' },
|
|
36
|
+
file: { nf: '\uf15b', ascii: '-' },
|
|
37
|
+
folder: { nf: '\uf07b', ascii: '[' },
|
|
38
|
+
'folder-open': { nf: '\uf115', ascii: '{' },
|
|
39
|
+
fork: { nf: '\uf41a', ascii: 'Y' },
|
|
40
|
+
gear: { nf: '\uf423', ascii: '*' },
|
|
41
|
+
git: { nf: '\ue702', ascii: 'g' },
|
|
42
|
+
grid: { nf: '\uf009', ascii: '#' },
|
|
43
|
+
heart: { nf: '\uf004', ascii: '*' },
|
|
44
|
+
'help-circle': { nf: '\uf059', ascii: '?' },
|
|
45
|
+
home: { nf: '\uf015', ascii: 'H' },
|
|
46
|
+
image: { nf: '\uf03e', ascii: 'I' },
|
|
47
|
+
info: { nf: '\uf05a', ascii: 'i' },
|
|
48
|
+
issue: { nf: '\uebd9', ascii: '#' },
|
|
49
|
+
json: { nf: '\ue60b', ascii: 'J' },
|
|
50
|
+
laptop: { nf: '\uf109', ascii: 'L' },
|
|
51
|
+
list: { nf: '\uf03a', ascii: '=' },
|
|
52
|
+
loading: { nf: '\uf110', ascii: '~' },
|
|
53
|
+
lock: { nf: '\uf023', ascii: 'L' },
|
|
54
|
+
mail: { nf: '\uf0e0', ascii: '@' },
|
|
55
|
+
markdown: { nf: '\uf48a', ascii: 'M' },
|
|
56
|
+
maximize: { nf: '\uf0c8', ascii: '^' },
|
|
57
|
+
memory: { nf: '\uf0c7', ascii: 'M' },
|
|
58
|
+
menu: { nf: '\uf0c9', ascii: '=' },
|
|
59
|
+
merge: { nf: '\uf419', ascii: '>' },
|
|
60
|
+
minimize: { nf: '\u{f10fe}', ascii: 'v' },
|
|
61
|
+
network: { nf: '\uf0ac', ascii: 'N' },
|
|
62
|
+
node: { nf: '\ue718', ascii: 'N' },
|
|
63
|
+
pause: { nf: '\uf04c', ascii: '|' },
|
|
64
|
+
pencil: { nf: '\uf044', ascii: 'e' },
|
|
65
|
+
planet: { nf: '\ue22e', ascii: 'O' },
|
|
66
|
+
play: { nf: '\uf04b', ascii: '>' },
|
|
67
|
+
'plus-circle': { nf: '\uea60', ascii: '+' },
|
|
68
|
+
pr: { nf: '\uf41d', ascii: '!' },
|
|
69
|
+
refresh: { nf: '\uf021', ascii: 'R' },
|
|
70
|
+
remove: { nf: '\uf068', ascii: '-' },
|
|
71
|
+
repo: { nf: '\uf401', ascii: 'R' },
|
|
72
|
+
robot: { nf: '\u{f06a9}', ascii: 'A' },
|
|
73
|
+
rocket: { nf: '\uf135', ascii: 'R' },
|
|
74
|
+
satellite: { nf: '\uef5f', ascii: 'S' },
|
|
75
|
+
save: { nf: '\uf0c7', ascii: 'S' },
|
|
76
|
+
search: { nf: '\uf002', ascii: '/' },
|
|
77
|
+
send: { nf: '\uec0f', ascii: '>' },
|
|
78
|
+
server: { nf: '\uf233', ascii: 'S' },
|
|
79
|
+
settings: { nf: '\uf013', ascii: '*' },
|
|
80
|
+
'staggered-bars': { nf: '\u{ee19}', ascii: '=' },
|
|
81
|
+
star: { nf: '\uf005', ascii: '*' },
|
|
82
|
+
stop: { nf: '\uf04d', ascii: 'X' },
|
|
83
|
+
success: { nf: '\uf00c', ascii: 'v' },
|
|
84
|
+
tag: { nf: '\u{f04fc}', ascii: 't' },
|
|
85
|
+
terminal: { nf: '\uf120', ascii: '$' },
|
|
86
|
+
trash: { nf: '\uf1f8', ascii: 'x' },
|
|
87
|
+
user: { nf: '\uf007', ascii: 'U' },
|
|
88
|
+
warning: { nf: '\uf071', ascii: '!' },
|
|
89
|
+
wizard: { nf: '\u{f1477}', ascii: 'W' },
|
|
90
|
+
yaml: { nf: '\ue6a8', ascii: 'Y' },
|
|
91
|
+
zap: { nf: '\uf0e7', ascii: 'z' },
|
|
92
|
+
};
|
|
93
|
+
/** The curated icon table: 89 width-audited names with ASCII fallbacks. */
|
|
94
|
+
export const ICON_MAP = CURATED_ICONS;
|
|
95
|
+
/**
|
|
96
|
+
* Emoji-to-icon-name swaps applied automatically to drawn text (emoji
|
|
97
|
+
* render at unreliable widths across terminals; their NF twins are
|
|
98
|
+
* width-audited). Set `raw: true` on a cell to bypass.
|
|
99
|
+
*/
|
|
100
|
+
export const EMOJI_MAP = {
|
|
101
|
+
'🌿': 'branch',
|
|
102
|
+
'📥': 'pr',
|
|
103
|
+
'📌': 'commit',
|
|
104
|
+
'🔀': 'merge',
|
|
105
|
+
'🍴': 'fork',
|
|
106
|
+
'🏷️': 'tag',
|
|
107
|
+
'📁': 'folder',
|
|
108
|
+
'📂': 'folder-open',
|
|
109
|
+
'📄': 'file',
|
|
110
|
+
'💻': 'laptop',
|
|
111
|
+
'🖥️': 'desktop',
|
|
112
|
+
'📝': 'edit',
|
|
113
|
+
'📦': 'json',
|
|
114
|
+
'📜': 'yaml',
|
|
115
|
+
'✅': 'success',
|
|
116
|
+
'❌': 'error',
|
|
117
|
+
'⚠️': 'warning',
|
|
118
|
+
ℹ️: 'info',
|
|
119
|
+
'⏳': 'loading',
|
|
120
|
+
'🚀': 'rocket',
|
|
121
|
+
'🥟': 'satellite',
|
|
122
|
+
'🪐': 'planet',
|
|
123
|
+
'🌀': 'bunti',
|
|
124
|
+
'🤖': 'robot',
|
|
125
|
+
'🗑️': 'trash',
|
|
126
|
+
'⚙️': 'gear',
|
|
127
|
+
'🔔': 'bell',
|
|
128
|
+
'✉️': 'mail',
|
|
129
|
+
'🖼️': 'image',
|
|
130
|
+
'❓': 'help-circle',
|
|
131
|
+
'🙂': 'success',
|
|
132
|
+
'😊': 'success',
|
|
133
|
+
'😀': 'success',
|
|
134
|
+
};
|
|
135
|
+
const _GENERIC_ICON = '\uf0010';
|
|
136
|
+
const cachedCaps = {
|
|
137
|
+
nerdFont: true,
|
|
138
|
+
glyphProtocol: false,
|
|
139
|
+
unicode: true,
|
|
140
|
+
color: true,
|
|
141
|
+
};
|
|
142
|
+
// Single precompiled alternation instead of 33 RegExp constructions per call.
|
|
143
|
+
// Longest keys first so variants with a variation selector win over bare emoji.
|
|
144
|
+
let emojiPattern = null;
|
|
145
|
+
function getEmojiPattern() {
|
|
146
|
+
if (!emojiPattern) {
|
|
147
|
+
const keys = Object.keys(EMOJI_MAP).sort((a, b) => b.length - a.length);
|
|
148
|
+
emojiPattern = new RegExp(`(?:${keys.join('|')})[\uFE00-\uFE0F]?`, 'g');
|
|
149
|
+
}
|
|
150
|
+
return emojiPattern;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Swaps known emoji in a string for their width-audited Nerd Font icons
|
|
154
|
+
* (see EMOJI_MAP). Applied automatically by draw calls; no-op on the
|
|
155
|
+
* ASCII tier.
|
|
156
|
+
*/
|
|
157
|
+
export function replaceEmojis(text) {
|
|
158
|
+
if (!text)
|
|
159
|
+
return '';
|
|
160
|
+
if (!cachedCaps.nerdFont)
|
|
161
|
+
return text;
|
|
162
|
+
// Fast path: pure-ASCII strings (the overwhelming majority of cells) contain no emoji.
|
|
163
|
+
let ascii = true;
|
|
164
|
+
for (let i = 0; i < text.length; i++) {
|
|
165
|
+
if (text.charCodeAt(i) > 0x7f) {
|
|
166
|
+
ascii = false;
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
if (ascii)
|
|
171
|
+
return text;
|
|
172
|
+
return text.replace(getEmojiPattern(), (match) => {
|
|
173
|
+
// Map keys may or may not carry a trailing variation selector; try both.
|
|
174
|
+
const name = EMOJI_MAP[match] ?? EMOJI_MAP[match.replace(/[\uFE00-\uFE0F]$/, '')];
|
|
175
|
+
return name ? getIcon(name, cachedCaps) : match;
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Initializes the icon tier from terminal detection.
|
|
180
|
+
*
|
|
181
|
+
* - `init({ nerdFont })` forces the tier explicitly (always wins).
|
|
182
|
+
* - `init({ profile })` derives it from a pre-detected TerminalProfile
|
|
183
|
+
* (render() passes the per-screen profile here).
|
|
184
|
+
* - `init()` runs env detection itself via `identifyTerminal()`.
|
|
185
|
+
*
|
|
186
|
+
* 'yes' / 'assumed-yes' policies map to Nerd Font glyphs; everything else
|
|
187
|
+
* falls back to the ASCII tier. Until init() is called the module defaults
|
|
188
|
+
* to Nerd Font glyphs (back-compat for direct icon() usage).
|
|
189
|
+
*/
|
|
190
|
+
export async function init(options) {
|
|
191
|
+
if (options?.nerdFont !== undefined) {
|
|
192
|
+
cachedCaps.nerdFont = options.nerdFont;
|
|
193
|
+
return cachedCaps;
|
|
194
|
+
}
|
|
195
|
+
const profile = options?.profile ?? identifyTerminal();
|
|
196
|
+
cachedCaps.nerdFont =
|
|
197
|
+
profile.nerdFont === 'yes' || profile.nerdFont === 'assumed-yes';
|
|
198
|
+
cachedCaps.glyphProtocol = profile.app === 'ghostty';
|
|
199
|
+
return cachedCaps;
|
|
200
|
+
}
|
|
201
|
+
// --- Runtime icon registry (tier 2) ---
|
|
202
|
+
// Consulted after the curated ICON_MAP. The icons-full subpath bulk-loads
|
|
203
|
+
// every Nerd Fonts glyph here; apps can also register their own icons.
|
|
204
|
+
const registryNf = new Map();
|
|
205
|
+
const registryAscii = new Map();
|
|
206
|
+
/** ASCII-tier stand-in for registered icons without an explicit fallback. */
|
|
207
|
+
const REGISTRY_ASCII_FALLBACK = '*';
|
|
208
|
+
function stripNfPrefix(name) {
|
|
209
|
+
return name.startsWith('nf-') ? name.slice(3) : name;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Registers a runtime icon. Accepts a bare Nerd Font glyph, or a full
|
|
213
|
+
* definition with an ASCII fallback for `init({ nerdFont: false })` tiers
|
|
214
|
+
* (bare glyphs fall back to '*' in the ASCII tier).
|
|
215
|
+
*/
|
|
216
|
+
export function register(name, glyphOrDef) {
|
|
217
|
+
if (typeof glyphOrDef === 'string') {
|
|
218
|
+
registryNf.set(name, glyphOrDef);
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
registryNf.set(name, glyphOrDef.nf);
|
|
222
|
+
registryAscii.set(name, glyphOrDef.ascii);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
/** Bulk-registers name -> glyph pairs (used by the icons-full subpath). */
|
|
226
|
+
export function registerAll(glyphs) {
|
|
227
|
+
for (const name in glyphs) {
|
|
228
|
+
registryNf.set(name, glyphs[name]);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
// --- Unknown-name diagnostics ---
|
|
232
|
+
// Misses are buffered in a Set and drained through the shared diagnostics
|
|
233
|
+
// exit flush (src/diagnostics.ts), so warnings never tear an active frame
|
|
234
|
+
// mid-render and every dev hint arrives in one block on process exit.
|
|
235
|
+
const missedNames = new Set();
|
|
236
|
+
let flusherRegistered = false;
|
|
237
|
+
function recordMiss(name) {
|
|
238
|
+
if (hintsSuppressed())
|
|
239
|
+
return;
|
|
240
|
+
missedNames.add(name);
|
|
241
|
+
if (!flusherRegistered) {
|
|
242
|
+
flusherRegistered = true;
|
|
243
|
+
registerHintFlusher(drainIconHintLines);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
function* iconNameCandidates() {
|
|
247
|
+
yield* Object.keys(ICON_MAP);
|
|
248
|
+
yield* registryNf.keys();
|
|
249
|
+
}
|
|
250
|
+
function nearestIconName(name) {
|
|
251
|
+
return nearestMatch(stripNfPrefix(name), iconNameCandidates());
|
|
252
|
+
}
|
|
253
|
+
/** Drains buffered misses into hint lines (called by the exit flush). */
|
|
254
|
+
function drainIconHintLines() {
|
|
255
|
+
if (missedNames.size === 0)
|
|
256
|
+
return [];
|
|
257
|
+
const lines = [];
|
|
258
|
+
for (const name of missedNames) {
|
|
259
|
+
const hint = nearestIconName(name);
|
|
260
|
+
lines.push(`unknown icon '${name}' rendered as ''` +
|
|
261
|
+
`${hint ? ` (did you mean '${hint}'?)` : ''}`);
|
|
262
|
+
}
|
|
263
|
+
if (registryNf.size === 0) {
|
|
264
|
+
lines.push("tip: import '@zakmandhro/bunti/icons-full' to enable all ~10.7k Nerd Font icons by name");
|
|
265
|
+
}
|
|
266
|
+
missedNames.clear();
|
|
267
|
+
return lines;
|
|
268
|
+
}
|
|
269
|
+
/** @internal Test hook: unresolved names buffered so far. */
|
|
270
|
+
export function __iconMisses() {
|
|
271
|
+
return [...missedNames];
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Resolves an icon name. Resolution order:
|
|
275
|
+
* 1. Curated ICON_MAP (short names, keeps ASCII fallbacks + aliases).
|
|
276
|
+
* 2. Runtime registry (register()/registerAll(), e.g. the icons-full
|
|
277
|
+
* pack). A leading 'nf-' is stripped: 'nf-fa-rocket' === 'fa-rocket'.
|
|
278
|
+
* 3. '' — the miss is buffered and reported once on process exit.
|
|
279
|
+
*/
|
|
280
|
+
export function getIcon(name, caps) {
|
|
281
|
+
const def = ICON_MAP[name];
|
|
282
|
+
if (def)
|
|
283
|
+
return caps.nerdFont ? def.nf : def.ascii;
|
|
284
|
+
const key = registryNf.has(name) ? name : stripNfPrefix(name);
|
|
285
|
+
const nf = registryNf.get(key);
|
|
286
|
+
if (nf !== undefined) {
|
|
287
|
+
if (caps.nerdFont)
|
|
288
|
+
return nf;
|
|
289
|
+
return registryAscii.get(key) ?? REGISTRY_ASCII_FALLBACK;
|
|
290
|
+
}
|
|
291
|
+
recordMiss(name);
|
|
292
|
+
return '';
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Resolves an icon name to a glyph on the active tier (Nerd Font glyph,
|
|
296
|
+
* or ASCII fallback on plain terminals). Unknown names render as '' and
|
|
297
|
+
* are reported once on process exit with a nearest-name hint.
|
|
298
|
+
* @example text(`${icon('rocket')} Launch`);
|
|
299
|
+
*/
|
|
300
|
+
export function icon(name) {
|
|
301
|
+
return getIcon(name, cachedCaps);
|
|
302
|
+
}
|
|
303
|
+
/** Returns the Nerd Font glyph for a name regardless of the active tier. */
|
|
304
|
+
export function nerd(name) {
|
|
305
|
+
return (ICON_MAP[name]?.nf ??
|
|
306
|
+
registryNf.get(name) ??
|
|
307
|
+
registryNf.get(stripNfPrefix(name)) ??
|
|
308
|
+
'');
|
|
309
|
+
}
|
|
310
|
+
/** Picks the given Nerd Font char on the NF tier, else the fallback. */
|
|
311
|
+
export function nerdIcon(nfChar, fallback) {
|
|
312
|
+
return cachedCaps.nerdFont ? nfChar : fallback;
|
|
313
|
+
}
|
|
314
|
+
//# sourceMappingURL=icons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icons.js","sourceRoot":"","sources":["../src/icons.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import * as colors from './colors';
|
|
2
|
+
import * as detect from './detect';
|
|
3
|
+
import * as dsl from './dsl';
|
|
4
|
+
import * as geometry from './geometry';
|
|
5
|
+
import * as icons from './icons';
|
|
6
|
+
import * as input from './input';
|
|
7
|
+
import * as layout from './layout';
|
|
8
|
+
import * as state from './state';
|
|
9
|
+
import * as theme from './theme';
|
|
10
|
+
export type { ColorValue, Gradient } from './colors';
|
|
11
|
+
export { ansi256ToRGB, bg, contrastText, createGradient, fade, fg, hexToRGB, isThemeColor, PALETTE, relativeLuminance, resolveColor, resolveColorToRGB, rgb, rgbTo16, rgbTo256, rgbToHex, } from './colors';
|
|
12
|
+
export type { IconName } from './data/nf-names';
|
|
13
|
+
export type { ColorTier, NerdFontPolicy, TerminalApp, TerminalCapabilities, TerminalProfile, } from './detect';
|
|
14
|
+
export { colorTier, detectCapabilities, detectColorTier, identifyTerminal, setColorTier, } from './detect';
|
|
15
|
+
export type { BuntiContext, DSLBoxOptions, LayerOptions, TypewriterOptions, TypewriterState, } from './dsl';
|
|
16
|
+
export { KEYS, render } from './dsl';
|
|
17
|
+
export { clamp01, easeInCubic, easeInOutCubic, easeInOutQuad, easeInOutQuart, easeInQuad, easeInQuart, easeOutBack, easeOutBounce, easeOutCubic, easeOutElastic, easeOutExpo, easeOutQuad, easeOutQuart, lerp, lerpRect, linear, } from './easing';
|
|
18
|
+
export type { PlacedRectInput, PlacedRectOptions, Rect, RectInput, SplitOptions, } from './geometry';
|
|
19
|
+
export { innerRect, resolvePlacedRect, resolveRect, splitRect, } from './geometry';
|
|
20
|
+
export type { BuntiIconName, CuratedIconName, IconDefinition, } from './icons';
|
|
21
|
+
export { EMOJI_MAP, ICON_MAP, icon, init, nerd, nerdIcon, register, registerAll, replaceEmojis, } from './icons';
|
|
22
|
+
export type { HeldKeyOptions, InputToken, InputTokenizerOptions, KeyEvent, TerminalResponse, TerminalResponseKind, } from './input';
|
|
23
|
+
export { createKeyEvent, HeldKeyTracker, InputTokenizer } from './input';
|
|
24
|
+
export type { BorderStyle, ListOptions, StyleOptions, TableOptions, } from './layout';
|
|
25
|
+
export { badge, blit, box, createStyle, dimRect, getWindow, gradient, joinHorizontal, joinVertical, list, rect, setCell, table, viewport, wallpaper, } from './layout';
|
|
26
|
+
export { applyInputToState, drainFrameInput, flush, loop, renderFrame, restoreTerminal, updatePointerShape, } from './render';
|
|
27
|
+
export type { Cell, RGB, ScreenOptions, ScreenState } from './state';
|
|
28
|
+
export { ANSI, clearBackBuffer, createScreenState, resizeScreen, } from './state';
|
|
29
|
+
export type { Theme, ThemeColor, ThemeColorInput, ThemeInput, ThemeMode, ThemeToken, } from './theme';
|
|
30
|
+
export { createTheme, darkTheme, isTheme, lightTheme, resolveTheme, THEME_TOKENS, themeColor, } from './theme';
|
|
31
|
+
export { charWidth, indentBlock, stripAnsi, truncate, visibleWidth, } from './utils';
|
|
32
|
+
export type { BuntiColor, ColorFormatter } from './vendor/colors';
|
|
33
|
+
/**
|
|
34
|
+
* Namespaced API surface for `bunti.render(...)` style usage — every
|
|
35
|
+
* named export gathered onto one object.
|
|
36
|
+
* @example import { bunti } from '@zakmandhro/bunti'; await bunti.render(draw, { keyboard: true });
|
|
37
|
+
*/
|
|
38
|
+
export declare const bunti: {
|
|
39
|
+
themeColor(input: theme.ThemeColorInput): theme.ThemeColor;
|
|
40
|
+
isTheme(value: unknown): value is theme.Theme;
|
|
41
|
+
createTheme(input?: theme.ThemeInput): theme.Theme;
|
|
42
|
+
resolveTheme(input: theme.Theme | theme.ThemeInput, base?: theme.Theme): theme.Theme;
|
|
43
|
+
THEME_TOKENS: readonly ["background", "surface", "surfaceRaised", "foreground", "muted", "primary", "onPrimary", "accent", "border", "focus", "selection", "success", "warning", "danger", "info"];
|
|
44
|
+
darkTheme: theme.Theme;
|
|
45
|
+
lightTheme: theme.Theme;
|
|
46
|
+
resolveRect(parent: geometry.Rect, input: geometry.RectInput): geometry.Rect;
|
|
47
|
+
resolvePlacedRect(parent: geometry.Rect, input: geometry.PlacedRectInput, options?: geometry.PlacedRectOptions): geometry.Rect;
|
|
48
|
+
innerRect(rect: geometry.Rect, inset: number | {
|
|
49
|
+
top?: number;
|
|
50
|
+
right?: number;
|
|
51
|
+
bottom?: number;
|
|
52
|
+
left?: number;
|
|
53
|
+
}): geometry.Rect;
|
|
54
|
+
splitRect(rect: geometry.Rect, options: geometry.SplitOptions): geometry.Rect[];
|
|
55
|
+
clamp01(value: number): number;
|
|
56
|
+
linear(value: number): number;
|
|
57
|
+
easeInQuad(value: number): number;
|
|
58
|
+
easeOutQuad(value: number): number;
|
|
59
|
+
easeInOutQuad(value: number): number;
|
|
60
|
+
easeInCubic(value: number): number;
|
|
61
|
+
easeOutCubic(value: number): number;
|
|
62
|
+
easeInOutCubic(value: number): number;
|
|
63
|
+
easeInQuart(value: number): number;
|
|
64
|
+
easeOutQuart(value: number): number;
|
|
65
|
+
easeInOutQuart(value: number): number;
|
|
66
|
+
easeOutExpo(value: number): number;
|
|
67
|
+
easeOutElastic(value: number): number;
|
|
68
|
+
easeOutBounce(value: number): number;
|
|
69
|
+
easeOutBack(value: number): number;
|
|
70
|
+
lerp(a: number, b: number, t: number): number;
|
|
71
|
+
lerpRect(a: geometry.Rect, b: geometry.Rect, t: number): geometry.Rect;
|
|
72
|
+
createScreenContext: typeof dsl.createScreenContext;
|
|
73
|
+
render: typeof dsl.render;
|
|
74
|
+
KEYS: {
|
|
75
|
+
UP: string;
|
|
76
|
+
DOWN: string;
|
|
77
|
+
RIGHT: string;
|
|
78
|
+
LEFT: string;
|
|
79
|
+
ENTER: string;
|
|
80
|
+
ESCAPE: string;
|
|
81
|
+
TAB: string;
|
|
82
|
+
BACKSPACE: string;
|
|
83
|
+
SPACE: string;
|
|
84
|
+
HOME: string;
|
|
85
|
+
END: string;
|
|
86
|
+
DELETE: string;
|
|
87
|
+
PAGE_UP: string;
|
|
88
|
+
PAGE_DOWN: string;
|
|
89
|
+
INSERT: string;
|
|
90
|
+
CLICK: string;
|
|
91
|
+
WHEEL_UP: string;
|
|
92
|
+
WHEEL_DOWN: string;
|
|
93
|
+
};
|
|
94
|
+
createScreenState(options?: state.ScreenOptions): state.ScreenState;
|
|
95
|
+
resizeScreen(state: state.ScreenState): void;
|
|
96
|
+
clearBackBuffer(state: state.ScreenState): void;
|
|
97
|
+
ANSI: {
|
|
98
|
+
reset: string;
|
|
99
|
+
clear: string;
|
|
100
|
+
home: string;
|
|
101
|
+
alternateBuffer: string;
|
|
102
|
+
mainBuffer: string;
|
|
103
|
+
hideCursor: string;
|
|
104
|
+
showCursor: string;
|
|
105
|
+
mouseEnable: string;
|
|
106
|
+
mouseDisable: string;
|
|
107
|
+
focusEnable: string;
|
|
108
|
+
focusDisable: string;
|
|
109
|
+
syncStart: string;
|
|
110
|
+
syncEnd: string;
|
|
111
|
+
};
|
|
112
|
+
isThemeColor(value: unknown): value is theme.ThemeColor;
|
|
113
|
+
hexToRGB(hex: string, base?: state.RGB): state.RGB;
|
|
114
|
+
rgbToHex(rgb: state.RGB): string;
|
|
115
|
+
ansi256ToRGB(code: number): state.RGB;
|
|
116
|
+
rgbTo256(rgb: state.RGB): number;
|
|
117
|
+
rgbTo16(rgb: state.RGB): number;
|
|
118
|
+
resolveColor(color: colors.PaletteColor | colors.ColorValue): string | number | undefined;
|
|
119
|
+
createGradient(arg1: colors.ColorValue[] | colors.ColorValue, arg2?: colors.ColorValue | number, arg3?: number): state.RGB[];
|
|
120
|
+
resolveColorToRGB(color: unknown): state.RGB;
|
|
121
|
+
relativeLuminance(color: colors.ColorValue): number;
|
|
122
|
+
contrastText(bgColor: colors.ColorValue): state.RGB;
|
|
123
|
+
adjustBrightness(color: any, amount: number): state.RGB;
|
|
124
|
+
fade(from: colors.ColorValue, to: colors.ColorValue, progress: number): state.RGB;
|
|
125
|
+
darken(color: any, amount?: number): (text: string) => string;
|
|
126
|
+
lighten(color: any, amount?: number): (text: string) => string;
|
|
127
|
+
rgb(r: number, g: number, b: number): {
|
|
128
|
+
r: number;
|
|
129
|
+
g: number;
|
|
130
|
+
b: number;
|
|
131
|
+
};
|
|
132
|
+
fg(color: any, text: string): string;
|
|
133
|
+
bg(color: any, text: string): string;
|
|
134
|
+
THEME_COLOR: typeof colors.THEME_COLOR;
|
|
135
|
+
PALETTE: {
|
|
136
|
+
readonly slate: "235";
|
|
137
|
+
readonly ash: "240";
|
|
138
|
+
readonly gray: "244";
|
|
139
|
+
readonly silver: "247";
|
|
140
|
+
readonly white: "255";
|
|
141
|
+
readonly black: "0";
|
|
142
|
+
readonly midnight: "17";
|
|
143
|
+
readonly ocean: "24";
|
|
144
|
+
readonly sky: "33";
|
|
145
|
+
readonly 'bunti-blue': "38";
|
|
146
|
+
readonly 'deep-navy': "17";
|
|
147
|
+
readonly nebula: "61";
|
|
148
|
+
readonly plasma: "165";
|
|
149
|
+
readonly success: "40";
|
|
150
|
+
readonly warning: "214";
|
|
151
|
+
readonly error: "196";
|
|
152
|
+
readonly info: "39";
|
|
153
|
+
readonly gold: "220";
|
|
154
|
+
readonly rose: "211";
|
|
155
|
+
readonly mint: "121";
|
|
156
|
+
};
|
|
157
|
+
stripAnsi(str: string): string;
|
|
158
|
+
visibleWidth(str: string): number;
|
|
159
|
+
charWidth(char: string): number;
|
|
160
|
+
truncate(str: string, width: number, tail?: string): string;
|
|
161
|
+
wrapText(str: string, width: number): string[];
|
|
162
|
+
indentBlock(content: string, columns: number): string;
|
|
163
|
+
restoreTerminal(state: state.ScreenState): void;
|
|
164
|
+
syncScreenSize(state: state.ScreenState): boolean;
|
|
165
|
+
isResizeSettled(state: state.ScreenState, now?: number): boolean;
|
|
166
|
+
clearTerminalForResize(state: state.ScreenState): void;
|
|
167
|
+
updatePointerShape(state: state.ScreenState): void;
|
|
168
|
+
renderFrame(state: state.ScreenState): string;
|
|
169
|
+
flush(state: state.ScreenState): void;
|
|
170
|
+
loop(state: state.ScreenState, renderCallback: (s: state.ScreenState) => void): Promise<void>;
|
|
171
|
+
applyInputToState(state: state.ScreenState, data: unknown, stop?: () => void): void;
|
|
172
|
+
drainFrameInput(state: state.ScreenState): void;
|
|
173
|
+
setCell(state: state.ScreenState, x: number, y: number, cell: Partial<state.Cell>): void;
|
|
174
|
+
dimRect(state: state.ScreenState, area: geometry.Rect, amount: number): void;
|
|
175
|
+
rect(state: state.ScreenState, x: number, y: number, w: number, h: number, style: layout.RectOptions): void;
|
|
176
|
+
blit(state: state.ScreenState, startX: number, startY: number, content: string, style?: Partial<state.Cell>): void;
|
|
177
|
+
resolveSize(unit: layout.SizeUnit | undefined, parentDim: number, contentDim: number): number;
|
|
178
|
+
box(content: string, options?: layout.StyleOptions, parentW?: number, parentH?: number): string;
|
|
179
|
+
joinHorizontal(...blocks: string[]): string;
|
|
180
|
+
joinVertical(...blocks: string[]): string;
|
|
181
|
+
createStyle(defaults: layout.StyleOptions): (content: string, overrides?: layout.StyleOptions) => string;
|
|
182
|
+
badge(text: string, colorFn?: (s: string) => string): string;
|
|
183
|
+
table(rows: string[][], options?: layout.TableOptions, parentW?: number): string;
|
|
184
|
+
getWindow<T>(items: T[], selectedIndex: number, maxVisible: number): {
|
|
185
|
+
visible: T[];
|
|
186
|
+
start: number;
|
|
187
|
+
hasMoreAbove: boolean;
|
|
188
|
+
hasMoreBelow: boolean;
|
|
189
|
+
};
|
|
190
|
+
list(items: string[], options?: layout.ListOptions, parentW?: number): string;
|
|
191
|
+
viewport(content: string, width: number, height: number, scrollY?: number): string;
|
|
192
|
+
wallpaper(state: any, options: {
|
|
193
|
+
bg: any;
|
|
194
|
+
}): void;
|
|
195
|
+
gradient(state: any, colors: any[], options?: {
|
|
196
|
+
direction?: "vertical" | "horizontal";
|
|
197
|
+
}): void;
|
|
198
|
+
createKeyEvent(key: string, raw?: string, mods?: Partial<Pick<input.KeyEvent, "ctrl" | "alt" | "shift" | "kind">>): input.KeyEvent;
|
|
199
|
+
InputTokenizer: typeof input.InputTokenizer;
|
|
200
|
+
HeldKeyTracker: typeof input.HeldKeyTracker;
|
|
201
|
+
replaceEmojis(text: string): string;
|
|
202
|
+
init(options?: {
|
|
203
|
+
nerdFont?: boolean;
|
|
204
|
+
profile?: detect.TerminalProfile;
|
|
205
|
+
}): Promise<detect.TerminalCapabilities>;
|
|
206
|
+
register(name: string, glyphOrDef: string | icons.IconDefinition): void;
|
|
207
|
+
registerAll(glyphs: Record<string, string>): void;
|
|
208
|
+
__iconMisses(): string[];
|
|
209
|
+
getIcon(name: icons.BuntiIconName, caps: detect.TerminalCapabilities): string;
|
|
210
|
+
icon(name: icons.BuntiIconName): string;
|
|
211
|
+
nerd(name: icons.BuntiIconName): string;
|
|
212
|
+
nerdIcon(nfChar: string, fallback: string): string;
|
|
213
|
+
ICON_MAP: Record<string, icons.IconDefinition>;
|
|
214
|
+
EMOJI_MAP: Record<string, string>;
|
|
215
|
+
identifyTerminal(env?: {
|
|
216
|
+
[x: string]: string | undefined;
|
|
217
|
+
}): detect.TerminalProfile;
|
|
218
|
+
detectColorTier(env?: {
|
|
219
|
+
[x: string]: string | undefined;
|
|
220
|
+
}): detect.ColorTier;
|
|
221
|
+
colorTier(): detect.ColorTier;
|
|
222
|
+
setColorTier(tier?: detect.ColorTier): void;
|
|
223
|
+
detectCapabilities(env?: {
|
|
224
|
+
[x: string]: string | undefined;
|
|
225
|
+
}): Promise<detect.TerminalCapabilities>;
|
|
226
|
+
};
|
|
227
|
+
export default bunti;
|
|
228
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as colors from './colors';
|
|
2
|
+
import * as detect from './detect';
|
|
3
|
+
import * as dsl from './dsl';
|
|
4
|
+
import * as easing from './easing';
|
|
5
|
+
import * as geometry from './geometry';
|
|
6
|
+
import * as icons from './icons';
|
|
7
|
+
import * as input from './input';
|
|
8
|
+
import * as layout from './layout';
|
|
9
|
+
import * as render from './render';
|
|
10
|
+
import * as state from './state';
|
|
11
|
+
import * as theme from './theme';
|
|
12
|
+
import * as utils from './utils';
|
|
13
|
+
export { ansi256ToRGB, bg, contrastText, createGradient, fade, fg, hexToRGB, isThemeColor, PALETTE, relativeLuminance, resolveColor, resolveColorToRGB, rgb, rgbTo16, rgbTo256, rgbToHex, } from './colors';
|
|
14
|
+
// Functional API Individual Exports
|
|
15
|
+
export { colorTier, detectCapabilities, detectColorTier, identifyTerminal, setColorTier, } from './detect';
|
|
16
|
+
export { KEYS, render } from './dsl';
|
|
17
|
+
export { clamp01, easeInCubic, easeInOutCubic, easeInOutQuad, easeInOutQuart, easeInQuad, easeInQuart, easeOutBack, easeOutBounce, easeOutCubic, easeOutElastic, easeOutExpo, easeOutQuad, easeOutQuart, lerp, lerpRect, linear, } from './easing';
|
|
18
|
+
export { innerRect, resolvePlacedRect, resolveRect, splitRect, } from './geometry';
|
|
19
|
+
export { EMOJI_MAP, ICON_MAP, icon, init, nerd, nerdIcon, register, registerAll, replaceEmojis, } from './icons';
|
|
20
|
+
export { createKeyEvent, HeldKeyTracker, InputTokenizer } from './input';
|
|
21
|
+
export { badge, blit, box, createStyle, dimRect, getWindow, gradient, joinHorizontal, joinVertical, list, rect, setCell, table, viewport, wallpaper, } from './layout';
|
|
22
|
+
export { applyInputToState, drainFrameInput, flush, loop, renderFrame, restoreTerminal, updatePointerShape, } from './render';
|
|
23
|
+
export { ANSI, clearBackBuffer, createScreenState, resizeScreen, } from './state';
|
|
24
|
+
export { createTheme, darkTheme, isTheme, lightTheme, resolveTheme, THEME_TOKENS, themeColor, } from './theme';
|
|
25
|
+
export { charWidth, indentBlock, stripAnsi, truncate, visibleWidth, } from './utils';
|
|
26
|
+
/**
|
|
27
|
+
* Namespaced API surface for `bunti.render(...)` style usage — every
|
|
28
|
+
* named export gathered onto one object.
|
|
29
|
+
* @example import { bunti } from '@zakmandhro/bunti'; await bunti.render(draw, { keyboard: true });
|
|
30
|
+
*/
|
|
31
|
+
export const bunti = {
|
|
32
|
+
...detect,
|
|
33
|
+
...icons,
|
|
34
|
+
...input,
|
|
35
|
+
...layout,
|
|
36
|
+
...render,
|
|
37
|
+
...utils,
|
|
38
|
+
...colors,
|
|
39
|
+
...state,
|
|
40
|
+
...dsl,
|
|
41
|
+
...easing,
|
|
42
|
+
...geometry,
|
|
43
|
+
...theme,
|
|
44
|
+
};
|
|
45
|
+
export default bunti;
|
|
46
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|