@vertebr/react 0.6.0 → 0.7.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/dist/components/fonts/FontPickerField.d.ts.map +1 -1
- package/dist/components/fonts/FontPickerField.js +12 -1
- package/dist/styles/base.css +8 -14
- package/dist/styles/buttons.css +3 -12
- package/dist/themes/dark.css +48 -46
- package/dist/themes/index.css +1 -0
- package/dist/themes/light.css +91 -85
- package/dist/themes/tokens.css +52 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FontPickerField.d.ts","sourceRoot":"","sources":["../../../src/components/fonts/FontPickerField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAKvD,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAUF,wBAAgB,eAAe,CAAC,EAC9B,EAAE,EACF,KAAK,EACL,KAAK,EACL,WAAW,EACX,QAAQ,EACR,KAAK,EACL,OAAO,EACP,QAAQ,EACR,cAAc,EACd,WAA0B,GAC3B,EAAE,oBAAoB,+
|
|
1
|
+
{"version":3,"file":"FontPickerField.d.ts","sourceRoot":"","sources":["../../../src/components/fonts/FontPickerField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAKvD,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAUF,wBAAgB,eAAe,CAAC,EAC9B,EAAE,EACF,KAAK,EACL,KAAK,EACL,WAAW,EACX,QAAQ,EACR,KAAK,EACL,OAAO,EACP,QAAQ,EACR,cAAc,EACd,WAA0B,GAC3B,EAAE,oBAAoB,+BAqMtB"}
|
|
@@ -42,7 +42,18 @@ export function FontPickerField({ id, value, label, description, readOnly, fonts
|
|
|
42
42
|
return null;
|
|
43
43
|
return fonts.find((item) => item.id === previewId) ?? null;
|
|
44
44
|
}, [fonts, previewId]);
|
|
45
|
-
|
|
45
|
+
const faceItems = useMemo(() => {
|
|
46
|
+
const items = [];
|
|
47
|
+
const seen = new Set();
|
|
48
|
+
for (const item of [selected, previewItem]) {
|
|
49
|
+
if (!item || seen.has(item.id))
|
|
50
|
+
continue;
|
|
51
|
+
seen.add(item.id);
|
|
52
|
+
items.push(item);
|
|
53
|
+
}
|
|
54
|
+
return items;
|
|
55
|
+
}, [previewItem, selected]);
|
|
56
|
+
return (_jsxs("div", { className: "vertebr-font-picker", children: [_jsx(FontFaceInjector, { items: faceItems, apiBase: fontApiBase }), _jsxs("div", { className: "vertebr-font-picker-current", children: [_jsxs("div", { children: [_jsx("strong", { children: selected?.label ?? "Default system fonts" }), selected ? (_jsx("span", { children: selected.family })) : (_jsx("span", { children: "Manrope / Syne until a library font is chosen" }))] }), !readOnly ? (_jsx("button", { id: id, type: "button", className: "vertebr-btn", onClick: () => setOpen(true), children: "Choose font" })) : (_jsx("span", { id: id, className: "vertebr-font-picker-ro-anchor" }))] }), selected ? (_jsx("div", { className: "vertebr-font-picker-preview", children: _jsx(FontPreviewSample, { family: selected.family, bodyWeight: weightForItem(selected, "body"), headingWeight: weightForItem(selected, "heading"), compact: true }) })) : null, open ? (_jsx("div", { className: "vertebr-font-picker-modal-backdrop", onClick: () => closeModal(true), children: _jsxs("div", { className: "vertebr-font-picker-modal", role: "dialog", "aria-labelledby": `${id}-font-picker-title`, onClick: (event) => event.stopPropagation(), children: [_jsxs("div", { className: "vertebr-font-picker-modal-head", children: [_jsxs("div", { children: [_jsx("h3", { id: `${id}-font-picker-title`, children: label ?? "Choose a font" }), description ? _jsx("p", { children: description }) : null] }), _jsx("button", { type: "button", className: "vertebr-btn vertebr-btn-quiet", onClick: () => closeModal(true), children: "Close" })] }), loading ? (_jsx("div", { className: "vertebr-empty", children: "Loading fonts\u2026" })) : fonts.length === 0 ? (_jsx("div", { className: "vertebr-empty", children: "No fonts in the library yet. Open Font Library to upload or add Google Fonts." })) : (_jsxs("div", { className: "vertebr-font-picker-modal-body", children: [_jsx("div", { className: "vertebr-font-picker-grid-scroll", children: _jsxs("div", { className: "vertebr-font-picker-grid", children: [_jsxs("button", { type: "button", className: "vertebr-font-picker-option", "data-active": previewId === "" || undefined, onClick: () => previewFont(""), children: [_jsx("strong", { children: "Default" }), _jsx("span", { children: "Manrope / Syne" })] }), fonts.map((item) => (_jsxs("button", { type: "button", className: "vertebr-font-picker-option", "data-active": item.id === previewId || undefined, style: {
|
|
46
57
|
fontFamily: `"${item.family}", ui-sans-serif, sans-serif`,
|
|
47
58
|
fontWeight: weightForItem(item, "heading"),
|
|
48
59
|
}, onClick: () => previewFont(item.id), children: [_jsx("strong", { children: item.label }), _jsx("span", { children: item.family }), _jsx("em", { children: "The quick brown fox" })] }, item.id)))] }) }), _jsxs("aside", { className: "vertebr-font-picker-detail", children: [_jsx("p", { className: "vertebr-font-picker-detail-label", children: "Preview" }), previewId === "" ? (_jsx(FontPreviewSample, { family: "Manrope", bodyWeight: 400, headingWeight: 700 })) : previewItem ? (_jsx(FontPreviewSample, { family: previewItem.family, bodyWeight: weightForItem(previewItem, "body"), headingWeight: weightForItem(previewItem, "heading") })) : (_jsx("div", { className: "vertebr-empty", children: "Select a font to preview." }))] })] })), _jsxs("div", { className: "vertebr-font-picker-modal-actions", children: [_jsx("button", { type: "button", className: "vertebr-btn vertebr-btn-quiet", onClick: () => closeModal(true), children: "Cancel" }), _jsx("button", { type: "button", className: "vertebr-btn", disabled: loading, onClick: () => closeModal(false), children: "Done" })] })] }) })) : null] }));
|
package/dist/styles/base.css
CHANGED
|
@@ -27,27 +27,21 @@ html:has(.vertebr-error) body {
|
|
|
27
27
|
width: 100%;
|
|
28
28
|
display: grid;
|
|
29
29
|
grid-template-columns: var(--vb-sidebar-width) 1fr;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
900px 480px at 0% -10%,
|
|
33
|
-
var(--vb-glow-accent),
|
|
34
|
-
transparent 55%
|
|
35
|
-
),
|
|
36
|
-
radial-gradient(
|
|
37
|
-
700px 400px at 100% 100%,
|
|
38
|
-
var(--vb-glow-cool),
|
|
39
|
-
transparent 50%
|
|
40
|
-
),
|
|
41
|
-
linear-gradient(180deg, var(--vb-bg-deep) 0%, var(--vb-bg) 45%);
|
|
30
|
+
grid-template-rows: var(--vb-topbar-height) 1fr;
|
|
31
|
+
background: var(--vb-bg);
|
|
42
32
|
color: var(--vb-text);
|
|
43
33
|
font-family: var(--vb-font);
|
|
44
|
-
font-size:
|
|
45
|
-
line-height:
|
|
34
|
+
font-size: var(--vb-font-size-300);
|
|
35
|
+
line-height: var(--vb-line-height-normal);
|
|
46
36
|
-webkit-font-smoothing: antialiased;
|
|
47
37
|
isolation: isolate;
|
|
48
38
|
overflow: clip;
|
|
49
39
|
}
|
|
50
40
|
|
|
41
|
+
.vertebr-root[data-sidebar-collapsed="true"] {
|
|
42
|
+
grid-template-columns: var(--vb-sidebar-width-collapsed) 1fr;
|
|
43
|
+
}
|
|
44
|
+
|
|
51
45
|
.vertebr-root *,
|
|
52
46
|
.vertebr-root *::before,
|
|
53
47
|
.vertebr-root *::after {
|
package/dist/styles/buttons.css
CHANGED
|
@@ -27,23 +27,14 @@
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
.vertebr-btn-primary {
|
|
30
|
-
background:
|
|
31
|
-
180deg,
|
|
32
|
-
var(--vb-btn-primary-from) 0%,
|
|
33
|
-
var(--vb-btn-primary-to) 100%
|
|
34
|
-
);
|
|
30
|
+
background: var(--vb-btn-primary-from);
|
|
35
31
|
border-color: var(--vb-btn-primary-border);
|
|
36
32
|
color: var(--vb-accent-contrast);
|
|
37
|
-
font-weight:
|
|
38
|
-
box-shadow: 0 1px 0 var(--vb-surface-tint-strong) inset;
|
|
33
|
+
font-weight: var(--vb-font-weight-semibold);
|
|
39
34
|
}
|
|
40
35
|
|
|
41
36
|
.vertebr-btn-primary:hover:not(:disabled) {
|
|
42
|
-
background:
|
|
43
|
-
180deg,
|
|
44
|
-
var(--vb-btn-primary-hover-from) 0%,
|
|
45
|
-
var(--vb-btn-primary-hover-to) 100%
|
|
46
|
-
);
|
|
37
|
+
background: var(--vb-btn-primary-hover-from);
|
|
47
38
|
border-color: var(--vb-btn-primary-hover-border);
|
|
48
39
|
}
|
|
49
40
|
|
package/dist/themes/dark.css
CHANGED
|
@@ -1,55 +1,57 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Vertebr dark theme (default).
|
|
3
|
-
* Apply with data-vb-theme="dark" or leave unset (:root defaults here).
|
|
2
|
+
* Vertebr dark theme (default) — neutral Shopify-inspired palette.
|
|
4
3
|
*/
|
|
5
4
|
:root,
|
|
6
5
|
[data-vb-theme="dark"] {
|
|
7
6
|
color-scheme: dark;
|
|
8
7
|
|
|
9
|
-
--vb-bg: #
|
|
10
|
-
--vb-bg-deep: #
|
|
11
|
-
--vb-bg-elevated: #
|
|
12
|
-
--vb-bg-muted: #
|
|
13
|
-
--vb-bg-hover: #
|
|
14
|
-
--vb-
|
|
15
|
-
--vb-border
|
|
16
|
-
--vb-
|
|
17
|
-
--vb-
|
|
18
|
-
--vb-text
|
|
19
|
-
--vb-
|
|
20
|
-
--vb-
|
|
21
|
-
--vb-
|
|
22
|
-
--vb-accent
|
|
23
|
-
--vb-
|
|
24
|
-
--vb-
|
|
25
|
-
--vb-
|
|
26
|
-
--vb-
|
|
27
|
-
--vb-
|
|
28
|
-
--vb-
|
|
8
|
+
--vb-bg: #1a1a1a;
|
|
9
|
+
--vb-bg-deep: #141414;
|
|
10
|
+
--vb-bg-elevated: #242424;
|
|
11
|
+
--vb-bg-muted: #2e2e2e;
|
|
12
|
+
--vb-bg-hover: #383838;
|
|
13
|
+
--vb-bg-subdued: #303030;
|
|
14
|
+
--vb-border: #424242;
|
|
15
|
+
--vb-border-subdued: #353535;
|
|
16
|
+
--vb-border-strong: #5c5c5c;
|
|
17
|
+
--vb-text: #f3f3f3;
|
|
18
|
+
--vb-text-muted: #a8a8a8;
|
|
19
|
+
--vb-text-subtle: #7a7a7a;
|
|
20
|
+
--vb-text-secondary: #b5b5b5;
|
|
21
|
+
--vb-accent: #008060;
|
|
22
|
+
--vb-accent-dim: #006e52;
|
|
23
|
+
--vb-accent-soft: rgba(0, 128, 96, 0.14);
|
|
24
|
+
--vb-accent-contrast: #ffffff;
|
|
25
|
+
--vb-interactive: #5c9eff;
|
|
26
|
+
--vb-interactive-soft: rgba(92, 158, 255, 0.12);
|
|
27
|
+
--vb-danger: #e51c00;
|
|
28
|
+
--vb-danger-soft: rgba(229, 28, 0, 0.12);
|
|
29
|
+
--vb-danger-text: #ff8a7a;
|
|
30
|
+
--vb-ok: #29845a;
|
|
31
|
+
--vb-ok-soft: rgba(41, 132, 90, 0.14);
|
|
32
|
+
--vb-warn-text: #ffc96b;
|
|
33
|
+
--vb-warn-soft: rgba(255, 201, 107, 0.12);
|
|
29
34
|
|
|
30
|
-
--vb-glow-accent:
|
|
31
|
-
--vb-glow-cool:
|
|
32
|
-
--vb-surface-tint: rgba(255, 255, 255, 0.
|
|
33
|
-
--vb-surface-tint-strong: rgba(255, 255, 255, 0.
|
|
34
|
-
--vb-sidebar-from: #
|
|
35
|
-
--vb-sidebar-to: #
|
|
36
|
-
--vb-header-from:
|
|
37
|
-
--vb-header-to:
|
|
38
|
-
--vb-
|
|
39
|
-
--vb-actions-
|
|
40
|
-
--vb-
|
|
41
|
-
--vb-
|
|
42
|
-
--vb-btn-primary-
|
|
43
|
-
--vb-btn-primary-
|
|
44
|
-
--vb-btn-primary-
|
|
45
|
-
--vb-btn-primary-hover-
|
|
46
|
-
--vb-btn-primary-hover-
|
|
35
|
+
--vb-glow-accent: transparent;
|
|
36
|
+
--vb-glow-cool: transparent;
|
|
37
|
+
--vb-surface-tint: rgba(255, 255, 255, 0.03);
|
|
38
|
+
--vb-surface-tint-strong: rgba(255, 255, 255, 0.06);
|
|
39
|
+
--vb-sidebar-from: #1a1a1a;
|
|
40
|
+
--vb-sidebar-to: #1a1a1a;
|
|
41
|
+
--vb-header-from: #1a1a1a;
|
|
42
|
+
--vb-header-to: #1a1a1a;
|
|
43
|
+
--vb-topbar-bg: #242424;
|
|
44
|
+
--vb-actions-from: rgba(36, 36, 36, 0.95);
|
|
45
|
+
--vb-actions-to: rgba(26, 26, 26, 0.98);
|
|
46
|
+
--vb-input-focus-bg: #2e2e2e;
|
|
47
|
+
--vb-btn-primary-from: #008060;
|
|
48
|
+
--vb-btn-primary-to: #008060;
|
|
49
|
+
--vb-btn-primary-border: #006e52;
|
|
50
|
+
--vb-btn-primary-hover-from: #00966d;
|
|
51
|
+
--vb-btn-primary-hover-to: #00966d;
|
|
52
|
+
--vb-btn-primary-hover-border: #008060;
|
|
47
53
|
|
|
48
|
-
--vb-
|
|
49
|
-
--vb-
|
|
50
|
-
--vb-
|
|
51
|
-
--vb-radius-sm: 6px;
|
|
52
|
-
--vb-shadow: 0 1px 0 rgba(255, 255, 255, 0.04) inset,
|
|
53
|
-
0 18px 48px rgba(0, 0, 0, 0.45);
|
|
54
|
-
--vb-sidebar-width: 260px;
|
|
54
|
+
--vb-radius: var(--vb-radius-md);
|
|
55
|
+
--vb-radius-sm: var(--vb-radius-sm);
|
|
56
|
+
--vb-shadow: var(--vb-shadow-md);
|
|
55
57
|
}
|
package/dist/themes/index.css
CHANGED
package/dist/themes/light.css
CHANGED
|
@@ -1,102 +1,108 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Vertebr light theme.
|
|
3
|
-
* Apply with data-vb-theme="light" on <html> or .vertebr-root.
|
|
2
|
+
* Vertebr light theme — neutral Shopify-inspired palette.
|
|
4
3
|
*/
|
|
5
4
|
[data-vb-theme="light"] {
|
|
6
5
|
color-scheme: light;
|
|
7
6
|
|
|
8
|
-
--vb-bg: #
|
|
9
|
-
--vb-bg-deep: #
|
|
10
|
-
--vb-bg-elevated: #
|
|
11
|
-
--vb-bg-muted: #
|
|
12
|
-
--vb-bg-hover: #
|
|
13
|
-
--vb-
|
|
14
|
-
--vb-border
|
|
15
|
-
--vb-
|
|
16
|
-
--vb-
|
|
17
|
-
--vb-text
|
|
18
|
-
--vb-
|
|
19
|
-
--vb-
|
|
20
|
-
--vb-
|
|
21
|
-
--vb-accent
|
|
22
|
-
--vb-
|
|
23
|
-
--vb-
|
|
24
|
-
--vb-
|
|
25
|
-
--vb-
|
|
26
|
-
--vb-
|
|
27
|
-
--vb-
|
|
7
|
+
--vb-bg: #f1f1f1;
|
|
8
|
+
--vb-bg-deep: #ebebeb;
|
|
9
|
+
--vb-bg-elevated: #ffffff;
|
|
10
|
+
--vb-bg-muted: #f6f6f7;
|
|
11
|
+
--vb-bg-hover: #f1f1f1;
|
|
12
|
+
--vb-bg-subdued: #fafbfb;
|
|
13
|
+
--vb-border: #e3e3e3;
|
|
14
|
+
--vb-border-subdued: #ebebeb;
|
|
15
|
+
--vb-border-strong: #c9cccf;
|
|
16
|
+
--vb-text: #202223;
|
|
17
|
+
--vb-text-muted: #6d7175;
|
|
18
|
+
--vb-text-subtle: #8c9196;
|
|
19
|
+
--vb-text-secondary: #5c5f62;
|
|
20
|
+
--vb-accent: #008060;
|
|
21
|
+
--vb-accent-dim: #006e52;
|
|
22
|
+
--vb-accent-soft: rgba(0, 128, 96, 0.08);
|
|
23
|
+
--vb-accent-contrast: #ffffff;
|
|
24
|
+
--vb-interactive: #005bd3;
|
|
25
|
+
--vb-interactive-soft: rgba(0, 91, 211, 0.08);
|
|
26
|
+
--vb-danger: #d72c0d;
|
|
27
|
+
--vb-danger-soft: rgba(215, 44, 13, 0.08);
|
|
28
|
+
--vb-danger-text: #8e1f0b;
|
|
29
|
+
--vb-ok: #108043;
|
|
30
|
+
--vb-ok-soft: rgba(16, 128, 67, 0.08);
|
|
31
|
+
--vb-warn-text: #916a00;
|
|
32
|
+
--vb-warn-soft: rgba(255, 184, 0, 0.12);
|
|
28
33
|
|
|
29
|
-
--vb-glow-accent:
|
|
30
|
-
--vb-glow-cool:
|
|
31
|
-
--vb-surface-tint: rgba(
|
|
32
|
-
--vb-surface-tint-strong: rgba(
|
|
33
|
-
--vb-sidebar-from: #
|
|
34
|
-
--vb-sidebar-to: #
|
|
35
|
-
--vb-header-from:
|
|
36
|
-
--vb-header-to:
|
|
37
|
-
--vb-
|
|
38
|
-
--vb-actions-
|
|
39
|
-
--vb-
|
|
40
|
-
--vb-
|
|
41
|
-
--vb-btn-primary-
|
|
42
|
-
--vb-btn-primary-
|
|
43
|
-
--vb-btn-primary-
|
|
44
|
-
--vb-btn-primary-hover-
|
|
45
|
-
--vb-btn-primary-hover-
|
|
34
|
+
--vb-glow-accent: transparent;
|
|
35
|
+
--vb-glow-cool: transparent;
|
|
36
|
+
--vb-surface-tint: rgba(32, 34, 35, 0.03);
|
|
37
|
+
--vb-surface-tint-strong: rgba(32, 34, 35, 0.05);
|
|
38
|
+
--vb-sidebar-from: #ebebeb;
|
|
39
|
+
--vb-sidebar-to: #ebebeb;
|
|
40
|
+
--vb-header-from: #ffffff;
|
|
41
|
+
--vb-header-to: #ffffff;
|
|
42
|
+
--vb-topbar-bg: #ffffff;
|
|
43
|
+
--vb-actions-from: rgba(255, 255, 255, 0.95);
|
|
44
|
+
--vb-actions-to: rgba(255, 255, 255, 0.98);
|
|
45
|
+
--vb-input-focus-bg: #ffffff;
|
|
46
|
+
--vb-btn-primary-from: #008060;
|
|
47
|
+
--vb-btn-primary-to: #008060;
|
|
48
|
+
--vb-btn-primary-border: #006e52;
|
|
49
|
+
--vb-btn-primary-hover-from: #006e52;
|
|
50
|
+
--vb-btn-primary-hover-to: #006e52;
|
|
51
|
+
--vb-btn-primary-hover-border: #005e46;
|
|
46
52
|
|
|
47
|
-
--vb-
|
|
48
|
-
--vb-mono: "IBM Plex Mono", ui-monospace, monospace;
|
|
49
|
-
--vb-radius: 8px;
|
|
50
|
-
--vb-radius-sm: 6px;
|
|
51
|
-
--vb-shadow: 0 1px 0 rgba(255, 255, 255, 0.65) inset,
|
|
52
|
-
0 14px 40px rgba(40, 32, 18, 0.1);
|
|
53
|
-
--vb-sidebar-width: 260px;
|
|
53
|
+
--vb-shadow: var(--vb-shadow-sm);
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
@media (prefers-color-scheme: light) {
|
|
57
57
|
:root:not([data-vb-theme]) {
|
|
58
58
|
color-scheme: light;
|
|
59
59
|
|
|
60
|
-
--vb-bg: #
|
|
61
|
-
--vb-bg-deep: #
|
|
62
|
-
--vb-bg-elevated: #
|
|
63
|
-
--vb-bg-muted: #
|
|
64
|
-
--vb-bg-hover: #
|
|
65
|
-
--vb-
|
|
66
|
-
--vb-border
|
|
67
|
-
--vb-
|
|
68
|
-
--vb-
|
|
69
|
-
--vb-text
|
|
70
|
-
--vb-
|
|
71
|
-
--vb-
|
|
72
|
-
--vb-
|
|
73
|
-
--vb-accent
|
|
74
|
-
--vb-
|
|
75
|
-
--vb-
|
|
76
|
-
--vb-
|
|
77
|
-
--vb-
|
|
78
|
-
--vb-
|
|
79
|
-
--vb-
|
|
60
|
+
--vb-bg: #f1f1f1;
|
|
61
|
+
--vb-bg-deep: #ebebeb;
|
|
62
|
+
--vb-bg-elevated: #ffffff;
|
|
63
|
+
--vb-bg-muted: #f6f6f7;
|
|
64
|
+
--vb-bg-hover: #f1f1f1;
|
|
65
|
+
--vb-bg-subdued: #fafbfb;
|
|
66
|
+
--vb-border: #e3e3e3;
|
|
67
|
+
--vb-border-subdued: #ebebeb;
|
|
68
|
+
--vb-border-strong: #c9cccf;
|
|
69
|
+
--vb-text: #202223;
|
|
70
|
+
--vb-text-muted: #6d7175;
|
|
71
|
+
--vb-text-subtle: #8c9196;
|
|
72
|
+
--vb-text-secondary: #5c5f62;
|
|
73
|
+
--vb-accent: #008060;
|
|
74
|
+
--vb-accent-dim: #006e52;
|
|
75
|
+
--vb-accent-soft: rgba(0, 128, 96, 0.08);
|
|
76
|
+
--vb-accent-contrast: #ffffff;
|
|
77
|
+
--vb-interactive: #005bd3;
|
|
78
|
+
--vb-interactive-soft: rgba(0, 91, 211, 0.08);
|
|
79
|
+
--vb-danger: #d72c0d;
|
|
80
|
+
--vb-danger-soft: rgba(215, 44, 13, 0.08);
|
|
81
|
+
--vb-danger-text: #8e1f0b;
|
|
82
|
+
--vb-ok: #108043;
|
|
83
|
+
--vb-ok-soft: rgba(16, 128, 67, 0.08);
|
|
84
|
+
--vb-warn-text: #916a00;
|
|
85
|
+
--vb-warn-soft: rgba(255, 184, 0, 0.12);
|
|
80
86
|
|
|
81
|
-
--vb-glow-accent:
|
|
82
|
-
--vb-glow-cool:
|
|
83
|
-
--vb-surface-tint: rgba(
|
|
84
|
-
--vb-surface-tint-strong: rgba(
|
|
85
|
-
--vb-sidebar-from: #
|
|
86
|
-
--vb-sidebar-to: #
|
|
87
|
-
--vb-header-from:
|
|
88
|
-
--vb-header-to:
|
|
89
|
-
--vb-
|
|
90
|
-
--vb-actions-
|
|
91
|
-
--vb-
|
|
92
|
-
--vb-
|
|
93
|
-
--vb-btn-primary-
|
|
94
|
-
--vb-btn-primary-
|
|
95
|
-
--vb-btn-primary-
|
|
96
|
-
--vb-btn-primary-hover-
|
|
97
|
-
--vb-btn-primary-hover-
|
|
87
|
+
--vb-glow-accent: transparent;
|
|
88
|
+
--vb-glow-cool: transparent;
|
|
89
|
+
--vb-surface-tint: rgba(32, 34, 35, 0.03);
|
|
90
|
+
--vb-surface-tint-strong: rgba(32, 34, 35, 0.05);
|
|
91
|
+
--vb-sidebar-from: #ebebeb;
|
|
92
|
+
--vb-sidebar-to: #ebebeb;
|
|
93
|
+
--vb-header-from: #ffffff;
|
|
94
|
+
--vb-header-to: #ffffff;
|
|
95
|
+
--vb-topbar-bg: #ffffff;
|
|
96
|
+
--vb-actions-from: rgba(255, 255, 255, 0.95);
|
|
97
|
+
--vb-actions-to: rgba(255, 255, 255, 0.98);
|
|
98
|
+
--vb-input-focus-bg: #ffffff;
|
|
99
|
+
--vb-btn-primary-from: #008060;
|
|
100
|
+
--vb-btn-primary-to: #008060;
|
|
101
|
+
--vb-btn-primary-border: #006e52;
|
|
102
|
+
--vb-btn-primary-hover-from: #006e52;
|
|
103
|
+
--vb-btn-primary-hover-to: #006e52;
|
|
104
|
+
--vb-btn-primary-hover-border: #005e46;
|
|
98
105
|
|
|
99
|
-
--vb-shadow:
|
|
100
|
-
0 14px 40px rgba(40, 32, 18, 0.1);
|
|
106
|
+
--vb-shadow: var(--vb-shadow-sm);
|
|
101
107
|
}
|
|
102
108
|
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared design tokens — spacing, type, elevation (theme-agnostic).
|
|
3
|
+
*/
|
|
4
|
+
:root {
|
|
5
|
+
--vb-space-100: 0.25rem;
|
|
6
|
+
--vb-space-200: 0.5rem;
|
|
7
|
+
--vb-space-300: 0.75rem;
|
|
8
|
+
--vb-space-400: 1rem;
|
|
9
|
+
--vb-space-500: 1.25rem;
|
|
10
|
+
--vb-space-600: 1.5rem;
|
|
11
|
+
--vb-space-800: 2rem;
|
|
12
|
+
--vb-space-1000: 2.5rem;
|
|
13
|
+
--vb-space-1200: 3rem;
|
|
14
|
+
|
|
15
|
+
--vb-font-size-75: 0.75rem;
|
|
16
|
+
--vb-font-size-100: 0.8125rem;
|
|
17
|
+
--vb-font-size-200: 0.875rem;
|
|
18
|
+
--vb-font-size-300: 1rem;
|
|
19
|
+
--vb-font-size-400: 1.125rem;
|
|
20
|
+
--vb-font-size-500: 1.375rem;
|
|
21
|
+
--vb-font-size-600: 1.75rem;
|
|
22
|
+
|
|
23
|
+
--vb-font-weight-regular: 400;
|
|
24
|
+
--vb-font-weight-medium: 500;
|
|
25
|
+
--vb-font-weight-semibold: 600;
|
|
26
|
+
|
|
27
|
+
--vb-line-height-tight: 1.2;
|
|
28
|
+
--vb-line-height-normal: 1.45;
|
|
29
|
+
--vb-line-height-loose: 1.6;
|
|
30
|
+
|
|
31
|
+
--vb-radius-xs: 4px;
|
|
32
|
+
--vb-radius-sm: 6px;
|
|
33
|
+
--vb-radius-md: 8px;
|
|
34
|
+
--vb-radius-lg: 12px;
|
|
35
|
+
--vb-radius-full: 999px;
|
|
36
|
+
|
|
37
|
+
--vb-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.06);
|
|
38
|
+
--vb-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08);
|
|
39
|
+
--vb-shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.12);
|
|
40
|
+
|
|
41
|
+
--vb-topbar-height: 3.25rem;
|
|
42
|
+
--vb-sidebar-width: 240px;
|
|
43
|
+
--vb-sidebar-width-collapsed: 4rem;
|
|
44
|
+
--vb-savebar-height: 3.5rem;
|
|
45
|
+
|
|
46
|
+
--vb-duration-fast: 120ms;
|
|
47
|
+
--vb-duration-normal: 200ms;
|
|
48
|
+
--vb-ease: cubic-bezier(0.4, 0, 0.2, 1);
|
|
49
|
+
|
|
50
|
+
--vb-font: "Inter", "IBM Plex Sans", system-ui, sans-serif;
|
|
51
|
+
--vb-mono: "IBM Plex Mono", ui-monospace, monospace;
|
|
52
|
+
}
|