@nxds/core 0.7.2 → 0.9.1
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 +16 -16
- package/dist/runtime/catalogue.cjs +113 -20
- package/dist/runtime/catalogue.cjs.map +1 -1
- package/dist/runtime/catalogue.d.cts +8 -8
- package/dist/runtime/catalogue.d.ts +8 -8
- package/dist/runtime/catalogue.js +113 -20
- package/dist/runtime/catalogue.js.map +1 -1
- package/dist/runtime/index.cjs +179 -69
- package/dist/runtime/index.cjs.map +1 -1
- package/dist/runtime/index.d.cts +61 -28
- package/dist/runtime/index.d.ts +61 -28
- package/dist/runtime/index.js +156 -54
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/{palette-DgJXuoTz.d.cts → palette-BKTIQ0WC.d.cts} +3 -3
- package/dist/runtime/{palette-DgJXuoTz.d.ts → palette-BKTIQ0WC.d.ts} +3 -3
- package/dist/runtime/palette.cjs.map +1 -1
- package/dist/runtime/palette.d.cts +2 -2
- package/dist/runtime/palette.d.ts +2 -2
- package/dist/runtime/palette.js.map +1 -1
- package/dist/runtime/{surface-ladder-yQyRTCRt.d.ts → surface-ladder-B950TU4_.d.ts} +25 -25
- package/dist/runtime/{surface-ladder-C2sSp67b.d.cts → surface-ladder-C8HTwT7z.d.cts} +25 -25
- package/package.json +17 -17
package/dist/runtime/index.cjs
CHANGED
|
@@ -26,11 +26,12 @@ __export(src_exports, {
|
|
|
26
26
|
CORNER_OPTIONS: () => CORNER_OPTIONS,
|
|
27
27
|
DEFAULT_BRAND_COLOR: () => DEFAULT_BRAND_COLOR,
|
|
28
28
|
DEFAULT_COOKIE_KEY: () => DEFAULT_COOKIE_KEY,
|
|
29
|
-
|
|
29
|
+
DEFAULT_NXDS_APPEARANCE: () => DEFAULT_NXDS_APPEARANCE,
|
|
30
30
|
DEFAULT_STORAGE_KEY: () => DEFAULT_STORAGE_KEY,
|
|
31
31
|
DENSITY_OPTIONS: () => DENSITY_OPTIONS,
|
|
32
32
|
ELEVATION_OPTIONS: () => ELEVATION_OPTIONS,
|
|
33
|
-
|
|
33
|
+
NXDS_APPEARANCE_COOKIE_MAX_AGE_SECONDS: () => NXDS_APPEARANCE_COOKIE_MAX_AGE_SECONDS,
|
|
34
|
+
NXDS_APPEARANCE_DATA_ATTRS: () => NXDS_APPEARANCE_DATA_ATTRS,
|
|
34
35
|
PALETTE_KEYS: () => PALETTE_KEYS,
|
|
35
36
|
SEMANTIC_TOKEN_REGISTRY: () => SEMANTIC_TOKEN_REGISTRY,
|
|
36
37
|
SNAPSHOT_VERSION: () => SNAPSHOT_VERSION,
|
|
@@ -39,25 +40,32 @@ __export(src_exports, {
|
|
|
39
40
|
adjustContrast: () => adjustContrast,
|
|
40
41
|
apcaLc: () => apcaLc,
|
|
41
42
|
appearancePrefsToCss: () => appearancePrefsToCss,
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
43
|
+
applyNxdsAppearance: () => applyNxdsAppearance,
|
|
44
|
+
createDefaultNxdsAppearanceSnapshot: () => createDefaultNxdsAppearanceSnapshot,
|
|
45
|
+
createNxdsAppearanceBootstrapScript: () => createNxdsAppearanceBootstrapScript,
|
|
46
|
+
createNxdsAppearanceSnapshot: () => createNxdsAppearanceSnapshot,
|
|
47
|
+
createNxdsAppearanceSnapshotFromCookie: () => createNxdsAppearanceSnapshotFromCookie,
|
|
48
|
+
createNxdsAppearanceSnapshotFromState: () => createNxdsAppearanceSnapshotFromState,
|
|
49
|
+
createNxdsAppearanceStateCookie: () => createNxdsAppearanceStateCookie,
|
|
50
|
+
createNxdsThemeContract: () => createNxdsThemeContract,
|
|
49
51
|
deriveTheme: () => deriveTheme,
|
|
50
52
|
findBrandColorPreset: () => findBrandColorPreset,
|
|
51
53
|
isColor: () => isColor,
|
|
52
54
|
measureThemeContrast: () => measureThemeContrast,
|
|
53
55
|
normalizeAppearanceModeIds: () => normalizeAppearanceModeIds,
|
|
54
|
-
|
|
56
|
+
parseNxdsAppearanceStateCookie: () => parseNxdsAppearanceStateCookie,
|
|
57
|
+
persistNxdsAppearance: () => persistNxdsAppearance,
|
|
58
|
+
prefersDarkColorScheme: () => prefersDarkColorScheme,
|
|
59
|
+
readStoredNxdsAppearance: () => readStoredNxdsAppearance,
|
|
60
|
+
removeNxdsAppearance: () => removeNxdsAppearance,
|
|
55
61
|
resolveFirstPaint: () => resolveFirstPaint,
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
62
|
+
resolveNxdsAppearanceMode: () => resolveNxdsAppearanceMode,
|
|
63
|
+
sanitizeNxdsAppearance: () => sanitizeNxdsAppearance,
|
|
64
|
+
sanitizeNxdsAppearancePrefs: () => sanitizeNxdsAppearancePrefs,
|
|
65
|
+
sanitizeNxdsAppearanceSnapshot: () => sanitizeNxdsAppearanceSnapshot,
|
|
66
|
+
serializeNxdsAppearanceStateCookie: () => serializeNxdsAppearanceStateCookie,
|
|
67
|
+
themeToCss: () => themeToCss,
|
|
68
|
+
watchColorScheme: () => watchColorScheme
|
|
61
69
|
});
|
|
62
70
|
module.exports = __toCommonJS(src_exports);
|
|
63
71
|
|
|
@@ -2625,7 +2633,7 @@ var STROKE_OPTIONS = [
|
|
|
2625
2633
|
{ value: "normal", label: "Normal" },
|
|
2626
2634
|
{ value: "strong", label: "Strong" }
|
|
2627
2635
|
];
|
|
2628
|
-
var
|
|
2636
|
+
var DEFAULT_NXDS_APPEARANCE = {
|
|
2629
2637
|
mode: "light",
|
|
2630
2638
|
brandColor: DEFAULT_BRAND_COLOR,
|
|
2631
2639
|
surfaceTone: "zinc",
|
|
@@ -2677,7 +2685,7 @@ function formatPx(value) {
|
|
|
2677
2685
|
return `${Number(value.toFixed(4))}px`;
|
|
2678
2686
|
}
|
|
2679
2687
|
function typographyScaleVariables(uiPx) {
|
|
2680
|
-
const scale = uiPx /
|
|
2688
|
+
const scale = uiPx / DEFAULT_NXDS_APPEARANCE.prefs.uiFontSize;
|
|
2681
2689
|
const sizeVars = Object.entries(typography_default_default.size).map(
|
|
2682
2690
|
([name, token2]) => ` --nx-typography-size-${name}: ${formatPx(token2.$value.value * scale)};`
|
|
2683
2691
|
);
|
|
@@ -2718,9 +2726,9 @@ function normalizeAppearanceModeIds(raw) {
|
|
|
2718
2726
|
}
|
|
2719
2727
|
return out;
|
|
2720
2728
|
}
|
|
2721
|
-
function
|
|
2729
|
+
function sanitizeNxdsAppearancePrefs(raw) {
|
|
2722
2730
|
const o = isRecord(raw) ? raw : {};
|
|
2723
|
-
const d =
|
|
2731
|
+
const d = DEFAULT_NXDS_APPEARANCE.prefs;
|
|
2724
2732
|
return {
|
|
2725
2733
|
uiFont: fontFamilyOr(o.uiFont, d.uiFont),
|
|
2726
2734
|
codeFont: fontFamilyOr(o.codeFont, d.codeFont),
|
|
@@ -2731,10 +2739,10 @@ function sanitizeNexusAppearancePrefs(raw) {
|
|
|
2731
2739
|
fontSmoothing: boolOr(o.fontSmoothing, d.fontSmoothing)
|
|
2732
2740
|
};
|
|
2733
2741
|
}
|
|
2734
|
-
function
|
|
2735
|
-
if (!isRecord(rawInput)) return
|
|
2742
|
+
function sanitizeNxdsAppearance(rawInput) {
|
|
2743
|
+
if (!isRecord(rawInput)) return DEFAULT_NXDS_APPEARANCE;
|
|
2736
2744
|
const raw = normalizeAppearanceModeIds(rawInput);
|
|
2737
|
-
const d =
|
|
2745
|
+
const d = DEFAULT_NXDS_APPEARANCE;
|
|
2738
2746
|
return {
|
|
2739
2747
|
mode: enumOr(raw.mode, APPEARANCE_MODES, d.mode),
|
|
2740
2748
|
brandColor: typeof raw.brandColor === "string" && isColor(raw.brandColor) ? raw.brandColor : d.brandColor,
|
|
@@ -2745,10 +2753,10 @@ function sanitizeNexusAppearance(rawInput) {
|
|
|
2745
2753
|
corners: enumOr(raw.corners, CORNERS, d.corners),
|
|
2746
2754
|
elevation: enumOr(raw.elevation, ELEVATIONS, d.elevation),
|
|
2747
2755
|
stroke: enumOr(raw.stroke, STROKES, d.stroke),
|
|
2748
|
-
prefs:
|
|
2756
|
+
prefs: sanitizeNxdsAppearancePrefs(raw.prefs)
|
|
2749
2757
|
};
|
|
2750
2758
|
}
|
|
2751
|
-
function
|
|
2759
|
+
function createNxdsThemeContract(state) {
|
|
2752
2760
|
const tone = BASE_TONE_SEEDS[state.surfaceTone];
|
|
2753
2761
|
return {
|
|
2754
2762
|
surfaceTone: state.surfaceTone,
|
|
@@ -2760,11 +2768,11 @@ function createNexusThemeContract(state) {
|
|
|
2760
2768
|
function appearancePrefsToCss(prefs) {
|
|
2761
2769
|
const uiPx = clampFontSize(
|
|
2762
2770
|
prefs.uiFontSize,
|
|
2763
|
-
|
|
2771
|
+
DEFAULT_NXDS_APPEARANCE.prefs.uiFontSize
|
|
2764
2772
|
);
|
|
2765
2773
|
const codePx = clampFontSize(
|
|
2766
2774
|
prefs.codeFontSize,
|
|
2767
|
-
|
|
2775
|
+
DEFAULT_NXDS_APPEARANCE.prefs.codeFontSize
|
|
2768
2776
|
);
|
|
2769
2777
|
const blocks = [
|
|
2770
2778
|
inRuntimeLayer(`:root {
|
|
@@ -4583,14 +4591,14 @@ ${block(":root.dark", derived.dark)}`
|
|
|
4583
4591
|
var SNAPSHOT_VERSION = 9;
|
|
4584
4592
|
var STATE_COOKIE_VERSION = 6;
|
|
4585
4593
|
var SNAPSHOT_CACHE_LIMIT = 50;
|
|
4586
|
-
var
|
|
4594
|
+
var NXDS_APPEARANCE_DATA_ATTRS = [
|
|
4587
4595
|
"data-density",
|
|
4588
4596
|
"data-radius",
|
|
4589
4597
|
"data-shadow",
|
|
4590
4598
|
"data-borderwidth"
|
|
4591
4599
|
];
|
|
4592
|
-
var DEFAULT_STORAGE_KEY = "
|
|
4593
|
-
var DEFAULT_COOKIE_KEY = "
|
|
4600
|
+
var DEFAULT_STORAGE_KEY = "nxds-appearance";
|
|
4601
|
+
var DEFAULT_COOKIE_KEY = "nxds-appearance-state";
|
|
4594
4602
|
var isRecord2 = (value) => typeof value === "object" && value !== null;
|
|
4595
4603
|
var cachedSnapshots = /* @__PURE__ */ new Map();
|
|
4596
4604
|
var cachedModes = /* @__PURE__ */ new Map();
|
|
@@ -4615,7 +4623,7 @@ function deriveModeCached(contract, mode) {
|
|
|
4615
4623
|
return cachedModes.get(key) ?? remember(cachedModes, key, deriveThemeMode(contract, mode));
|
|
4616
4624
|
}
|
|
4617
4625
|
function deriveThemeCss(state) {
|
|
4618
|
-
const contract =
|
|
4626
|
+
const contract = createNxdsThemeContract(state);
|
|
4619
4627
|
return themeToCss({
|
|
4620
4628
|
light: deriveModeCached(contract, "light"),
|
|
4621
4629
|
dark: deriveModeCached(contract, "dark")
|
|
@@ -4624,7 +4632,7 @@ function deriveThemeCss(state) {
|
|
|
4624
4632
|
function derivePrefsCss(state) {
|
|
4625
4633
|
return appearancePrefsToCss(state.prefs);
|
|
4626
4634
|
}
|
|
4627
|
-
function
|
|
4635
|
+
function createNxdsAppearanceSnapshot(state, themeCss, prefsCss) {
|
|
4628
4636
|
return {
|
|
4629
4637
|
version: SNAPSHOT_VERSION,
|
|
4630
4638
|
state,
|
|
@@ -4632,33 +4640,33 @@ function createNexusAppearanceSnapshot(state, themeCss, prefsCss) {
|
|
|
4632
4640
|
prefsCss
|
|
4633
4641
|
};
|
|
4634
4642
|
}
|
|
4635
|
-
function
|
|
4636
|
-
const sanitizedState =
|
|
4643
|
+
function createNxdsAppearanceSnapshotFromState(state) {
|
|
4644
|
+
const sanitizedState = sanitizeNxdsAppearance(state);
|
|
4637
4645
|
const cacheKey = cacheKeyForState(sanitizedState);
|
|
4638
4646
|
const cachedSnapshot = cachedSnapshots.get(cacheKey);
|
|
4639
4647
|
if (cachedSnapshot) return cachedSnapshot;
|
|
4640
4648
|
return remember(
|
|
4641
4649
|
cachedSnapshots,
|
|
4642
4650
|
cacheKey,
|
|
4643
|
-
|
|
4651
|
+
createNxdsAppearanceSnapshot(
|
|
4644
4652
|
sanitizedState,
|
|
4645
4653
|
deriveThemeCss(sanitizedState),
|
|
4646
4654
|
derivePrefsCss(sanitizedState)
|
|
4647
4655
|
)
|
|
4648
4656
|
);
|
|
4649
4657
|
}
|
|
4650
|
-
function
|
|
4658
|
+
function createNxdsAppearanceStateCookie(state) {
|
|
4651
4659
|
return {
|
|
4652
4660
|
version: STATE_COOKIE_VERSION,
|
|
4653
|
-
state:
|
|
4661
|
+
state: sanitizeNxdsAppearance(state)
|
|
4654
4662
|
};
|
|
4655
4663
|
}
|
|
4656
|
-
function
|
|
4664
|
+
function serializeNxdsAppearanceStateCookie(state) {
|
|
4657
4665
|
return encodeURIComponent(
|
|
4658
|
-
JSON.stringify(
|
|
4666
|
+
JSON.stringify(createNxdsAppearanceStateCookie(state))
|
|
4659
4667
|
);
|
|
4660
4668
|
}
|
|
4661
|
-
function
|
|
4669
|
+
function parseNxdsAppearanceStateCookie(raw) {
|
|
4662
4670
|
if (typeof raw !== "string" || raw.length === 0) return null;
|
|
4663
4671
|
try {
|
|
4664
4672
|
const decoded = decodeURIComponent(raw);
|
|
@@ -4666,31 +4674,31 @@ function parseNexusAppearanceStateCookie(raw) {
|
|
|
4666
4674
|
if (!isRecord2(parsed) || parsed.version !== STATE_COOKIE_VERSION || !isRecord2(parsed.state)) {
|
|
4667
4675
|
return null;
|
|
4668
4676
|
}
|
|
4669
|
-
return
|
|
4677
|
+
return sanitizeNxdsAppearance(parsed.state);
|
|
4670
4678
|
} catch {
|
|
4671
4679
|
return null;
|
|
4672
4680
|
}
|
|
4673
4681
|
}
|
|
4674
|
-
function
|
|
4675
|
-
return
|
|
4676
|
-
|
|
4682
|
+
function createNxdsAppearanceSnapshotFromCookie(raw, fallbackState = DEFAULT_NXDS_APPEARANCE) {
|
|
4683
|
+
return createNxdsAppearanceSnapshotFromState(
|
|
4684
|
+
parseNxdsAppearanceStateCookie(raw) ?? sanitizeNxdsAppearance(fallbackState)
|
|
4677
4685
|
);
|
|
4678
4686
|
}
|
|
4679
4687
|
var cachedDefaultSnapshot;
|
|
4680
|
-
function
|
|
4681
|
-
return cachedDefaultSnapshot ?? (cachedDefaultSnapshot =
|
|
4682
|
-
|
|
4688
|
+
function createDefaultNxdsAppearanceSnapshot() {
|
|
4689
|
+
return cachedDefaultSnapshot ?? (cachedDefaultSnapshot = createNxdsAppearanceSnapshotFromState(
|
|
4690
|
+
DEFAULT_NXDS_APPEARANCE
|
|
4683
4691
|
));
|
|
4684
4692
|
}
|
|
4685
|
-
function
|
|
4693
|
+
function sanitizeNxdsAppearanceSnapshot(raw) {
|
|
4686
4694
|
if (!isRecord2(raw) || !isRecord2(raw.state)) {
|
|
4687
|
-
return
|
|
4695
|
+
return createDefaultNxdsAppearanceSnapshot();
|
|
4688
4696
|
}
|
|
4689
|
-
const state =
|
|
4697
|
+
const state = sanitizeNxdsAppearance(raw.state);
|
|
4690
4698
|
if (raw.version === SNAPSHOT_VERSION && typeof raw.themeCss === "string" && typeof raw.prefsCss === "string") {
|
|
4691
|
-
return
|
|
4699
|
+
return createNxdsAppearanceSnapshot(state, raw.themeCss, raw.prefsCss);
|
|
4692
4700
|
}
|
|
4693
|
-
return
|
|
4701
|
+
return createNxdsAppearanceSnapshotFromState(state);
|
|
4694
4702
|
}
|
|
4695
4703
|
function resolveFirstPaint(snapshot, systemPrefersDark) {
|
|
4696
4704
|
const { state } = snapshot;
|
|
@@ -4710,10 +4718,104 @@ function resolveFirstPaint(snapshot, systemPrefersDark) {
|
|
|
4710
4718
|
function escapeInlineScriptJson(value) {
|
|
4711
4719
|
return JSON.stringify(value).replace(/</g, "\\u003C").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
|
|
4712
4720
|
}
|
|
4713
|
-
function
|
|
4721
|
+
function createNxdsAppearanceBootstrapScript(options = {}) {
|
|
4714
4722
|
const storageKey = options.storageKey ?? DEFAULT_STORAGE_KEY;
|
|
4715
|
-
const defaultSnapshot = options.defaultSnapshot ?
|
|
4716
|
-
return `(function(){try{var k=${escapeInlineScriptJson(storageKey)};var f=${escapeInlineScriptJson(defaultSnapshot)};var s=f;try{if(k!==false){var r=window.localStorage&&window.localStorage.getItem(k);if(r){var p=JSON.parse(r);if(p&&p.version===f.version&&p.state&&typeof p.themeCss==="string"&&typeof p.prefsCss==="string"){s=p;}}}}catch(e){}var st=s.state||f.state;var m=st.mode==="dark"||st.mode==="light"||st.mode==="system"?st.mode:f.state.mode;var sys=false;try{sys=m==="system"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches;}catch(e){}var dark=m==="dark"||sys===true;var root=document.documentElement;root.classList.toggle("dark",dark);root.setAttribute("data-density",typeof st.density==="string"?st.density:f.state.density);root.setAttribute("data-radius",typeof st.corners==="string"?st.corners:f.state.corners);root.setAttribute("data-shadow",typeof st.elevation==="string"?st.elevation:f.state.elevation);root.setAttribute("data-borderwidth",typeof st.stroke==="string"?st.stroke:f.state.stroke);function upsert(attr,css){var list=document.querySelectorAll("style["+attr+"]");var el=list[0]||document.createElement("style");for(var i=1;i<list.length;i++){list[i].remove();}el.setAttribute(attr,"");el.textContent=css||"";if(!el.parentNode){document.head.appendChild(el);}}upsert("data-
|
|
4723
|
+
const defaultSnapshot = options.defaultSnapshot ? sanitizeNxdsAppearanceSnapshot(options.defaultSnapshot) : createDefaultNxdsAppearanceSnapshot();
|
|
4724
|
+
return `(function(){try{var k=${escapeInlineScriptJson(storageKey)};var f=${escapeInlineScriptJson(defaultSnapshot)};var s=f;try{if(k!==false){var r=window.localStorage&&window.localStorage.getItem(k);if(r){var p=JSON.parse(r);if(p&&p.version===f.version&&p.state&&typeof p.themeCss==="string"&&typeof p.prefsCss==="string"){s=p;}}}}catch(e){}var st=s.state||f.state;var m=st.mode==="dark"||st.mode==="light"||st.mode==="system"?st.mode:f.state.mode;var sys=false;try{sys=m==="system"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches;}catch(e){}var dark=m==="dark"||sys===true;var root=document.documentElement;root.classList.toggle("dark",dark);root.setAttribute("data-density",typeof st.density==="string"?st.density:f.state.density);root.setAttribute("data-radius",typeof st.corners==="string"?st.corners:f.state.corners);root.setAttribute("data-shadow",typeof st.elevation==="string"?st.elevation:f.state.elevation);root.setAttribute("data-borderwidth",typeof st.stroke==="string"?st.stroke:f.state.stroke);function upsert(attr,css){var list=document.querySelectorAll("style["+attr+"]");var el=list[0]||document.createElement("style");for(var i=1;i<list.length;i++){list[i].remove();}el.setAttribute(attr,"");el.textContent=css||"";if(!el.parentNode){document.head.appendChild(el);}}upsert("data-nxds-appearance-theme",s.themeCss);upsert("data-nxds-appearance-prefs",s.prefsCss);}catch(e){}})();`;
|
|
4725
|
+
}
|
|
4726
|
+
|
|
4727
|
+
// src/lib/appearance-dom.ts
|
|
4728
|
+
var NXDS_APPEARANCE_COOKIE_MAX_AGE_SECONDS = 60 * 60 * 24 * 365;
|
|
4729
|
+
var COLOR_SCHEME_QUERY = "(prefers-color-scheme: dark)";
|
|
4730
|
+
var THEME_STYLE_ATTR = "data-nxds-appearance-theme";
|
|
4731
|
+
var PREFS_STYLE_ATTR = "data-nxds-appearance-prefs";
|
|
4732
|
+
function prefersDarkColorScheme() {
|
|
4733
|
+
if (typeof window === "undefined" || typeof window.matchMedia !== "function")
|
|
4734
|
+
return false;
|
|
4735
|
+
return window.matchMedia(COLOR_SCHEME_QUERY).matches;
|
|
4736
|
+
}
|
|
4737
|
+
function watchColorScheme(onChange) {
|
|
4738
|
+
if (typeof window.matchMedia !== "function") return () => {
|
|
4739
|
+
};
|
|
4740
|
+
const query = window.matchMedia(COLOR_SCHEME_QUERY);
|
|
4741
|
+
query.addEventListener("change", onChange);
|
|
4742
|
+
return () => query.removeEventListener("change", onChange);
|
|
4743
|
+
}
|
|
4744
|
+
function resolveNxdsAppearanceMode(mode, systemPrefersDark) {
|
|
4745
|
+
if (mode === "system") return systemPrefersDark ? "dark" : "light";
|
|
4746
|
+
return mode;
|
|
4747
|
+
}
|
|
4748
|
+
function readStoredNxdsAppearance(storageKey, fallback) {
|
|
4749
|
+
if (storageKey === false || typeof window === "undefined") return fallback;
|
|
4750
|
+
try {
|
|
4751
|
+
const raw = window.localStorage.getItem(storageKey);
|
|
4752
|
+
return raw ? sanitizeNxdsAppearanceSnapshot(JSON.parse(raw)).state : fallback;
|
|
4753
|
+
} catch {
|
|
4754
|
+
return fallback;
|
|
4755
|
+
}
|
|
4756
|
+
}
|
|
4757
|
+
function upsertStyle(attribute, css) {
|
|
4758
|
+
const styles = Array.from(
|
|
4759
|
+
document.querySelectorAll(`style[${attribute}]`)
|
|
4760
|
+
);
|
|
4761
|
+
const style = styles[0] ?? document.createElement("style");
|
|
4762
|
+
for (const duplicate of styles.slice(1)) duplicate.remove();
|
|
4763
|
+
style.setAttribute(attribute, "");
|
|
4764
|
+
style.textContent = css;
|
|
4765
|
+
if (!style.parentNode) document.head.appendChild(style);
|
|
4766
|
+
}
|
|
4767
|
+
function applyNxdsAppearance(state, systemPrefersDark) {
|
|
4768
|
+
const firstPaint = resolveFirstPaint(
|
|
4769
|
+
createNxdsAppearanceSnapshotFromState(state),
|
|
4770
|
+
systemPrefersDark
|
|
4771
|
+
);
|
|
4772
|
+
const root = document.documentElement;
|
|
4773
|
+
root.classList.toggle("dark", firstPaint.className === "dark");
|
|
4774
|
+
for (const attr of NXDS_APPEARANCE_DATA_ATTRS) {
|
|
4775
|
+
root.setAttribute(attr, firstPaint.dataAttrs[attr]);
|
|
4776
|
+
}
|
|
4777
|
+
upsertStyle(THEME_STYLE_ATTR, firstPaint.themeCss);
|
|
4778
|
+
upsertStyle(PREFS_STYLE_ATTR, firstPaint.prefsCss);
|
|
4779
|
+
}
|
|
4780
|
+
function removeNxdsAppearance() {
|
|
4781
|
+
document.querySelectorAll(`style[${THEME_STYLE_ATTR}], style[${PREFS_STYLE_ATTR}]`).forEach((style) => style.remove());
|
|
4782
|
+
const root = document.documentElement;
|
|
4783
|
+
root.classList.remove("dark");
|
|
4784
|
+
for (const attr of NXDS_APPEARANCE_DATA_ATTRS) root.removeAttribute(attr);
|
|
4785
|
+
}
|
|
4786
|
+
function writeStateCookie(cookieWriteKey, state, options) {
|
|
4787
|
+
const secure = options.secure === true || options.secure !== false && window.location.protocol === "https:";
|
|
4788
|
+
const attrs = [
|
|
4789
|
+
`Path=${(options.path ?? "/").replace(/[;\r\n]/g, "")}`,
|
|
4790
|
+
`SameSite=${options.sameSite ?? "Lax"}`,
|
|
4791
|
+
`Max-Age=${options.maxAge ?? NXDS_APPEARANCE_COOKIE_MAX_AGE_SECONDS}`,
|
|
4792
|
+
options.domain ? `Domain=${options.domain.replace(/[;\r\n]/g, "")}` : "",
|
|
4793
|
+
secure ? "Secure" : ""
|
|
4794
|
+
].filter(Boolean);
|
|
4795
|
+
document.cookie = `${cookieWriteKey}=${serializeNxdsAppearanceStateCookie(
|
|
4796
|
+
state
|
|
4797
|
+
)}; ${attrs.join("; ")}`;
|
|
4798
|
+
}
|
|
4799
|
+
function persistNxdsAppearance(state, {
|
|
4800
|
+
storageKey,
|
|
4801
|
+
cookieWriteKey = false,
|
|
4802
|
+
cookieOptions = {}
|
|
4803
|
+
}) {
|
|
4804
|
+
if (storageKey !== false) {
|
|
4805
|
+
try {
|
|
4806
|
+
window.localStorage.setItem(
|
|
4807
|
+
storageKey,
|
|
4808
|
+
JSON.stringify(createNxdsAppearanceSnapshotFromState(state))
|
|
4809
|
+
);
|
|
4810
|
+
} catch {
|
|
4811
|
+
}
|
|
4812
|
+
}
|
|
4813
|
+
if (cookieWriteKey !== false) {
|
|
4814
|
+
try {
|
|
4815
|
+
writeStateCookie(cookieWriteKey, state, cookieOptions);
|
|
4816
|
+
} catch {
|
|
4817
|
+
}
|
|
4818
|
+
}
|
|
4717
4819
|
}
|
|
4718
4820
|
|
|
4719
4821
|
// src/lib/brand-presets.ts
|
|
@@ -4910,11 +5012,12 @@ var SEMANTIC_TOKEN_REGISTRY = [
|
|
|
4910
5012
|
CORNER_OPTIONS,
|
|
4911
5013
|
DEFAULT_BRAND_COLOR,
|
|
4912
5014
|
DEFAULT_COOKIE_KEY,
|
|
4913
|
-
|
|
5015
|
+
DEFAULT_NXDS_APPEARANCE,
|
|
4914
5016
|
DEFAULT_STORAGE_KEY,
|
|
4915
5017
|
DENSITY_OPTIONS,
|
|
4916
5018
|
ELEVATION_OPTIONS,
|
|
4917
|
-
|
|
5019
|
+
NXDS_APPEARANCE_COOKIE_MAX_AGE_SECONDS,
|
|
5020
|
+
NXDS_APPEARANCE_DATA_ATTRS,
|
|
4918
5021
|
PALETTE_KEYS,
|
|
4919
5022
|
SEMANTIC_TOKEN_REGISTRY,
|
|
4920
5023
|
SNAPSHOT_VERSION,
|
|
@@ -4923,24 +5026,31 @@ var SEMANTIC_TOKEN_REGISTRY = [
|
|
|
4923
5026
|
adjustContrast,
|
|
4924
5027
|
apcaLc,
|
|
4925
5028
|
appearancePrefsToCss,
|
|
4926
|
-
|
|
4927
|
-
|
|
4928
|
-
|
|
4929
|
-
|
|
4930
|
-
|
|
4931
|
-
|
|
4932
|
-
|
|
5029
|
+
applyNxdsAppearance,
|
|
5030
|
+
createDefaultNxdsAppearanceSnapshot,
|
|
5031
|
+
createNxdsAppearanceBootstrapScript,
|
|
5032
|
+
createNxdsAppearanceSnapshot,
|
|
5033
|
+
createNxdsAppearanceSnapshotFromCookie,
|
|
5034
|
+
createNxdsAppearanceSnapshotFromState,
|
|
5035
|
+
createNxdsAppearanceStateCookie,
|
|
5036
|
+
createNxdsThemeContract,
|
|
4933
5037
|
deriveTheme,
|
|
4934
5038
|
findBrandColorPreset,
|
|
4935
5039
|
isColor,
|
|
4936
5040
|
measureThemeContrast,
|
|
4937
5041
|
normalizeAppearanceModeIds,
|
|
4938
|
-
|
|
5042
|
+
parseNxdsAppearanceStateCookie,
|
|
5043
|
+
persistNxdsAppearance,
|
|
5044
|
+
prefersDarkColorScheme,
|
|
5045
|
+
readStoredNxdsAppearance,
|
|
5046
|
+
removeNxdsAppearance,
|
|
4939
5047
|
resolveFirstPaint,
|
|
4940
|
-
|
|
4941
|
-
|
|
4942
|
-
|
|
4943
|
-
|
|
4944
|
-
|
|
5048
|
+
resolveNxdsAppearanceMode,
|
|
5049
|
+
sanitizeNxdsAppearance,
|
|
5050
|
+
sanitizeNxdsAppearancePrefs,
|
|
5051
|
+
sanitizeNxdsAppearanceSnapshot,
|
|
5052
|
+
serializeNxdsAppearanceStateCookie,
|
|
5053
|
+
themeToCss,
|
|
5054
|
+
watchColorScheme
|
|
4945
5055
|
});
|
|
4946
5056
|
//# sourceMappingURL=index.cjs.map
|