tailwind-to-style 3.2.2 → 4.0.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.
Files changed (52) hide show
  1. package/README.md +221 -666
  2. package/dist/animations/index.cjs +9391 -0
  3. package/dist/animations/index.d.ts +58 -0
  4. package/dist/animations/index.esm.js +9385 -0
  5. package/dist/animations/index.esm.js.map +1 -0
  6. package/dist/className/index.cjs +9080 -0
  7. package/dist/className/index.esm.js +9075 -0
  8. package/dist/className/index.esm.js.map +1 -0
  9. package/dist/core/tws.cjs +136 -114
  10. package/dist/core/tws.cjs.map +1 -0
  11. package/dist/core/tws.esm.js +136 -114
  12. package/dist/core/tws.esm.js.map +1 -1
  13. package/dist/core/twsx.cjs +2442 -4245
  14. package/dist/core/twsx.esm.js +2442 -4245
  15. package/dist/core/twsx.esm.js.map +1 -1
  16. package/dist/core/twsxVariants.cjs +2470 -4262
  17. package/dist/core/twsxVariants.esm.js +2470 -4262
  18. package/dist/core/twsxVariants.esm.js.map +1 -1
  19. package/dist/cx.cjs +2 -2
  20. package/dist/cx.cjs.map +1 -0
  21. package/dist/cx.esm.js +2 -2
  22. package/dist/index.cjs +5128 -6057
  23. package/dist/index.cjs.map +1 -0
  24. package/dist/index.d.ts +993 -1
  25. package/dist/index.esm.js +5124 -6022
  26. package/dist/index.esm.js.map +1 -1
  27. package/dist/index.min.js +1 -1
  28. package/dist/index.min.js.map +1 -1
  29. package/dist/react/index.cjs +10177 -0
  30. package/dist/react/index.cjs.map +1 -0
  31. package/dist/react/index.d.ts +69 -0
  32. package/dist/react/index.esm.js +10173 -0
  33. package/dist/react/index.esm.js.map +1 -0
  34. package/dist/styled/index.cjs +9094 -0
  35. package/dist/styled/index.cjs.map +1 -0
  36. package/dist/styled/index.d.ts +17 -0
  37. package/dist/styled/index.esm.js +9087 -0
  38. package/dist/styled/index.esm.js.map +1 -0
  39. package/dist/tokens/index.cjs +359 -0
  40. package/dist/tokens/index.d.ts +33 -0
  41. package/dist/tokens/index.esm.js +355 -0
  42. package/dist/tokens/index.esm.js.map +1 -0
  43. package/dist/utils/index.cjs +313 -297
  44. package/dist/utils/index.esm.js +313 -297
  45. package/dist/utils/index.esm.js.map +1 -1
  46. package/package.json +38 -24
  47. package/types/animations/index.d.ts +58 -0
  48. package/types/className/index.d.ts +41 -0
  49. package/types/index.d.ts +993 -1
  50. package/types/react/index.d.ts +69 -0
  51. package/types/tokens/index.d.ts +33 -0
  52. package/types/v4.d.ts +191 -0
