basalt-ui 1.19.1 → 1.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +19 -1
- package/CHANGELOG.md +39 -0
- package/MIGRATING.md +326 -0
- package/README.md +87 -9
- package/agent/rules/basalt-app.md +84 -0
- package/agent/rules/basalt-charts.md +32 -17
- package/agent/rules/basalt-content.md +4 -0
- package/agent/rules/basalt-mantine.md +25 -10
- package/agent/rules/basalt-router.md +79 -15
- package/agent/rules/basalt-state.md +21 -3
- package/agent/rules/basalt-tokens.md +132 -6
- package/agent/skills/basalt-app/SKILL.md +45 -6
- package/agent/skills/basalt-charts/SKILL.md +5 -3
- package/agent/templates/CLAUDE-block.md.tpl +11 -5
- package/configs/check.yml +11 -4
- package/configs/lefthook.yml +59 -7
- package/configs/oxlint-plugin.js +633 -30
- package/configs/oxlint-plugin.test.ts +594 -15
- package/configs/oxlint.json +10 -1
- package/dist/agent/stick-to-bottom.js +1 -1
- package/dist/agent-chat/thread-detail-panel.js +1 -1
- package/dist/agent-chat/thread-message.js +2 -2
- package/dist/agent-chat/tool-chip.js +1 -1
- package/dist/charts/kinds/Bars.d.ts +1 -1
- package/dist/charts/kinds/Bars.d.ts.map +1 -1
- package/dist/charts/kinds/Donut.d.ts +1 -1
- package/dist/charts/kinds/Donut.d.ts.map +1 -1
- package/dist/charts/kinds/Donut.js +1 -1
- package/dist/charts/kinds/DualPanel.d.ts +1 -1
- package/dist/charts/kinds/DualPanel.d.ts.map +1 -1
- package/dist/charts/kinds/Heatmap.d.ts +1 -1
- package/dist/charts/kinds/Heatmap.d.ts.map +1 -1
- package/dist/charts/kinds/MultiLine.d.ts +1 -1
- package/dist/charts/kinds/MultiLine.d.ts.map +1 -1
- package/dist/charts/kinds/StackedArea.d.ts +1 -1
- package/dist/charts/kinds/StackedArea.d.ts.map +1 -1
- package/dist/charts/kinds/ZonedLine.d.ts +1 -1
- package/dist/charts/kinds/ZonedLine.d.ts.map +1 -1
- package/dist/charts/primitives/ChartLegend.js +2 -2
- package/dist/charts/primitives/ChartTooltip.js +1 -1
- package/dist/cli/index.d.ts +146 -20
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +901 -101
- package/dist/cli/toolchain-wiring.test.d.ts +2 -0
- package/dist/cli/toolchain-wiring.test.d.ts.map +1 -0
- package/dist/cli/waiver-audit.test.d.ts +2 -0
- package/dist/cli/waiver-audit.test.d.ts.map +1 -0
- package/dist/dashboard/delta-badge.js +2 -2
- package/dist/dashboard/stat-card.js +1 -1
- package/dist/data/virtual-list.js +5 -5
- package/dist/guard/index.d.ts +101 -2
- package/dist/guard/index.d.ts.map +1 -1
- package/dist/guard/index.js +474 -62
- package/dist/guard/types.d.ts +25 -5
- package/dist/guard/types.d.ts.map +1 -1
- package/dist/register.d.ts +25 -0
- package/dist/register.d.ts.map +1 -1
- package/dist/router-tanstack/multi-search-param-store.d.ts +13 -0
- package/dist/router-tanstack/multi-search-param-store.d.ts.map +1 -1
- package/dist/router-tanstack/multi-search-param-store.js +4 -1
- package/dist/router-tanstack/search-param-store.d.ts +29 -5
- package/dist/router-tanstack/search-param-store.d.ts.map +1 -1
- package/dist/router-tanstack/search-param-store.js +31 -3
- package/dist/router-tanstack/search-param-store.test.d.ts +2 -0
- package/dist/router-tanstack/search-param-store.test.d.ts.map +1 -0
- package/dist/shell/app-mobile-nav.module.css +11 -3
- package/dist/shell/index.d.ts +12 -5
- package/dist/shell/index.d.ts.map +1 -1
- package/dist/shell/index.js +24 -6
- package/dist/surfaces.d.ts +1 -1
- package/dist/surfaces.js +1 -1
- package/dist/tokens/index.d.ts +5 -3
- package/dist/tokens/index.d.ts.map +1 -1
- package/dist/tokens/index.js +7 -1
- package/dist/tokens/palette.d.ts +35 -27
- package/dist/tokens/palette.d.ts.map +1 -1
- package/dist/tokens/palette.js +24 -18
- package/dist/tokens/text-scale.test.d.ts +2 -0
- package/dist/tokens/text-scale.test.d.ts.map +1 -0
- package/dist/tokens.css +21 -17
- package/dist/vite-color-mix.js +2 -2
- package/dist/vite.d.ts +24 -2
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +54 -13
- package/llms.txt +3 -3
- package/package.json +4 -3
- package/src/agent/stick-to-bottom.tsx +1 -1
- package/src/agent-chat/thread-detail-panel.tsx +1 -1
- package/src/agent-chat/thread-message.tsx +3 -3
- package/src/agent-chat/tool-chip.tsx +1 -1
- package/src/charts/kinds/Bars.tsx +1 -1
- package/src/charts/kinds/Donut.tsx +3 -2
- package/src/charts/kinds/DualPanel.tsx +2 -2
- package/src/charts/kinds/Heatmap.tsx +1 -1
- package/src/charts/kinds/MultiLine.tsx +1 -1
- package/src/charts/kinds/StackedArea.tsx +1 -1
- package/src/charts/kinds/ZonedLine.tsx +1 -1
- package/src/charts/primitives/ChartLegend.tsx +2 -2
- package/src/charts/primitives/ChartTooltip.tsx +1 -1
- package/src/cli/index.ts +1614 -164
- package/src/cli/init-sync.test.ts +21 -3
- package/src/cli/template-ledger.test.ts +1 -1
- package/src/cli/tokens-css.test.ts +27 -14
- package/src/cli/toolchain-wiring.test.ts +856 -0
- package/src/cli/waiver-audit.test.ts +131 -0
- package/src/dashboard/delta-badge.tsx +3 -3
- package/src/dashboard/stat-card.tsx +1 -1
- package/src/data/virtual-list.tsx +8 -8
- package/src/guard/check-source.test.ts +1104 -12
- package/src/guard/index.ts +1106 -103
- package/src/guard/types.ts +29 -4
- package/src/register.ts +32 -0
- package/src/router-tanstack/multi-search-param-store.ts +16 -1
- package/src/router-tanstack/search-param-store.test.ts +135 -0
- package/src/router-tanstack/search-param-store.ts +90 -8
- package/src/shell/app-mobile-nav.module.css +11 -3
- package/src/shell/app-mobile-nav.tsx +1 -1
- package/src/shell/index.test.tsx +52 -0
- package/src/shell/index.tsx +64 -13
- package/src/surfaces.ts +1 -1
- package/src/theme/density-relations.test.ts +8 -5
- package/src/theme/spacing.test.ts +2 -0
- package/src/theme-toggle/index.tsx +2 -2
- package/src/tokens/index.ts +28 -3
- package/src/tokens/palette.ts +24 -18
- package/src/tokens/text-scale.test.ts +51 -0
- package/src/vite-color-mix.ts +2 -2
- package/src/vite.test.ts +125 -6
- package/src/vite.ts +148 -20
package/dist/tokens/palette.d.ts
CHANGED
|
@@ -77,12 +77,12 @@ export declare const p: (fam: readonly string[], light?: number, dark?: number)
|
|
|
77
77
|
*/
|
|
78
78
|
export declare const SHADOW: {
|
|
79
79
|
readonly card: {
|
|
80
|
-
readonly light: "0 1px 2px rgba(28,25,23,0.05), 0 0 0 1px var(--vx-surface-hairline)";
|
|
81
|
-
readonly dark: "0 1px 3px rgba(0,0,0,0.4), inset 0 0 0 1px color-mix(in srgb, #ffffff 4%, transparent)";
|
|
80
|
+
readonly light: "0 1px 2px rgba(28, 25, 23, 0.05), 0 0 0 1px var(--vx-surface-hairline)";
|
|
81
|
+
readonly dark: "0 1px 3px rgba(0, 0, 0, 0.4), inset 0 0 0 1px color-mix(in srgb, #ffffff 4%, transparent)";
|
|
82
82
|
};
|
|
83
83
|
readonly ctrl: {
|
|
84
|
-
readonly light: "0 1px 2px rgba(28,25,23,0.12)";
|
|
85
|
-
readonly dark: "0 1px 2px rgba(0,0,0,0.35)";
|
|
84
|
+
readonly light: "0 1px 2px rgba(28, 25, 23, 0.12)";
|
|
85
|
+
readonly dark: "0 1px 2px rgba(0, 0, 0, 0.35)";
|
|
86
86
|
};
|
|
87
87
|
/**
|
|
88
88
|
* Interactive-control depth — the ONE value every raised Button/ActionIcon/Input variant shares
|
|
@@ -112,12 +112,12 @@ export declare const SHADOW: {
|
|
|
112
112
|
* ever needs more, raise the DROP. Do not reintroduce an edge; both shapes have been tried.
|
|
113
113
|
*/
|
|
114
114
|
readonly raised: {
|
|
115
|
-
readonly light: "0 1px 2px rgba(28,25,23,0.
|
|
116
|
-
readonly dark: "0 1px 2px rgba(0,0,0,0.35), inset 0 0 0 1px color-mix(in srgb, #ffffff 8%, transparent)";
|
|
115
|
+
readonly light: "0 1px 2px rgba(28, 25, 23, 0.1)";
|
|
116
|
+
readonly dark: "0 1px 2px rgba(0, 0, 0, 0.35), inset 0 0 0 1px color-mix(in srgb, #ffffff 8%, transparent)";
|
|
117
117
|
};
|
|
118
118
|
readonly overlay: {
|
|
119
|
-
readonly light: "0 8px 24px rgba(28,25,23,0.
|
|
120
|
-
readonly dark: "0 8px 24px rgba(0,0,0,0.5)";
|
|
119
|
+
readonly light: "0 8px 24px rgba(28, 25, 23, 0.1)";
|
|
120
|
+
readonly dark: "0 8px 24px rgba(0, 0, 0, 0.5)";
|
|
121
121
|
};
|
|
122
122
|
};
|
|
123
123
|
/**
|
|
@@ -499,8 +499,14 @@ declare const SPACE_STEP_BASE: {
|
|
|
499
499
|
* `env(safe-area-inset-bottom)` to it. JS-consumed (AppShell `footer.height`), no `--vx-*` var,
|
|
500
500
|
* same shape as `appShellHeaderHeight`. Floored at 48px in `deriveSpacing`. */
|
|
501
501
|
readonly mobileNavBarHeight: 56;
|
|
502
|
-
/** Slot icon box.
|
|
502
|
+
/** Slot icon box. Also the MIN box of the icon slot itself, so the active pill keeps its shape
|
|
503
|
+
* when a destination ships no icon (an icon-less consumer is a supported configuration). */
|
|
503
504
|
readonly mobileNavIconSize: 24;
|
|
505
|
+
/** Active-pill inset around the slot icon, vertical. Sub-scale on its own, but it is one half of
|
|
506
|
+
* a pair with `mobileNavTabInsetX` — a step keeps the pill's shape tracking density. */
|
|
507
|
+
readonly mobileNavTabInsetY: 2;
|
|
508
|
+
/** Active-pill inset around the slot icon, horizontal. */
|
|
509
|
+
readonly mobileNavTabInsetX: 12;
|
|
504
510
|
/** Menu/sheet row height. Floored at 44px in `deriveSpacing` (Apple HIG 44pt / WCAG 2.5.5 AAA). */
|
|
505
511
|
readonly mobileNavRowHeight: 44;
|
|
506
512
|
/** More/group `<Menu width={…}>`. JS-consumed, no var — same rationale as
|
|
@@ -883,6 +889,8 @@ export declare const SPACE_STEP: {
|
|
|
883
889
|
readonly mobileNavTabGap: number;
|
|
884
890
|
readonly mobileNavBarHeight: number;
|
|
885
891
|
readonly mobileNavIconSize: number;
|
|
892
|
+
readonly mobileNavTabInsetY: number;
|
|
893
|
+
readonly mobileNavTabInsetX: number;
|
|
886
894
|
readonly mobileNavRowHeight: number;
|
|
887
895
|
readonly mobileNavMenuWidth: number;
|
|
888
896
|
readonly chartLegendGap: number;
|
|
@@ -971,19 +979,19 @@ declare function buildPaletteDataUncached(config: DeriveConfig): {
|
|
|
971
979
|
};
|
|
972
980
|
readonly axis: {
|
|
973
981
|
readonly light: string;
|
|
974
|
-
readonly dark: "rgba(255,255,255,0.6)";
|
|
982
|
+
readonly dark: "rgba(255, 255, 255, 0.6)";
|
|
975
983
|
};
|
|
976
984
|
readonly axisStroke: {
|
|
977
985
|
readonly light: string;
|
|
978
|
-
readonly dark: "rgba(255,255,255,0.12)";
|
|
986
|
+
readonly dark: "rgba(255, 255, 255, 0.12)";
|
|
979
987
|
};
|
|
980
988
|
readonly grid: {
|
|
981
989
|
readonly light: string;
|
|
982
|
-
readonly dark: "rgba(255,255,255,0.06)";
|
|
990
|
+
readonly dark: "rgba(255, 255, 255, 0.06)";
|
|
983
991
|
};
|
|
984
992
|
readonly crosshair: {
|
|
985
993
|
readonly light: string;
|
|
986
|
-
readonly dark: "rgba(255,255,255,0.42)";
|
|
994
|
+
readonly dark: "rgba(255, 255, 255, 0.42)";
|
|
987
995
|
};
|
|
988
996
|
readonly dotStroke: {
|
|
989
997
|
readonly light: "#ffffff";
|
|
@@ -991,15 +999,15 @@ declare function buildPaletteDataUncached(config: DeriveConfig): {
|
|
|
991
999
|
};
|
|
992
1000
|
readonly tooltipBg: {
|
|
993
1001
|
readonly light: "#ffffff";
|
|
994
|
-
readonly dark: "rgba(39,39,42,0.96)";
|
|
1002
|
+
readonly dark: "rgba(39, 39, 42, 0.96)";
|
|
995
1003
|
};
|
|
996
1004
|
readonly tooltipText: {
|
|
997
1005
|
readonly light: string;
|
|
998
|
-
readonly dark: "rgba(255,255,255,0.88)";
|
|
1006
|
+
readonly dark: "rgba(255, 255, 255, 0.88)";
|
|
999
1007
|
};
|
|
1000
1008
|
readonly tooltipMuted: {
|
|
1001
1009
|
readonly light: string;
|
|
1002
|
-
readonly dark: "rgba(255,255,255,0.5)";
|
|
1010
|
+
readonly dark: "rgba(255, 255, 255, 0.5)";
|
|
1003
1011
|
};
|
|
1004
1012
|
readonly tooltipBorder: {
|
|
1005
1013
|
readonly light: "1px solid #e4e4e7";
|
|
@@ -1007,11 +1015,11 @@ declare function buildPaletteDataUncached(config: DeriveConfig): {
|
|
|
1007
1015
|
};
|
|
1008
1016
|
readonly tooltipShadow: {
|
|
1009
1017
|
readonly light: `0 2px 8px ${string}`;
|
|
1010
|
-
readonly dark: "0 2px 8px rgba(0,0,0,0.35)";
|
|
1018
|
+
readonly dark: "0 2px 8px rgba(0, 0, 0, 0.35)";
|
|
1011
1019
|
};
|
|
1012
1020
|
readonly legendText: {
|
|
1013
1021
|
readonly light: string;
|
|
1014
|
-
readonly dark: "rgba(255,255,255,0.92)";
|
|
1022
|
+
readonly dark: "rgba(255, 255, 255, 0.92)";
|
|
1015
1023
|
};
|
|
1016
1024
|
readonly neutral: ColorPair;
|
|
1017
1025
|
};
|
|
@@ -1072,19 +1080,19 @@ export declare const NEUTRAL: {
|
|
|
1072
1080
|
};
|
|
1073
1081
|
readonly axis: {
|
|
1074
1082
|
readonly light: string;
|
|
1075
|
-
readonly dark: "rgba(255,255,255,0.6)";
|
|
1083
|
+
readonly dark: "rgba(255, 255, 255, 0.6)";
|
|
1076
1084
|
};
|
|
1077
1085
|
readonly axisStroke: {
|
|
1078
1086
|
readonly light: string;
|
|
1079
|
-
readonly dark: "rgba(255,255,255,0.12)";
|
|
1087
|
+
readonly dark: "rgba(255, 255, 255, 0.12)";
|
|
1080
1088
|
};
|
|
1081
1089
|
readonly grid: {
|
|
1082
1090
|
readonly light: string;
|
|
1083
|
-
readonly dark: "rgba(255,255,255,0.06)";
|
|
1091
|
+
readonly dark: "rgba(255, 255, 255, 0.06)";
|
|
1084
1092
|
};
|
|
1085
1093
|
readonly crosshair: {
|
|
1086
1094
|
readonly light: string;
|
|
1087
|
-
readonly dark: "rgba(255,255,255,0.42)";
|
|
1095
|
+
readonly dark: "rgba(255, 255, 255, 0.42)";
|
|
1088
1096
|
};
|
|
1089
1097
|
readonly dotStroke: {
|
|
1090
1098
|
readonly light: "#ffffff";
|
|
@@ -1092,15 +1100,15 @@ export declare const NEUTRAL: {
|
|
|
1092
1100
|
};
|
|
1093
1101
|
readonly tooltipBg: {
|
|
1094
1102
|
readonly light: "#ffffff";
|
|
1095
|
-
readonly dark: "rgba(39,39,42,0.96)";
|
|
1103
|
+
readonly dark: "rgba(39, 39, 42, 0.96)";
|
|
1096
1104
|
};
|
|
1097
1105
|
readonly tooltipText: {
|
|
1098
1106
|
readonly light: string;
|
|
1099
|
-
readonly dark: "rgba(255,255,255,0.88)";
|
|
1107
|
+
readonly dark: "rgba(255, 255, 255, 0.88)";
|
|
1100
1108
|
};
|
|
1101
1109
|
readonly tooltipMuted: {
|
|
1102
1110
|
readonly light: string;
|
|
1103
|
-
readonly dark: "rgba(255,255,255,0.5)";
|
|
1111
|
+
readonly dark: "rgba(255, 255, 255, 0.5)";
|
|
1104
1112
|
};
|
|
1105
1113
|
readonly tooltipBorder: {
|
|
1106
1114
|
readonly light: "1px solid #e4e4e7";
|
|
@@ -1108,11 +1116,11 @@ export declare const NEUTRAL: {
|
|
|
1108
1116
|
};
|
|
1109
1117
|
readonly tooltipShadow: {
|
|
1110
1118
|
readonly light: `0 2px 8px ${string}`;
|
|
1111
|
-
readonly dark: "0 2px 8px rgba(0,0,0,0.35)";
|
|
1119
|
+
readonly dark: "0 2px 8px rgba(0, 0, 0, 0.35)";
|
|
1112
1120
|
};
|
|
1113
1121
|
readonly legendText: {
|
|
1114
1122
|
readonly light: string;
|
|
1115
|
-
readonly dark: "rgba(255,255,255,0.92)";
|
|
1123
|
+
readonly dark: "rgba(255, 255, 255, 0.92)";
|
|
1116
1124
|
};
|
|
1117
1125
|
readonly neutral: ColorPair;
|
|
1118
1126
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"palette.d.ts","sourceRoot":"","sources":["../../src/tokens/palette.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"palette.d.ts","sourceRoot":"","sources":["../../src/tokens/palette.ts"],"names":[],"mappings":"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"}
|
package/dist/tokens/palette.js
CHANGED
|
@@ -37,12 +37,12 @@ const p = (fam, light = 2, dark = 3) => ({
|
|
|
37
37
|
});
|
|
38
38
|
const SHADOW = {
|
|
39
39
|
card: {
|
|
40
|
-
light: "0 1px 2px rgba(28,25,23,0.05), 0 0 0 1px var(--vx-surface-hairline)",
|
|
41
|
-
dark: "0 1px 3px rgba(0,0,0,0.4), inset 0 0 0 1px color-mix(in srgb, #ffffff 4%, transparent)"
|
|
40
|
+
light: "0 1px 2px rgba(28, 25, 23, 0.05), 0 0 0 1px var(--vx-surface-hairline)",
|
|
41
|
+
dark: "0 1px 3px rgba(0, 0, 0, 0.4), inset 0 0 0 1px color-mix(in srgb, #ffffff 4%, transparent)"
|
|
42
42
|
},
|
|
43
43
|
ctrl: {
|
|
44
|
-
light: "0 1px 2px rgba(28,25,23,0.12)",
|
|
45
|
-
dark: "0 1px 2px rgba(0,0,0,0.35)"
|
|
44
|
+
light: "0 1px 2px rgba(28, 25, 23, 0.12)",
|
|
45
|
+
dark: "0 1px 2px rgba(0, 0, 0, 0.35)"
|
|
46
46
|
},
|
|
47
47
|
/**
|
|
48
48
|
* Interactive-control depth — the ONE value every raised Button/ActionIcon/Input variant shares
|
|
@@ -72,16 +72,16 @@ const SHADOW = {
|
|
|
72
72
|
* ever needs more, raise the DROP. Do not reintroduce an edge; both shapes have been tried.
|
|
73
73
|
*/
|
|
74
74
|
raised: {
|
|
75
|
-
light: "0 1px 2px rgba(28,25,23,0.
|
|
76
|
-
dark: "0 1px 2px rgba(0,0,0,0.35), inset 0 0 0 1px color-mix(in srgb, #ffffff 8%, transparent)"
|
|
75
|
+
light: "0 1px 2px rgba(28, 25, 23, 0.1)",
|
|
76
|
+
dark: "0 1px 2px rgba(0, 0, 0, 0.35), inset 0 0 0 1px color-mix(in srgb, #ffffff 8%, transparent)"
|
|
77
77
|
},
|
|
78
78
|
// Floating-layer elevation (menus, popovers, tooltips, modals, drawers) — a REAL drop shadow, a
|
|
79
79
|
// step above `card`, so detached surfaces read as lifted off the page (`docs/DESIGN-SPEC.md` §5).
|
|
80
80
|
// Unlike `card`, no embedded ring: floating surfaces carry a real 1px `--vx-surface-border` so
|
|
81
81
|
// Mantine's rotated-square arrow inherits a proper edge.
|
|
82
82
|
overlay: {
|
|
83
|
-
light: "0 8px 24px rgba(28,25,23,0.
|
|
84
|
-
dark: "0 8px 24px rgba(0,0,0,0.5)"
|
|
83
|
+
light: "0 8px 24px rgba(28, 25, 23, 0.1)",
|
|
84
|
+
dark: "0 8px 24px rgba(0, 0, 0, 0.5)"
|
|
85
85
|
}
|
|
86
86
|
};
|
|
87
87
|
function clampRadius(n) {
|
|
@@ -414,8 +414,14 @@ const SPACE_STEP_BASE = {
|
|
|
414
414
|
* `env(safe-area-inset-bottom)` to it. JS-consumed (AppShell `footer.height`), no `--vx-*` var,
|
|
415
415
|
* same shape as `appShellHeaderHeight`. Floored at 48px in `deriveSpacing`. */
|
|
416
416
|
mobileNavBarHeight: 56,
|
|
417
|
-
/** Slot icon box.
|
|
417
|
+
/** Slot icon box. Also the MIN box of the icon slot itself, so the active pill keeps its shape
|
|
418
|
+
* when a destination ships no icon (an icon-less consumer is a supported configuration). */
|
|
418
419
|
mobileNavIconSize: 24,
|
|
420
|
+
/** Active-pill inset around the slot icon, vertical. Sub-scale on its own, but it is one half of
|
|
421
|
+
* a pair with `mobileNavTabInsetX` — a step keeps the pill's shape tracking density. */
|
|
422
|
+
mobileNavTabInsetY: 2,
|
|
423
|
+
/** Active-pill inset around the slot icon, horizontal. */
|
|
424
|
+
mobileNavTabInsetX: 12,
|
|
419
425
|
/** Menu/sheet row height. Floored at 44px in `deriveSpacing` (Apple HIG 44pt / WCAG 2.5.5 AAA). */
|
|
420
426
|
mobileNavRowHeight: 44,
|
|
421
427
|
/** More/group `<Menu width={…}>`. JS-consumed, no var — same rationale as
|
|
@@ -582,23 +588,23 @@ function buildPaletteDataUncached(config) {
|
|
|
582
588
|
// primary line
|
|
583
589
|
line2: { light: BP.gray[1], dark: BP.gray[2] },
|
|
584
590
|
// secondary line
|
|
585
|
-
axis: { light: inkRgba(inkLight, 0.6), dark: "rgba(255,255,255,0.6)" },
|
|
586
|
-
axisStroke: { light: inkRgba(inkLight, 0.12), dark: "rgba(255,255,255,0.12)" },
|
|
587
|
-
grid: { light: inkRgba(inkLight, 0.07), dark: "rgba(255,255,255,0.06)" },
|
|
588
|
-
crosshair: { light: inkRgba(inkLight, 0.32), dark: "rgba(255,255,255,0.42)" },
|
|
591
|
+
axis: { light: inkRgba(inkLight, 0.6), dark: "rgba(255, 255, 255, 0.6)" },
|
|
592
|
+
axisStroke: { light: inkRgba(inkLight, 0.12), dark: "rgba(255, 255, 255, 0.12)" },
|
|
593
|
+
grid: { light: inkRgba(inkLight, 0.07), dark: "rgba(255, 255, 255, 0.06)" },
|
|
594
|
+
crosshair: { light: inkRgba(inkLight, 0.32), dark: "rgba(255, 255, 255, 0.42)" },
|
|
589
595
|
dotStroke: { light: BP.white, dark: BP.darkGray[1] },
|
|
590
596
|
// matches chart-area bg
|
|
591
|
-
tooltipBg: { light: BP.white, dark: "rgba(39,39,42,0.96)" },
|
|
592
|
-
tooltipText: { light: inkRgba(inkLight, 0.88), dark: "rgba(255,255,255,0.88)" },
|
|
593
|
-
tooltipMuted: { light: inkRgba(inkLight, 0.5), dark: "rgba(255,255,255,0.5)" },
|
|
597
|
+
tooltipBg: { light: BP.white, dark: "rgba(39, 39, 42, 0.96)" },
|
|
598
|
+
tooltipText: { light: inkRgba(inkLight, 0.88), dark: "rgba(255, 255, 255, 0.88)" },
|
|
599
|
+
tooltipMuted: { light: inkRgba(inkLight, 0.5), dark: "rgba(255, 255, 255, 0.5)" },
|
|
594
600
|
tooltipBorder: { light: `1px solid ${BP.lightGray[1]}`, dark: "none" },
|
|
595
601
|
tooltipShadow: {
|
|
596
602
|
light: `0 2px 8px ${inkRgba(inkLight, 0.1)}`,
|
|
597
|
-
dark: "0 2px 8px rgba(0,0,0,0.35)"
|
|
603
|
+
dark: "0 2px 8px rgba(0, 0, 0, 0.35)"
|
|
598
604
|
},
|
|
599
605
|
// Chart legend text — same DERIVED-ink treatment as axis/grid/tooltip* above (light keys off
|
|
600
606
|
// `inkLight`; dark stays flat white like every other neutral chart-chrome pair here).
|
|
601
|
-
legendText: { light: inkRgba(inkLight, 0.82), dark: "rgba(255,255,255,0.92)" },
|
|
607
|
+
legendText: { light: inkRgba(inkLight, 0.82), dark: "rgba(255, 255, 255, 0.92)" },
|
|
602
608
|
// Base neutral for hairlines / muted / DIMMED text / overlays — apply opacity via alpha().
|
|
603
609
|
// Binds to --mantine-color-dimmed, so it is THE dimmed-text lever. Equal to `INK.muted` (the
|
|
604
610
|
// spec's "muted (secondary text)" row) — kept as its own pair for the pre-existing `--vx-neutral`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-scale.test.d.ts","sourceRoot":"","sources":["../../src/tokens/text-scale.test.ts"],"names":[],"mappings":""}
|
package/dist/tokens.css
CHANGED
|
@@ -96,6 +96,8 @@
|
|
|
96
96
|
--vx-space-app-header-mobile-actions-height: 52px;
|
|
97
97
|
--vx-space-mobile-nav-tab-gap: 3px;
|
|
98
98
|
--vx-space-mobile-nav-icon-size: 24px;
|
|
99
|
+
--vx-space-mobile-nav-tab-inset-y: 2px;
|
|
100
|
+
--vx-space-mobile-nav-tab-inset-x: 12px;
|
|
99
101
|
--vx-space-mobile-nav-row-height: 44px;
|
|
100
102
|
--vx-space-agent-rail-inset-x: 10px;
|
|
101
103
|
--vx-space-agent-part-gap-top: 6px;
|
|
@@ -136,6 +138,7 @@
|
|
|
136
138
|
--vx-fill-hover-lime: color-mix(in srgb, var(--vx-fill-lime) 88%, #000);
|
|
137
139
|
--vx-fill-hover-yellow: color-mix(in srgb, var(--vx-fill-yellow) 88%, #000);
|
|
138
140
|
--vx-fill-hover-orange: color-mix(in srgb, var(--vx-fill-orange) 88%, #000);
|
|
141
|
+
--vx-text-nano: 10px;
|
|
139
142
|
--vx-text-micro: 11px;
|
|
140
143
|
--vx-text-xs: 12.5px;
|
|
141
144
|
--vx-text-sm: 13.5px;
|
|
@@ -145,6 +148,7 @@
|
|
|
145
148
|
--vx-text-h2: 21px;
|
|
146
149
|
--vx-text-kpi: 24px;
|
|
147
150
|
--vx-text-h1: 26px;
|
|
151
|
+
--vx-text-display: 30px;
|
|
148
152
|
--vx-area-top: 22%;
|
|
149
153
|
--vx-area-bottom: 1%;
|
|
150
154
|
--vx-good: color-mix(in srgb, var(--vx-good-solid) 18%, transparent);
|
|
@@ -185,17 +189,17 @@ html[data-mantine-color-scheme='dark'] {
|
|
|
185
189
|
--vx-neutral: #d4d4d8;
|
|
186
190
|
--vx-line: #e4e4e7;
|
|
187
191
|
--vx-line2: #a1a1aa;
|
|
188
|
-
--vx-axis: rgba(255,255,255,0.6);
|
|
189
|
-
--vx-axis-stroke: rgba(255,255,255,0.12);
|
|
190
|
-
--vx-grid: rgba(255,255,255,0.06);
|
|
191
|
-
--vx-crosshair: rgba(255,255,255,0.42);
|
|
192
|
+
--vx-axis: rgba(255, 255, 255, 0.6);
|
|
193
|
+
--vx-axis-stroke: rgba(255, 255, 255, 0.12);
|
|
194
|
+
--vx-grid: rgba(255, 255, 255, 0.06);
|
|
195
|
+
--vx-crosshair: rgba(255, 255, 255, 0.42);
|
|
192
196
|
--vx-dot-stroke: #27272a;
|
|
193
|
-
--vx-tooltip-bg: rgba(39,39,42,0.96);
|
|
194
|
-
--vx-tooltip-text: rgba(255,255,255,0.88);
|
|
195
|
-
--vx-tooltip-muted: rgba(255,255,255,0.5);
|
|
197
|
+
--vx-tooltip-bg: rgba(39, 39, 42, 0.96);
|
|
198
|
+
--vx-tooltip-text: rgba(255, 255, 255, 0.88);
|
|
199
|
+
--vx-tooltip-muted: rgba(255, 255, 255, 0.5);
|
|
196
200
|
--vx-tooltip-border: none;
|
|
197
|
-
--vx-tooltip-shadow: 0 2px 8px rgba(0,0,0,0.35);
|
|
198
|
-
--vx-legend-text: rgba(255,255,255,0.92);
|
|
201
|
+
--vx-tooltip-shadow: 0 2px 8px rgba(0, 0, 0, 0.35);
|
|
202
|
+
--vx-legend-text: rgba(255, 255, 255, 0.92);
|
|
199
203
|
--vx-ink: #e5e5e9;
|
|
200
204
|
--vx-ink2: #dddde1;
|
|
201
205
|
--vx-muted: #d4d4d8;
|
|
@@ -206,10 +210,10 @@ html[data-mantine-color-scheme='dark'] {
|
|
|
206
210
|
--vx-accent-fill-hover: #3c6895;
|
|
207
211
|
--vx-on-accent: #ffffff;
|
|
208
212
|
--vx-divider: color-mix(in srgb, #ffffff 6%, transparent);
|
|
209
|
-
--vx-shadow-card: 0 1px 3px rgba(0,0,0,0.4), inset 0 0 0 1px color-mix(in srgb, #ffffff 4%, transparent);
|
|
210
|
-
--vx-shadow-ctrl: 0 1px 2px rgba(0,0,0,0.35);
|
|
211
|
-
--vx-shadow-raised: 0 1px 2px rgba(0,0,0,0.35), inset 0 0 0 1px color-mix(in srgb, #ffffff 8%, transparent);
|
|
212
|
-
--vx-shadow-overlay: 0 8px 24px rgba(0,0,0,0.5);
|
|
213
|
+
--vx-shadow-card: 0 1px 3px rgba(0, 0, 0, 0.4), inset 0 0 0 1px color-mix(in srgb, #ffffff 4%, transparent);
|
|
214
|
+
--vx-shadow-ctrl: 0 1px 2px rgba(0, 0, 0, 0.35);
|
|
215
|
+
--vx-shadow-raised: 0 1px 2px rgba(0, 0, 0, 0.35), inset 0 0 0 1px color-mix(in srgb, #ffffff 8%, transparent);
|
|
216
|
+
--vx-shadow-overlay: 0 8px 24px rgba(0, 0, 0, 0.5);
|
|
213
217
|
--vx-surface-bg: #27272a;
|
|
214
218
|
--vx-surface-panel: #2b2b2e;
|
|
215
219
|
--vx-surface-panel-hover: #38383b;
|
|
@@ -270,10 +274,10 @@ html[data-mantine-color-scheme='light'] {
|
|
|
270
274
|
--vx-accent-fill-hover: #3c6895;
|
|
271
275
|
--vx-on-accent: #ffffff;
|
|
272
276
|
--vx-divider: color-mix(in srgb, #e5e5e5 65%, transparent);
|
|
273
|
-
--vx-shadow-card: 0 1px 2px rgba(28,25,23,0.05), 0 0 0 1px var(--vx-surface-hairline);
|
|
274
|
-
--vx-shadow-ctrl: 0 1px 2px rgba(28,25,23,0.12);
|
|
275
|
-
--vx-shadow-raised: 0 1px 2px rgba(28,25,23,0.
|
|
276
|
-
--vx-shadow-overlay: 0 8px 24px rgba(28,25,23,0.
|
|
277
|
+
--vx-shadow-card: 0 1px 2px rgba(28, 25, 23, 0.05), 0 0 0 1px var(--vx-surface-hairline);
|
|
278
|
+
--vx-shadow-ctrl: 0 1px 2px rgba(28, 25, 23, 0.12);
|
|
279
|
+
--vx-shadow-raised: 0 1px 2px rgba(28, 25, 23, 0.1);
|
|
280
|
+
--vx-shadow-overlay: 0 8px 24px rgba(28, 25, 23, 0.1);
|
|
277
281
|
--vx-surface-bg: #f2f2f5;
|
|
278
282
|
--vx-surface-panel: #fafafd;
|
|
279
283
|
--vx-surface-panel-hover: #ffffff;
|
package/dist/vite-color-mix.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
const NAMED_COLORS = {
|
|
2
2
|
white: "#ffffff",
|
|
3
|
-
// theme-allow — CSS keyword definition, not a design color
|
|
3
|
+
// theme-allow raw-hex — the CSS keyword's definition, not a design color
|
|
4
4
|
black: "#000000"
|
|
5
|
-
// theme-allow — CSS keyword definition, not a design color
|
|
5
|
+
// theme-allow raw-hex — the CSS keyword's definition, not a design color
|
|
6
6
|
};
|
|
7
7
|
function normalizeHex(hex) {
|
|
8
8
|
const body = hex.slice(1);
|
package/dist/vite.d.ts
CHANGED
|
@@ -49,7 +49,21 @@ export type BasaltAppOptions = {
|
|
|
49
49
|
light: string;
|
|
50
50
|
dark: string;
|
|
51
51
|
};
|
|
52
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* Which scheme the anti-FOUC `<style>` paints before the app boots. Default `'dark'` —
|
|
54
|
+
* `BasaltProvider`'s own default. `'light'` paints the light surface, `'auto'` declares
|
|
55
|
+
* `color-scheme: light dark` and picks the background off `prefers-color-scheme`, and `false`
|
|
56
|
+
* paints the background but declares no `color-scheme` at all (leave native controls to Mantine).
|
|
57
|
+
*
|
|
58
|
+
* Set this to whatever the app passes as `defaultColorScheme` — a mismatch is a visible flash of
|
|
59
|
+
* the wrong surface, not a correctness bug: the boot rule stops applying the moment Mantine
|
|
60
|
+
* writes `data-mantine-color-scheme` on `<html>` (see `BOOT_SCOPE`).
|
|
61
|
+
*/
|
|
62
|
+
colorScheme?: 'dark' | 'light' | 'auto' | false;
|
|
63
|
+
/**
|
|
64
|
+
* Manifest `background_color` + anti-FOUC paint color. Default: the theme color matching
|
|
65
|
+
* `colorScheme` (the dark one for `'dark'` / `'auto'` / `false`, the light one for `'light'`).
|
|
66
|
+
*/
|
|
53
67
|
backgroundColor?: string;
|
|
54
68
|
/** Manifest `display` mode. Default: `'standalone'`. */
|
|
55
69
|
display?: 'standalone' | 'minimal-ui' | 'fullscreen' | 'browser';
|
|
@@ -104,13 +118,21 @@ export type BasaltAppOptions = {
|
|
|
104
118
|
* manifest `theme_color` both need a FLAT color, so the flattening step is the contract this
|
|
105
119
|
* plugin owes its output regardless of which shape the palette hands it.
|
|
106
120
|
*
|
|
121
|
+
* Two behaviours worth knowing before adopting it, both of which the plugin owns because the
|
|
122
|
+
* consumer cannot reach them:
|
|
123
|
+
* • It HOISTS the shell's `<meta charset>` ahead of everything it injects, so the encoding
|
|
124
|
+
* declaration stays inside the spec's first 1024 bytes (see `hoistCharset`).
|
|
125
|
+
* • The anti-FOUC `<style>` expires the moment Mantine resolves the real scheme, and `colorScheme`
|
|
126
|
+
* selects which surface it paints until then (see `BOOT_SCOPE` / `buildBootStyle`).
|
|
127
|
+
*
|
|
107
128
|
* @example
|
|
108
129
|
* // vite.config.ts
|
|
109
130
|
* import { basaltAppPlugin, basaltViteConfig } from 'basalt-ui/vite'
|
|
110
131
|
*
|
|
111
132
|
* export default {
|
|
112
133
|
* ...basaltViteConfig({ port: 5173 }),
|
|
113
|
-
*
|
|
134
|
+
* // colorScheme mirrors <BasaltProvider defaultColorScheme> — omit it for the dark default.
|
|
135
|
+
* plugins: [react(), ...basaltAppPlugin({ name: 'Argo', colorScheme: 'auto' })],
|
|
114
136
|
* }
|
|
115
137
|
*/
|
|
116
138
|
export declare function basaltAppPlugin(options: BasaltAppOptions): PluginOption[];
|
package/dist/vite.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAA6B,YAAY,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAI/E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,4FAA4F;IAC5F,IAAI,EAAE,MAAM,CAAA;IACZ,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACvB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B,CAAA;AA6CD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,GAAG,UAAU,CAgFpE;AAgBD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,gGAAgG;IAChG,IAAI,EAAE,MAAM,CAAA;IACZ,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gGAAgG;IAChG,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACrD,
|
|
1
|
+
{"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAA6B,YAAY,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAI/E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,4FAA4F;IAC5F,IAAI,EAAE,MAAM,CAAA;IACZ,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACvB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B,CAAA;AA6CD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,GAAG,UAAU,CAgFpE;AAgBD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,gGAAgG;IAChG,IAAI,EAAE,MAAM,CAAA;IACZ,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gGAAgG;IAChG,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACrD;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAA;IAC/C;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,wDAAwD;IACxD,OAAO,CAAC,EAAE,YAAY,GAAG,YAAY,GAAG,YAAY,GAAG,SAAS,CAAA;IAChE;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,mGAAmG;IACnG,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,wFAAwF;IACxF,KAAK,CAAC,EAAE,KAAK,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAChC,8FAA8F;IAC9F,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;IAC3B,oFAAoF;IACpF,GAAG,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,SAAS,GAAG,qBAAqB,CAAA;KAAE,CAAA;IACvF,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClD,CAAA;AAigBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,YAAY,EAAE,CAMzE"}
|
package/dist/vite.js
CHANGED
|
@@ -140,6 +140,29 @@ const VIEWPORT_TAG = {
|
|
|
140
140
|
tag: "meta",
|
|
141
141
|
attrs: { name: "viewport", content: "width=device-width, initial-scale=1.0, viewport-fit=cover" }
|
|
142
142
|
};
|
|
143
|
+
const BOOT_SCOPE = "html:not([data-mantine-color-scheme])";
|
|
144
|
+
const BOOT_COLOR_SCHEME = { dark: "dark", light: "light", auto: "light dark" };
|
|
145
|
+
function buildBootStyle(input) {
|
|
146
|
+
const { colorScheme, themeColor, backgroundColor, explicitBackground } = input;
|
|
147
|
+
if (colorScheme === false) return `${BOOT_SCOPE}{background-color:${backgroundColor}}`;
|
|
148
|
+
const scheme = BOOT_COLOR_SCHEME[colorScheme];
|
|
149
|
+
if (colorScheme !== "auto" || explicitBackground) {
|
|
150
|
+
return `${BOOT_SCOPE}{background-color:${backgroundColor};color-scheme:${scheme}}`;
|
|
151
|
+
}
|
|
152
|
+
return `${BOOT_SCOPE}{background-color:${themeColor.light};color-scheme:${scheme}}@media(prefers-color-scheme:dark){${BOOT_SCOPE}{background-color:${themeColor.dark}}}`;
|
|
153
|
+
}
|
|
154
|
+
const CHARSET_META_RE = /[ \t]*<meta\s+charset\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'>=]+))\s*\/?>[ \t]*\r?\n?/i;
|
|
155
|
+
const HTTP_EQUIV_CHARSET_RE = /<meta\s[^>]*http-equiv\s*=\s*["']?content-type["']?[^>]*>/i;
|
|
156
|
+
const DEFAULT_CHARSET = "UTF-8";
|
|
157
|
+
function hoistCharset(html) {
|
|
158
|
+
if (HTTP_EQUIV_CHARSET_RE.test(html)) return { html, tag: void 0 };
|
|
159
|
+
const match = CHARSET_META_RE.exec(html);
|
|
160
|
+
const charset = match?.[1] ?? match?.[2] ?? match?.[3] ?? DEFAULT_CHARSET;
|
|
161
|
+
return {
|
|
162
|
+
html: match ? html.replace(CHARSET_META_RE, "") : html,
|
|
163
|
+
tag: { tag: "meta", attrs: { charset } }
|
|
164
|
+
};
|
|
165
|
+
}
|
|
143
166
|
function buildSeoTags(input) {
|
|
144
167
|
const { name, description, seo } = input;
|
|
145
168
|
const tags = [];
|
|
@@ -183,7 +206,7 @@ function buildStaticTags(input) {
|
|
|
183
206
|
options,
|
|
184
207
|
shortName,
|
|
185
208
|
themeColor,
|
|
186
|
-
|
|
209
|
+
bootStyle,
|
|
187
210
|
iconsEnabled,
|
|
188
211
|
iconsDir,
|
|
189
212
|
darkreader,
|
|
@@ -210,10 +233,7 @@ function buildStaticTags(input) {
|
|
|
210
233
|
}
|
|
211
234
|
}
|
|
212
235
|
);
|
|
213
|
-
tags.push({
|
|
214
|
-
tag: "style",
|
|
215
|
-
children: `html{background-color:${backgroundColor};color-scheme:dark}`
|
|
216
|
-
});
|
|
236
|
+
tags.push({ tag: "style", children: bootStyle });
|
|
217
237
|
if (iconsEnabled) {
|
|
218
238
|
tags.push(
|
|
219
239
|
{
|
|
@@ -274,7 +294,7 @@ function buildManifestJson(input) {
|
|
|
274
294
|
scope,
|
|
275
295
|
id,
|
|
276
296
|
display,
|
|
277
|
-
|
|
297
|
+
schemeColor,
|
|
278
298
|
backgroundColor,
|
|
279
299
|
iconsDir,
|
|
280
300
|
base
|
|
@@ -287,7 +307,9 @@ function buildManifestJson(input) {
|
|
|
287
307
|
start_url: startUrl,
|
|
288
308
|
scope,
|
|
289
309
|
display,
|
|
290
|
-
|
|
310
|
+
// A manifest carries ONE theme color, so it follows the boot scheme rather than the dual
|
|
311
|
+
// `<meta name="theme-color">` pair. Unchanged for the default (`'dark'`) and for `'auto'`.
|
|
312
|
+
theme_color: schemeColor,
|
|
291
313
|
background_color: backgroundColor,
|
|
292
314
|
icons: [
|
|
293
315
|
{
|
|
@@ -313,7 +335,15 @@ function createMainPlugin(options) {
|
|
|
313
335
|
const iconsDir = options.icons === false ? void 0 : options.icons?.dir;
|
|
314
336
|
const manifestEnabled = options.manifest !== false;
|
|
315
337
|
const themeColor = resolveThemeColors(options.themeColor);
|
|
316
|
-
const
|
|
338
|
+
const colorScheme = options.colorScheme ?? "dark";
|
|
339
|
+
const schemeColor = colorScheme === "light" ? themeColor.light : themeColor.dark;
|
|
340
|
+
const backgroundColor = options.backgroundColor ?? schemeColor;
|
|
341
|
+
const bootStyle = buildBootStyle({
|
|
342
|
+
colorScheme,
|
|
343
|
+
themeColor,
|
|
344
|
+
backgroundColor,
|
|
345
|
+
explicitBackground: options.backgroundColor !== void 0
|
|
346
|
+
});
|
|
317
347
|
let manifestJson = "";
|
|
318
348
|
let manifestHref = "/site.webmanifest";
|
|
319
349
|
let staticTags = [];
|
|
@@ -332,7 +362,7 @@ function createMainPlugin(options) {
|
|
|
332
362
|
scope,
|
|
333
363
|
id,
|
|
334
364
|
display,
|
|
335
|
-
|
|
365
|
+
schemeColor,
|
|
336
366
|
backgroundColor,
|
|
337
367
|
iconsDir,
|
|
338
368
|
base
|
|
@@ -341,7 +371,7 @@ function createMainPlugin(options) {
|
|
|
341
371
|
options,
|
|
342
372
|
shortName,
|
|
343
373
|
themeColor,
|
|
344
|
-
|
|
374
|
+
bootStyle,
|
|
345
375
|
iconsEnabled,
|
|
346
376
|
iconsDir,
|
|
347
377
|
darkreader,
|
|
@@ -350,9 +380,20 @@ function createMainPlugin(options) {
|
|
|
350
380
|
manifestHref
|
|
351
381
|
});
|
|
352
382
|
},
|
|
353
|
-
transformIndexHtml
|
|
354
|
-
|
|
355
|
-
|
|
383
|
+
transformIndexHtml: {
|
|
384
|
+
// `pre` so this plugin's tags are the FIRST head-prepend contributions Vite collects — that
|
|
385
|
+
// ordering is what puts the hoisted <meta charset> at the very top of <head> rather than
|
|
386
|
+
// behind another plugin's tags. Vite injects all collected tags after every hook has run.
|
|
387
|
+
order: "pre",
|
|
388
|
+
handler(html) {
|
|
389
|
+
const hoisted = hoistCharset(html);
|
|
390
|
+
const tags = [
|
|
391
|
+
...hoisted.tag ? [hoisted.tag] : [],
|
|
392
|
+
...hasViewportMeta(html) ? [] : [VIEWPORT_TAG],
|
|
393
|
+
...staticTags
|
|
394
|
+
];
|
|
395
|
+
return { html: hoisted.html, tags };
|
|
396
|
+
}
|
|
356
397
|
},
|
|
357
398
|
generateBundle() {
|
|
358
399
|
if (!manifestEnabled) return;
|
package/llms.txt
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# basalt-ui v1.
|
|
1
|
+
# basalt-ui v1.21.0
|
|
2
2
|
# Opinionated framework for Mantine-based React apps — theme, app shell, visx charts, toolchain presets
|
|
3
3
|
#
|
|
4
4
|
# basalt-ui is an opinionated framework for Mantine-based React apps.
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
# ./tokens.css subpath. Guide: docs/FRAMEWORK-FREE.md in the repo.
|
|
20
20
|
|
|
21
21
|
Package: basalt-ui
|
|
22
|
-
Version: 1.
|
|
22
|
+
Version: 1.21.0
|
|
23
23
|
|
|
24
24
|
## basalt-ui
|
|
25
25
|
Import: import { ... } from 'basalt-ui'
|
|
@@ -152,7 +152,7 @@ Layer: non-js-asset
|
|
|
152
152
|
|
|
153
153
|
## basalt-ui/tokens.css
|
|
154
154
|
Asset: basalt-ui/tokens.css
|
|
155
|
-
Description: Prebuilt --vx-* token stylesheet — the default buildPaletteCss() output as a plain file, for a consumer
|
|
155
|
+
Description: Prebuilt --vx-* token stylesheet — the default buildPaletteCss() output as a plain file, for a consumer that has a bundler to resolve the subpath but no React and no Mantine; with no bundler, emit a file you own via `basalt-ui tokens:css`
|
|
156
156
|
Layer: non-js-asset
|
|
157
157
|
|
|
158
158
|
## basalt-ui/configs/*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "basalt-ui",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.21.0",
|
|
4
4
|
"description": "Opinionated framework for Mantine-based React apps — theme, app shell, visx charts, toolchain presets",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"charts",
|
|
@@ -37,7 +37,8 @@
|
|
|
37
37
|
"llms.txt",
|
|
38
38
|
"AGENTS.md",
|
|
39
39
|
"README.md",
|
|
40
|
-
"CHANGELOG.md"
|
|
40
|
+
"CHANGELOG.md",
|
|
41
|
+
"MIGRATING.md"
|
|
41
42
|
],
|
|
42
43
|
"type": "module",
|
|
43
44
|
"sideEffects": [
|
|
@@ -131,7 +132,7 @@
|
|
|
131
132
|
},
|
|
132
133
|
"scripts": {
|
|
133
134
|
"build": "tsup && tsc --emitDeclarationOnly --declarationMap && bun scripts/copy-assets.mjs && bun scripts/gen-tokens-css.mjs && bun scripts/fix-esm-extensions.mjs",
|
|
134
|
-
"typecheck": "tsc --noEmit",
|
|
135
|
+
"typecheck": "tsc --noEmit && tsc -p tests/layout/tsconfig.json",
|
|
135
136
|
"test": "cd ../.. && bun test packages/basalt-ui",
|
|
136
137
|
"pack-test": "bash scripts/pack-test.sh",
|
|
137
138
|
"prepack": "bun run build",
|
|
@@ -39,7 +39,7 @@ type WrapperProps = {
|
|
|
39
39
|
/** Plain scrollable container rendered when use-stick-to-bottom peer is absent. */
|
|
40
40
|
function PlainContainerFallback({ children, className, style }: WrapperProps): JSX.Element {
|
|
41
41
|
const props: { className?: string; style?: CSSProperties } = {
|
|
42
|
-
// theme-allow — scroll anchoring needs a real scrollable node it owns, not a ScrollArea.
|
|
42
|
+
// theme-allow raw-scroll-container — scroll anchoring needs a real scrollable node it owns, not a ScrollArea.
|
|
43
43
|
style: { overflowY: 'auto', ...style },
|
|
44
44
|
}
|
|
45
45
|
if (className !== undefined) props.className = className
|
|
@@ -135,7 +135,7 @@ export function ThreadDetailPanel({
|
|
|
135
135
|
<BasaltStickToBottom
|
|
136
136
|
style={{
|
|
137
137
|
height: '100%',
|
|
138
|
-
// theme-allow — BasaltStickToBottom owns this scroll node (see stick-to-bottom.tsx).
|
|
138
|
+
// theme-allow raw-scroll-container — BasaltStickToBottom owns this scroll node (see stick-to-bottom.tsx).
|
|
139
139
|
overflowY: 'auto',
|
|
140
140
|
padding: 'var(--vx-space-agent-transcript-inset)',
|
|
141
141
|
}}
|