@blueprint-chart/ui 1.3.0 → 1.5.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.
@@ -44,17 +44,22 @@ $info: $prussian-300 !default;
44
44
  $warning: #D4A63A !default;
45
45
  $danger: #C94044 !default;
46
46
 
47
+ // Accent - the marker. One hex, two gestures (pen on dark, ground on light).
48
+ // No darkened-for-white variant: chartreuse on white is forbidden, not missing.
49
+ $chartreuse-400: #DDF247 !default;
50
+ $accent: $chartreuse-400 !default;
51
+
47
52
  // Borders
48
53
  $border-color: #dcdce0 !default;
49
54
  $border-color-dark: #2e2e2e !default;
50
55
 
51
56
  // Surface hierarchy (void > tile > elevated)
52
57
  $body-bg: #f3f3f4 !default;
53
- $body-bg-dark: #0a0a0a !default;
58
+ $body-bg-dark: #000000 !default;
54
59
  $body-secondary-bg: #ffffff !default;
55
- $body-secondary-bg-dark: #141414 !default;
60
+ $body-secondary-bg-dark: #0e0e0e !default;
56
61
  $body-tertiary-bg: #f8f8fa !default;
57
- $body-tertiary-bg-dark: #1a1a1a !default;
62
+ $body-tertiary-bg-dark: #161616 !default;
58
63
 
59
64
  // Links
60
65
  $link-color: $primary !default;
@@ -127,7 +132,7 @@ $spacer-xs: 0.25rem !default;
127
132
  --bc-canvas-dimension-color: rgba(255, 255, 255, 0.55);
128
133
 
129
134
  --bc-chrome-bg: #ffffff;
130
- --bc-content-bg: #f5f5f7;
135
+ --bc-content-bg: #E9EBEF;
131
136
  --bc-tile-bg: #ffffff;
132
137
  --bc-tile-bg-elevated: #f5f5f7;
133
138
  --bc-canvas-glow: none;
@@ -140,6 +145,53 @@ $spacer-xs: 0.25rem !default;
140
145
  --bc-hairline: rgba(0, 0, 0, 0.08);
141
146
  --bc-hairline-strong: rgba(0, 0, 0, 0.14);
142
147
 
148
+ // The marker. Interactive emphasis (CTA/hover/selection/focus expression) and
149
+ // editorial emphasis. Always rides a non-color signal (fill/shape/pool). ~4%.
150
+ --bc-accent: #{$accent};
151
+ --bc-accent-ink: #{$prussian-600}; // only text color on accent fills
152
+
153
+ // Grid pool (see _effects.scss). Ink reads on any surface, not just canvas.
154
+ --bc-pool-r: 100px;
155
+ --bc-pool-ink: #{rgba($prussian-300, 0.33)}; // drafting-blue grid on light
156
+
157
+ // Light ink for forced-dark marketing islands (hero, closing band). These are
158
+ // island constants: the same value in both themes, so they are not overridden
159
+ // in the dark block.
160
+ --bc-marketing-ink: #EAF2FA;
161
+ --bc-marketing-ink-dim: #{$prussian-100};
162
+
163
+ // Island constant: the default Prussian focus ring is only ~1.4:1 on the
164
+ // #000000 marketing field, below the 3:1 focus-indicator floor. This
165
+ // brighter Prussian tint reads at roughly 3.5:1+ on black and is used only
166
+ // on the dark marketing islands (see .btn-bc-primary:focus-visible below).
167
+ --bc-focus-ring-marketing: 0 0 0 3px #{rgba($prussian-300, 0.9)};
168
+
169
+ // Editorial mark ink: chartreuse can't be a thin figure on white, so small
170
+ // marks (eyebrow #/dot) fall back to Prussian on light, chartreuse on dark.
171
+ --bc-mark: #{$prussian-500};
172
+ --bc-mark-quiet: #{rgba($prussian-500, 0.14)};
173
+
174
+ // Primary button fill/ink pair. Flips per theme so .btn-bc-primary always
175
+ // resolves at the nearest theme (see _effects.scss), instead of a
176
+ // theme-scoped selector outranking the base rule inside a forced-dark
177
+ // island. Light: navy fill on paper. Dark: chartreuse fill on the field.
178
+ --bc-btn-primary-bg: #{$prussian-600};
179
+ --bc-btn-primary-fg: #{$accent};
180
+
181
+ // Highlighter swipe (FIG.03). Defined once here so .bc-highlight and the
182
+ // landing emphasis rules share one gradient (DRY). Ground on light.
183
+ --bc-swipe: linear-gradient(
184
+ 180deg,
185
+ transparent 45%,
186
+ var(--bc-accent) 45%,
187
+ var(--bc-accent) 92%,
188
+ transparent 92%
189
+ );
190
+
191
+ // Framed-canvas system (flat: hairline border, no shadow).
192
+ --bc-frame-border: var(--bc-hairline);
193
+ --bc-frame-radius: var(--bc-radius-lg);
194
+
143
195
  --bc-radius-pill: 999px;
144
196
  --bc-radius-xs: 4px;
145
197
  --bc-radius-sm: 6px;
@@ -191,19 +243,16 @@ $spacer-xs: 0.25rem !default;
191
243
  --bc-grid-color: #444;
192
244
  --bc-text-color: #aaa;
193
245
 
