@ttoss/fsl-theme 1.1.12 → 1.1.14

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.
Files changed (91) hide show
  1. package/dist/Types-BiBa17RL.d.cts +1427 -0
  2. package/dist/Types-BiBa17RL.d.mts +1427 -0
  3. package/dist/baseBundle-DxvXyhGa.mjs +17 -0
  4. package/dist/baseBundle-iEFf5nqT.cjs +22 -0
  5. package/dist/{esm/chunk-SE5Z52RE.js → createTheme-BLNYztZU.mjs} +76 -172
  6. package/dist/createTheme-Cv6RP9D6.cjs +1825 -0
  7. package/dist/css.cjs +48 -0
  8. package/dist/{css.d.ts → css.d.cts} +67 -63
  9. package/dist/css.d.mts +168 -0
  10. package/dist/css.mjs +42 -0
  11. package/dist/dataviz/index.cjs +45 -0
  12. package/dist/dataviz/{index.d.ts → index.d.cts} +9 -5
  13. package/dist/dataviz/index.d.mts +66 -0
  14. package/dist/dataviz/index.mjs +39 -0
  15. package/dist/dtcg.cjs +115 -0
  16. package/dist/{dtcg.d.ts → dtcg.d.cts} +9 -7
  17. package/dist/dtcg.d.mts +51 -0
  18. package/dist/dtcg.mjs +112 -0
  19. package/dist/helpers-4p4-QVt_.cjs +258 -0
  20. package/dist/helpers-CaswNJMy.mjs +211 -0
  21. package/dist/{index.d.ts → index-CsIjfw86.d.cts} +42 -34
  22. package/dist/index-nJrjI0BA.d.mts +94 -0
  23. package/dist/index.cjs +16 -0
  24. package/dist/index.d.cts +6 -0
  25. package/dist/index.d.mts +6 -0
  26. package/dist/index.mjs +7 -0
  27. package/dist/{react.d.ts → react-CGa6FlNL.d.cts} +130 -106
  28. package/dist/react-DnKxR2gK.d.mts +370 -0
  29. package/dist/react-EUwpdvY7.cjs +481 -0
  30. package/dist/react.cjs +12 -0
  31. package/dist/react.d.cts +4 -0
  32. package/dist/react.d.mts +4 -0
  33. package/dist/react.mjs +412 -0
  34. package/dist/runtime-entry.cjs +9 -0
  35. package/dist/runtime-entry.d.cts +3 -0
  36. package/dist/runtime-entry.d.mts +3 -0
  37. package/dist/runtime-entry.mjs +3 -0
  38. package/dist/{runtime-entry.d.ts → ssrScript-BVysxDws.d.cts} +26 -23
  39. package/dist/ssrScript-BVysxDws.d.mts +98 -0
  40. package/dist/ssrScript-CRfrN8Pm.cjs +202 -0
  41. package/dist/ssrScript-D3kGPQpi.mjs +179 -0
  42. package/dist/themes/bruttal.cjs +75 -0
  43. package/dist/themes/bruttal.d.cts +3 -0
  44. package/dist/themes/bruttal.d.mts +3 -0
  45. package/dist/themes/bruttal.mjs +72 -0
  46. package/dist/themes/corporate.cjs +34 -0
  47. package/dist/themes/corporate.d.cts +3 -0
  48. package/dist/themes/corporate.d.mts +3 -0
  49. package/dist/{esm/chunk-TPMN75JM.js → themes/corporate.mjs} +7 -5
  50. package/dist/themes/oca.cjs +34 -0
  51. package/dist/themes/oca.d.cts +3 -0
  52. package/dist/themes/oca.d.mts +3 -0
  53. package/dist/{esm/chunk-DU4QDQUC.js → themes/oca.mjs} +7 -5
  54. package/dist/themes/ventures.cjs +34 -0
  55. package/dist/themes/ventures.d.cts +3 -0
  56. package/dist/themes/ventures.d.mts +3 -0
  57. package/dist/{esm/chunk-BXKVVQEP.js → themes/ventures.mjs} +7 -5
  58. package/dist/toCssVars-CYZCe-on.mjs +286 -0
  59. package/dist/toCssVars-DudHKvt2.cjs +297 -0
  60. package/dist/{esm/chunk-4Q4P3JBB.js → tokenRegistry-DjgSN3oU.mjs} +23 -20
  61. package/dist/tokenRegistry-OhaJ9sPJ.cjs +199 -0
  62. package/dist/vars.cjs +127 -0
  63. package/dist/{vars.d.ts → vars.d.cts} +8 -7
  64. package/dist/vars.d.mts +128 -0
  65. package/dist/vars.mjs +123 -0
  66. package/dist/withDataviz-B4pVsOwV.cjs +192 -0
  67. package/dist/{esm/chunk-FBVUI2PK.js → withDataviz-DY5s7R51.mjs} +40 -12
  68. package/package.json +6 -6
  69. package/dist/Types-6tR0_2Ss.d.ts +0 -1452
  70. package/dist/esm/chunk-5PWPAQMC.js +0 -9
  71. package/dist/esm/chunk-HRNXVRS3.js +0 -54
  72. package/dist/esm/chunk-IJGA42O6.js +0 -141
  73. package/dist/esm/chunk-PQPQNZ73.js +0 -262
  74. package/dist/esm/chunk-UMRQ4OTX.js +0 -11
  75. package/dist/esm/chunk-VL6EGE6Z.js +0 -222
  76. package/dist/esm/chunk-WVQSTQD5.js +0 -192
  77. package/dist/esm/css.js +0 -6
  78. package/dist/esm/dataviz/index.js +0 -19
  79. package/dist/esm/dtcg.js +0 -65
  80. package/dist/esm/index.js +0 -10
  81. package/dist/esm/react.js +0 -8
  82. package/dist/esm/runtime-entry.js +0 -4
  83. package/dist/esm/themes/bruttal.js +0 -6
  84. package/dist/esm/themes/corporate.js +0 -6
  85. package/dist/esm/themes/oca.js +0 -6
  86. package/dist/esm/themes/ventures.js +0 -6
  87. package/dist/esm/vars.js +0 -28
  88. package/dist/themes/bruttal.d.ts +0 -5
  89. package/dist/themes/corporate.d.ts +0 -5
  90. package/dist/themes/oca.d.ts +0 -5
  91. package/dist/themes/ventures.d.ts +0 -5
