@codeleap/styles 7.0.0 → 7.0.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/dist/classes/Cacher.js +166 -0
- package/dist/classes/Cacher.js.map +1 -0
- package/dist/classes/StaleControl.js +101 -0
- package/dist/classes/StaleControl.js.map +1 -0
- package/dist/classes/StyleCache.js +91 -0
- package/dist/classes/StyleCache.js.map +1 -0
- package/dist/classes/StylePersistor.js +54 -0
- package/dist/classes/StylePersistor.js.map +1 -0
- package/dist/classes/StyleRegistry.js +470 -0
- package/dist/classes/StyleRegistry.js.map +1 -0
- package/dist/classes/index.js +3 -0
- package/dist/classes/index.js.map +1 -0
- package/dist/constants.js +24 -0
- package/dist/constants.js.map +1 -0
- package/dist/hooks/index.js +5 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useCompositionStyles.js +27 -0
- package/dist/hooks/useCompositionStyles.js.map +1 -0
- package/dist/hooks/useNestedStylesByKey.js +17 -0
- package/dist/hooks/useNestedStylesByKey.js.map +1 -0
- package/dist/hooks/useStyleObserver.js +22 -0
- package/dist/hooks/useStyleObserver.js.map +1 -0
- package/dist/hooks/useTheme.js +24 -0
- package/dist/hooks/useTheme.js.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/calc.js +44 -0
- package/dist/lib/calc.js.map +1 -0
- package/dist/lib/createStyles.js +58 -0
- package/dist/lib/createStyles.js.map +1 -0
- package/dist/lib/createTheme.js +143 -0
- package/dist/lib/createTheme.js.map +1 -0
- package/dist/lib/cssVariables.js +73 -0
- package/dist/lib/cssVariables.js.map +1 -0
- package/dist/lib/index.js +5 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/theme/generateColorScheme.js +38 -0
- package/dist/theme/generateColorScheme.js.map +1 -0
- package/dist/theme/index.js +4 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/themeStore.js +139 -0
- package/dist/theme/themeStore.js.map +1 -0
- package/dist/theme/validateTheme.js +33 -0
- package/dist/theme/validateTheme.js.map +1 -0
- package/dist/tools/colors.js +138 -0
- package/dist/tools/colors.js.map +1 -0
- package/dist/tools/deepClone.js +8 -0
- package/dist/tools/deepClone.js.map +1 -0
- package/dist/tools/deepmerge.js +13 -0
- package/dist/tools/deepmerge.js.map +1 -0
- package/dist/tools/hashKey.js +16 -0
- package/dist/tools/hashKey.js.map +1 -0
- package/dist/tools/index.js +7 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/minifier.js +34 -0
- package/dist/tools/minifier.js.map +1 -0
- package/dist/tools/multiplierProperty.js +9 -0
- package/dist/tools/multiplierProperty.js.map +1 -0
- package/dist/types/cache.js +2 -0
- package/dist/types/cache.js.map +1 -0
- package/dist/types/component.js +2 -0
- package/dist/types/component.js.map +1 -0
- package/dist/types/core.js +3 -0
- package/dist/types/core.js.map +1 -0
- package/dist/types/icon.js +3 -0
- package/dist/types/icon.js.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/spacing.js +28 -0
- package/dist/types/spacing.js.map +1 -0
- package/dist/types/store.js +2 -0
- package/dist/types/store.js.map +1 -0
- package/dist/types/style.js +2 -0
- package/dist/types/style.js.map +1 -0
- package/dist/types/theme.js +2 -0
- package/dist/types/theme.js.map +1 -0
- package/dist/utils.js +97 -0
- package/dist/utils.js.map +1 -0
- package/dist/variants/borderCreator.js +26 -0
- package/dist/variants/borderCreator.js.map +1 -0
- package/dist/variants/createAppVariants.js +17 -0
- package/dist/variants/createAppVariants.js.map +1 -0
- package/dist/variants/defaultVariants.js +137 -0
- package/dist/variants/defaultVariants.js.map +1 -0
- package/dist/variants/dynamicVariants.js +89 -0
- package/dist/variants/dynamicVariants.js.map +1 -0
- package/dist/variants/index.js +7 -0
- package/dist/variants/index.js.map +1 -0
- package/dist/variants/mediaQuery.js +56 -0
- package/dist/variants/mediaQuery.js.map +1 -0
- package/dist/variants/spacing.js +81 -0
- package/dist/variants/spacing.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Expects a 7-character hex string (`#rrggbb`). Shorter forms (3-char, no hash) are
|
|
3
|
+
* not handled and will produce NaN channels. Returns h in [0, 360], s and l in [0, 100],
|
|
4
|
+
* all rounded to integers via `Math.round`.
|
|
5
|
+
*/
|
|
6
|
+
export function hexToHSL(hex) {
|
|
7
|
+
const r = parseInt(hex.slice(1, 3), 16) / 255;
|
|
8
|
+
const g = parseInt(hex.slice(3, 5), 16) / 255;
|
|
9
|
+
const b = parseInt(hex.slice(5, 7), 16) / 255;
|
|
10
|
+
const max = Math.max(r, g, b), min = Math.min(r, g, b);
|
|
11
|
+
let h = 0, s = 0, l = (max + min) / 2;
|
|
12
|
+
if (max !== min) {
|
|
13
|
+
const d = max - min;
|
|
14
|
+
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
|
15
|
+
switch (max) {
|
|
16
|
+
case r:
|
|
17
|
+
h = (g - b) / d + (g < b ? 6 : 0);
|
|
18
|
+
break;
|
|
19
|
+
case g:
|
|
20
|
+
h = (b - r) / d + 2;
|
|
21
|
+
break;
|
|
22
|
+
case b:
|
|
23
|
+
h = (r - g) / d + 4;
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
h /= 6;
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
h: Math.round(h * 360),
|
|
30
|
+
s: Math.round(s * 100),
|
|
31
|
+
l: Math.round(l * 100),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Uses the HSL-to-RGB CSS Color 4 formula (single-pass, no separate hue helper).
|
|
36
|
+
* Inputs h in [0, 360], s and l in [0, 100]; channels are clamped implicitly by
|
|
37
|
+
* `Math.min`/`Math.max`. Each channel is individually rounded before hex encoding,
|
|
38
|
+
* so the round-trip `hexToHSL → hslToHex` may differ by ±1 in the last hex digit.
|
|
39
|
+
*/
|
|
40
|
+
export function hslToHex(h, s, l) {
|
|
41
|
+
s /= 100;
|
|
42
|
+
l /= 100;
|
|
43
|
+
const k = (n) => (n + h / 30) % 12;
|
|
44
|
+
const a = s * Math.min(l, 1 - l);
|
|
45
|
+
const f = (n) => Math.round(255 * (l - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1)))));
|
|
46
|
+
return `#${[f(0), f(8), f(4)].map(x => x.toString(16).padStart(2, '0')).join('')}`;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Parses only the 6-digit `#rrggbb` form via `parseInt(..., 16)`.
|
|
50
|
+
* No alpha channel is extracted. Channels are returned as integers in [0, 255].
|
|
51
|
+
*/
|
|
52
|
+
export function hexToRGB(hex) {
|
|
53
|
+
const r = parseInt(hex.slice(1, 3), 16);
|
|
54
|
+
const g = parseInt(hex.slice(3, 5), 16);
|
|
55
|
+
const b = parseInt(hex.slice(5, 7), 16);
|
|
56
|
+
return { r, g, b };
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Shares the same formula as `hslToHex` but returns separate integer r/g/b channels
|
|
60
|
+
* instead of a hex string. Useful when you need numeric channels for `rgba(...)` output.
|
|
61
|
+
* Input ranges: h [0, 360], s [0, 100], l [0, 100].
|
|
62
|
+
*/
|
|
63
|
+
export function hslToRGB(h, s, l) {
|
|
64
|
+
s /= 100;
|
|
65
|
+
l /= 100;
|
|
66
|
+
const k = (n) => (n + h / 30) % 12;
|
|
67
|
+
const a = s * Math.min(l, 1 - l);
|
|
68
|
+
const f = (n) => Math.round(255 * (l - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1)))));
|
|
69
|
+
return {
|
|
70
|
+
r: f(0),
|
|
71
|
+
g: f(8),
|
|
72
|
+
b: f(4),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Inverse of `hslToRGB`. Normalises each channel from [0, 255] to [0, 1] before
|
|
77
|
+
* computing. When max === min (achromatic), hue is fixed at 0. All output values are
|
|
78
|
+
* rounded, so the round-trip `hslToRGB → rgbToHSL` is not guaranteed to be lossless.
|
|
79
|
+
*/
|
|
80
|
+
export function rgbToHSL(rgb) {
|
|
81
|
+
const r = rgb.r / 255;
|
|
82
|
+
const g = rgb.g / 255;
|
|
83
|
+
const b = rgb.b / 255;
|
|
84
|
+
const max = Math.max(r, g, b);
|
|
85
|
+
const min = Math.min(r, g, b);
|
|
86
|
+
let h = 0;
|
|
87
|
+
let s = 0;
|
|
88
|
+
const l = (max + min) / 2;
|
|
89
|
+
if (max !== min) {
|
|
90
|
+
const d = max - min;
|
|
91
|
+
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
|
92
|
+
switch (max) {
|
|
93
|
+
case r:
|
|
94
|
+
h = (g - b) / d + (g < b ? 6 : 0);
|
|
95
|
+
break;
|
|
96
|
+
case g:
|
|
97
|
+
h = (b - r) / d + 2;
|
|
98
|
+
break;
|
|
99
|
+
case b:
|
|
100
|
+
h = (r - g) / d + 4;
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
h /= 6;
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
h: Math.round(h * 360),
|
|
107
|
+
s: Math.round(s * 100),
|
|
108
|
+
l: Math.round(l * 100)
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Implements WCAG 2.x relative luminance (https://www.w3.org/TR/WCAG20/#relativeluminancedef).
|
|
113
|
+
* Channels are linearised with the sRGB transfer function: values ≤ 0.03928 use
|
|
114
|
+
* the linear segment (C / 12.92); values above use the gamma curve ((C + 0.055) / 1.055)^2.4.
|
|
115
|
+
* The luminance coefficients are 0.2126 R + 0.7152 G + 0.0722 B, reflecting the
|
|
116
|
+
* eye's greater sensitivity to green. Returns a value in [0, 1].
|
|
117
|
+
*/
|
|
118
|
+
export function getLuminance({ r, g, b }) {
|
|
119
|
+
const [R, G, B] = [r, g, b].map(c => {
|
|
120
|
+
const channel = c / 255;
|
|
121
|
+
return channel <= 0.03928
|
|
122
|
+
? channel / 12.92
|
|
123
|
+
: Math.pow((channel + 0.055) / 1.055, 2.4);
|
|
124
|
+
});
|
|
125
|
+
return 0.2126 * R + 0.7152 * G + 0.0722 * B;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Uses a luminance threshold of **0.5** (not the WCAG 4.5:1 contrast ratio) to pick
|
|
129
|
+
* between two text colours. Backgrounds with luminance > 0.5 are treated as light and
|
|
130
|
+
* receive `darkColor`; all others receive `lightColor`. This is a perceptual shortcut —
|
|
131
|
+
* use explicit contrast-ratio checks for accessibility-critical situations.
|
|
132
|
+
*/
|
|
133
|
+
export function getTextColor(backgroundHex, darkColor = 'black', lightColor = 'white') {
|
|
134
|
+
const rgb = hexToRGB(backgroundHex);
|
|
135
|
+
const luminance = getLuminance(rgb);
|
|
136
|
+
return luminance > 0.5 ? darkColor : lightColor;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=colors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/tools/colors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAA;IAC7C,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAA;IAC7C,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAA;IAE7C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACtD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;IAErC,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QAChB,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,CAAA;QACnB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;QACnD,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,CAAC;gBAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,MAAK;YAChD,KAAK,CAAC;gBAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAAC,MAAK;YAClC,KAAK,CAAC;gBAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAAC,MAAK;QACpC,CAAC;QACD,CAAC,IAAI,CAAC,CAAA;IACR,CAAC;IAED,OAAO;QACL,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QACtB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QACtB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;KACvB,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IACtD,CAAC,IAAI,GAAG,CAAA;IACR,CAAC,IAAI,GAAG,CAAA;IAER,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;IAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IAChC,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAE5G,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAA;AACpF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACvC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACvC,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACvC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IACtD,CAAC,IAAI,GAAG,CAAA;IACR,CAAC,IAAI,GAAG,CAAA;IAER,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;IAC1C,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IAChC,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAE5G,OAAO;QACL,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACP,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACP,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KACR,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAwC;IAC/D,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACrB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IACrB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAA;IAErB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC7B,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;IAEzB,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QAChB,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,CAAA;QACnB,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;QAEnD,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,CAAC;gBACJ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBACjC,MAAK;YACP,KAAK,CAAC;gBACJ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACnB,MAAK;YACP,KAAK,CAAC;gBACJ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACnB,MAAK;QACT,CAAC;QAED,CAAC,IAAI,CAAC,CAAA;IACR,CAAC;IAED,OAAO;QACL,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QACtB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QACtB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;KACvB,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAuC;IAC3E,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAClC,MAAM,OAAO,GAAG,CAAC,GAAG,GAAG,CAAA;QACvB,OAAO,OAAO,IAAI,OAAO;YACvB,CAAC,CAAC,OAAO,GAAG,KAAK;YACjB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,CAAA;AAC7C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,aAAqB,EAAE,SAAS,GAAG,OAAO,EAAE,UAAU,GAAG,OAAO;IAC3F,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAA;IACnC,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAA;IACnC,OAAO,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAA;AACjD,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import rfdc from 'rfdc';
|
|
2
|
+
/**
|
|
3
|
+
* rfdc clone function configured with default options (no circular-reference support,
|
|
4
|
+
* proto: false). Does not handle `Date`, `RegExp`, or `Buffer` fields — they are copied
|
|
5
|
+
* by reference. Use only on plain style/theme objects.
|
|
6
|
+
*/
|
|
7
|
+
export const deepClone = rfdc();
|
|
8
|
+
//# sourceMappingURL=deepClone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepClone.js","sourceRoot":"","sources":["../../src/tools/deepClone.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,EAAE,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-exports `@fastify/deepmerge`'s factory function. Call it once with options
|
|
3
|
+
* (e.g., `deepmerge({ all: true })`) to obtain a variadic merge function.
|
|
4
|
+
* Passing `{ all: true }` merges arrays by index rather than concatenating them —
|
|
5
|
+
* this is the mode used throughout the style registry for variant merging.
|
|
6
|
+
* The returned merger is not idempotent: source properties always overwrite target.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* const merge = deepmerge({ all: true })
|
|
10
|
+
* const result = merge(base, override1, override2)
|
|
11
|
+
*/
|
|
12
|
+
export { default as deepmerge } from '@fastify/deepmerge';
|
|
13
|
+
//# sourceMappingURL=deepmerge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepmerge.js","sourceRoot":"","sources":["../../src/tools/deepmerge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
var _a;
|
|
2
|
+
import { sha256 } from 'js-sha256';
|
|
3
|
+
const styleKey = '@styles-version';
|
|
4
|
+
const version = (_a = require('../../package.json')) === null || _a === void 0 ? void 0 : _a.version;
|
|
5
|
+
/**
|
|
6
|
+
* Mutates the input array by appending `{ '@styles-version': <pkg.version> }` before
|
|
7
|
+
* hashing — meaning callers must not rely on the array being unchanged after the call.
|
|
8
|
+
* The version injection ensures any cache key computed against an older package version
|
|
9
|
+
* is automatically invalid after a library upgrade.
|
|
10
|
+
*/
|
|
11
|
+
export const hashKey = (value) => {
|
|
12
|
+
value.push({ [styleKey]: version });
|
|
13
|
+
const str = JSON.stringify(value);
|
|
14
|
+
return sha256(str);
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=hashKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hashKey.js","sourceRoot":"","sources":["../../src/tools/hashKey.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAElC,MAAM,QAAQ,GAAG,iBAAiB,CAAA;AAClC,MAAM,OAAO,GAAG,MAAA,OAAO,CAAC,oBAAoB,CAAC,0CAAE,OAAO,CAAA;AAEtD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAiB,EAAU,EAAE;IACnD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IAEnC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAEjC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;AACpB,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,UAAU,CAAA;AACtC,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,sBAAsB,CAAA;AACpC,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { compressToBase64, decompressFromBase64 } from 'lz-string';
|
|
2
|
+
/**
|
|
3
|
+
* Serialises `value` with `JSON.stringify` then LZ-compresses to a Base64 string.
|
|
4
|
+
* Returns the value unchanged (without throwing) when it is falsy, so callers
|
|
5
|
+
* do not need to guard against `null`/`undefined`/`''` inputs.
|
|
6
|
+
* Non-serialisable values (functions, `undefined` inside objects, circular refs)
|
|
7
|
+
* will be silently dropped by `JSON.stringify`.
|
|
8
|
+
*/
|
|
9
|
+
export function compress(value) {
|
|
10
|
+
if (!value)
|
|
11
|
+
return value;
|
|
12
|
+
return compressToBase64(JSON.stringify(value));
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Reverses `compress`: LZ-decompresses the Base64 string then parses the JSON.
|
|
16
|
+
* Returns the value unchanged when falsy. Will throw if `value` is a non-empty
|
|
17
|
+
* string that is not valid LZ-Base64, or if the decompressed payload is not
|
|
18
|
+
* valid JSON — callers should guard accordingly.
|
|
19
|
+
*/
|
|
20
|
+
export function decompress(value) {
|
|
21
|
+
if (!value)
|
|
22
|
+
return value;
|
|
23
|
+
const decoded = decompressFromBase64(value);
|
|
24
|
+
return JSON.parse(decoded);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Convenience namespace so callsites can import a single symbol and call
|
|
28
|
+
* `minifier.compress` / `minifier.decompress` without named imports.
|
|
29
|
+
*/
|
|
30
|
+
export const minifier = {
|
|
31
|
+
compress,
|
|
32
|
+
decompress,
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=minifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minifier.js","sourceRoot":"","sources":["../../src/tools/minifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAElE;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAU;IACjC,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAA;IAExB,OAAO,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,KAAU;IACnC,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAA;IAExB,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;IAE3C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,QAAQ;IACR,UAAU;CACX,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multiplierProperty.js","sourceRoot":"","sources":["../../src/tools/multiplierProperty.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,kBAAkB,CAChC,IAAY,EACZ,QAAW;IAEX,OAAO,CAAC,UAA2B,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;QAEvC,OAAO;YACL,CAAC,QAAQ,CAAC,EAAE,KAAK;SAClB,CAAA;IACH,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/types/cache.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../src/types/component.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"AAAA,0DAA0D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icon.js","sourceRoot":"","sources":["../../src/types/icon.ts"],"names":[],"mappings":"AAAA,0DAA0D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,aAAa,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Long-form spacing direction suffixes used with `margin` and `padding`.
|
|
3
|
+
* The empty string `''` represents the un-suffixed property (e.g., `padding`).
|
|
4
|
+
*/
|
|
5
|
+
export const spacingVariants = [
|
|
6
|
+
'Vertical',
|
|
7
|
+
'Horizontal',
|
|
8
|
+
'Bottom',
|
|
9
|
+
'Top',
|
|
10
|
+
'Left',
|
|
11
|
+
'Right',
|
|
12
|
+
'',
|
|
13
|
+
];
|
|
14
|
+
/**
|
|
15
|
+
* Short-form spacing direction suffixes used with `m` and `p`.
|
|
16
|
+
* Maps to the long-form via `shortPositionMap` inside `spacingFactory`.
|
|
17
|
+
* The empty string `''` represents the un-suffixed property (e.g., `p`).
|
|
18
|
+
*/
|
|
19
|
+
export const spacingShortVariants = [
|
|
20
|
+
'y',
|
|
21
|
+
'x',
|
|
22
|
+
'b',
|
|
23
|
+
't',
|
|
24
|
+
'l',
|
|
25
|
+
'r',
|
|
26
|
+
'',
|
|
27
|
+
];
|
|
28
|
+
//# sourceMappingURL=spacing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spacing.js","sourceRoot":"","sources":["../../src/types/spacing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,UAAU;IACV,YAAY;IACZ,QAAQ;IACR,KAAK;IACL,MAAM;IACN,OAAO;IACP,EAAE;CACM,CAAA;AAEV;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,EAAE;CACM,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/types/store.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.js","sourceRoot":"","sources":["../../src/types/style.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/types/theme.ts"],"names":[],"mappings":""}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { spacingShortVariants, spacingVariants } from './types/spacing';
|
|
2
|
+
import { deepmerge } from './tools';
|
|
3
|
+
/**
|
|
4
|
+
* Uppercases (or lowercases when `reverse = true`) the first character of a string.
|
|
5
|
+
* Returns the input unchanged when it is falsy or empty.
|
|
6
|
+
*/
|
|
7
|
+
export function capitalize(str, reverse = false) {
|
|
8
|
+
if (!(str === null || str === void 0 ? void 0 : str.length))
|
|
9
|
+
return str;
|
|
10
|
+
const firstChar = reverse ? str[0].toLowerCase() : str[0].toUpperCase();
|
|
11
|
+
return firstChar + str.substring(1);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Complete list of CSS/RN spacing-related property names that the style registry treats
|
|
15
|
+
* specially (resolved via the spacing factory rather than passed through as raw ICSS).
|
|
16
|
+
* Built eagerly at module load time by iterating `spacingVariants` and `spacingShortVariants`.
|
|
17
|
+
*/
|
|
18
|
+
export const spacingKeys = [
|
|
19
|
+
'gap',
|
|
20
|
+
'top',
|
|
21
|
+
'left',
|
|
22
|
+
'right',
|
|
23
|
+
'bottom',
|
|
24
|
+
];
|
|
25
|
+
for (const longProperty of ['padding', 'margin']) {
|
|
26
|
+
for (const variant of spacingVariants) {
|
|
27
|
+
spacingKeys.push(`${longProperty}${capitalize(variant)}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
for (const shortProperty of ['p', 'm']) {
|
|
31
|
+
for (const shortVariant of spacingShortVariants) {
|
|
32
|
+
spacingKeys.push(shortProperty + shortVariant);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/** Returns `true` if `key` is one of the pre-built spacing property names. */
|
|
36
|
+
export function isSpacingKey(key) {
|
|
37
|
+
if (!key)
|
|
38
|
+
return false;
|
|
39
|
+
return spacingKeys === null || spacingKeys === void 0 ? void 0 : spacingKeys.includes(key);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Extracts all entries whose key starts with `match`, stripping the prefix and
|
|
43
|
+
* lowercasing the first character of the remainder. Used by composition hooks to
|
|
44
|
+
* slice a flat `{ wrapperText: ..., wrapperIcon: ... }` record into a nested
|
|
45
|
+
* `{ text: ..., icon: ... }` map for a single composition element.
|
|
46
|
+
*/
|
|
47
|
+
export function getNestedStylesByKey(match, styles) {
|
|
48
|
+
const stylesByKey = {};
|
|
49
|
+
for (const [key, value] of Object.entries(styles)) {
|
|
50
|
+
if (key.startsWith(match)) {
|
|
51
|
+
const partName = capitalize(key.replace(match, ''), true);
|
|
52
|
+
stylesByKey[partName] = value;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return stylesByKey;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Merges an array of style objects into one using `@fastify/deepmerge` with `all: true`.
|
|
59
|
+
* Falsy entries are filtered out before merging. Later entries overwrite earlier ones.
|
|
60
|
+
*/
|
|
61
|
+
export const mergeStyles = (styles) => {
|
|
62
|
+
const style = styles === null || styles === void 0 ? void 0 : styles.filter(s => !!s);
|
|
63
|
+
return deepmerge({ all: true })(...style);
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Style property names that collide with CSS keywords and must not be treated as
|
|
67
|
+
* composition-element prefixes by the registry. Without this list, a style object
|
|
68
|
+
* like `{ textAlign: 'center' }` would be misidentified as a composition key starting
|
|
69
|
+
* with `text`.
|
|
70
|
+
*/
|
|
71
|
+
export const ignoredStyleKeys = [
|
|
72
|
+
'textAlign',
|
|
73
|
+
'textDecoration',
|
|
74
|
+
'textOverflow',
|
|
75
|
+
'left',
|
|
76
|
+
'top',
|
|
77
|
+
'right',
|
|
78
|
+
'bottom',
|
|
79
|
+
];
|
|
80
|
+
/**
|
|
81
|
+
* Flattens nested arrays of `StyledProp` into a single flat array. Useful when
|
|
82
|
+
* assembling the final `style` prop from multiple sources (e.g., variant defaults
|
|
83
|
+
* plus overrides), without losing the order-dependent merge semantics of `StyleProp`.
|
|
84
|
+
*/
|
|
85
|
+
export const concatStyles = (styles) => {
|
|
86
|
+
const results = [];
|
|
87
|
+
for (const style of styles) {
|
|
88
|
+
if (Array.isArray(style)) {
|
|
89
|
+
results.push(...style);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
results.push(style);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return results;
|
|
96
|
+
};
|
|
97
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { themeStore } from '../theme';
|
|
2
|
+
import { capitalize } from '../utils';
|
|
3
|
+
/**
|
|
4
|
+
* Resolves `color` from `theme.colors` (falls back to the raw string if not found),
|
|
5
|
+
* then emits `border{Direction}Color`, `border{Direction}Width`, and — on web only —
|
|
6
|
+
* `border{Direction}Style` for each requested direction.
|
|
7
|
+
* Defaults: all four sides, width 1, style `'solid'`.
|
|
8
|
+
* `borderStyle` is omitted on React Native because RN requires it on individual sides
|
|
9
|
+
* and `isBrowser` guards that path.
|
|
10
|
+
*/
|
|
11
|
+
export const borderCreator = (args) => {
|
|
12
|
+
var _a, _b;
|
|
13
|
+
const { color: colorKey, width = 1, style = 'solid', directions = ['left', 'top', 'bottom', 'right'], } = args;
|
|
14
|
+
const theme = themeStore.themeTyped;
|
|
15
|
+
const color = (_b = (_a = theme === null || theme === void 0 ? void 0 : theme.colors) === null || _a === void 0 ? void 0 : _a[colorKey]) !== null && _b !== void 0 ? _b : colorKey;
|
|
16
|
+
let borderStyles = {};
|
|
17
|
+
for (const direction of directions) {
|
|
18
|
+
const property = `border${capitalize(direction)}`;
|
|
19
|
+
borderStyles[`${property}Color`] = color;
|
|
20
|
+
borderStyles[`${property}Width`] = width;
|
|
21
|
+
if (theme === null || theme === void 0 ? void 0 : theme.isBrowser)
|
|
22
|
+
borderStyles[`${property}Style`] = style;
|
|
23
|
+
}
|
|
24
|
+
return borderStyles;
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=borderCreator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"borderCreator.js","sourceRoot":"","sources":["../../src/variants/borderCreator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAarC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAkB,CAAC,IAAI,EAAE,EAAE;;IACnD,MAAM,EACJ,KAAK,EAAE,QAAQ,EACf,KAAK,GAAG,CAAC,EACT,KAAK,GAAG,OAAO,EACf,UAAU,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,GAChD,GAAG,IAAI,CAAA;IAER,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAA;IAEnC,MAAM,KAAK,GAAG,MAAA,MAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAA8B,0CAAG,QAAQ,CAAC,mCAAI,QAAQ,CAAA;IAE5E,IAAI,YAAY,GAAwB,EAAE,CAAA;IAE1C,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,SAAS,UAAU,CAAC,SAAS,CAAC,EAAE,CAAA;QAEjD,YAAY,CAAC,GAAG,QAAQ,OAAO,CAAC,GAAG,KAAK,CAAA;QACxC,YAAY,CAAC,GAAG,QAAQ,OAAO,CAAC,GAAG,KAAK,CAAA;QACxC,IAAI,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,SAAS;YAAE,YAAY,CAAC,GAAG,QAAQ,OAAO,CAAC,GAAG,KAAK,CAAA;IAChE,CAAC;IAED,OAAO,YAAoB,CAAA;AAC7B,CAAC,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { themeStore } from '../theme';
|
|
2
|
+
/**
|
|
3
|
+
* Registers app-specific style variants with the global `themeStore`.
|
|
4
|
+
* Call this once during app initialisation (before any component mounts) with the
|
|
5
|
+
* variants object that extends the base variant set. The variants are merged into
|
|
6
|
+
* `commonVariants` when `CodeleapStyleRegistry` initialises.
|
|
7
|
+
*
|
|
8
|
+
* Each entry can be either a static `ICSS` object (applied unconditionally) or a
|
|
9
|
+
* function `(theme: ITheme) => ICSS` (resolved lazily using the current theme).
|
|
10
|
+
*
|
|
11
|
+
* @returns The same `variants` object — useful for typing augmentation of `IAppVariants`.
|
|
12
|
+
*/
|
|
13
|
+
export function createAppVariants(variants) {
|
|
14
|
+
themeStore.setVariants(variants);
|
|
15
|
+
return variants;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=createAppVariants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createAppVariants.js","sourceRoot":"","sources":["../../src/variants/createAppVariants.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAMrC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAA2B,QAAW;IACrE,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;IAEhC,OAAO,QAAQ,CAAA;AACjB,CAAC"}
|