@blueprint-chart/ui 0.1.9 → 0.1.12
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/dist/components/Navigation/NavigationCommandBar/NavigationCommandBar.vue.d.ts +4 -1
- package/dist/components/Navigation/NavigationDocsBar/NavigationDocsBar.vue.d.ts +14 -0
- package/dist/components/Navigation/NavigationMarketingBar/NavigationMarketingBar.vue.d.ts +15 -0
- package/dist/components/Navigation/NavigationSectionDropdown/NavigationSectionDropdown.vue.d.ts +14 -0
- package/dist/components/Navigation/NavigationSectionTabs/NavigationSectionTabs.vue.d.ts +14 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +2310 -2146
- package/dist/style.css +1 -1
- package/dist/styles/tokens.css +1 -0
- package/dist/styles/tokens.scss +222 -0
- package/package.json +16 -12
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
// packages/ui/src/styles/tokens.scss
|
|
2
|
+
// Canonical design tokens for Blueprint Chart.
|
|
3
|
+
//
|
|
4
|
+
// Two layers:
|
|
5
|
+
// 1. SCSS layer — primitives consumed at compile time (Bootstrap config,
|
|
6
|
+
// mixins, internal ui SCSS). All `!default` so consumers
|
|
7
|
+
// can override before importing.
|
|
8
|
+
// 2. CSS variables — primitives consumed at runtime (themes, dark mode).
|
|
9
|
+
//
|
|
10
|
+
// Consumed by:
|
|
11
|
+
// - @blueprint-chart/editor — `@use "@blueprint-chart/ui/styles/tokens.scss" as *;`
|
|
12
|
+
// - @blueprint-chart/docs — compiled `tokens.css` (only the :root blocks survive)
|
|
13
|
+
//
|
|
14
|
+
// Chart-canvas frame text (.bc-frame-*) is intentionally not defined here —
|
|
15
|
+
// those CSS rules live alongside the chart renderer in @blueprint-chart/lib.
|
|
16
|
+
// Syntax-highlight tokens (--bc-syn-*) and chart-rendering primitives
|
|
17
|
+
// (--bc-axis-color, --bc-grid-color, --bc-text-color) ARE included because
|
|
18
|
+
// they must respond to the editor theme.
|
|
19
|
+
|
|
20
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
21
|
+
// 1. SCSS layer
|
|
22
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
23
|
+
|
|
24
|
+
// Font stacks (Bootstrap picks these up before its own theme compiles)
|
|
25
|
+
$font-family-sans-serif: "Geist Sans", "Inter", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif !default;
|
|
26
|
+
$font-family-monospace: "Geist Mono", ui-monospace, "JetBrains Mono", "SFMono-Regular", Menlo, monospace !default;
|
|
27
|
+
$font-family-base: $font-family-sans-serif !default;
|
|
28
|
+
$font-family-code: $font-family-monospace !default;
|
|
29
|
+
$headings-font-family: $font-family-sans-serif !default;
|
|
30
|
+
|
|
31
|
+
// Brand scale — Prussian Blue
|
|
32
|
+
$prussian-900: #0A1E3D !default;
|
|
33
|
+
$prussian-700: #102E55 !default;
|
|
34
|
+
$prussian-600: #163A65 !default;
|
|
35
|
+
$prussian-500: #2563A0 !default; // primary
|
|
36
|
+
$prussian-300: #4B90CF !default;
|
|
37
|
+
$prussian-100: #A3C9E8 !default;
|
|
38
|
+
$prussian-50: #E1EEF7 !default;
|
|
39
|
+
|
|
40
|
+
// Theme color aliases (Bootstrap reads these)
|
|
41
|
+
$primary: $prussian-500 !default;
|
|
42
|
+
$success: #2D8659 !default;
|
|
43
|
+
$info: $prussian-300 !default;
|
|
44
|
+
$warning: #D4A63A !default;
|
|
45
|
+
$danger: #C94044 !default;
|
|
46
|
+
|
|
47
|
+
// Borders
|
|
48
|
+
$border-color: #dcdce0 !default;
|
|
49
|
+
$border-color-dark: #33323e !default;
|
|
50
|
+
|
|
51
|
+
// Surface hierarchy (void > tile > elevated)
|
|
52
|
+
$body-bg: #f3f3f4 !default;
|
|
53
|
+
$body-bg-dark: #0a0a0a !default;
|
|
54
|
+
$body-secondary-bg: #ffffff !default;
|
|
55
|
+
$body-secondary-bg-dark: #1c1c20 !default;
|
|
56
|
+
$body-tertiary-bg: #f8f8fa !default;
|
|
57
|
+
$body-tertiary-bg-dark: #1c1c20 !default;
|
|
58
|
+
|
|
59
|
+
// Links
|
|
60
|
+
$link-color: $primary !default;
|
|
61
|
+
$link-hover-color: $prussian-600 !default;
|
|
62
|
+
$link-color-dark: $prussian-300 !default;
|
|
63
|
+
$link-hover-color-dark: $prussian-100 !default;
|
|
64
|
+
|
|
65
|
+
// Focus ring
|
|
66
|
+
$focus-ring-color: rgba($primary, 0.25) !default;
|
|
67
|
+
|
|
68
|
+
// Code text
|
|
69
|
+
$code-color: $prussian-600 !default;
|
|
70
|
+
|
|
71
|
+
// Bootstrap SCSS font-size primitive (Bootstrap uses this name)
|
|
72
|
+
$font-size-xs: 0.6875rem !default;
|
|
73
|
+
|
|
74
|
+
// Icon size scale — consumed by AppIcon/AppIconLayers via _mixins.scss
|
|
75
|
+
$app-icon-size-scale-base: 20 !default;
|
|
76
|
+
$app-icon-size-scale-2xs: 12 !default;
|
|
77
|
+
$app-icon-size-scale-xs: 14 !default;
|
|
78
|
+
$app-icon-size-scale-sm: 16 !default;
|
|
79
|
+
$app-icon-size-scale-md: $app-icon-size-scale-base !default;
|
|
80
|
+
$app-icon-size-scale-lg: 24 !default;
|
|
81
|
+
$app-icon-size-scale-xl: 32 !default;
|
|
82
|
+
$app-icon-size-scale-2xl: 40 !default;
|
|
83
|
+
|
|
84
|
+
$app-icon-sizes: (
|
|
85
|
+
"2xs": $app-icon-size-scale-2xs,
|
|
86
|
+
"xs": $app-icon-size-scale-xs,
|
|
87
|
+
"sm": $app-icon-size-scale-sm,
|
|
88
|
+
"md": $app-icon-size-scale-md,
|
|
89
|
+
"lg": $app-icon-size-scale-lg,
|
|
90
|
+
"xl": $app-icon-size-scale-xl,
|
|
91
|
+
"2xl": $app-icon-size-scale-2xl,
|
|
92
|
+
) !default;
|
|
93
|
+
|
|
94
|
+
// Spacers
|
|
95
|
+
$spacer-xs: 0.25rem !default;
|
|
96
|
+
|
|
97
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
98
|
+
// 2. CSS custom properties — runtime
|
|
99
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
100
|
+
|
|
101
|
+
:root,
|
|
102
|
+
[data-bs-theme="light"] {
|
|
103
|
+
--bs-font-size-xs: 0.75rem; // 12px — uppercase eyebrow labels, badge text
|
|
104
|
+
--bs-font-size-sm: 0.875rem; // 14px — sub-body, DSL code
|
|
105
|
+
--bs-font-size-md: 1rem; // 16px — body, UI, nav, breadcrumbs
|
|
106
|
+
--bs-font-size-lg: 1.25rem; // 20px — panel section titles
|
|
107
|
+
--bs-font-size-xl: 1.875rem; // 30px — page title (h1)
|
|
108
|
+
--bs-font-size-2xl: 2.375rem; // 38px — dashboard title
|
|
109
|
+
--bs-font-size-hero: 4rem; // 64px — landing hero h1 (unchanged)
|
|
110
|
+
|
|
111
|
+
--bc-syn-keyword: #2563A0;
|
|
112
|
+
--bc-syn-string: #2D8659;
|
|
113
|
+
--bc-syn-number: #8B5E00;
|
|
114
|
+
--bc-syn-identifier: #555;
|
|
115
|
+
--bc-syn-punct: #888;
|
|
116
|
+
--bc-syn-comment: #999;
|
|
117
|
+
--bc-axis-color: #333;
|
|
118
|
+
--bc-grid-color: #e0e0e0;
|
|
119
|
+
--bc-text-color: #555;
|
|
120
|
+
--bc-brand-1: #5b6abf;
|
|
121
|
+
--bc-brand-2: #3c8dbc;
|
|
122
|
+
|
|
123
|
+
--bc-canvas-bg: #244a7c;
|
|
124
|
+
--bc-canvas-grid-color: rgba(255, 255, 255, 0.06);
|
|
125
|
+
--bc-canvas-grid-color-major: rgba(255, 255, 255, 0.15);
|
|
126
|
+
--bc-canvas-grid-size: 20px;
|
|
127
|
+
--bc-canvas-dimension-color: rgba(255, 255, 255, 0.55);
|
|
128
|
+
|
|
129
|
+
--bc-chrome-bg: #ffffff;
|
|
130
|
+
--bc-content-bg: #fafafa;
|
|
131
|
+
--bc-tile-bg: #ffffff;
|
|
132
|
+
--bc-tile-bg-elevated: #f5f5f7;
|
|
133
|
+
--bc-canvas-glow: none;
|
|
134
|
+
|
|
135
|
+
--bc-wash-soft: rgba(0, 0, 0, 0.04);
|
|
136
|
+
--bc-wash-firm: rgba(0, 0, 0, 0.06);
|
|
137
|
+
--bc-wash-input: rgba(0, 0, 0, 0.03);
|
|
138
|
+
--bc-wash-input-hover: rgba(0, 0, 0, 0.05);
|
|
139
|
+
|
|
140
|
+
--bc-hairline: rgba(0, 0, 0, 0.08);
|
|
141
|
+
--bc-hairline-strong: rgba(0, 0, 0, 0.14);
|
|
142
|
+
|
|
143
|
+
--bc-radius-pill: 999px;
|
|
144
|
+
--bc-radius-xs: 4px;
|
|
145
|
+
--bc-radius-sm: 6px;
|
|
146
|
+
--bc-radius-md: 8px;
|
|
147
|
+
--bc-radius-lg: 12px;
|
|
148
|
+
|
|
149
|
+
--bs-card-bg: var(--bc-tile-bg);
|
|
150
|
+
--bs-card-box-shadow: none;
|
|
151
|
+
--bs-navbar-bg: transparent;
|
|
152
|
+
|
|
153
|
+
--bc-ease: cubic-bezier(0.4, 0, 0.2, 1);
|
|
154
|
+
--bc-duration-fast: 100ms;
|
|
155
|
+
--bc-duration-base: 150ms;
|
|
156
|
+
--bc-duration-slow: 250ms;
|
|
157
|
+
|
|
158
|
+
--bc-focus-ring: 0 0 0 2px rgba(37, 99, 160, 0.4);
|
|
159
|
+
|
|
160
|
+
--bc-shadow-overlay:
|
|
161
|
+
0 8px 24px rgba(0, 0, 0, 0.08),
|
|
162
|
+
0 1px 2px rgba(0, 0, 0, 0.04);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// When [data-bs-theme="light"] is applied to a nested element (e.g. the
|
|
166
|
+
// preview card when dark mode is disallowed), propagate the light color +
|
|
167
|
+
// background so inherited text/currentColor inside SVGs also switch to the
|
|
168
|
+
// light palette.
|
|
169
|
+
[data-bs-theme="dark"] [data-bs-theme="light"] {
|
|
170
|
+
color: var(--bs-body-color);
|
|
171
|
+
background-color: var(--bs-card-bg);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// `.dark` is the dark-mode flag VitePress (and Tailwind-style projects) toggle
|
|
175
|
+
// on <html>. Aliasing it to `[data-bs-theme="dark"]` lets the same shared token
|
|
176
|
+
// set serve both consumer conventions — the editor toggles `data-bs-theme`, the
|
|
177
|
+
// docs site toggles `.dark`. Keeping both selectors in one rule avoids
|
|
178
|
+
// duplicating the dark palette.
|
|
179
|
+
[data-bs-theme="dark"],
|
|
180
|
+
.dark {
|
|
181
|
+
--bc-syn-keyword: #6CA6D6;
|
|
182
|
+
--bc-syn-string: #6BBF8B;
|
|
183
|
+
--bc-syn-number: #D4A63A;
|
|
184
|
+
--bc-syn-identifier: #b0b0b0;
|
|
185
|
+
--bc-syn-punct: #777;
|
|
186
|
+
--bc-syn-comment: #666;
|
|
187
|
+
|
|
188
|
+
--bc-axis-color: #ccc;
|
|
189
|
+
--bc-grid-color: #444;
|
|
190
|
+
--bc-text-color: #aaa;
|
|
191
|
+
|
|
192
|
+
--bc-canvas-bg: #244a7c;
|
|
193
|
+
--bc-canvas-grid-color: rgba(255, 255, 255, 0.04);
|
|
194
|
+
--bc-canvas-grid-color-major: rgba(255, 255, 255, 0.10);
|
|
195
|
+
--bc-canvas-dimension-color: rgba(255, 255, 255, 0.4);
|
|
196
|
+
|
|
197
|
+
--bc-chrome-bg: #08090a;
|
|
198
|
+
--bc-content-bg: #101112;
|
|
199
|
+
--bc-tile-bg: #101112;
|
|
200
|
+
--bc-tile-bg-elevated: #16161b;
|
|
201
|
+
--bc-canvas-glow: radial-gradient(ellipse at top, rgba(37, 99, 160, 0.04), transparent 60%);
|
|
202
|
+
|
|
203
|
+
--bc-wash-soft: rgba(255, 255, 255, 0.03);
|
|
204
|
+
--bc-wash-firm: rgba(255, 255, 255, 0.07);
|
|
205
|
+
--bc-wash-input: rgba(255, 255, 255, 0.03);
|
|
206
|
+
--bc-wash-input-hover: rgba(255, 255, 255, 0.05);
|
|
207
|
+
|
|
208
|
+
--bc-hairline: rgba(255, 255, 255, 0.06);
|
|
209
|
+
--bc-hairline-strong: rgba(255, 255, 255, 0.12);
|
|
210
|
+
|
|
211
|
+
--bc-shadow-overlay:
|
|
212
|
+
0 8px 24px rgba(0, 0, 0, 0.4),
|
|
213
|
+
0 1px 2px rgba(0, 0, 0, 0.3);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
@media (prefers-reduced-motion: reduce) {
|
|
217
|
+
:root, [data-bs-theme="light"], [data-bs-theme="dark"], .dark {
|
|
218
|
+
--bc-duration-fast: 0ms;
|
|
219
|
+
--bc-duration-base: 0ms;
|
|
220
|
+
--bc-duration-slow: 0ms;
|
|
221
|
+
}
|
|
222
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blueprint-chart/ui",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.12",
|
|
4
4
|
"description": "Vue 3 component library for Blueprint Chart editors and apps.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"vue",
|
|
@@ -30,7 +30,10 @@
|
|
|
30
30
|
"types": "./dist/index.d.ts",
|
|
31
31
|
"import": "./dist/index.js",
|
|
32
32
|
"default": "./dist/index.js"
|
|
33
|
-
}
|
|
33
|
+
},
|
|
34
|
+
"./styles/tokens.css": "./dist/styles/tokens.css",
|
|
35
|
+
"./styles/tokens.scss": "./dist/styles/tokens.scss",
|
|
36
|
+
"./style.css": "./dist/style.css"
|
|
34
37
|
},
|
|
35
38
|
"files": [
|
|
36
39
|
"dist",
|
|
@@ -41,6 +44,13 @@
|
|
|
41
44
|
"access": "public",
|
|
42
45
|
"provenance": true
|
|
43
46
|
},
|
|
47
|
+
"scripts": {
|
|
48
|
+
"build": "vite build",
|
|
49
|
+
"test": "vitest run",
|
|
50
|
+
"story:dev": "histoire dev",
|
|
51
|
+
"story:build": "histoire build",
|
|
52
|
+
"story:preview": "histoire preview"
|
|
53
|
+
},
|
|
44
54
|
"peerDependencies": {
|
|
45
55
|
"@vueuse/core": "^14.2.1",
|
|
46
56
|
"bootstrap": "^5.3",
|
|
@@ -54,6 +64,7 @@
|
|
|
54
64
|
"vue-color": "^3.3.3"
|
|
55
65
|
},
|
|
56
66
|
"devDependencies": {
|
|
67
|
+
"@blueprint-chart/lib": "workspace:*",
|
|
57
68
|
"@histoire/plugin-vue": "^0.17",
|
|
58
69
|
"@iconify-json/ph": "^1.2.2",
|
|
59
70
|
"@types/d3-format": "^3.0.4",
|
|
@@ -65,6 +76,7 @@
|
|
|
65
76
|
"bootstrap-vue-next": "^0.27",
|
|
66
77
|
"histoire": "^0.17",
|
|
67
78
|
"jsdom": "^26",
|
|
79
|
+
"sass": "^1.99.0",
|
|
68
80
|
"typescript": "^5.7",
|
|
69
81
|
"unplugin-auto-import": "^21.0.0",
|
|
70
82
|
"unplugin-icons": "^22.5.0",
|
|
@@ -73,14 +85,6 @@
|
|
|
73
85
|
"vite-plugin-dts": "^5.0.0",
|
|
74
86
|
"vitest": "^3",
|
|
75
87
|
"vue": "^3.5",
|
|
76
|
-
"vue-router": "^4.6.4"
|
|
77
|
-
"@blueprint-chart/lib": "0.1.9"
|
|
78
|
-
},
|
|
79
|
-
"scripts": {
|
|
80
|
-
"build": "vite build",
|
|
81
|
-
"test": "vitest run",
|
|
82
|
-
"story:dev": "histoire dev",
|
|
83
|
-
"story:build": "histoire build",
|
|
84
|
-
"story:preview": "histoire preview"
|
|
88
|
+
"vue-router": "^4.6.4"
|
|
85
89
|
}
|
|
86
|
-
}
|
|
90
|
+
}
|