@@ -1,9 +0,0 @@
1
- /** Powered by @ttoss/config. https://ttoss.dev/docs/modules/packages/config/ */
2
- import { baseTheme, createTheme, darkAlternate } from "./chunk-SE5Z52RE.js";
3
-
4
- // src/baseBundle.ts
5
- var baseBundle = createTheme({
6
- base: baseTheme,
7
- alternate: darkAlternate
8
- });
9
- export { baseBundle };
@@ -1,54 +0,0 @@
1
- /** Powered by @ttoss/config. https://ttoss.dev/docs/modules/packages/config/ */
2
- import { withDataviz } from "./chunk-FBVUI2PK.js";
3
- import { createTheme, darkAlternate } from "./chunk-SE5Z52RE.js";
4
- import { deepMerge } from "./chunk-WVQSTQD5.js";
5
-
6
- // src/themes/bruttal.ts
7
- var bundle = createTheme({
8
- overrides: {
9
- core: {
10
- colors: {
11
- brand: {
12
- 50: "#FBF8F5",
13
- 100: "#F3EDE6",
14
- 200: "#E4D7CC",
15
- 300: "#CCBCAE",
16
- 400: "#96836F",
17
- 500: "#6D5D4F",
18
- 600: "#594A3F",
19
- 700: "#4E4239",
20
- 800: "#312921",
21
- 900: "#1A150E"
22
- }
23
- }
24
- },
25
- semantic: {
26
- radii: {
27
- control: "{core.radii.none}",
28
- surface: "{core.radii.none}"
29
- },
30
- elevation: {
31
- surface: {
32
- flat: "{core.elevation.level.0}",
33
- raised: "{core.elevation.level.0}",
34
- overlay: "{core.elevation.level.0}",
35
- blocking: "{core.elevation.level.0}"
36
- }
37
- }
38
- }
39
- },
40
- alternate: deepMerge(darkAlternate, {
41
- semantic: {
42
- elevation: {
43
- surface: {
44
- flat: "{core.elevation.emphatic.0}",
45
- raised: "{core.elevation.emphatic.0}",
46
- overlay: "{core.elevation.emphatic.0}",
47
- blocking: "{core.elevation.emphatic.0}"
48
- }
49
- }
50
- }
51
- })
52
- });
53
- var bruttal = withDataviz(bundle);
54
- export { bruttal };
@@ -1,141 +0,0 @@
1
- /** Powered by @ttoss/config. https://ttoss.dev/docs/modules/packages/config/ */
2
- import { SAFE_ID_RE, __name } from "./chunk-WVQSTQD5.js";
3
-
4
- // src/themeBootstrap.ts
5
- var resolveTheme = /* @__PURE__ */__name(cfg => {
6
- let stored = null;
7
- try {
8
- const raw = localStorage.getItem(cfg.storageKey);
9
- if (raw) stored = JSON.parse(raw);
10
- } catch {}
11
- const mode = stored != null && stored.mode != null && cfg.validModes.indexOf(stored.mode) !== -1 ? stored.mode : cfg.defaultMode;
12
- const resolvedMode = mode === "system" ? typeof window !== "undefined" && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light" : mode;
13
- return {
14
- mode,
15
- resolvedMode
16
- };
17
- }, "resolveTheme");
18
-
19
- // src/runtime.ts
20
- var DATA_THEME_ATTR = "data-tt-theme";
21
- var DATA_MODE_ATTR = "data-tt-mode";
22
- var DEFAULT_STORAGE_KEY = "tt-theme";
23
- var VALID_MODES = ["light", "dark", "system"];
24
- var writeStorage = /* @__PURE__ */__name((key, data) => {
25
- try {
26
- localStorage.setItem(key, JSON.stringify(data));
27
- } catch {}
28
- }, "writeStorage");
29
- var createThemeRuntime = /* @__PURE__ */__name((config = {}) => {
30
- const {
31
- defaultTheme,
32
- defaultMode = "system",
33
- storageKey = DEFAULT_STORAGE_KEY,
34
- root = document.documentElement
35
- } = config;
36
- const listeners = /* @__PURE__ */new Set();
37
- let destroyed = false;
38
- const init = resolveTheme({
39
- storageKey,
40
- defaultMode,
41
- validModes: VALID_MODES
42
- });
43
- let mode = init.mode;
44
- let resolvedMode = init.resolvedMode;
45
- const apply = /* @__PURE__ */__name(() => {
46
- if (defaultTheme) {
47
- root.setAttribute(DATA_THEME_ATTR, defaultTheme);
48
- } else {
49
- root.removeAttribute(DATA_THEME_ATTR);
50
- }
51
- root.setAttribute(DATA_MODE_ATTR, resolvedMode);
52
- root.style.colorScheme = resolvedMode;
53
- }, "apply");
54
- const getState = /* @__PURE__ */__name(() => {
55
- return {
56
- mode,
57
- resolvedMode
58
- };
59
- }, "getState");
60
- apply();
61
- let prevMode = mode;
62
- let prevResolvedMode = resolvedMode;
63
- const applyState = /* @__PURE__ */__name(({
64
- persist
65
- }) => {
66
- if (mode === prevMode && resolvedMode === prevResolvedMode) return;
67
- prevMode = mode;
68
- prevResolvedMode = resolvedMode;
69
- apply();
70
- if (persist) writeStorage(storageKey, {
71
- mode
72
- });
73
- const state = getState();
74
- for (const listener of listeners) listener(state);
75
- }, "applyState");
76
- const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
77
- const onSystemChange = /* @__PURE__ */__name(() => {
78
- resolvedMode = mediaQuery.matches ? "dark" : "light";
79
- applyState({
80
- persist: false
81
- });
82
- }, "onSystemChange");
83
- const syncMediaListener = /* @__PURE__ */__name(active => {
84
- mediaQuery.removeEventListener("change", onSystemChange);
85
- if (active) {
86
- mediaQuery.addEventListener("change", onSystemChange);
87
- }
88
- }, "syncMediaListener");
89
- syncMediaListener(mode === "system");
90
- const setMode = /* @__PURE__ */__name(newMode => {
91
- if (destroyed || !VALID_MODES.includes(newMode)) {
92
- return;
93
- }
94
- mode = newMode;
95
- resolvedMode = mode === "system" ? mediaQuery.matches ? "dark" : "light" : mode;
96
- syncMediaListener(mode === "system");
97
- applyState({
98
- persist: true
99
- });
100
- }, "setMode");
101
- const subscribe = /* @__PURE__ */__name(listener => {
102
- if (destroyed) {
103
- return () => {};
104
- }
105
- listeners.add(listener);
106
- return () => {
107
- listeners.delete(listener);
108
- };
109
- }, "subscribe");
110
- const destroy = /* @__PURE__ */__name(() => {
111
- destroyed = true;
112
- syncMediaListener(false);
113
- listeners.clear();
114
- }, "destroy");
115
- return {
116
- getState,
117
- setMode,
118
- subscribe,
119
- destroy
120
- };
121
- }, "createThemeRuntime");
122
-
123
- // src/ssrScript.ts
124
- var getThemeScriptContent = /* @__PURE__ */__name((config = {}) => {
125
- const {
126
- defaultTheme,
127
- defaultMode = "system",
128
- storageKey = DEFAULT_STORAGE_KEY
129
- } = config;
130
- if (defaultTheme !== void 0 && !SAFE_ID_RE.test(defaultTheme)) {
131
- throw new Error(`Invalid defaultTheme "${defaultTheme}". Only alphanumeric characters, hyphens, and underscores are allowed.`);
132
- }
133
- const cfg = JSON.stringify({
134
- storageKey,
135
- defaultTheme,
136
- defaultMode,
137
- validModes: [...VALID_MODES]
138
- });
139
- return `(function(){var cfg=${cfg};var d=document.documentElement;var s=null;try{var r=localStorage.getItem(cfg.storageKey);if(r)s=JSON.parse(r);}catch(e){}var m=(s!=null&&s.mode!=null&&cfg.validModes.indexOf(s.mode)!==-1)?s.mode:cfg.defaultMode;var rm=m==="system"?(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"):m;if(cfg.defaultTheme){d.setAttribute("data-tt-theme",cfg.defaultTheme);}else{d.removeAttribute("data-tt-theme");}d.setAttribute("data-tt-mode",rm);d.style.colorScheme=rm;})()`;
140
- }, "getThemeScriptContent");
141
- export { DATA_THEME_ATTR, DATA_MODE_ATTR, createThemeRuntime, getThemeScriptContent };
@@ -1,262 +0,0 @@
1
- /** Powered by @ttoss/config. https://ttoss.dev/docs/modules/packages/config/ */
2
- import { CSS_PATH_PREFIXES } from "./chunk-4Q4P3JBB.js";
3
- import { COMPOUND_REF_RE, SAFE_ID_RE, __name, deepMerge, flattenObject, flattenTheme } from "./chunk-WVQSTQD5.js";
4
-
5
- // src/roots/toCssVars.ts
6
- var toCssVarName = /* @__PURE__ */__name(tokenPath => {
7
- for (const [prefix, cssPrefix] of CSS_PATH_PREFIXES) {
8
- if (tokenPath.startsWith(prefix)) {
9
- const rest = tokenPath.slice(prefix.length).replace(/\./g, "-");
10
- return `${cssPrefix}${rest}`;
11
- }
12
- }
13
- return `--tt-${tokenPath.replace(/\./g, "-")}`;
14
- }, "toCssVarName");
15
- var inlineRefsToVars = /* @__PURE__ */__name(value => {
16
- return value.replace(COMPOUND_REF_RE, (_match, path) => {
17
- return `var(${toCssVarName(path)})`;
18
- });
19
- }, "inlineRefsToVars");
20
- var buildCssVars = /* @__PURE__ */__name(theme => {
21
- const vars = {};
22
- const {
23
- core: coreFlat,
24
- semantic: semanticFlat
25
- } = flattenTheme(theme);
26
- for (const [path, value] of Object.entries(coreFlat)) {
27
- vars[toCssVarName(path)] = value;
28
- }
29
- for (const [path, value] of Object.entries(semanticFlat)) {
30
- const varName = toCssVarName(path);
31
- if (typeof value === "string" && value.includes("{")) {
32
- vars[varName] = inlineRefsToVars(value);
33
- } else {
34
- vars[varName] = value;
35
- }
36
- }
37
- return vars;
38
- }, "buildCssVars");
39
- var sanitizeId = /* @__PURE__ */__name(value => {
40
- if (!SAFE_ID_RE.test(value)) {
41
- throw new Error(`Invalid themeId "${value}". Only alphanumeric characters, hyphens, and underscores are allowed.`);
42
- }
43
- return value;
44
- }, "sanitizeId");
45
- var buildSelector = /* @__PURE__ */__name(({
46
- themeId,
47
- mode,
48
- selector
49
- }) => {
50
- if (selector) {
51
- return selector;
52
- }
53
- if (!themeId) {
54
- return mode ? `:root[data-tt-mode="${mode}"]` : ":root";
55
- }
56
- let s = `[data-tt-theme="${sanitizeId(themeId)}"]`;
57
- if (mode) {
58
- s += `[data-tt-mode="${mode}"]`;
59
- }
60
- return s;
61
- }, "buildSelector");
62
- var CQ_UNIT_RE = /cq(?:i|b|w|h|min|max)(?![a-z])/i;
63
- var hasCqUnits = /* @__PURE__ */__name(value => {
64
- return typeof value === "string" && CQ_UNIT_RE.test(value);
65
- }, "hasCqUnits");
66
- var toViewportFallback = /* @__PURE__ */__name(value => {
67
- return value.replace(/cqmin(?![a-z])/gi, "vmin").replace(/cqmax(?![a-z])/gi, "vmax").replace(/cqi(?![a-z])/gi, "vw").replace(/cqb(?![a-z])/gi, "vh").replace(/cqw(?![a-z])/gi, "vw").replace(/cqh(?![a-z])/gi, "vh");
68
- }, "toViewportFallback");
69
- var extractContainerQueryVars = /* @__PURE__ */__name(vars => {
70
- const cqVars = {};
71
- for (const [name, value] of Object.entries(vars)) {
72
- if (hasCqUnits(value)) {
73
- cqVars[name] = value;
74
- }
75
- }
76
- return cqVars;
77
- }, "extractContainerQueryVars");
78
- var buildReducedMotionVars = /* @__PURE__ */__name(theme => {
79
- const noneVar = `var(${toCssVarName("core.motion.duration.none")})`;
80
- const flat = flattenObject(theme.semantic.motion, "semantic.motion");
81
- const vars = {};
82
- for (const path of Object.keys(flat)) {
83
- if (path.endsWith(".duration")) {
84
- vars[toCssVarName(path)] = noneVar;
85
- }
86
- }
87
- return vars;
88
- }, "buildReducedMotionVars");
89
- var buildCoarseHitVars = /* @__PURE__ */__name(theme => {
90
- const vars = {};
91
- for (const [key, value] of Object.entries(theme.core.sizing.hit.coarse)) {
92
- if (typeof value === "string") {
93
- vars[toCssVarName(`semantic.sizing.hit.${key}`)] = value;
94
- }
95
- }
96
- return vars;
97
- }, "buildCoarseHitVars");
98
- var buildCssBlock = /* @__PURE__ */__name(({
99
- selector,
100
- vars,
101
- containerQueryVars,
102
- coarseHitVars,
103
- reducedMotionVars,
104
- colorScheme
105
- }) => {
106
- const varLines = /* @__PURE__ */__name(v => {
107
- return Object.entries(v).map(([name, val]) => {
108
- return ` ${name}: ${val};`;
109
- });
110
- }, "varLines");
111
- const atRuleBlock = /* @__PURE__ */__name((atRule, v) => {
112
- const lines = varLines(v);
113
- return lines.length > 0 ? `${atRule} {
114
- ${selector} {
115
- ${lines.join("\n")}
116
- }
117
- }` : "";
118
- }, "atRuleBlock");
119
- const baseLines = [];
120
- if (colorScheme) {
121
- baseLines.push(` color-scheme: ${colorScheme};`);
122
- }
123
- for (const [name, value] of Object.entries(vars)) {
124
- if (hasCqUnits(value)) {
125
- baseLines.push(` ${name}: ${toViewportFallback(String(value))};`);
126
- } else {
127
- baseLines.push(` ${name}: ${value};`);
128
- }
129
- }
130
- const baseBlock = `${selector} {
131
- ${baseLines.join("\n")}
132
- }`;
133
- const cqContent = atRuleBlock("@supports (width: 1cqi)", containerQueryVars);
134
- const cqBlock = cqContent ? `
135
-
136
- ${cqContent}` : "";
137
- const coarseBlock = atRuleBlock("@media (any-pointer: coarse)", coarseHitVars);
138
- const reducedMotionBlock = atRuleBlock("@media (prefers-reduced-motion: reduce)", reducedMotionVars);
139
- return [baseBlock + cqBlock, coarseBlock, reducedMotionBlock].filter(Boolean).join("\n\n");
140
- }, "buildCssBlock");
141
- var toCssVarsBase = /* @__PURE__ */__name((theme, options = {}) => {
142
- const cssVars = buildCssVars(theme);
143
- const coarseHitVars = buildCoarseHitVars(theme);
144
- const reducedMotionVars = buildReducedMotionVars(theme);
145
- const containerQueryVars = extractContainerQueryVars(cssVars);
146
- const selector = buildSelector(options);
147
- const {
148
- colorScheme,
149
- mode
150
- } = options;
151
- const effectiveColorScheme = colorScheme ?? mode;
152
- return {
153
- cssVars,
154
- coarseHitVars,
155
- reducedMotionVars,
156
- containerQueryVars,
157
- selector,
158
- toCssString: /* @__PURE__ */__name(() => {
159
- return buildCssBlock({
160
- selector,
161
- vars: cssVars,
162
- containerQueryVars,
163
- coarseHitVars,
164
- reducedMotionVars,
165
- colorScheme: effectiveColorScheme
166
- });
167
- }, "toCssString")
168
- };
169
- }, "toCssVarsBase");
170
- var isThemeBundle = /* @__PURE__ */__name(input => {
171
- return "baseMode" in input && "base" in input;
172
- }, "isThemeBundle");
173
- var diffCssVars = /* @__PURE__ */__name(({
174
- base,
175
- full
176
- }) => {
177
- const diff = {};
178
- for (const [key, value] of Object.entries(full)) {
179
- if (base[key] !== value) {
180
- diff[key] = value;
181
- }
182
- }
183
- return diff;
184
- }, "diffCssVars");
185
- var bundleToCssVars = /* @__PURE__ */__name((bundle, options) => {
186
- const {
187
- themeId
188
- } = options;
189
- const {
190
- baseMode,
191
- base: baseTheme,
192
- alternate
193
- } = bundle;
194
- const alternateMode = baseMode === "light" ? "dark" : "light";
195
- const baseResult = toCssVarsBase(baseTheme, {
196
- themeId,
197
- colorScheme: baseMode
198
- });
199
- if (!alternate) {
200
- return {
201
- base: baseResult,
202
- toCssString: /* @__PURE__ */__name(() => {
203
- return baseResult.toCssString();
204
- }, "toCssString")
205
- };
206
- }
207
- const alternateTheme = {
208
- core: baseTheme.core,
209
- semantic: deepMerge(baseTheme.semantic, alternate.semantic)
210
- };
211
- const fullAlternateVars = buildCssVars(alternateTheme);
212
- const diffVars = diffCssVars({
213
- base: baseResult.cssVars,
214
- full: fullAlternateVars
215
- });
216
- const alternateSelector = buildSelector({
217
- themeId,
218
- mode: alternateMode
219
- });
220
- const altCoarseHitVars = {};
221
- const altReducedMotionVars = diffCssVars({
222
- base: baseResult.reducedMotionVars,
223
- full: buildReducedMotionVars(alternateTheme)
224
- });
225
- const altContainerQueryVars = extractContainerQueryVars(diffVars);
226
- const alternateResult = {
227
- cssVars: diffVars,
228
- coarseHitVars: altCoarseHitVars,
229
- reducedMotionVars: altReducedMotionVars,
230
- containerQueryVars: altContainerQueryVars,
231
- selector: alternateSelector,
232
- toCssString: /* @__PURE__ */__name(() => {
233
- return buildCssBlock({
234
- selector: alternateSelector,
235
- vars: diffVars,
236
- containerQueryVars: altContainerQueryVars,
237
- coarseHitVars: altCoarseHitVars,
238
- reducedMotionVars: altReducedMotionVars,
239
- colorScheme: alternateMode
240
- });
241
- }, "toCssString")
242
- };
243
- return {
244
- base: baseResult,
245
- alternate: alternateResult,
246
- toCssString: /* @__PURE__ */__name(() => {
247
- const parts = [baseResult.toCssString()];
248
- if (Object.keys(diffVars).length > 0) {
249
- parts.push(alternateResult.toCssString());
250
- }
251
- return parts.join("\n\n");
252
- }, "toCssString")
253
- };
254
- }, "bundleToCssVars");
255
- function toCssVars(input, options) {
256
- if (isThemeBundle(input)) {
257
- return bundleToCssVars(input, options ?? {});
258
- }
259
- return toCssVarsBase(input, options);
260
- }
261
- __name(toCssVars, "toCssVars");
262
- export { toCssVarName, toCssVars };
@@ -1,11 +0,0 @@
1
- /** Powered by @ttoss/config. https://ttoss.dev/docs/modules/packages/config/ */
2
- import { toCssVars } from "./chunk-PQPQNZ73.js";
3
- import { __name } from "./chunk-WVQSTQD5.js";
4
-
5
- // src/css.ts
6
- var getThemeStylesContent = /* @__PURE__ */__name((bundle, themeId) => {
7
- return toCssVars(bundle, {
8
- themeId
9
- }).toCssString();
10
- }, "getThemeStylesContent");
11
- export { getThemeStylesContent };
@@ -1,222 +0,0 @@
1
- /** Powered by @ttoss/config. https://ttoss.dev/docs/modules/packages/config/ */
2
- import { getThemeStylesContent } from "./chunk-UMRQ4OTX.js";
3
- import { createThemeRuntime, getThemeScriptContent } from "./chunk-IJGA42O6.js";
4
- import { __name, deepMerge, toFlatTokens } from "./chunk-WVQSTQD5.js";
5
-
6
- // src/react.tsx
7
- import * as React from "react";
8
- var COARSE_QUERY = "(any-pointer: coarse)";
9
- var useCoarsePointer = /* @__PURE__ */__name(() => {
10
- const [isCoarse, setIsCoarse] = React.useState(() => {
11
- return typeof window !== "undefined" && typeof window.matchMedia === "function" ? window.matchMedia(COARSE_QUERY).matches : false;
12
- });
13
- React.useEffect(() => {
14
- if (typeof window === "undefined" || typeof window.matchMedia !== "function") {
15
- return;
16
- }
17
- const mql = window.matchMedia(COARSE_QUERY);
18
- const handler = /* @__PURE__ */__name(e => {
19
- return setIsCoarse(e.matches);
20
- }, "handler");
21
- mql.addEventListener("change", handler);
22
- return () => {
23
- return mql.removeEventListener("change", handler);
24
- };
25
- }, []);
26
- return isCoarse;
27
- }, "useCoarsePointer");
28
- var applyCoarseHitOverrides = /* @__PURE__ */__name((tokens, theme, isCoarse) => {
29
- if (!isCoarse) return tokens;
30
- const overrides = {
31
- ...tokens
32
- };
33
- for (const [key, value] of Object.entries(theme.core.sizing.hit.coarse)) {
34
- if (typeof value === "string") {
35
- overrides[`semantic.sizing.hit.${key}`] = value;
36
- }
37
- }
38
- return overrides;
39
- }, "applyCoarseHitOverrides");
40
- var SemanticTokensCtx = /* @__PURE__ */React.createContext(null);
41
- var resolveSemanticTokens = /* @__PURE__ */__name((bundle, resolvedMode) => {
42
- if (resolvedMode === bundle.baseMode || !bundle.alternate?.semantic) {
43
- return bundle.base.semantic;
44
- }
45
- return deepMerge(bundle.base.semantic, bundle.alternate.semantic);
46
- }, "resolveSemanticTokens");
47
- var ResolvedTokensCtx = /* @__PURE__ */React.createContext(null);
48
- var ModeCtx = /* @__PURE__ */React.createContext(null);
49
- var ThemeProvider = /* @__PURE__ */__name(({
50
- defaultMode,
51
- storageKey,
52
- theme,
53
- themeId,
54
- onModeChange,
55
- root,
56
- children
57
- }) => {
58
- const runtimeRef = React.useRef(null);
59
- const initDefaultMode = React.useRef(defaultMode);
60
- const initStorageKey = React.useRef(storageKey);
61
- const [state, setState] = React.useState(() => {
62
- const resolvedDefault = (defaultMode ?? "system") === "system" ? "light" : defaultMode;
63
- return {
64
- mode: defaultMode ?? "system",
65
- resolvedMode: resolvedDefault
66
- };
67
- });
68
- React.useEffect(() => {
69
- const runtime = createThemeRuntime({
70
- defaultTheme: themeId,
71
- defaultMode: initDefaultMode.current,
72
- storageKey: initStorageKey.current,
73
- root
74
- });
75
- runtimeRef.current = runtime;
76
- setState(runtime.getState());
77
- const unsubscribe = runtime.subscribe(setState);
78
- return () => {
79
- unsubscribe();
80
- runtime.destroy();
81
- runtimeRef.current = null;
82
- };
83
- }, [root, themeId]);
84
- const setMode = React.useCallback(mode => {
85
- runtimeRef.current?.setMode(mode);
86
- }, []);
87
- const semanticTokens = React.useMemo(() => {
88
- return theme ? resolveSemanticTokens(theme, state.resolvedMode) : null;
89
- }, [theme, state.resolvedMode]);
90
- const isCoarse = useCoarsePointer();
91
- const resolvedTokens = React.useMemo(() => {
92
- if (!theme || !semanticTokens) return null;
93
- const effectiveTheme = {
94
- core: theme.base.core,
95
- semantic: semanticTokens
96
- };
97
- const all = toFlatTokens(effectiveTheme);
98
- const result = {};
99
- for (const [key, value] of Object.entries(all)) {
100
- if (key.startsWith("semantic.")) {
101
- result[key] = value;
102
- }
103
- }
104
- return applyCoarseHitOverrides(result, theme.base, isCoarse);
105
- }, [theme, semanticTokens, isCoarse]);
106
- const cssContent = React.useMemo(() => {
107
- return theme ? getThemeStylesContent(theme, themeId) : null;
108
- }, [theme, themeId]);
109
- const onModeChangeRef = React.useRef(onModeChange);
110
- React.useEffect(() => {
111
- onModeChangeRef.current = onModeChange;
112
- });
113
- const prevModeRef = React.useRef(null);
114
- React.useEffect(() => {
115
- const prev = prevModeRef.current;
116
- prevModeRef.current = {
117
- mode: state.mode,
118
- resolvedMode: state.resolvedMode
119
- };
120
- if (prev === null) return;
121
- if (prev.mode === state.mode && prev.resolvedMode === state.resolvedMode) return;
122
- onModeChangeRef.current?.(state.mode, state.resolvedMode);
123
- }, [state.mode, state.resolvedMode]);
124
- const modeCtxValue = React.useMemo(() => {
125
- return {
126
- mode: state.mode,
127
- resolvedMode: state.resolvedMode,
128
- setMode
129
- };
130
- }, [state.mode, state.resolvedMode, setMode]);
131
- const coreNode = /* @__PURE__ */React.createElement(ModeCtx.Provider, {
132
- value: modeCtxValue
133
- }, children);
134
- if (theme) {
135
- return /* @__PURE__ */React.createElement(React.Fragment, null, /* @__PURE__ */React.createElement("style", {
136
- precedence: "default"
137
- }, cssContent), /* @__PURE__ */React.createElement(ResolvedTokensCtx.Provider, {
138
- value: resolvedTokens
139
- }, /* @__PURE__ */React.createElement(SemanticTokensCtx.Provider, {
140
- value: semanticTokens
141
- }, coreNode)));
142
- }
143
- return coreNode;
144
- }, "ThemeProvider");
145
- var useColorMode = /* @__PURE__ */__name(() => {
146
- const context = React.useContext(ModeCtx);
147
- if (!context) {
148
- throw new Error("useColorMode must be used within a <ThemeProvider>");
149
- }
150
- return context;
151
- }, "useColorMode");
152
- var useTokens = /* @__PURE__ */__name(() => {
153
- const tokens = React.useContext(SemanticTokensCtx);
154
- const context = React.useContext(ModeCtx);
155
- if (!context) {
156
- throw new Error("useTokens must be used within a <ThemeProvider>");
157
- }
158
- if (tokens === null) {
159
- throw new Error("useTokens requires a <ThemeProvider theme={...}>. Pass your theme bundle: <ThemeProvider theme={myTheme} />");
160
- }
161
- return tokens;
162
- }, "useTokens");
163
- var useResolvedTokens = /* @__PURE__ */__name(() => {
164
- const resolved = React.useContext(ResolvedTokensCtx);
165
- const context = React.useContext(ModeCtx);
166
- if (!context) {
167
- throw new Error("useResolvedTokens must be used within a <ThemeProvider>");
168
- }
169
- if (resolved === null) {
170
- throw new Error("useResolvedTokens requires a <ThemeProvider theme={...}>. Pass your theme bundle: <ThemeProvider theme={myTheme} />");
171
- }
172
- return resolved;
173
- }, "useResolvedTokens");
174
- var ThemeScript = /* @__PURE__ */__name(({
175
- defaultTheme,
176
- defaultMode,
177
- storageKey,
178
- nonce
179
- } = {}) => {
180
- const scriptContent = getThemeScriptContent({
181
- defaultTheme,
182
- defaultMode,
183
- storageKey
184
- });
185
- return /* @__PURE__ */React.createElement("script", {
186
- nonce,
187
- dangerouslySetInnerHTML: {
188
- __html: scriptContent
189
- }
190
- });
191
- }, "ThemeScript");
192
- var ThemeStyles = /* @__PURE__ */__name(({
193
- theme,
194
- themeId,
195
- nonce
196
- }) => {
197
- return /* @__PURE__ */React.createElement("style", {
198
- nonce,
199
- dangerouslySetInnerHTML: {
200
- __html: getThemeStylesContent(theme, themeId)
201
- }
202
- });
203
- }, "ThemeStyles");
204
- var ThemeHead = /* @__PURE__ */__name(({
205
- theme,
206
- themeId,
207
- nonce,
208
- defaultMode,
209
- storageKey
210
- }) => {
211
- return /* @__PURE__ */React.createElement(React.Fragment, null, /* @__PURE__ */React.createElement(ThemeScript, {
212
- defaultTheme: themeId,
213
- defaultMode,
214
- storageKey,
215
- nonce
216
- }), /* @__PURE__ */React.createElement(ThemeStyles, {
217
- theme,
218
- themeId,
219
- nonce
220
- }));
221
- }, "ThemeHead");
222
- export { ThemeProvider, useColorMode, useTokens, useResolvedTokens, ThemeScript, ThemeStyles, ThemeHead };