194
- // Blueprint canvas goes dark in dark theme: the blue surface becomes a deep
195
- // neutral well one rung below the void, harmonized with the graphite surface
196
- // ramp. The white grid lines below already read on a dark surface, so only
197
- // the background color changes — the blueprint grid stays the grid.
198
- --bc-canvas-bg: #070707;
199
- --bc-canvas-grid-color: rgba(255, 255, 255, 0.04);
200
- --bc-canvas-grid-color-major: rgba(255, 255, 255, 0.10);
201
- --bc-canvas-dimension-color: rgba(255, 255, 255, 0.4);
202
-
203
- --bc-chrome-bg: #0f0f0f;
204
- --bc-content-bg: #0f0f0f;
205
- --bc-tile-bg: #1a1a1a;
206
- --bc-tile-bg-elevated: #232323;
246
+ // Dark canvas is true black; the white grid lines carry the blueprint.
247
+ --bc-canvas-bg: #000000;
248
+ --bc-canvas-grid-color: rgba(255, 255, 255, 0.05);
249
+ --bc-canvas-grid-color-major: rgba(255, 255, 255, 0.12);
250
+ --bc-canvas-dimension-color: rgba(255, 255, 255, 0.45);
251
+
252
+ --bc-chrome-bg: #000000;
253
+ --bc-content-bg: #000000;
254
+ --bc-tile-bg: #0e0e0e;
255
+ --bc-tile-bg-elevated: #161616;
207
256
  --bc-canvas-glow: none;
208
257
 
209
258
  --bc-wash-soft: rgba(255, 255, 255, 0.03);
@@ -211,12 +260,39 @@ $spacer-xs: 0.25rem !default;
211
260
  --bc-wash-input: rgba(255, 255, 255, 0.03);
212
261
  --bc-wash-input-hover: rgba(255, 255, 255, 0.05);
213
262
 
214
- --bc-hairline: rgba(255, 255, 255, 0.06);
215
- --bc-hairline-strong: rgba(255, 255, 255, 0.12);
263
+ --bc-hairline: rgba(255, 255, 255, 0.09);
264
+ --bc-hairline-strong: rgba(255, 255, 255, 0.15);
265
+
266
+ --bc-accent: #{$accent}; // same hex; gesture differs, not value
267
+ --bc-accent-ink: #{$prussian-600}; // navy on chartreuse in both themes
268
+ --bc-pool-ink: #{rgba($prussian-100, 0.32)}; // paper-blue grid on true black
269
+ --bc-mark: #{$accent}; // chartreuse is ink on dark
270
+ --bc-mark-quiet: #{rgba($accent, 0.18)};
271
+
272
+ // On dark, chartreuse is ink (text) so the swipe stays a translucent ground
273
+ // behind normal text rather than a bold block. Alpha 0.4 makes the band
274
+ // clearly read on true black while keeping white/near-white text over it
275
+ // above the 4.5:1 floor (~5.9:1 on #EAF2FA, ~5.1:1 on --bs-body-color).
276
+ --bc-swipe: linear-gradient(
277
+ 180deg,
278
+ transparent 45%,
279
+ #{rgba($chartreuse-400, 0.4)} 45%,
280
+ #{rgba($chartreuse-400, 0.4)} 92%,
281
+ transparent 92%
282
+ );
283
+
284
+ // Primary button fill/ink pair, flipped: chartreuse fill on the field,
285
+ // navy ink. See the light block above for the pairing rationale.
286
+ --bc-btn-primary-bg: #{$accent};
287
+ --bc-btn-primary-fg: #{$prussian-600};
288
+
289
+ // Brighter Prussian so the focus ring clears the 3:1 floor on the #000 field
290
+ // (mirrors what --bc-focus-ring-marketing already does for primary buttons).
291
+ --bc-focus-ring: 0 0 0 2px #{rgba($prussian-300, 0.6)};
216
292
 
217
293
  --bc-shadow-overlay:
218
- 0 8px 24px rgba(0, 0, 0, 0.4),
219
- 0 1px 2px rgba(0, 0, 0, 0.3);
294
+ 0 8px 24px rgba(0, 0, 0, 0.6),
295
+ 0 1px 2px rgba(0, 0, 0, 0.4);
220
296
  }
221
297
 
222
298
  @media (prefers-reduced-motion: reduce) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blueprint-chart/ui",
3
- "version": "1.3.0",
3
+ "version": "1.5.0",
4
4
  "description": "Vue 3 component library for Blueprint Chart editors and apps.",
5
5
  "keywords": [
6
6
  "vue",
@@ -33,6 +33,10 @@
33
33
  },
34
34
  "./styles/tokens.css": "./dist/styles/tokens.css",
35
35
  "./styles/tokens.scss": "./dist/styles/tokens.scss",
36
+ "./styles/eyebrow.css": "./dist/styles/eyebrow.css",
37
+ "./styles/eyebrow.scss": "./dist/styles/eyebrow.scss",
38
+ "./styles/effects.css": "./dist/styles/effects.css",
39
+ "./styles/effects.scss": "./dist/styles/effects.scss",
36
40
  "./style.css": "./dist/style.css"
37
41
  },
38
42
  "files": [
@@ -78,7 +82,7 @@
78
82
  "vitest": "^3",
79
83
  "vue": "^3.5",
80
84
  "vue-router": "^4.6.4",
81
- "@blueprint-chart/lib": "1.3.0"
85
+ "@blueprint-chart/lib": "1.5.0"
82
86
  },
83
87
  "scripts": {
84
88
  "build": "vite build",