@@ -0,0 +1,355 @@
1
+ /**
2
+ * tailwind-to-style v4.0.0
3
+ * Zero-build runtime Tailwind CSS engine
4
+ *
5
+ * @author Bigetion
6
+ * @license MIT
7
+ */
8
+ function _arrayLikeToArray(r, a) {
9
+ (null == a || a > r.length) && (a = r.length);
10
+ for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
11
+ return n;
12
+ }
13
+ function _arrayWithHoles(r) {
14
+ if (Array.isArray(r)) return r;
15
+ }
16
+ function _defineProperty(e, r, t) {
17
+ return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
18
+ value: t,
19
+ enumerable: true,
20
+ configurable: true,
21
+ writable: true
22
+ }) : e[r] = t, e;
23
+ }
24
+ function _iterableToArrayLimit(r, l) {
25
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
26
+ if (null != t) {
27
+ var e,
28
+ n,
29
+ i,
30
+ u,
31
+ a = [],
32
+ f = true,
33
+ o = false;
34
+ try {
35
+ if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
36
+ } catch (r) {
37
+ o = true, n = r;
38
+ } finally {
39
+ try {
40
+ if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
41
+ } finally {
42
+ if (o) throw n;
43
+ }
44
+ }
45
+ return a;
46
+ }
47
+ }
48
+ function _nonIterableRest() {
49
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
50
+ }
51
+ function ownKeys(e, r) {
52
+ var t = Object.keys(e);
53
+ if (Object.getOwnPropertySymbols) {
54
+ var o = Object.getOwnPropertySymbols(e);
55
+ r && (o = o.filter(function (r) {
56
+ return Object.getOwnPropertyDescriptor(e, r).enumerable;
57
+ })), t.push.apply(t, o);
58
+ }
59
+ return t;
60
+ }
61
+ function _objectSpread2(e) {
62
+ for (var r = 1; r < arguments.length; r++) {
63
+ var t = null != arguments[r] ? arguments[r] : {};
64
+ r % 2 ? ownKeys(Object(t), true).forEach(function (r) {
65
+ _defineProperty(e, r, t[r]);
66
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
67
+ Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
68
+ });
69
+ }
70
+ return e;
71
+ }
72
+ function _slicedToArray(r, e) {
73
+ return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
74
+ }
75
+ function _toPrimitive(t, r) {
76
+ if ("object" != typeof t || !t) return t;
77
+ var e = t[Symbol.toPrimitive];
78
+ if (void 0 !== e) {
79
+ var i = e.call(t, r);
80
+ if ("object" != typeof i) return i;
81
+ throw new TypeError("@@toPrimitive must return a primitive value.");
82
+ }
83
+ return ("string" === r ? String : Number)(t);
84
+ }
85
+ function _toPropertyKey(t) {
86
+ var i = _toPrimitive(t, "string");
87
+ return "symbol" == typeof i ? i : i + "";
88
+ }
89
+ function _unsupportedIterableToArray(r, a) {
90
+ if (r) {
91
+ if ("string" == typeof r) return _arrayLikeToArray(r, a);
92
+ var t = {}.toString.call(r).slice(8, -1);
93
+ return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
94
+ }
95
+ }
96
+
97
+ /**
98
+ * tailwind-to-style/tokens — Design Token System
99
+ *
100
+ * Provides CSS variable-based theming with a globalThis singleton registry.
101
+ * Tokens are injected as CSS custom properties on :root.
102
+ *
103
+ * @module tailwind-to-style/tokens
104
+ */
105
+
106
+ // ============================================================================
107
+ // Singleton Registry (globalThis)
108
+ // ============================================================================
109
+
110
+ const REGISTRY_KEY = '__TWS_TOKEN_REGISTRY__';
111
+ function getRegistry() {
112
+ if (!globalThis[REGISTRY_KEY]) {
113
+ globalThis[REGISTRY_KEY] = {
114
+ tokens: {},
115
+ themes: {},
116
+ activeTheme: null,
117
+ subscribers: new Set(),
118
+ styleElement: null
119
+ };
120
+ }
121
+ return globalThis[REGISTRY_KEY];
122
+ }
123
+
124
+ // ============================================================================
125
+ // Token Registry API
126
+ // ============================================================================
127
+
128
+ /**
129
+ * The token registry — get, set, subscribe to token changes.
130
+ */
131
+ const tokenRegistry = {
132
+ /**
133
+ * Get a token value by path (dot notation).
134
+ * @param {string} path - Token path, e.g. "colors.primary"
135
+ * @returns {string|undefined} Token value
136
+ */
137
+ get(path) {
138
+ const registry = getRegistry();
139
+ const keys = path.split('.');
140
+ let current = registry.tokens;
141
+ for (const key of keys) {
142
+ if (current === undefined || current === null) return undefined;
143
+ current = current[key];
144
+ }
145
+ return current;
146
+ },
147
+ /**
148
+ * Set a token value by path. Triggers subscribers and updates CSS.
149
+ * @param {string} path - Token path, e.g. "colors.primary"
150
+ * @param {string} value - Token value
151
+ */
152
+ set(path, value) {
153
+ const registry = getRegistry();
154
+ const keys = path.split('.');
155
+ let current = registry.tokens;
156
+ for (let i = 0; i < keys.length - 1; i++) {
157
+ if (!(keys[i] in current) || typeof current[keys[i]] !== 'object') {
158
+ current[keys[i]] = {};
159
+ }
160
+ current = current[keys[i]];
161
+ }
162
+ current[keys[keys.length - 1]] = value;
163
+ notifySubscribers();
164
+ injectTokenCSS();
165
+ },
166
+ /**
167
+ * Subscribe to token changes.
168
+ * @param {Function} callback - Called when tokens change
169
+ * @returns {Function} Unsubscribe function
170
+ */
171
+ subscribe(callback) {
172
+ const registry = getRegistry();
173
+ registry.subscribers.add(callback);
174
+ return () => registry.subscribers.delete(callback);
175
+ },
176
+ /**
177
+ * Get all tokens as a flat CSS custom properties string.
178
+ * @returns {string} CSS string with custom properties
179
+ */
180
+ toCSS() {
181
+ const registry = getRegistry();
182
+ const vars = flattenTokens(registry.tokens, '--tws');
183
+ if (vars.length === 0) return '';
184
+ return ":root {\n".concat(vars.map(_ref => {
185
+ let _ref2 = _slicedToArray(_ref, 2),
186
+ k = _ref2[0],
187
+ v = _ref2[1];
188
+ return " ".concat(k, ": ").concat(v, ";");
189
+ }).join('\n'), "\n}");
190
+ },
191
+ /**
192
+ * Get all registered tokens as a plain object.
193
+ * @returns {Object} Token tree
194
+ */
195
+ getAll() {
196
+ return _objectSpread2({}, getRegistry().tokens);
197
+ },
198
+ /**
199
+ * Clear all tokens.
200
+ */
201
+ clear() {
202
+ const registry = getRegistry();
203
+ registry.tokens = {};
204
+ registry.activeTheme = null;
205
+ notifySubscribers();
206
+ injectTokenCSS();
207
+ }
208
+ };
209
+
210
+ // ============================================================================
211
+ // createTheme()
212
+ // ============================================================================
213
+
214
+ /**
215
+ * Create and activate a theme by injecting CSS custom properties.
216
+ *
217
+ * @param {Object} tokens - Token definition object (nested)
218
+ * @param {Object} [options] - Options
219
+ * @param {string} [options.name] - Theme name for reference
220
+ * @param {string} [options.selector] - CSS selector to scope theme (default: ":root")
221
+ * @returns {Object} Theme object with name and token values
222
+ *
223
+ * @example
224
+ * createTheme({
225
+ * colors: { primary: '#3b82f6', secondary: '#8b5cf6' },
226
+ * spacing: { sm: '0.5rem', md: '1rem', lg: '1.5rem' },
227
+ * radius: { sm: '0.25rem', md: '0.5rem' },
228
+ * });
229
+ * // Injects: --tws-colors-primary: #3b82f6; --tws-colors-secondary: #8b5cf6; ...
230
+ */
231
+ function createTheme(tokens) {
232
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
233
+ const _options$name = options.name,
234
+ name = _options$name === void 0 ? 'default' : _options$name,
235
+ _options$selector = options.selector,
236
+ selector = _options$selector === void 0 ? ':root' : _options$selector;
237
+ const registry = getRegistry();
238
+
239
+ // Merge tokens into registry
240
+ deepMerge(registry.tokens, tokens);
241
+ registry.activeTheme = name;
242
+ registry.themes[name] = {
243
+ tokens: _objectSpread2({}, tokens),
244
+ selector
245
+ };
246
+ notifySubscribers();
247
+ injectTokenCSS(selector);
248
+ return {
249
+ name,
250
+ tokens,
251
+ selector,
252
+ /** Get a CSS variable reference for use in styles */
253
+ var(path) {
254
+ return "var(--tws-".concat(path.replace(/\./g, '-'), ")");
255
+ }
256
+ };
257
+ }
258
+
259
+ /**
260
+ * Switch to a previously defined theme.
261
+ * @param {string} name - Theme name
262
+ */
263
+ function activateTheme(name) {
264
+ const registry = getRegistry();
265
+ const theme = registry.themes[name];
266
+ if (!theme) {
267
+ throw new Error("[tailwind-to-style/tokens] Theme \"".concat(name, "\" not found."));
268
+ }
269
+ registry.tokens = _objectSpread2({}, theme.tokens);
270
+ registry.activeTheme = name;
271
+ notifySubscribers();
272
+ injectTokenCSS(theme.selector);
273
+ }
274
+
275
+ /**
276
+ * Get a CSS variable reference string for a token path.
277
+ * @param {string} path - Token path (dot notation)
278
+ * @param {string} [fallback] - Fallback value
279
+ * @returns {string} CSS var() expression
280
+ */
281
+ function token(path, fallback) {
282
+ const varName = "--tws-".concat(path.replace(/\./g, '-'));
283
+ return fallback ? "var(".concat(varName, ", ").concat(fallback, ")") : "var(".concat(varName, ")");
284
+ }
285
+
286
+ // ============================================================================
287
+ // Internal Helpers
288
+ // ============================================================================
289
+
290
+ function flattenTokens(obj, prefix) {
291
+ const result = [];
292
+ for (const _ref3 of Object.entries(obj)) {
293
+ var _ref4 = _slicedToArray(_ref3, 2);
294
+ const key = _ref4[0];
295
+ const value = _ref4[1];
296
+ const varName = "".concat(prefix, "-").concat(key);
297
+ if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
298
+ result.push(...flattenTokens(value, varName));
299
+ } else {
300
+ result.push([varName, value]);
301
+ }
302
+ }
303
+ return result;
304
+ }
305
+ function deepMerge(target, source) {
306
+ for (const _ref5 of Object.entries(source)) {
307
+ var _ref6 = _slicedToArray(_ref5, 2);
308
+ const key = _ref6[0];
309
+ const value = _ref6[1];
310
+ if (typeof value === 'object' && value !== null && !Array.isArray(value) && typeof target[key] === 'object' && target[key] !== null) {
311
+ deepMerge(target[key], value);
312
+ } else {
313
+ // Deep clone objects to avoid mutating the source
314
+ target[key] = typeof value === 'object' && value !== null && !Array.isArray(value) ? deepMerge({}, value) : value;
315
+ }
316
+ }
317
+ return target;
318
+ }
319
+ function notifySubscribers() {
320
+ const registry = getRegistry();
321
+ for (const fn of registry.subscribers) {
322
+ try {
323
+ fn(registry.tokens);
324
+ } catch (e) {
325
+ // Ignore subscriber errors
326
+ }
327
+ }
328
+ }
329
+ function injectTokenCSS() {
330
+ let selector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ':root';
331
+ if (typeof document === 'undefined') return;
332
+ const registry = getRegistry();
333
+ const vars = flattenTokens(registry.tokens, '--tws');
334
+ if (vars.length === 0) {
335
+ if (registry.styleElement) {
336
+ registry.styleElement.textContent = '';
337
+ }
338
+ return;
339
+ }
340
+ const css = "".concat(selector, " {\n").concat(vars.map(_ref7 => {
341
+ let _ref8 = _slicedToArray(_ref7, 2),
342
+ k = _ref8[0],
343
+ v = _ref8[1];
344
+ return " ".concat(k, ": ").concat(v, ";");
345
+ }).join('\n'), "\n}");
346
+ if (!registry.styleElement) {
347
+ registry.styleElement = document.createElement('style');
348
+ registry.styleElement.setAttribute('data-tws-tokens', '');
349
+ document.head.appendChild(registry.styleElement);
350
+ }
351
+ registry.styleElement.textContent = css;
352
+ }
353
+
354
+ export { activateTheme, createTheme, token, tokenRegistry };
355
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../../src/tokens/index.js"],"sourcesContent":["/**\r\n * tailwind-to-style/tokens — Design Token System\r\n *\r\n * Provides CSS variable-based theming with a globalThis singleton registry.\r\n * Tokens are injected as CSS custom properties on :root.\r\n *\r\n * @module tailwind-to-style/tokens\r\n */\r\n\r\n// ============================================================================\r\n// Singleton Registry (globalThis)\r\n// ============================================================================\r\n\r\nconst REGISTRY_KEY = '__TWS_TOKEN_REGISTRY__';\r\n\r\nfunction getRegistry() {\r\n if (!globalThis[REGISTRY_KEY]) {\r\n globalThis[REGISTRY_KEY] = {\r\n tokens: {},\r\n themes: {},\r\n activeTheme: null,\r\n subscribers: new Set(),\r\n styleElement: null,\r\n };\r\n }\r\n return globalThis[REGISTRY_KEY];\r\n}\r\n\r\n// ============================================================================\r\n// Token Registry API\r\n// ============================================================================\r\n\r\n/**\r\n * The token registry — get, set, subscribe to token changes.\r\n */\r\nexport const tokenRegistry = {\r\n /**\r\n * Get a token value by path (dot notation).\r\n * @param {string} path - Token path, e.g. \"colors.primary\"\r\n * @returns {string|undefined} Token value\r\n */\r\n get(path) {\r\n const registry = getRegistry();\r\n const keys = path.split('.');\r\n let current = registry.tokens;\r\n for (const key of keys) {\r\n if (current === undefined || current === null) return undefined;\r\n current = current[key];\r\n }\r\n return current;\r\n },\r\n\r\n /**\r\n * Set a token value by path. Triggers subscribers and updates CSS.\r\n * @param {string} path - Token path, e.g. \"colors.primary\"\r\n * @param {string} value - Token value\r\n */\r\n set(path, value) {\r\n const registry = getRegistry();\r\n const keys = path.split('.');\r\n let current = registry.tokens;\r\n for (let i = 0; i < keys.length - 1; i++) {\r\n if (!(keys[i] in current) || typeof current[keys[i]] !== 'object') {\r\n current[keys[i]] = {};\r\n }\r\n current = current[keys[i]];\r\n }\r\n current[keys[keys.length - 1]] = value;\r\n notifySubscribers();\r\n injectTokenCSS();\r\n },\r\n\r\n /**\r\n * Subscribe to token changes.\r\n * @param {Function} callback - Called when tokens change\r\n * @returns {Function} Unsubscribe function\r\n */\r\n subscribe(callback) {\r\n const registry = getRegistry();\r\n registry.subscribers.add(callback);\r\n return () => registry.subscribers.delete(callback);\r\n },\r\n\r\n /**\r\n * Get all tokens as a flat CSS custom properties string.\r\n * @returns {string} CSS string with custom properties\r\n */\r\n toCSS() {\r\n const registry = getRegistry();\r\n const vars = flattenTokens(registry.tokens, '--tws');\r\n if (vars.length === 0) return '';\r\n return `:root {\\n${vars.map(([k, v]) => ` ${k}: ${v};`).join('\\n')}\\n}`;\r\n },\r\n\r\n /**\r\n * Get all registered tokens as a plain object.\r\n * @returns {Object} Token tree\r\n */\r\n getAll() {\r\n return { ...getRegistry().tokens };\r\n },\r\n\r\n /**\r\n * Clear all tokens.\r\n */\r\n clear() {\r\n const registry = getRegistry();\r\n registry.tokens = {};\r\n registry.activeTheme = null;\r\n notifySubscribers();\r\n injectTokenCSS();\r\n },\r\n};\r\n\r\n// ============================================================================\r\n// createTheme()\r\n// ============================================================================\r\n\r\n/**\r\n * Create and activate a theme by injecting CSS custom properties.\r\n *\r\n * @param {Object} tokens - Token definition object (nested)\r\n * @param {Object} [options] - Options\r\n * @param {string} [options.name] - Theme name for reference\r\n * @param {string} [options.selector] - CSS selector to scope theme (default: \":root\")\r\n * @returns {Object} Theme object with name and token values\r\n *\r\n * @example\r\n * createTheme({\r\n * colors: { primary: '#3b82f6', secondary: '#8b5cf6' },\r\n * spacing: { sm: '0.5rem', md: '1rem', lg: '1.5rem' },\r\n * radius: { sm: '0.25rem', md: '0.5rem' },\r\n * });\r\n * // Injects: --tws-colors-primary: #3b82f6; --tws-colors-secondary: #8b5cf6; ...\r\n */\r\nexport function createTheme(tokens, options = {}) {\r\n const { name = 'default', selector = ':root' } = options;\r\n const registry = getRegistry();\r\n\r\n // Merge tokens into registry\r\n deepMerge(registry.tokens, tokens);\r\n registry.activeTheme = name;\r\n registry.themes[name] = { tokens: { ...tokens }, selector };\r\n\r\n notifySubscribers();\r\n injectTokenCSS(selector);\r\n\r\n return {\r\n name,\r\n tokens,\r\n selector,\r\n /** Get a CSS variable reference for use in styles */\r\n var(path) {\r\n return `var(--tws-${path.replace(/\\./g, '-')})`;\r\n },\r\n };\r\n}\r\n\r\n/**\r\n * Switch to a previously defined theme.\r\n * @param {string} name - Theme name\r\n */\r\nexport function activateTheme(name) {\r\n const registry = getRegistry();\r\n const theme = registry.themes[name];\r\n if (!theme) {\r\n throw new Error(`[tailwind-to-style/tokens] Theme \"${name}\" not found.`);\r\n }\r\n\r\n registry.tokens = { ...theme.tokens };\r\n registry.activeTheme = name;\r\n notifySubscribers();\r\n injectTokenCSS(theme.selector);\r\n}\r\n\r\n/**\r\n * Get a CSS variable reference string for a token path.\r\n * @param {string} path - Token path (dot notation)\r\n * @param {string} [fallback] - Fallback value\r\n * @returns {string} CSS var() expression\r\n */\r\nexport function token(path, fallback) {\r\n const varName = `--tws-${path.replace(/\\./g, '-')}`;\r\n return fallback ? `var(${varName}, ${fallback})` : `var(${varName})`;\r\n}\r\n\r\n// ============================================================================\r\n// Internal Helpers\r\n// ============================================================================\r\n\r\nfunction flattenTokens(obj, prefix) {\r\n const result = [];\r\n for (const [key, value] of Object.entries(obj)) {\r\n const varName = `${prefix}-${key}`;\r\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\r\n result.push(...flattenTokens(value, varName));\r\n } else {\r\n result.push([varName, value]);\r\n }\r\n }\r\n return result;\r\n}\r\n\r\nfunction deepMerge(target, source) {\r\n for (const [key, value] of Object.entries(source)) {\r\n if (\r\n typeof value === 'object' &&\r\n value !== null &&\r\n !Array.isArray(value) &&\r\n typeof target[key] === 'object' &&\r\n target[key] !== null\r\n ) {\r\n deepMerge(target[key], value);\r\n } else {\r\n // Deep clone objects to avoid mutating the source\r\n target[key] = (typeof value === 'object' && value !== null && !Array.isArray(value))\r\n ? deepMerge({}, value)\r\n : value;\r\n }\r\n }\r\n return target;\r\n}\r\n\r\nfunction notifySubscribers() {\r\n const registry = getRegistry();\r\n for (const fn of registry.subscribers) {\r\n try {\r\n fn(registry.tokens);\r\n } catch (e) {\r\n // Ignore subscriber errors\r\n }\r\n }\r\n}\r\n\r\nfunction injectTokenCSS(selector = ':root') {\r\n if (typeof document === 'undefined') return;\r\n\r\n const registry = getRegistry();\r\n const vars = flattenTokens(registry.tokens, '--tws');\r\n\r\n if (vars.length === 0) {\r\n if (registry.styleElement) {\r\n registry.styleElement.textContent = '';\r\n }\r\n return;\r\n }\r\n\r\n const css = `${selector} {\\n${vars.map(([k, v]) => ` ${k}: ${v};`).join('\\n')}\\n}`;\r\n\r\n if (!registry.styleElement) {\r\n registry.styleElement = document.createElement('style');\r\n registry.styleElement.setAttribute('data-tws-tokens', '');\r\n document.head.appendChild(registry.styleElement);\r\n }\r\n\r\n registry.styleElement.textContent = css;\r\n}\r\n"],"names":["REGISTRY_KEY","getRegistry","globalThis","tokens","themes","activeTheme","subscribers","Set","styleElement","tokenRegistry","get","path","registry","keys","split","current","key","undefined","set","value","i","length","notifySubscribers","injectTokenCSS","subscribe","callback","add","delete","toCSS","vars","flattenTokens","concat","map","_ref","_ref2","_slicedToArray","k","v","join","getAll","_objectSpread","clear","createTheme","options","arguments","_options$name","name","_options$selector","selector","deepMerge","var","replace","activateTheme","theme","Error","token","fallback","varName","obj","prefix","result","_ref3","Object","entries","_ref4","Array","isArray","push","target","source","_ref5","_ref6","fn","e","document","textContent","css","_ref7","_ref8","createElement","setAttribute","head","appendChild"],"mappings":"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"}