@flyingrobots/bijou 4.4.0 → 5.0.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/README.md +52 -189
- package/dist/adapters/test/index.d.ts.map +1 -1
- package/dist/adapters/test/index.js +1 -3
- package/dist/adapters/test/index.js.map +1 -1
- package/dist/adapters/test/runtime.d.ts.map +1 -1
- package/dist/adapters/test/runtime.js +4 -3
- package/dist/adapters/test/runtime.js.map +1 -1
- package/dist/context-theme.d.ts +40 -0
- package/dist/context-theme.d.ts.map +1 -0
- package/dist/context-theme.js +42 -0
- package/dist/context-theme.js.map +1 -0
- package/dist/context.d.ts +13 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +24 -3
- package/dist/context.js.map +1 -1
- package/dist/core/components/alert-v3.d.ts.map +1 -1
- package/dist/core/components/alert-v3.js +5 -4
- package/dist/core/components/alert-v3.js.map +1 -1
- package/dist/core/components/alert.d.ts.map +1 -1
- package/dist/core/components/alert.js +7 -8
- package/dist/core/components/alert.js.map +1 -1
- package/dist/core/components/badge.d.ts.map +1 -1
- package/dist/core/components/badge.js +19 -18
- package/dist/core/components/badge.js.map +1 -1
- package/dist/core/components/box-v3.d.ts.map +1 -1
- package/dist/core/components/box-v3.js +29 -29
- package/dist/core/components/box-v3.js.map +1 -1
- package/dist/core/components/dag-edges.d.ts +21 -4
- package/dist/core/components/dag-edges.d.ts.map +1 -1
- package/dist/core/components/dag-edges.js +79 -16
- package/dist/core/components/dag-edges.js.map +1 -1
- package/dist/core/components/dag-layout.d.ts +3 -4
- package/dist/core/components/dag-layout.d.ts.map +1 -1
- package/dist/core/components/dag-layout.js +42 -9
- package/dist/core/components/dag-layout.js.map +1 -1
- package/dist/core/components/dag-render.d.ts +3 -2
- package/dist/core/components/dag-render.d.ts.map +1 -1
- package/dist/core/components/dag-render.js +20 -37
- package/dist/core/components/dag-render.js.map +1 -1
- package/dist/core/components/dag.d.ts +7 -4
- package/dist/core/components/dag.d.ts.map +1 -1
- package/dist/core/components/dag.js.map +1 -1
- package/dist/core/components/explainability.d.ts.map +1 -1
- package/dist/core/components/explainability.js +30 -87
- package/dist/core/components/explainability.js.map +1 -1
- package/dist/core/components/guided-flow.d.ts +32 -0
- package/dist/core/components/guided-flow.d.ts.map +1 -0
- package/dist/core/components/guided-flow.js +131 -0
- package/dist/core/components/guided-flow.js.map +1 -0
- package/dist/core/components/hyperlink.d.ts.map +1 -1
- package/dist/core/components/hyperlink.js +7 -4
- package/dist/core/components/hyperlink.js.map +1 -1
- package/dist/core/components/index.d.ts +4 -2
- package/dist/core/components/index.d.ts.map +1 -1
- package/dist/core/components/index.js +1 -0
- package/dist/core/components/index.js.map +1 -1
- package/dist/core/components/markdown-parse.d.ts +4 -0
- package/dist/core/components/markdown-parse.d.ts.map +1 -1
- package/dist/core/components/markdown-parse.js +66 -2
- package/dist/core/components/markdown-parse.js.map +1 -1
- package/dist/core/components/markdown-render.d.ts.map +1 -1
- package/dist/core/components/markdown-render.js +220 -14
- package/dist/core/components/markdown-render.js.map +1 -1
- package/dist/core/components/markdown.d.ts +4 -3
- package/dist/core/components/markdown.d.ts.map +1 -1
- package/dist/core/components/markdown.js +6 -5
- package/dist/core/components/markdown.js.map +1 -1
- package/dist/core/components/paginator.d.ts.map +1 -1
- package/dist/core/components/paginator.js +5 -3
- package/dist/core/components/paginator.js.map +1 -1
- package/dist/core/components/perf-overlay.d.ts.map +1 -1
- package/dist/core/components/perf-overlay.js +3 -2
- package/dist/core/components/perf-overlay.js.map +1 -1
- package/dist/core/components/preference-list.d.ts.map +1 -1
- package/dist/core/components/preference-list.js +75 -37
- package/dist/core/components/preference-list.js.map +1 -1
- package/dist/core/components/progress.d.ts.map +1 -1
- package/dist/core/components/progress.js +4 -3
- package/dist/core/components/progress.js.map +1 -1
- package/dist/core/components/separator-v3.d.ts.map +1 -1
- package/dist/core/components/separator-v3.js +11 -11
- package/dist/core/components/separator-v3.js.map +1 -1
- package/dist/core/components/separator.d.ts.map +1 -1
- package/dist/core/components/separator.js +4 -1
- package/dist/core/components/separator.js.map +1 -1
- package/dist/core/components/skeleton.d.ts.map +1 -1
- package/dist/core/components/skeleton.js +3 -2
- package/dist/core/components/skeleton.js.map +1 -1
- package/dist/core/components/surface-text.d.ts +7 -0
- package/dist/core/components/surface-text.d.ts.map +1 -1
- package/dist/core/components/surface-text.js +33 -25
- package/dist/core/components/surface-text.js.map +1 -1
- package/dist/core/components/table-v3.d.ts +5 -2
- package/dist/core/components/table-v3.d.ts.map +1 -1
- package/dist/core/components/table-v3.js +26 -16
- package/dist/core/components/table-v3.js.map +1 -1
- package/dist/core/components/table.d.ts +16 -2
- package/dist/core/components/table.d.ts.map +1 -1
- package/dist/core/components/table.js +136 -18
- package/dist/core/components/table.js.map +1 -1
- package/dist/core/forms/filter-interactive.d.ts.map +1 -1
- package/dist/core/forms/filter-interactive.js +2 -4
- package/dist/core/forms/filter-interactive.js.map +1 -1
- package/dist/core/forms/multiselect.d.ts.map +1 -1
- package/dist/core/forms/multiselect.js +2 -4
- package/dist/core/forms/multiselect.js.map +1 -1
- package/dist/core/forms/note.d.ts.map +1 -1
- package/dist/core/forms/note.js +2 -1
- package/dist/core/forms/note.js.map +1 -1
- package/dist/core/forms/select.d.ts.map +1 -1
- package/dist/core/forms/select.js +2 -4
- package/dist/core/forms/select.js.map +1 -1
- package/dist/core/forms/textarea-editor.d.ts.map +1 -1
- package/dist/core/forms/textarea-editor.js +7 -5
- package/dist/core/forms/textarea-editor.js.map +1 -1
- package/dist/core/layout/geometry.d.ts +39 -0
- package/dist/core/layout/geometry.d.ts.map +1 -0
- package/dist/core/layout/geometry.js +201 -0
- package/dist/core/layout/geometry.js.map +1 -0
- package/dist/core/numeric.d.ts +16 -0
- package/dist/core/numeric.d.ts.map +1 -0
- package/dist/core/numeric.js +37 -0
- package/dist/core/numeric.js.map +1 -0
- package/dist/core/render/differ.d.ts.map +1 -1
- package/dist/core/render/differ.js +15 -13
- package/dist/core/render/differ.js.map +1 -1
- package/dist/core/runtime-viewport.d.ts.map +1 -1
- package/dist/core/runtime-viewport.js +2 -3
- package/dist/core/runtime-viewport.js.map +1 -1
- package/dist/core/text/grapheme.d.ts +51 -0
- package/dist/core/text/grapheme.d.ts.map +1 -1
- package/dist/core/text/grapheme.js +68 -0
- package/dist/core/text/grapheme.js.map +1 -1
- package/dist/core/text/icon-presentation.d.ts +10 -0
- package/dist/core/text/icon-presentation.d.ts.map +1 -0
- package/dist/core/text/icon-presentation.js +12 -0
- package/dist/core/text/icon-presentation.js.map +1 -0
- package/dist/core/text/index.d.ts +2 -1
- package/dist/core/text/index.d.ts.map +1 -1
- package/dist/core/text/index.js +2 -1
- package/dist/core/text/index.js.map +1 -1
- package/dist/core/theme/color.d.ts +32 -0
- package/dist/core/theme/color.d.ts.map +1 -1
- package/dist/core/theme/color.js +68 -0
- package/dist/core/theme/color.js.map +1 -1
- package/dist/core/theme/graph-types.d.ts +5 -0
- package/dist/core/theme/graph-types.d.ts.map +1 -1
- package/dist/core/theme/graph.d.ts.map +1 -1
- package/dist/core/theme/graph.js +52 -5
- package/dist/core/theme/graph.js.map +1 -1
- package/dist/core/theme/index.d.ts +2 -1
- package/dist/core/theme/index.d.ts.map +1 -1
- package/dist/core/theme/index.js +1 -1
- package/dist/core/theme/index.js.map +1 -1
- package/dist/core/theme/presets.d.ts +3 -2
- package/dist/core/theme/presets.d.ts.map +1 -1
- package/dist/core/theme/presets.js +18 -29
- package/dist/core/theme/presets.js.map +1 -1
- package/dist/factory.d.ts +3 -0
- package/dist/factory.d.ts.map +1 -1
- package/dist/factory.js +4 -6
- package/dist/factory.js.map +1 -1
- package/dist/index.d.ts +8 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -5
- package/dist/index.js.map +1 -1
- package/dist/ports/context.d.ts +6 -1
- package/dist/ports/context.d.ts.map +1 -1
- package/dist/ports/surface.d.ts +6 -4
- package/dist/ports/surface.d.ts.map +1 -1
- package/dist/ports/surface.js +40 -23
- package/dist/ports/surface.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,20 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
The pure, zero-dependency core of Bijou.
|
|
4
4
|
|
|
5
|
-
`@flyingrobots/bijou`
|
|
5
|
+
`@flyingrobots/bijou` provides the foundational primitives for CLIs, prompts, and portable terminal output. It manages components, themes, environment detection, and the core `Surface` and `LayoutNode` types.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Role
|
|
8
8
|
|
|
9
|
-
- **
|
|
10
|
-
- **
|
|
11
|
-
-
|
|
12
|
-
- **
|
|
13
|
-
|
|
14
|
-
- **
|
|
15
|
-
|
|
16
|
-
## Documentation
|
|
17
|
-
|
|
18
|
-
See the [Bijou repo](https://github.com/flyingrobots/bijou) for the full documentation map, architecture guide, design system, and DOGFOOD proving surface.
|
|
9
|
+
- **Degradation-First**: Automatic mode detection for `interactive`, `static`, `pipe`, and `accessible` output.
|
|
10
|
+
- **Mixed-Mode**: High-performance `Surface` primitives for rich TUI apps, with
|
|
11
|
+
string-first helpers for standalone CLI scripts.
|
|
12
|
+
- **Surface primitives without abandoning strings**: Runtime apps can stay on
|
|
13
|
+
the surface path while CLI-first flows still use the string-first helpers.
|
|
14
|
+
- **Hexagonal Core**: Pure TypeScript logic isolated from platform IO via `Runtime`, `IO`, and `Style` ports.
|
|
19
15
|
|
|
20
16
|
## Install
|
|
21
17
|
|
|
@@ -29,7 +25,6 @@ npm install @flyingrobots/bijou @flyingrobots/bijou-node
|
|
|
29
25
|
import { initDefaultContext } from '@flyingrobots/bijou-node';
|
|
30
26
|
import { badge, boxSurface, tableSurface } from '@flyingrobots/bijou';
|
|
31
27
|
|
|
32
|
-
// Initialize Node.js adapters (auto-detects TTY, CI, NO_COLOR)
|
|
33
28
|
const ctx = initDefaultContext();
|
|
34
29
|
|
|
35
30
|
const panel = boxSurface(
|
|
@@ -38,186 +33,54 @@ const panel = boxSurface(
|
|
|
38
33
|
rows: [['api', badge('LIVE', { variant: 'success', ctx })]],
|
|
39
34
|
ctx,
|
|
40
35
|
}),
|
|
41
|
-
{
|
|
36
|
+
{
|
|
37
|
+
title: 'Runtime',
|
|
38
|
+
padding: { top: 1, bottom: 1, left: 1, right: 1 },
|
|
39
|
+
ctx,
|
|
40
|
+
},
|
|
42
41
|
);
|
|
43
|
-
|
|
44
|
-
// Return `panel` from a runtime `view()` function or framed pane renderer.
|
|
45
42
|
```
|
|
46
43
|
|
|
47
|
-
##
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
-
|
|
78
|
-
-
|
|
79
|
-
-
|
|
80
|
-
|
|
81
|
-
### Selection and prompts
|
|
82
|
-
|
|
83
|
-
- Use `select()` when the user is choosing one stored value from a short, stable set.
|
|
84
|
-
- Use `filter()` when the user is still choosing one stored value, but search and narrowing are the real job.
|
|
85
|
-
- Use `multiselect()` when the user is building a lasting set, not firing one-off commands.
|
|
86
|
-
- Use `confirm()` only when the decision is genuinely binary.
|
|
87
|
-
- Move to `commandPaletteSurface()` in `@flyingrobots/bijou-tui` when the outcome is an action or navigation command instead of stored form state.
|
|
88
|
-
|
|
89
|
-
### Tables and inspection
|
|
90
|
-
|
|
91
|
-
- Use `table()` when row/column comparison is the main job and string output is still the right endpoint.
|
|
92
|
-
- Use `tableSurface()` when the job is still passive comparison, but your runtime app is already composing `Surface` output.
|
|
93
|
-
- Use `navigableTable()` from `@flyingrobots/bijou-tui` when the user needs keyboard-owned row or cell inspection instead of passive reading.
|
|
94
|
-
|
|
95
|
-
### Hierarchy and chronology
|
|
96
|
-
|
|
97
|
-
- Use `tree()` when parent/child nesting is the main thing the reader needs to understand.
|
|
98
|
-
- Use `timeline()` when chronology is the actual reading path.
|
|
99
|
-
- Move to `dag()` when dependency or causal flow matters more than simple order or nesting.
|
|
100
|
-
- Use `dagSlice()` when a local neighborhood or ancestor/descendant chain is the honest scope.
|
|
101
|
-
- Use `dagStats()` when graph health or structural summary matters more than visual shape.
|
|
102
|
-
|
|
103
|
-
### Wayfinding and progress
|
|
104
|
-
|
|
105
|
-
- Use `breadcrumb()` when path context helps explain the current location.
|
|
106
|
-
- Use `paginator()` when compact position-in-sequence feedback is enough.
|
|
107
|
-
- Use `stepper()` when the user is progressing through ordered stages rather than switching among peers.
|
|
108
|
-
|
|
109
|
-
### Containment and formatted content
|
|
110
|
-
|
|
111
|
-
- Use `box()` when a region needs visible containment or comparison against sibling panels.
|
|
112
|
-
- Use `headerBox()` when that same region also needs a compact title and detail line.
|
|
113
|
-
- Use `markdown()` for bounded help, reference, and release-note prose that should lower honestly across rich, pipe, and accessible output.
|
|
114
|
-
- Avoid turning every subsection into a box or using markdown as a substitute layout engine for full application chrome.
|
|
115
|
-
|
|
116
|
-
### Loading, links, and expressive moments
|
|
117
|
-
|
|
118
|
-
- Use `skeleton()` for short-lived placeholders when the final content shape is known.
|
|
119
|
-
- Use `hyperlink()` when the destination itself should remain explicit and trustworthy in terminal output.
|
|
120
|
-
- Use `kbd()` for local inline shortcut cues; use shell help in `@flyingrobots/bijou-tui` when the user needs a broader keybinding reference.
|
|
121
|
-
- Use `gradientText()` and `loadRandomLogo()` sparingly for splash, docs, and celebratory moments rather than routine workspace chrome.
|
|
122
|
-
|
|
123
|
-
### Progress and custom primitives
|
|
124
|
-
|
|
125
|
-
- Use `progressBar()` when completion can be estimated honestly.
|
|
126
|
-
- Use `spinnerFrame()` or `createSpinner()` when the task is active but indeterminate.
|
|
127
|
-
- Use `renderByMode()` when you are authoring an app-specific primitive that must stay truthful across rich, pipe, and accessible output.
|
|
128
|
-
|
|
129
|
-
## Components
|
|
44
|
+
## Strategy: Choosing Component Families
|
|
45
|
+
|
|
46
|
+
Select the family based on the interaction semantic, not just the visual shape.
|
|
47
|
+
|
|
48
|
+
Render-path naming follows one house rule: the base family name is the public
|
|
49
|
+
component, and a `*Surface()` companion means “the same family on the composable
|
|
50
|
+
surface path.” If there is no `*Surface()` companion, the family is either
|
|
51
|
+
already surface-native, intentionally string-first, or both paths would be
|
|
52
|
+
fake duplication rather than a real second API.
|
|
53
|
+
|
|
54
|
+
### Status and Feedback
|
|
55
|
+
- **`badge()`**: Compact, inline status.
|
|
56
|
+
- **`note()`**: Non-urgent explanation.
|
|
57
|
+
- **`alert()`**: Persistent, in-flow message.
|
|
58
|
+
- **`guidedFlow()`**: Calm multi-step assistance with one explicit next action.
|
|
59
|
+
- **`explainability()`**: AI- or machine-mediated recommendation with visible provenance and evidence.
|
|
60
|
+
- *Use `@flyingrobots/bijou-tui` notifications for stacking, history, or active routing.*
|
|
61
|
+
|
|
62
|
+
### Selection and Prompts
|
|
63
|
+
- **`select()`**: Single choice from a stable set.
|
|
64
|
+
- **`filter()`**: Search-led choice from a large or dynamic set.
|
|
65
|
+
- **`multiselect()`**: Choosing multiple values to build a set.
|
|
66
|
+
- **`confirm()`**: Strictly binary decisions.
|
|
67
|
+
|
|
68
|
+
### Hierarchy and Chronology
|
|
69
|
+
- **`tree()`**: Parent/child nesting.
|
|
70
|
+
- **`timeline()`**: Sequential, time-ordered events.
|
|
71
|
+
- **`dag()`**: Causal or dependency-based graphs.
|
|
72
|
+
|
|
73
|
+
### Progress and Wayfinding
|
|
74
|
+
- **`progressBar()`**: Determinate completion.
|
|
75
|
+
- **`spinner()`**: Indeterminate activity.
|
|
76
|
+
- **`breadcrumb()`**: Path context.
|
|
77
|
+
- **`stepper()`**: Ordered stages in a linear process.
|
|
130
78
|
|
|
131
|
-
|
|
132
|
-
`box()`, `headerBox()`, `separator()` plus `boxSurface()`, `headerBoxSurface()`, `separatorSurface()` — string-first helpers and surface-native companions for layout chrome.
|
|
133
|
-
|
|
134
|
-
### Elements
|
|
135
|
-
`badge()`, `alert()`, `alertSurface()`, `kbd()`, `skeleton()`, `hyperlink()` — inline status, in-flow status blocks, loading placeholders, trusted links, and UI primitives.
|
|
136
|
-
|
|
137
|
-
### Data
|
|
138
|
-
`table()`, `tableSurface()`, `tree()`, `accordion()`, `timeline()`, `dag()`, `dagSlice()`, `dagLayout()`, `dagStats()` — passive comparison and structured data display, DAG rendering with `DagSource` adapter, and graph statistics.
|
|
139
|
-
|
|
140
|
-
### Documents
|
|
141
|
-
`markdown()` — structured terminal prose for help, readmes, and reference content with mode-aware lowering.
|
|
142
|
-
|
|
143
|
-
### Navigation
|
|
144
|
-
`tabs()`, `breadcrumb()`, `stepper()`, `paginator()` — wayfinding components.
|
|
145
|
-
|
|
146
|
-
### Animation & Progress
|
|
147
|
-
`spinnerFrame()`, `createSpinner()`, `progressBar()`, `createProgressBar()`, `createAnimatedProgressBar()`, `gradientText()`, `loadRandomLogo()` — determinate and indeterminate progress, live-updating output, expressive gradients, and branded ASCII moments.
|
|
148
|
-
|
|
149
|
-
### Authoring helpers
|
|
150
|
-
`renderByMode()` — mode-aware helper for app-authored primitives that need honest rich/pipe/accessible lowering.
|
|
151
|
-
|
|
152
|
-
### Forms
|
|
153
|
-
`input()`, `select()`, `multiselect()`, `confirm()`, `group()`, `wizard()`, `textarea()`, `filter()` — interactive prompts with validation that degrade to numbered-list selection in pipe/CI modes.
|
|
154
|
-
|
|
155
|
-
### Theme Engine
|
|
156
|
-
DTCG (Design Tokens Community Group) interop. Built-in presets: `nord`, `catppuccin`, `cyan-magenta`, `teal-orange-pink`. Load custom themes via `BIJOU_THEME` env var or `extendTheme()`.
|
|
157
|
-
|
|
158
|
-
## Architecture
|
|
159
|
-
|
|
160
|
-
bijou uses a Ports and Adapters (hexagonal) architecture. See [ARCHITECTURE.md](./ARCHITECTURE.md) for the package-level design and [`../../docs/ARCHITECTURE.md`](../../docs/ARCHITECTURE.md) for the monorepo-wide architecture.
|
|
161
|
-
|
|
162
|
-
The core is pure TypeScript with zero runtime dependencies — all platform concerns flow through three ports:
|
|
163
|
-
|
|
164
|
-
- **`RuntimePort`** — environment variables, TTY detection, terminal dimensions
|
|
165
|
-
- **`IOPort`** — stdout writes, stdin reads, resize events, file I/O
|
|
166
|
-
- **`StylePort`** — RGB/hex color application, bold/italic/etc.
|
|
167
|
-
|
|
168
|
-
### Output Modes
|
|
169
|
-
|
|
170
|
-
bijou auto-detects the environment and adapts rendering:
|
|
171
|
-
|
|
172
|
-
| Mode | Trigger | Behavior |
|
|
173
|
-
| :--- | :--- | :--- |
|
|
174
|
-
| **Interactive** | TTY | Full RGB, unicode, animations |
|
|
175
|
-
| **Static** | `CI=true` | Single-frame, no animations |
|
|
176
|
-
| **Pipe** | Piped stdout | Plain text, ASCII fallbacks |
|
|
177
|
-
| **Accessible** | `BIJOU_ACCESSIBLE=1` | Screen-reader friendly |
|
|
178
|
-
|
|
179
|
-
## Testing
|
|
180
|
-
|
|
181
|
-
Import test adapters for deterministic, mock-free component testing:
|
|
182
|
-
|
|
183
|
-
```typescript
|
|
184
|
-
import { createTestContext } from '@flyingrobots/bijou/adapters/test';
|
|
185
|
-
import { box } from '@flyingrobots/bijou';
|
|
186
|
-
|
|
187
|
-
const ctx = createTestContext({ mode: 'interactive' });
|
|
188
|
-
const result = box('hello', { ctx });
|
|
189
|
-
// Assert on the string directly — no process mocking needed
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
See [GUIDE.md](./GUIDE.md) for more on testing, theming, and component usage.
|
|
193
|
-
For upgrading existing apps, see the monorepo migration guide at [`../../docs/MIGRATING_TO_V4.md`](../../docs/MIGRATING_TO_V4.md).
|
|
194
|
-
|
|
195
|
-
## Related Packages
|
|
196
|
-
|
|
197
|
-
- [`@flyingrobots/bijou-node`](https://www.npmjs.com/package/@flyingrobots/bijou-node) — Node.js runtime adapter (chalk, readline, process)
|
|
198
|
-
- [`@flyingrobots/bijou-tui`](https://www.npmjs.com/package/@flyingrobots/bijou-tui) — TEA runtime for interactive terminal apps
|
|
199
|
-
|
|
200
|
-
## License
|
|
79
|
+
## Documentation
|
|
201
80
|
|
|
202
|
-
|
|
81
|
+
- **[GUIDE.md](./GUIDE.md)**: Productive-fast path.
|
|
82
|
+
- **[ADVANCED_GUIDE.md](./ADVANCED_GUIDE.md)**: Rendering doctrine, themes, and testing.
|
|
83
|
+
- **[Design System](../../docs/design-system/README.md)**: Foundations, token vocabulary, and component families.
|
|
203
84
|
|
|
204
85
|
---
|
|
205
|
-
|
|
206
|
-
<p align="center">
|
|
207
|
-
Built with 💎 by <a href="https://github.com/flyingrobots">FLYING ROBOTS</a>
|
|
208
|
-
</p>
|
|
209
|
-
|
|
210
|
-
```rust
|
|
211
|
-
.-:::::'::: .-:. ::-.::::::. :::. .,-:::::/
|
|
212
|
-
;;;'''' ;;; ';;. ;;;;';;;`;;;;, `;;;,;;-'````'
|
|
213
|
-
[[[,,== [[[ '[[,[[[' [[[ [[[[[. '[[[[[ [[[[[[/
|
|
214
|
-
`$$$"`` $$' c$$" $$$ $$$ "Y$c$$"$$c. "$$
|
|
215
|
-
888 o88oo,.__ ,8P"` 888 888 Y88 `Y8bo,,,o88o
|
|
216
|
-
"MM, """"YUMMMmM" MMM MMM YM `'YMUP"YMM
|
|
217
|
-
:::::::.. ... :::::::. ... :::::::::::: .::::::.
|
|
218
|
-
;;;;``;;;; .;;;;;;;. ;;;'';;' .;;;;;;;.;;;;;;;;'''';;;` `
|
|
219
|
-
[[[,/[[[' ,[[ \[[, [[[__[[\.,[[ \[[, [[ '[==/[[[[,
|
|
220
|
-
$$$$$$c $$$, $$$ $$""""Y$$$$$, $$$ $$ ''' $
|
|
221
|
-
888b "88bo,"888,_ _,88P_88o,,od8P"888,_ _,88P 88, 88b dP
|
|
222
|
-
MMMM "W" "YMMMMMP" ""YUMMMP" "YMMMMMP" MMM "YMmMY"
|
|
223
|
-
```
|
|
86
|
+
Built with 💎 by [FLYING ROBOTS](https://github.com/flyingrobots)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/test/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAU,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAa,KAAK,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/test/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAU,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAa,KAAK,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAKtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAGxD,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,KAAK,aAAa,EAAE,KAAK,MAAM,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,KAAK,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EACL,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,sEAAsE;IACtE,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,wEAAwE;IACxE,EAAE,CAAC,EAAE,aAAa,CAAC;IACnB,oDAAoD;IACpD,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,wDAAwD;IACxD,KAAK,CAAC,EAAE,gBAAgB,GAAG,SAAS,GAAG,SAAS,CAAC;IACjD,gDAAgD;IAChD,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,8DAA8D;IAC9D,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AASD;;;GAGG;AACH,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,WAAW,CAwB/E"}
|
|
@@ -5,7 +5,6 @@ import { plainStyle } from './style.js';
|
|
|
5
5
|
import { createResolved } from '../../core/theme/resolve.js';
|
|
6
6
|
import { CYAN_MAGENTA } from '../../core/theme/presets.js';
|
|
7
7
|
import { createThemeAccessors } from '../../core/theme/accessors.js';
|
|
8
|
-
import { createTokenGraph } from '../../core/theme/graph.js';
|
|
9
8
|
import { systemClock } from '../../core/clock.js';
|
|
10
9
|
export { mockRuntime } from './runtime.js';
|
|
11
10
|
export { mockIO } from './io.js';
|
|
@@ -44,7 +43,6 @@ export function createTestContext(options = {}) {
|
|
|
44
43
|
: options.io);
|
|
45
44
|
const style = options.style ?? plainStyle();
|
|
46
45
|
const theme = createResolved(options.theme ?? CYAN_MAGENTA, options.noColor ?? false, options.colorScheme ?? 'dark');
|
|
47
|
-
const tokenGraph = createTokenGraph((options.theme ?? CYAN_MAGENTA));
|
|
48
46
|
const mode = options.mode ?? 'interactive';
|
|
49
47
|
return {
|
|
50
48
|
theme,
|
|
@@ -53,7 +51,7 @@ export function createTestContext(options = {}) {
|
|
|
53
51
|
io,
|
|
54
52
|
clock,
|
|
55
53
|
style,
|
|
56
|
-
tokenGraph,
|
|
54
|
+
tokenGraph: theme.tokenGraph,
|
|
57
55
|
resolveBCSS: () => ({}),
|
|
58
56
|
...createThemeAccessors(theme),
|
|
59
57
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/test/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAA2B,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,MAAM,EAAmC,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,SAAS,EAAyC,MAAM,YAAY,CAAC;AAG9E,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/test/index.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAA2B,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,MAAM,EAAmC,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,SAAS,EAAyC,MAAM,YAAY,CAAC;AAG9E,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,WAAW,EAA2B,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,MAAM,EAAmC,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,SAAS,EAAyC,MAAM,YAAY,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,UAAU,EAAwC,MAAM,kBAAkB,CAAC;AACpF,OAAO,EACL,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAwBlE,SAAS,WAAW,CAAC,KAA2D;IAC9E,OAAO,OAAO,KAAK,KAAK,QAAQ;WAC3B,KAAK,KAAK,IAAI;WACd,KAAK,IAAI,KAAK;WACd,OAAO,KAAK,CAAC,GAAG,KAAK,UAAU,CAAC;AACvC,CAAC;AAWD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAA8B,EAAE;IAChE,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC;IAC1D,MAAM,KAAK,GAAG,cAAc,KAAK,SAAS;QACxC,CAAC,CAAC,WAAW,EAAE;QACf,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;IAC/E,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,KAAK,SAAS;QAC/C,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE;QAClC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAChB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,YAAY,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK,EAAE,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC;IACrH,MAAM,IAAI,GAAe,OAAO,CAAC,IAAI,IAAI,aAAa,CAAC;IAEvD,OAAO;QACL,KAAK;QACL,IAAI;QACJ,OAAO;QACP,EAAE;QACF,KAAK;QACL,KAAK;QACL,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;QACvB,GAAG,oBAAoB,CAAC,KAAK,CAAC;KAC/B,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/adapters/test/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/adapters/test/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG1D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,oEAAoE;IACpE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,mDAAmD;IACnD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kDAAkD;IAClD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,WAAW,CAiBzE"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { sanitizePositiveInt } from '../../core/numeric.js';
|
|
1
2
|
/**
|
|
2
3
|
* Create an in-memory {@link RuntimePort} for tests.
|
|
3
4
|
*
|
|
@@ -20,9 +21,9 @@ export function mockRuntime(options = {}) {
|
|
|
20
21
|
},
|
|
21
22
|
stdoutIsTTY: options.stdoutIsTTY ?? true,
|
|
22
23
|
stdinIsTTY: options.stdinIsTTY ?? true,
|
|
23
|
-
columns: options.columns
|
|
24
|
-
rows: options.rows
|
|
25
|
-
refreshRate: options.refreshRate
|
|
24
|
+
columns: sanitizePositiveInt(options.columns, 80),
|
|
25
|
+
rows: sanitizePositiveInt(options.rows, 24),
|
|
26
|
+
refreshRate: sanitizePositiveInt(options.refreshRate, 60),
|
|
26
27
|
};
|
|
27
28
|
}
|
|
28
29
|
//# sourceMappingURL=runtime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/adapters/test/runtime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/adapters/test/runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAoB5D;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,UAA8B,EAAE;IAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;IACjC,OAAO;QACL;;;;WAIG;QACH,GAAG,CAAC,GAAW;YACb,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QACD,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI;QACxC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,IAAI;QACtC,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACjD,IAAI,EAAE,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3C,WAAW,EAAE,mBAAmB,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;KAC1D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { BijouContext } from './ports/context.js';
|
|
2
|
+
import { type ResolvedTheme } from './core/theme/resolve.js';
|
|
3
|
+
import type { Theme } from './core/theme/tokens.js';
|
|
4
|
+
/** Notification emitted when the observed theme graph changes. */
|
|
5
|
+
export interface ThemeChange {
|
|
6
|
+
/** The context whose theme graph emitted the change. */
|
|
7
|
+
readonly ctx: BijouContext;
|
|
8
|
+
/** Token path that changed. `'*'` means broad invalidation after import. */
|
|
9
|
+
readonly path: string;
|
|
10
|
+
/** True when the underlying graph requested a full recompute. */
|
|
11
|
+
readonly fullReload: boolean;
|
|
12
|
+
}
|
|
13
|
+
/** Disposable subscription returned by {@link observeTheme}. */
|
|
14
|
+
export interface ThemeObservation {
|
|
15
|
+
/** Stop observing future theme changes. */
|
|
16
|
+
dispose(): void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Clone a Bijou context with a different already-resolved theme.
|
|
20
|
+
*
|
|
21
|
+
* The original context is left untouched; callers get a fresh object with
|
|
22
|
+
* the same runtime/style/IO ports and updated theme accessors.
|
|
23
|
+
*/
|
|
24
|
+
export declare function cloneContextWithResolvedTheme(ctx: BijouContext, theme: ResolvedTheme): BijouContext;
|
|
25
|
+
/**
|
|
26
|
+
* Clone a Bijou context with a different theme definition.
|
|
27
|
+
*/
|
|
28
|
+
export declare function cloneContextWithTheme(ctx: BijouContext, theme: Theme): BijouContext;
|
|
29
|
+
/**
|
|
30
|
+
* Observe theme/token updates for a context.
|
|
31
|
+
*
|
|
32
|
+
* This is the supported third-party authoring seam for reacting to in-place
|
|
33
|
+
* token-graph updates. Handlers should invalidate any cached theme-derived
|
|
34
|
+
* work and re-read tokens through the accessor layer on the provided context.
|
|
35
|
+
*
|
|
36
|
+
* When a caller replaces the entire context object, dispose the old
|
|
37
|
+
* observation and subscribe to the new context instead.
|
|
38
|
+
*/
|
|
39
|
+
export declare function observeTheme(ctx: BijouContext, handler: (change: ThemeChange) => void): ThemeObservation;
|
|
40
|
+
//# sourceMappingURL=context-theme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-theme.d.ts","sourceRoot":"","sources":["../src/context-theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAEpD,kEAAkE;AAClE,MAAM,WAAW,WAAW;IAC1B,wDAAwD;IACxD,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;IAC3B,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iEAAiE;IACjE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED,gEAAgE;AAChE,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,aAAa,GACnB,YAAY,CAOd;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,KAAK,GACX,YAAY,CAKd;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,YAAY,EACjB,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,GACrC,gBAAgB,CAQlB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { createThemeAccessors } from './core/theme/accessors.js';
|
|
2
|
+
import { createResolved } from './core/theme/resolve.js';
|
|
3
|
+
/**
|
|
4
|
+
* Clone a Bijou context with a different already-resolved theme.
|
|
5
|
+
*
|
|
6
|
+
* The original context is left untouched; callers get a fresh object with
|
|
7
|
+
* the same runtime/style/IO ports and updated theme accessors.
|
|
8
|
+
*/
|
|
9
|
+
export function cloneContextWithResolvedTheme(ctx, theme) {
|
|
10
|
+
return {
|
|
11
|
+
...ctx,
|
|
12
|
+
theme,
|
|
13
|
+
tokenGraph: theme.tokenGraph,
|
|
14
|
+
...createThemeAccessors(theme),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Clone a Bijou context with a different theme definition.
|
|
19
|
+
*/
|
|
20
|
+
export function cloneContextWithTheme(ctx, theme) {
|
|
21
|
+
return cloneContextWithResolvedTheme(ctx, createResolved(theme, ctx.theme.noColor, ctx.theme.colorScheme));
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Observe theme/token updates for a context.
|
|
25
|
+
*
|
|
26
|
+
* This is the supported third-party authoring seam for reacting to in-place
|
|
27
|
+
* token-graph updates. Handlers should invalidate any cached theme-derived
|
|
28
|
+
* work and re-read tokens through the accessor layer on the provided context.
|
|
29
|
+
*
|
|
30
|
+
* When a caller replaces the entire context object, dispose the old
|
|
31
|
+
* observation and subscribe to the new context instead.
|
|
32
|
+
*/
|
|
33
|
+
export function observeTheme(ctx, handler) {
|
|
34
|
+
return ctx.tokenGraph.on((path) => {
|
|
35
|
+
handler({
|
|
36
|
+
ctx,
|
|
37
|
+
path,
|
|
38
|
+
fullReload: path === '*',
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=context-theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-theme.js","sourceRoot":"","sources":["../src/context-theme.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAsB,MAAM,yBAAyB,CAAC;AAmB7E;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAC3C,GAAiB,EACjB,KAAoB;IAEpB,OAAO;QACL,GAAG,GAAG;QACN,KAAK;QACL,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,GAAG,oBAAoB,CAAC,KAAK,CAAC;KAC/B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CACnC,GAAiB,EACjB,KAAY;IAEZ,OAAO,6BAA6B,CAClC,GAAG,EACH,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAChE,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAiB,EACjB,OAAsC;IAEtC,OAAO,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE;QAChC,OAAO,CAAC;YACN,GAAG;YACH,IAAI;YACJ,UAAU,EAAE,IAAI,KAAK,GAAG;SACzB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/context.d.ts
CHANGED
|
@@ -18,7 +18,19 @@ export declare function getDefaultContext(): BijouContext;
|
|
|
18
18
|
*/
|
|
19
19
|
export declare function setDefaultContext(ctx: BijouContext): void;
|
|
20
20
|
/**
|
|
21
|
-
*
|
|
21
|
+
* Register a lazy initializer for the global default {@link BijouContext}.
|
|
22
|
+
*
|
|
23
|
+
* Host adapters can use this to provide ambient context bootstrapping without
|
|
24
|
+
* forcing higher-level runtime packages to depend on host-specific modules.
|
|
25
|
+
*
|
|
26
|
+
* The initializer is invoked only when {@link getDefaultContext} is called and
|
|
27
|
+
* no explicit default has been set yet.
|
|
28
|
+
*
|
|
29
|
+
* @param initializer - Lazy factory for the default context, or `null` to clear it.
|
|
30
|
+
*/
|
|
31
|
+
export declare function setDefaultContextInitializer(initializer: (() => BijouContext) | null): void;
|
|
32
|
+
/**
|
|
33
|
+
* Reset the default context and lazy initializer.
|
|
22
34
|
*
|
|
23
35
|
* **Test-only** — ensures isolation between test cases.
|
|
24
36
|
*/
|
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKvD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,IAAI,YAAY,CAchD;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAEzD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,CAAC,MAAM,YAAY,CAAC,GAAG,IAAI,GACvC,IAAI,CAEN;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,IAAI,IAAI,CAGrD"}
|
package/dist/context.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
let defaultContext = null;
|
|
2
|
+
let defaultContextInitializer = null;
|
|
2
3
|
/**
|
|
3
4
|
* Retrieve the global default {@link BijouContext}.
|
|
4
5
|
*
|
|
@@ -8,9 +9,14 @@ let defaultContext = null;
|
|
|
8
9
|
*/
|
|
9
10
|
export function getDefaultContext() {
|
|
10
11
|
if (defaultContext === null) {
|
|
12
|
+
if (defaultContextInitializer != null) {
|
|
13
|
+
defaultContext = defaultContextInitializer();
|
|
14
|
+
return defaultContext;
|
|
15
|
+
}
|
|
11
16
|
throw new Error('[bijou] No default context configured. ' +
|
|
12
|
-
'Import @flyingrobots/bijou-node to auto-
|
|
13
|
-
'or call setDefaultContext() explicitly.'
|
|
17
|
+
'Import @flyingrobots/bijou-node to register Node auto-init, ' +
|
|
18
|
+
'call startApp(app), or call setDefaultContext() explicitly. ' +
|
|
19
|
+
'Guide: https://github.com/flyingrobots/bijou/tree/main/packages/bijou-node/GUIDE.md#basic-setup');
|
|
14
20
|
}
|
|
15
21
|
return defaultContext;
|
|
16
22
|
}
|
|
@@ -27,11 +33,26 @@ export function setDefaultContext(ctx) {
|
|
|
27
33
|
defaultContext = ctx;
|
|
28
34
|
}
|
|
29
35
|
/**
|
|
30
|
-
*
|
|
36
|
+
* Register a lazy initializer for the global default {@link BijouContext}.
|
|
37
|
+
*
|
|
38
|
+
* Host adapters can use this to provide ambient context bootstrapping without
|
|
39
|
+
* forcing higher-level runtime packages to depend on host-specific modules.
|
|
40
|
+
*
|
|
41
|
+
* The initializer is invoked only when {@link getDefaultContext} is called and
|
|
42
|
+
* no explicit default has been set yet.
|
|
43
|
+
*
|
|
44
|
+
* @param initializer - Lazy factory for the default context, or `null` to clear it.
|
|
45
|
+
*/
|
|
46
|
+
export function setDefaultContextInitializer(initializer) {
|
|
47
|
+
defaultContextInitializer = initializer;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Reset the default context and lazy initializer.
|
|
31
51
|
*
|
|
32
52
|
* **Test-only** — ensures isolation between test cases.
|
|
33
53
|
*/
|
|
34
54
|
export function _resetDefaultContextForTesting() {
|
|
35
55
|
defaultContext = null;
|
|
56
|
+
defaultContextInitializer = null;
|
|
36
57
|
}
|
|
37
58
|
//# sourceMappingURL=context.js.map
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAEA,IAAI,cAAc,GAAwB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAEA,IAAI,cAAc,GAAwB,IAAI,CAAC;AAC/C,IAAI,yBAAyB,GAAgC,IAAI,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QAC5B,IAAI,yBAAyB,IAAI,IAAI,EAAE,CAAC;YACtC,cAAc,GAAG,yBAAyB,EAAE,CAAC;YAC7C,OAAO,cAAc,CAAC;QACxB,CAAC;QACD,MAAM,IAAI,KAAK,CACb,yCAAyC;YACzC,8DAA8D;YAC9D,8DAA8D;YAC9D,iGAAiG,CAClG,CAAC;IACJ,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAiB;IACjD,cAAc,GAAG,GAAG,CAAC;AACvB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,4BAA4B,CAC1C,WAAwC;IAExC,yBAAyB,GAAG,WAAW,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B;IAC5C,cAAc,GAAG,IAAI,CAAC;IACtB,yBAAyB,GAAG,IAAI,CAAC;AACnC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert-v3.d.ts","sourceRoot":"","sources":["../../../src/core/components/alert-v3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGtD,OAAO,EAAE,KAAK,YAAY,EAAqB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"alert-v3.d.ts","sourceRoot":"","sources":["../../../src/core/components/alert-v3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGtD,OAAO,EAAE,KAAK,YAAY,EAAqB,MAAM,YAAY,CAAC;AAmBlE;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAkB3F"}
|
|
@@ -2,11 +2,12 @@ import { createSurface } from '../../ports/surface.js';
|
|
|
2
2
|
import { resolveSafeCtx as resolveCtx } from '../resolve-ctx.js';
|
|
3
3
|
import { boxSurface } from './box-v3.js';
|
|
4
4
|
import { createTextSurface, tokenToCellStyle } from './surface-text.js';
|
|
5
|
+
import { forceTextPresentation } from '../text/icon-presentation.js';
|
|
5
6
|
const ICONS = {
|
|
6
|
-
success: '\u2713', // ✓
|
|
7
|
-
error: '\u2717', // ✗
|
|
8
|
-
warning: '\u26A0', // ⚠
|
|
9
|
-
info: '\u2139', // ℹ
|
|
7
|
+
success: forceTextPresentation('\u2713'), // ✓
|
|
8
|
+
error: forceTextPresentation('\u2717'), // ✗
|
|
9
|
+
warning: forceTextPresentation('\u26A0'), // ⚠
|
|
10
|
+
info: forceTextPresentation('\u2139'), // ℹ
|
|
10
11
|
};
|
|
11
12
|
const BORDER_TOKENS = {
|
|
12
13
|
success: 'success',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert-v3.js","sourceRoot":"","sources":["../../../src/core/components/alert-v3.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,cAAc,IAAI,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"alert-v3.js","sourceRoot":"","sources":["../../../src/core/components/alert-v3.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,cAAc,IAAI,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,MAAM,KAAK,GAAiC;IAC1C,OAAO,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EAAE,IAAI;IAC9C,KAAK,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EAAI,IAAI;IAC9C,OAAO,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EAAE,IAAI;IAC9C,IAAI,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EAAK,IAAI;CAC/C,CAAC;AAEF,MAAM,aAAa,GAAsE;IACvF,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAyB,EAAE,UAAwB,EAAE;IAChF,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC;IAC1C,MAAM,WAAW,GAAG,iBAAiB,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAChG,MAAM,cAAc,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC1F,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC;IAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAE1E,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAEvD,OAAO,UAAU,CAAC,OAAO,EAAE;QACzB,GAAG,OAAO;QACV,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,GAAG,EAAE,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACvE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC;KACrD,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../src/core/components/alert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAI5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../../src/core/components/alert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAS,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAI5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnD,4BAA4B;AAC5B,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEpE,gDAAgD;AAChD,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD,+CAA+C;IAC/C,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,yFAAyF;IACzF,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,wFAAwF;IACxF,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB;AAuCD;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,MAAM,CAsBzE"}
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
import { resolveCtx } from '../resolve-ctx.js';
|
|
2
2
|
import { box } from './box.js';
|
|
3
3
|
import { renderByMode } from '../mode-render.js';
|
|
4
|
+
import { forceTextPresentation } from '../text/icon-presentation.js';
|
|
4
5
|
/**
|
|
5
6
|
* Unicode icon characters for each alert variant.
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* potentially 2-wide in some chat UIs. We treat them as 1-wide here
|
|
10
|
-
* since graphemeWidth correctly classifies them as Narrow.
|
|
8
|
+
* The symbols are forced into text presentation with VS15 (U+FE0E) so
|
|
9
|
+
* chat UIs and web terminals do not widen them into emoji presentation.
|
|
11
10
|
*/
|
|
12
11
|
const ICONS = {
|
|
13
|
-
success: '\u2713', // ✓ CHECK MARK
|
|
14
|
-
error: '\u2717', // ✗ BALLOT X
|
|
15
|
-
warning: '\u26A0', // ⚠ WARNING SIGN
|
|
16
|
-
info: '\u2139', // ℹ INFORMATION SOURCE
|
|
12
|
+
success: forceTextPresentation('\u2713'), // ✓ CHECK MARK
|
|
13
|
+
error: forceTextPresentation('\u2717'), // ✗ BALLOT X
|
|
14
|
+
warning: forceTextPresentation('\u26A0'), // ⚠ WARNING SIGN
|
|
15
|
+
info: forceTextPresentation('\u2139'), // ℹ INFORMATION SOURCE
|
|
17
16
|
};
|
|
18
17
|
/** Uppercase labels used in pipe mode output. */
|
|
19
18
|
const PIPE_LABELS = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert.js","sourceRoot":"","sources":["../../../src/core/components/alert.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"alert.js","sourceRoot":"","sources":["../../../src/core/components/alert.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAerE;;;;;GAKG;AACH,MAAM,KAAK,GAAiC;IAC1C,OAAO,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EAAE,eAAe;IACzD,KAAK,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EAAI,aAAa;IACvD,OAAO,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EAAE,iBAAiB;IAC3D,IAAI,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EAAK,uBAAuB;CAClE,CAAC;AAEF,iDAAiD;AACjD,MAAM,WAAW,GAAiC;IAChD,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,yDAAyD;AACzD,MAAM,iBAAiB,GAAiC;IACtD,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,8EAA8E;AAC9E,MAAM,aAAa,GAAgD;IACjE,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,KAAK,CAAC,OAAe,EAAE,UAAwB,EAAE;IAC/D,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC;IAC1C,MAAM,WAAW,GAAG,OAAO,IAAI,EAAE,CAAC;IAElC,OAAO,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE;QAC5B,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,KAAK,WAAW,EAAE;QACtD,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,WAAW,EAAE;QACjE,WAAW,EAAE,GAAG,EAAE;YAChB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC5C,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9E,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;YAE1D,OAAO,GAAG,CAAC,WAAW,GAAG,GAAG,GAAG,WAAW,EAAE;gBAC1C,WAAW;gBACX,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;gBACnD,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;gBAC9B,GAAG;aACJ,CAAC,CAAC;QACL,CAAC;KACF,EAAE,OAAO,CAAC,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../src/core/components/badge.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../src/core/components/badge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,OAAO,EAAa,MAAM,wBAAwB,CAAC;AACjG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAIxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAKnD,6EAA6E;AAC7E,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEhE,2CAA2C;AAC3C,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD,4CAA4C;IAC5C,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CA+DvE"}
|