@unocss/preset-wind4 66.1.0-beta.4 → 66.1.0-beta.6

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/index.d.mts CHANGED
@@ -3,7 +3,7 @@ import { Postprocessor, Preflight, Variant, PresetOptions } from '@unocss/core';
3
3
  import { T as Theme } from './shared/preset-wind4.MiZzPO05.mjs';
4
4
  export { r as rules } from './shared/preset-wind4.DIUjJahF.mjs';
5
5
  export { shortcuts } from './shortcuts.mjs';
6
- export { t as theme } from './shared/preset-wind4.pue_BigB.mjs';
6
+ export { t as theme } from './shared/preset-wind4.BOe5kxIw.mjs';
7
7
 
8
8
  declare function postprocessors(options: PresetWind4Options): Postprocessor[];
9
9
 
@@ -63,10 +63,6 @@ interface PresetWind4Options extends PresetOptions {
63
63
  * @default true
64
64
  */
65
65
  arbitraryVariants?: boolean;
66
- /**
67
- * Choose which theme keys to export as CSS variables.
68
- */
69
- themeKeys?: string[] | ((keys: string[]) => string[]);
70
66
  /**
71
67
  * The important option lets you control whether UnoCSS’s utilities should be marked with `!important`.
72
68
  *
@@ -85,6 +81,16 @@ interface PresetWind4Options extends PresetOptions {
85
81
  * @default true
86
82
  */
87
83
  reset?: boolean;
84
+ /**
85
+ * Generate theme keys as CSS variables.
86
+ *
87
+ * - `true`: Generate theme keys fully.
88
+ * - `false`: Disable theme keys. (Not recommended ⚠️)
89
+ * - `'on-demand'`: Generate theme keys only when used.
90
+ *
91
+ * @default 'on-demand'
92
+ */
93
+ themeVariable?: boolean | 'on-demand';
88
94
  }
89
95
  declare const presetWind4: _unocss_core.PresetFactory<Theme, PresetWind4Options>;
90
96
 
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@ import { Postprocessor, Preflight, Variant, PresetOptions } from '@unocss/core';
3
3
  import { T as Theme } from './shared/preset-wind4.MiZzPO05.js';
4
4
  export { r as rules } from './shared/preset-wind4.BJEl798_.js';
5
5
  export { shortcuts } from './shortcuts.js';
6
- export { t as theme } from './shared/preset-wind4.pue_BigB.js';
6
+ export { t as theme } from './shared/preset-wind4.BOe5kxIw.js';
7
7
 
8
8
  declare function postprocessors(options: PresetWind4Options): Postprocessor[];
9
9
 
@@ -63,10 +63,6 @@ interface PresetWind4Options extends PresetOptions {
63
63
  * @default true
64
64
  */
65
65
  arbitraryVariants?: boolean;
66
- /**
67
- * Choose which theme keys to export as CSS variables.
68
- */
69
- themeKeys?: string[] | ((keys: string[]) => string[]);
70
66
  /**
71
67
  * The important option lets you control whether UnoCSS’s utilities should be marked with `!important`.
72
68
  *
@@ -85,6 +81,16 @@ interface PresetWind4Options extends PresetOptions {
85
81
  * @default true
86
82
  */
87
83
  reset?: boolean;
84
+ /**
85
+ * Generate theme keys as CSS variables.
86
+ *
87
+ * - `true`: Generate theme keys fully.
88
+ * - `false`: Disable theme keys. (Not recommended ⚠️)
89
+ * - `'on-demand'`: Generate theme keys only when used.
90
+ *
91
+ * @default 'on-demand'
92
+ */
93
+ themeVariable?: boolean | 'on-demand';
88
94
  }
89
95
  declare const presetWind4: _unocss_core.PresetFactory<Theme, PresetWind4Options>;
90
96
 
package/dist/index.mjs CHANGED
@@ -1,15 +1,14 @@
1
1
  import { LAYER_PREFLIGHTS, definePreset } from '@unocss/core';
2
2
  import { extractorArbitraryVariants } from '@unocss/extractor-arbitrary-variants';
3
- import { F as compressCSS, E as camelToHyphen, g as globalKeywords } from './shared/preset-wind4.D40diWvF.mjs';
3
+ import { a as themeTracking, J as compressCSS, P as PRESET_NAME, I as hyphenate, p as passThemeKey, g as globalKeywords, t as trackedTheme } from './shared/preset-wind4.47ZKbxbU.mjs';
4
4
  import { alphaPlaceholdersRE } from '@unocss/rule-utils';
5
- import { p as passThemeKey } from './shared/preset-wind4.DRtKeBWc.mjs';
6
5
  import { postprocessors } from './postprocess.mjs';
7
- import { l as variants } from './shared/preset-wind4.BxOT-c8M.mjs';
6
+ import { l as variants } from './shared/preset-wind4.fVfslvMN.mjs';
8
7
  import { theme as theme$1 } from './theme.mjs';
9
- import { s as shortcuts } from './shared/preset-wind4.Bv7psfuU.mjs';
10
- import { r as rules } from './shared/preset-wind4.BJgjgPep.mjs';
8
+ import { s as shortcuts } from './shared/preset-wind4.BvXCZB8z.mjs';
9
+ import { r as rules } from './shared/preset-wind4.We0XxImM.mjs';
11
10
  import './colors.mjs';
12
- import './shared/preset-wind4.DRtfClGs.mjs';
11
+ import './shared/preset-wind4.39lqTMpc.mjs';
13
12
 
14
13
  const resetCSS = `
15
14
  /*
@@ -397,52 +396,55 @@ input:where([type='button'], [type='reset'], [type='submit']),
397
396
  }
398
397
  `;
399
398
  function reset(options) {
400
- return options.reset === false ? void 0 : {
401
- getCSS: () => compressCSS(resetCSS),
399
+ if (options.reset === false)
400
+ return void 0;
401
+ return {
402
+ getCSS: () => {
403
+ themeTracking("font", "sans");
404
+ themeTracking("font", "mono");
405
+ themeTracking("defaults", ["font", "family"]);
406
+ themeTracking("defaults", ["font", "featureSettings"]);
407
+ themeTracking("defaults", ["font", "variationSettings"]);
408
+ themeTracking("defaults", ["monoFont", "family"]);
409
+ themeTracking("defaults", ["monoFont", "featureSettings"]);
410
+ themeTracking("defaults", ["monoFont", "variationSettings"]);
411
+ return compressCSS(resetCSS);
412
+ },
402
413
  layer: LAYER_PREFLIGHTS
403
414
  };
404
415
  }
405
416
 
406
- const DefaultCssVarKeys = [
407
- "font",
408
- "colors",
409
- // 'spacing', // spacing is a special case
417
+ const ExcludeCssVarKeys = [
418
+ "spacing",
410
419
  "breakpoint",
411
420
  "verticalBreakpoint",
412
- "container",
413
- "text",
414
- "fontWeight",
415
- "tracking",
416
- "leading",
417
- "textStrokeWidth",
418
- "radius",
419
421
  "shadow",
420
422
  "insetShadow",
421
423
  "dropShadow",
422
424
  "textShadow",
423
- "ease",
424
- "blur",
425
- "perspective",
425
+ "animation",
426
426
  "property",
427
- "defaults"
427
+ "aria",
428
+ "media",
429
+ "supports"
428
430
  ];
429
431
  function themeToCSSVars(theme2, keys) {
430
432
  let cssVariables = "";
431
433
  function process(obj, prefix) {
432
434
  for (const key in obj) {
433
435
  if (key === "DEFAULT" && Object.keys(obj).length === 1) {
434
- cssVariables += `${camelToHyphen(`--${prefix}`)}: ${obj[key].replace(alphaPlaceholdersRE, "1")};
436
+ cssVariables += `${hyphenate(`--${prefix}`)}: ${obj[key].replace(alphaPlaceholdersRE, "1")};
435
437
  `;
436
438
  }
437
439
  if (passThemeKey.includes(key))
438
440
  continue;
439
441
  if (Array.isArray(obj[key])) {
440
- cssVariables += `${camelToHyphen(`--${prefix}-${key}`)}: ${obj[key].join(",").replace(alphaPlaceholdersRE, "1")};
442
+ cssVariables += `${hyphenate(`--${prefix}-${key}`)}: ${obj[key].join(",").replace(alphaPlaceholdersRE, "1")};
441
443
  `;
442
444
  } else if (typeof obj[key] === "object") {
443
445
  process(obj[key], `${prefix}-${key}`);
444
446
  } else {
445
- cssVariables += `${camelToHyphen(`--${prefix}-${key}`)}: ${obj[key].replace(alphaPlaceholdersRE, "1")};
447
+ cssVariables += `${hyphenate(`--${prefix}-${key}`)}: ${obj[key].replace(alphaPlaceholdersRE, "1")};
446
448
  `;
447
449
  }
448
450
  }
@@ -455,28 +457,44 @@ function themeToCSSVars(theme2, keys) {
455
457
  return cssVariables;
456
458
  }
457
459
  function theme(options) {
458
- let themeKeys;
459
- if (typeof options.themeKeys === "function") {
460
- themeKeys = options.themeKeys(DefaultCssVarKeys);
461
- } else {
462
- themeKeys = options.themeKeys ?? DefaultCssVarKeys;
463
- }
464
460
  return {
465
461
  layer: "theme",
466
- getCSS({ theme: theme2 }) {
467
- return compressCSS(`
462
+ getCSS({ theme: theme2, generator }) {
463
+ if (options.themeVariable === false) {
464
+ return void 0;
465
+ } else if (options.themeVariable === "on-demand") {
466
+ const self = generator.config.presets.find((p) => p.name === PRESET_NAME);
467
+ if (!self || self.meta.themeDeps.size === 0)
468
+ return;
469
+ const depCSS = Array.from(self.meta.themeDeps).map((k) => {
470
+ const [key, prop] = k.split(":");
471
+ const props = prop.split("-");
472
+ const v = props.reduce((o, p) => o?.[p], theme2[key]);
473
+ if (v) {
474
+ return `--${hyphenate(`${key}${prop !== "DEFAULT" ? `-${prop}` : ""}`)}: ${v};`;
475
+ }
476
+ return void 0;
477
+ });
478
+ return compressCSS(`
479
+ :root {
480
+ ${depCSS.filter(Boolean).join("\n")}
481
+ }`);
482
+ } else {
483
+ const keys = Object.keys(theme2).filter((k) => !ExcludeCssVarKeys.includes(k));
484
+ return compressCSS(`
468
485
  :root {
469
486
  --spacing: ${theme2.spacing.DEFAULT};
470
- ${themeToCSSVars(theme2, themeKeys).trim()}
487
+ ${themeToCSSVars(theme2, keys).trim()}
471
488
  }`);
489
+ }
472
490
  }
473
491
  };
474
492
  }
475
493
 
476
494
  const preflights = (options) => {
477
495
  return [
478
- theme(options),
479
- reset(options)
496
+ reset(options),
497
+ theme(options)
480
498
  ].filter(Boolean);
481
499
  };
482
500
 
@@ -496,8 +514,9 @@ const presetWind4 = definePreset((options = {}) => {
496
514
  options.attributifyPseudo = options.attributifyPseudo ?? false;
497
515
  options.variablePrefix = options.variablePrefix ?? "un-";
498
516
  options.important = options.important ?? false;
517
+ options.themeVariable = options.themeVariable ?? "on-demand";
499
518
  return {
500
- name: "@unocss/preset-wind4",
519
+ name: PRESET_NAME,
501
520
  rules,
502
521
  shortcuts,
503
522
  theme: theme$1,
@@ -512,7 +531,13 @@ const presetWind4 = definePreset((options = {}) => {
512
531
  autocomplete: {
513
532
  shorthands
514
533
  },
515
- options
534
+ options,
535
+ meta: {
536
+ themeDeps: trackedTheme
537
+ },
538
+ configResolved() {
539
+ trackedTheme.clear();
540
+ }
516
541
  };
517
542
  });
518
543
 
@@ -4,7 +4,7 @@ import { Postprocessor } from '@unocss/core';
4
4
  import './shared/preset-wind4.MiZzPO05.mjs';
5
5
  import './shared/preset-wind4.DIUjJahF.mjs';
6
6
  import './shortcuts.mjs';
7
- import './shared/preset-wind4.pue_BigB.mjs';
7
+ import './shared/preset-wind4.BOe5kxIw.mjs';
8
8
 
9
9
  declare function important(option: PresetWind4Options['important']): Postprocessor[];
10
10
 
@@ -4,7 +4,7 @@ import { Postprocessor } from '@unocss/core';
4
4
  import './shared/preset-wind4.MiZzPO05.js';
5
5
  import './shared/preset-wind4.BJEl798_.js';
6
6
  import './shortcuts.js';
7
- import './shared/preset-wind4.pue_BigB.js';
7
+ import './shared/preset-wind4.BOe5kxIw.js';
8
8
 
9
9
  declare function important(option: PresetWind4Options['important']): Postprocessor[];
10
10
 
package/dist/rules.mjs CHANGED
@@ -1,6 +1,5 @@
1
- export { d as accents, am as accessibility, H as alignments, a as animations, c as appearance, _ as appearances, U as aspectRatio, aj as backgroundBlendModes, b as backgroundStyles, m as bgColors, g as borderStyles, h as borders, S as boxShadows, N as boxSizing, a7 as breaks, e as carets, n as colorScheme, p as columns, a0 as contains, a5 as contentVisibility, a6 as contents, aB as cssProperty, aA as cssVariables, $ as cursors, Z as displays, u as divides, al as dynamicViewportHeight, x as filters, y as flex, J as flexGridJustifiesAlignments, L as floats, ac as fontSmoothings, ab as fontStyles, ay as fontVariantNumeric, at as fonts, z as gaps, A as grids, j as handlerBorderStyle, ad as hyphens, i as imageRenderings, K as insets, ah as isolations, F as justifies, C as lineClamps, l as listStyle, W as margins, ak as mixBlendModes, Y as notLastChildSelector, ai as objectPositions, k as opacity, G as orders, o as outline, B as overflows, f as overscrolls, V as paddings, D as placeholders, I as placements, a1 as pointerEvents, E as positions, O as questionMark, a2 as resizes, P as rings, r as rules, ag as screenReadersAccess, s as scrollBehaviors, Q as scrolls, R as shadowProperties, T as sizes, X as spaces, az as splitShorthand, an as svgUtilities, au as tabSizes, ao as tables, t as textAligns, q as textDecorations, av as textIndents, a9 as textOverflows, ax as textShadows, aw as textStrokes, aa as textTransforms, a8 as textWraps, ap as touchActions, aq as transformBase, ar as transforms, as as transitions, a3 as userSelects, v as verticalAligns, aC as viewTransition, a4 as whitespaces, w as willChange, ae as writingModes, af as writingOrientations, M as zIndexes } from './shared/preset-wind4.BJgjgPep.mjs';
2
- export { a as container, c as containerParent, b as containerShortcuts } from './shared/preset-wind4.DRtfClGs.mjs';
3
- import './shared/preset-wind4.D40diWvF.mjs';
1
+ export { d as accents, am as accessibility, H as alignments, a as animations, c as appearance, _ as appearances, U as aspectRatio, aj as backgroundBlendModes, b as backgroundStyles, m as bgColors, g as borderStyles, h as borders, S as boxShadows, N as boxSizing, a7 as breaks, e as carets, n as colorScheme, p as columns, a0 as contains, a5 as contentVisibility, a6 as contents, aB as cssProperty, aA as cssVariables, $ as cursors, Z as displays, u as divides, al as dynamicViewportHeight, x as filters, y as flex, J as flexGridJustifiesAlignments, L as floats, ac as fontSmoothings, ab as fontStyles, ay as fontVariantNumeric, at as fonts, z as gaps, A as grids, j as handlerBorderStyle, ad as hyphens, i as imageRenderings, K as insets, ah as isolations, F as justifies, C as lineClamps, l as listStyle, W as margins, ak as mixBlendModes, Y as notLastChildSelector, ai as objectPositions, k as opacity, G as orders, o as outline, B as overflows, f as overscrolls, V as paddings, D as placeholders, I as placements, a1 as pointerEvents, E as positions, O as questionMark, a2 as resizes, P as rings, r as rules, ag as screenReadersAccess, s as scrollBehaviors, Q as scrolls, R as shadowProperties, T as sizes, X as spaces, az as splitShorthand, an as svgUtilities, au as tabSizes, ao as tables, t as textAligns, q as textDecorations, av as textIndents, a9 as textOverflows, ax as textShadows, aw as textStrokes, aa as textTransforms, a8 as textWraps, ap as touchActions, aq as transformBase, ar as transforms, as as transitions, a3 as userSelects, v as verticalAligns, aC as viewTransition, a4 as whitespaces, w as willChange, ae as writingModes, af as writingOrientations, M as zIndexes } from './shared/preset-wind4.We0XxImM.mjs';
2
+ export { a as container, c as containerParent, b as containerShortcuts } from './shared/preset-wind4.39lqTMpc.mjs';
3
+ import './shared/preset-wind4.47ZKbxbU.mjs';
4
4
  import '@unocss/core';
5
5
  import '@unocss/rule-utils';
6
- import './shared/preset-wind4.DRtKeBWc.mjs';
@@ -1,5 +1,5 @@
1
1
  import { isString } from '@unocss/core';
2
- import { w as resolveBreakpoints } from './preset-wind4.D40diWvF.mjs';
2
+ import { A as resolveBreakpoints } from './preset-wind4.47ZKbxbU.mjs';
3
3
 
4
4
  const containerParent = [
5
5
  [/^@container(?:\/(\w+))?(?:-(normal))?$/, ([, l, v]) => {
@@ -1,6 +1,16 @@
1
- import { escapeSelector, toArray } from '@unocss/core';
1
+ import { toArray, escapeSelector } from '@unocss/core';
2
2
  import { createValueHandler, parseCssColor, getStringComponents, colorToString, getStringComponent } from '@unocss/rule-utils';
3
3
 
4
+ const PRESET_NAME = "@unocss/preset-wind4";
5
+ const passThemeKey = ["DEFAULT", "none"];
6
+ const trackedTheme = /* @__PURE__ */ new Set([]);
7
+ function themeTracking(key, props = "DEFAULT") {
8
+ const k = `${key}:${toArray(props).join("-")}`;
9
+ if (!trackedTheme.has(k)) {
10
+ trackedTheme.add(k);
11
+ }
12
+ }
13
+
4
14
  const directionMap = {
5
15
  "l": ["-left"],
6
16
  "r": ["-right"],
@@ -426,6 +436,7 @@ function directionSize(propertyPrefix) {
426
436
  let v;
427
437
  v = numberResolver(size, spaceMap[size]);
428
438
  if (v != null) {
439
+ themeTracking("spacing");
429
440
  return directionMap[direction].map((i) => [`${propertyPrefix}${i}`, `calc(var(--spacing) * ${v})`]);
430
441
  }
431
442
  v = h.bracket.cssvar.global.auto.fraction.rem(size);
@@ -435,6 +446,7 @@ function directionSize(propertyPrefix) {
435
446
  if (size?.startsWith("-")) {
436
447
  const _v = spaceMap[size.slice(1)];
437
448
  if (_v != null) {
449
+ themeTracking("spacing");
438
450
  v = `calc(var(--spacing) * -${_v})`;
439
451
  return directionMap[direction].map((i) => [`${propertyPrefix}${i}`, v]);
440
452
  }
@@ -493,6 +505,9 @@ function colorCSSGenerator(data, property, varName, ctx) {
493
505
  } else {
494
506
  const alphaKey = `--un-${varName}-opacity`;
495
507
  const value = key ? `var(--colors-${key})` : color;
508
+ if (key) {
509
+ themeTracking(`colors`, key);
510
+ }
496
511
  css[alphaKey] = alpha;
497
512
  css[property] = `color-mix(in oklch, ${value} var(${alphaKey}), transparent)${rawColorComment}`;
498
513
  result.push(defineProperty(alphaKey, { syntax: "<percentage>", initialValue: "100%" }));
@@ -629,8 +644,11 @@ function transformXYZ(d, v, name) {
629
644
  return xyzMap[d].map((i) => [`--un-${name}${i}`, v]);
630
645
  return values.map((v2, i) => [`--un-${name}-${xyzArray[i]}`, v2]);
631
646
  }
632
- function camelToHyphen(str) {
633
- return str.replace(/[A-Z]/g, "-$&").toLowerCase();
647
+ function camelize(str) {
648
+ return str.replace(/-(\w)/g, (_, c) => c ? c.toUpperCase() : "");
649
+ }
650
+ function hyphenate(str) {
651
+ return str.replace(/(?:^|\B)([A-Z])/g, "-$1").toLowerCase();
634
652
  }
635
653
  function compressCSS(css) {
636
654
  return css.trim().replace(/\s+/g, " ").replace(/\/\*[\s\S]*?\*\//g, "");
@@ -644,4 +662,4 @@ function defineProperty(property, options = {}) {
644
662
  return `@property ${property} {syntax: "${syntax}";inherits: ${inherits};${initialValue != null ? `initial-value: ${initialValue};` : ""}}`;
645
663
  }
646
664
 
647
- export { isCSSMathFn as A, isSize as B, CONTROL_MINI_NO_NEGATIVE as C, transformXYZ as D, camelToHyphen as E, compressCSS as F, defineProperty as G, bracketTypeRe as H, SpecialColorKey as S, h as a, xyzArray as b, cornerMap as c, directionMap as d, cssMathFnRE as e, cssVarFnRE as f, globalKeywords as g, handler as h, insetMap as i, directionSize as j, colorableShadows as k, colorCSSGenerator as l, colorResolver as m, numberResolver as n, parseColor as o, positionMap as p, parseThemeColor as q, getThemeColor as r, splitShorthand as s, colorVariable as t, hasParseableColor as u, valueHandlers as v, resolveBreakpoints as w, xyzMap as x, resolveVerticalBreakpoints as y, makeGlobalStaticRules as z };
665
+ export { resolveBreakpoints as A, resolveVerticalBreakpoints as B, CONTROL_MINI_NO_NEGATIVE as C, makeGlobalStaticRules as D, isCSSMathFn as E, isSize as F, transformXYZ as G, camelize as H, hyphenate as I, compressCSS as J, defineProperty as K, bracketTypeRe as L, PRESET_NAME as P, SpecialColorKey as S, themeTracking as a, h as b, cornerMap as c, directionMap as d, xyzArray as e, positionMap as f, globalKeywords as g, handler as h, insetMap as i, cssMathFnRE as j, cssVarFnRE as k, directionSize as l, colorableShadows as m, numberResolver as n, colorCSSGenerator as o, passThemeKey as p, colorResolver as q, parseColor as r, splitShorthand as s, trackedTheme as t, parseThemeColor as u, valueHandlers as v, getThemeColor as w, xyzMap as x, colorVariable as y, hasParseableColor as z };
@@ -820,6 +820,7 @@ declare const theme: {
820
820
  defaults: {
821
821
  transition: {
822
822
  duration: string;
823
+ timingFunction: string;
823
824
  };
824
825
  font: {
825
826
  family: string;
@@ -820,6 +820,7 @@ declare const theme: {
820
820
  defaults: {
821
821
  transition: {
822
822
  duration: string;
823
+ timingFunction: string;
823
824
  };
824
825
  font: {
825
826
  family: string;
@@ -1,4 +1,4 @@
1
- import { b as containerShortcuts } from './preset-wind4.DRtfClGs.mjs';
1
+ import { b as containerShortcuts } from './preset-wind4.39lqTMpc.mjs';
2
2
 
3
3
  const shortcuts = [
4
4
  ...containerShortcuts
@@ -1,7 +1,6 @@
1
- import { g as globalKeywords, a as h, z as makeGlobalStaticRules, p as positionMap, o as parseColor, S as SpecialColorKey, G as defineProperty, m as colorResolver, A as isCSSMathFn, d as directionMap, u as hasParseableColor, c as cornerMap, l as colorCSSGenerator, B as isSize, j as directionSize, n as numberResolver, k as colorableShadows, i as insetMap, E as camelToHyphen, w as resolveBreakpoints, D as transformXYZ, x as xyzMap, H as bracketTypeRe } from './preset-wind4.D40diWvF.mjs';
1
+ import { g as globalKeywords, b as h, D as makeGlobalStaticRules, f as positionMap, r as parseColor, S as SpecialColorKey, K as defineProperty, q as colorResolver, E as isCSSMathFn, d as directionMap, z as hasParseableColor, c as cornerMap, p as passThemeKey, a as themeTracking, o as colorCSSGenerator, F as isSize, l as directionSize, n as numberResolver, m as colorableShadows, i as insetMap, I as hyphenate, A as resolveBreakpoints, G as transformXYZ, x as xyzMap, L as bracketTypeRe } from './preset-wind4.47ZKbxbU.mjs';
2
2
  import { notNull, uniq } from '@unocss/core';
3
- import { p as passThemeKey } from './preset-wind4.DRtKeBWc.mjs';
4
- import { a as container, c as containerParent } from './preset-wind4.DRtfClGs.mjs';
3
+ import { a as container, c as containerParent } from './preset-wind4.39lqTMpc.mjs';
5
4
  import { getStringComponent } from '@unocss/rule-utils';
6
5
 
7
6
  const verticalAlignAlias = {
@@ -70,8 +69,8 @@ const animations = [
70
69
  }, { autocomplete: "animate-$animation.keyframes" }],
71
70
  [/^animate-name-(.+)/, ([, d]) => ({ "animation-name": h.bracket.cssvar(d) ?? d })],
72
71
  // timings
73
- [/^animate-duration-(.+)$/, ([, d], { theme }) => ({ "animation-duration": theme.duration?.[d || "DEFAULT"] ?? h.bracket.cssvar.time(d) }), { autocomplete: ["animate-duration", "animate-duration-$duration"] }],
74
- [/^animate-delay-(.+)$/, ([, d], { theme }) => ({ "animation-delay": theme.duration?.[d || "DEFAULT"] ?? h.bracket.cssvar.time(d) }), { autocomplete: ["animate-delay", "animate-delay-$duration"] }],
72
+ [/^animate-duration-(.+)$/, ([, d], { theme }) => ({ "animation-duration": theme.duration?.[d || "DEFAULT"] ?? h.bracket.cssvar.time(d) }), { autocomplete: ["animate-duration"] }],
73
+ [/^animate-delay-(.+)$/, ([, d], { theme }) => ({ "animation-delay": theme.duration?.[d || "DEFAULT"] ?? h.bracket.cssvar.time(d) }), { autocomplete: ["animate-delay"] }],
75
74
  [/^animate-ease(?:-(.+))?$/, ([, d], { theme }) => ({ "animation-timing-function": theme.ease?.[d || "DEFAULT"] ?? h.bracket.cssvar(d) }), { autocomplete: ["animate-ease", "animate-ease-$ease"] }],
76
75
  // fill mode
77
76
  [/^animate-(fill-mode-|fill-|mode-)?(.+)$/, ([, t, d]) => ["none", "forwards", "backwards", "both", ...[t ? globalKeywords : []]].includes(d) ? { "animation-fill-mode": d } : void 0, {
@@ -416,7 +415,7 @@ const borders = [
416
415
  [/^(?:border|b)-(block|inline)-op(?:acity)?-?(.+)$/, handlerBorderOpacity],
417
416
  [/^(?:border|b)-([bi][se])-op(?:acity)?-?(.+)$/, handlerBorderOpacity],
418
417
  // radius
419
- [/^(?:border-|b-)?(?:rounded|rd)()(?:-(.+))?$/, handlerRounded, { autocomplete: ["(border|b)-(rounded|rd)", "(border|b)-(rounded|rd)-$borderRadius", "(rounded|rd)", "(rounded|rd)-$borderRadius"] }],
418
+ [/^(?:border-|b-)?(?:rounded|rd)()(?:-(.+))?$/, handlerRounded, { autocomplete: ["(border|b)-(rounded|rd)", "(border|b)-(rounded|rd)-$radius", "(rounded|rd)", "(rounded|rd)-$radius"] }],
420
419
  [/^(?:border-|b-)?(?:rounded|rd)-([rltbse])(?:-(.+))?$/, handlerRounded],
421
420
  [/^(?:border-|b-)?(?:rounded|rd)-([rltb]{2})(?:-(.+))?$/, handlerRounded],
422
421
  [/^(?:border-|b-)?(?:rounded|rd)-([bise][se])(?:-(.+))?$/, handlerRounded],
@@ -471,9 +470,13 @@ function handlerRounded([, a = "", s], { theme }) {
471
470
  return cornerMap[a].map((i) => [`border${i}-radius`, "calc(infinity * 1px)"]);
472
471
  const _v = theme.radius?.[_s] ?? h.bracket.cssvar.global.fraction.rem(_s);
473
472
  if (_v != null) {
473
+ const isVar = theme.radius && _s in theme.radius && !passThemeKey.includes(_s);
474
+ if (isVar) {
475
+ themeTracking(`radius`, _s);
476
+ }
474
477
  return cornerMap[a].map((i) => [
475
478
  `border${i}-radius`,
476
- theme.radius && _s in theme.radius && !passThemeKey.includes(_s) ? `var(--radius-${_s})` : _v
479
+ isVar ? `var(--radius-${_s})` : _v
477
480
  ]);
478
481
  }
479
482
  }
@@ -516,7 +519,7 @@ const bgColors = [
516
519
  [/^bg-op(?:acity)?-?(.+)$/, ([, opacity2]) => ({ "--un-bg-opacity": h.bracket.percent.cssvar(opacity2) }), { autocomplete: "bg-(op|opacity)-<percent>" }]
517
520
  ];
518
521
  const colorScheme = [
519
- [/^(?:color-)?scheme-(.+)$/, ([, v]) => ({ "color-scheme": v })]
522
+ [/^(?:color-)?scheme-(.+)$/, ([, v]) => ({ "color-scheme": v.split("-").join(" ") })]
520
523
  ];
521
524
 
522
525
  const columns = [
@@ -614,6 +617,7 @@ function* handlerSpace([, d, s], { theme, symbols }) {
614
617
  let v;
615
618
  const num = numberResolver(s);
616
619
  if (num != null) {
620
+ themeTracking(`spacing`);
617
621
  v = `calc(var(--spacing) * ${num})`;
618
622
  } else {
619
623
  v = theme.spacing?.[s] ?? h.bracket.cssvar.auto.fraction.rem(s || "1");
@@ -848,8 +852,10 @@ const flex = [
848
852
  [/^(?:flex-)?grow(?:-(.*))?$/, ([, d = ""]) => ({ "flex-grow": h.bracket.cssvar.number(d) ?? 1 }), { autocomplete: ["flex-grow-<num>", "grow-<num>"] }],
849
853
  [/^(?:flex-)?basis-(.+)$/, ([, d]) => {
850
854
  const v = numberResolver(d);
851
- if (v != null)
855
+ if (v != null) {
856
+ themeTracking(`spacing`);
852
857
  return { "flex-basis": `calc(var(--spacing) * ${v})` };
858
+ }
853
859
  return { "flex-basis": h.bracket.cssvar.auto.rem(d) };
854
860
  }, { autocomplete: ["flex-basis-$spacing", "basis-$spacing"] }],
855
861
  // directions
@@ -872,8 +878,10 @@ const directions = {
872
878
  };
873
879
  function handleGap([, d = "", s]) {
874
880
  const v = numberResolver(s);
875
- if (v != null)
881
+ if (v != null) {
882
+ themeTracking(`spacing`);
876
883
  return { [`${directions[d]}gap`]: `calc(var(--spacing) * ${v})` };
884
+ }
877
885
  return { [`${directions[d]}gap`]: h.bracket.cssvar.global.rem(s) };
878
886
  }
879
887
  const gaps = [
@@ -1075,10 +1083,12 @@ const flexGridJustifiesAlignments = [...justifies, ...alignments, ...placements]
1075
1083
  ]);
1076
1084
  function handleInsetValue(v) {
1077
1085
  const _v = numberResolver(v);
1078
- if (_v != null)
1086
+ if (_v != null) {
1087
+ themeTracking(`spacing`);
1079
1088
  return `calc(var(--spacing) * ${_v})`;
1080
- else
1089
+ } else {
1081
1090
  return h.bracket.cssvar.global.auto.rem(v);
1091
+ }
1082
1092
  }
1083
1093
  function handleInsetValues([, d, v]) {
1084
1094
  const r = handleInsetValue(v);
@@ -1171,7 +1181,7 @@ function hanldeShadow(themeKey) {
1171
1181
  const { theme } = ctx;
1172
1182
  const v = theme[themeKey]?.[d || "DEFAULT"];
1173
1183
  const c = d ? h.bracket.cssvar(d) : void 0;
1174
- const colorVar = camelToHyphen(themeKey);
1184
+ const colorVar = hyphenate(themeKey);
1175
1185
  if ((v != null || c != null) && !hasParseableColor(c, theme)) {
1176
1186
  return [
1177
1187
  {
@@ -1198,7 +1208,7 @@ const rings = [
1198
1208
  Object.values(shadowProperties).join("\n")
1199
1209
  ];
1200
1210
  }
1201
- }, { autocomplete: "ring-$ringWidth" }],
1211
+ }],
1202
1212
  [/^ring-(.+)$/, colorResolver(`--un-ring-color`, "ring"), { autocomplete: "ring-$colors" }],
1203
1213
  [/^ring-op(?:acity)?-?(.+)$/, ([, opacity]) => ({ "--un-ring-opacity": h.bracket.percent.cssvar(opacity) }), { autocomplete: "ring-(op|opacity)-<percent>" }],
1204
1214
  // inset ring
@@ -1287,7 +1297,11 @@ function getPropName(minmax, hw) {
1287
1297
  return `${minmax || ""}${sizeMapping[hw]}`;
1288
1298
  }
1289
1299
  function getSizeValue(theme, hw, prop) {
1290
- let v = theme.container?.[prop];
1300
+ let v;
1301
+ if (theme.container?.[prop]) {
1302
+ themeTracking("container", prop);
1303
+ v = `var(--container-${prop})`;
1304
+ }
1291
1305
  switch (prop) {
1292
1306
  case "fit":
1293
1307
  case "max":
@@ -1299,6 +1313,7 @@ function getSizeValue(theme, hw, prop) {
1299
1313
  break;
1300
1314
  }
1301
1315
  if (h.number(prop) != null) {
1316
+ themeTracking(`spacing`);
1302
1317
  v = `calc(var(--spacing) * ${h.number(prop)})`;
1303
1318
  }
1304
1319
  return v ?? h.bracket.cssvar.global.auto.none.fraction.rem(prop);
@@ -1327,10 +1342,10 @@ const sizes = [
1327
1342
  autocomplete: [
1328
1343
  "(w|h)-screen",
1329
1344
  "(min|max)-(w|h)-screen",
1330
- "h-screen-$verticalBreakpoints",
1331
- "(min|max)-h-screen-$verticalBreakpoints",
1332
- "w-screen-$breakpoints",
1333
- "(min|max)-w-screen-$breakpoints"
1345
+ "h-screen-$breakpoint",
1346
+ "(min|max)-h-screen-$breakpoint",
1347
+ "w-screen-$breakpoint",
1348
+ "(min|max)-w-screen-$breakpoint"
1334
1349
  ]
1335
1350
  }]
1336
1351
  ];
@@ -1619,10 +1634,10 @@ const svgUtilities = [
1619
1634
  [/^fill-op(?:acity)?-?(.+)$/, ([, opacity]) => ({ "--un-fill-opacity": h.bracket.percent.cssvar(opacity) }), { autocomplete: "fill-(op|opacity)-<percent>" }],
1620
1635
  ["fill-none", { fill: "none" }],
1621
1636
  // stroke size
1622
- [/^stroke-(?:width-|size-)?(.+)$/, handleWidth, { autocomplete: ["stroke-width-$lineWidth", "stroke-size-$lineWidth"] }],
1637
+ [/^stroke-(?:width-|size-)?(.+)$/, handleWidth],
1623
1638
  // stroke dash
1624
1639
  [/^stroke-dash-(.+)$/, ([, s]) => ({ "stroke-dasharray": h.bracket.cssvar.number(s) }), { autocomplete: "stroke-dash-<num>" }],
1625
- [/^stroke-offset-(.+)$/, ([, s]) => ({ "stroke-dashoffset": h.bracket.cssvar.px.numberWithUnit(s) }), { autocomplete: "stroke-offset-$lineWidth" }],
1640
+ [/^stroke-offset-(.+)$/, ([, s]) => ({ "stroke-dashoffset": h.bracket.cssvar.px.numberWithUnit(s) })],
1626
1641
  // stroke colors
1627
1642
  [/^stroke-(.+)$/, handleColorOrWidth, { autocomplete: "stroke-$colors" }],
1628
1643
  [/^stroke-op(?:acity)?-?(.+)$/, ([, opacity]) => ({ "--un-stroke-opacity": h.bracket.percent.cssvar(opacity) }), { autocomplete: "stroke-(op|opacity)-<percent>" }],
@@ -1696,6 +1711,7 @@ function resolveValue(s, theme) {
1696
1711
  if (!v) {
1697
1712
  const num = numberResolver(s);
1698
1713
  if (num != null) {
1714
+ themeTracking(`spacing`);
1699
1715
  v = `calc(var(--spacing) * ${num})`;
1700
1716
  } else {
1701
1717
  v = h.bracket.cssvar.global.auto.fraction.rem(s);
@@ -1771,10 +1787,16 @@ const transforms = [
1771
1787
  ],
1772
1788
  // perspectives
1773
1789
  [/^(?:transform-)?perspect(?:ive)?-(.+)$/, ([, s], { theme }) => {
1774
- const v = theme.perspective?.[s] ?? h.bracket.cssvar.px.numberWithUnit(s);
1790
+ let v;
1791
+ if (theme.perspective?.[s]) {
1792
+ themeTracking(`perspective`, s);
1793
+ v = `var(--un-perspective-${s})`;
1794
+ } else {
1795
+ v = h.bracket.cssvar.px.numberWithUnit(s);
1796
+ }
1775
1797
  if (v != null) {
1776
1798
  return {
1777
- perspective: s in (theme.perspective ?? {}) ? `var(--un-perspective-${s})` : v
1799
+ perspective: v
1778
1800
  };
1779
1801
  }
1780
1802
  }],
@@ -1816,6 +1838,7 @@ function handleTranslate([, d, b]) {
1816
1838
  translate: "none"
1817
1839
  };
1818
1840
  }
1841
+ themeTracking(`spacing`);
1819
1842
  return [
1820
1843
  [
1821
1844
  ...transformXYZ(d, typeof v === "number" ? `calc(var(--spacing) * ${v})` : v, "translate"),
@@ -1901,6 +1924,8 @@ const transitions = [
1901
1924
  [
1902
1925
  /^transition(?:-(\D+?))?(?:-(\d+))?$/,
1903
1926
  ([, prop, d], { theme }) => {
1927
+ themeTracking("defaults", ["transition", "timingFunction"]);
1928
+ themeTracking("defaults", ["transition", "duration"]);
1904
1929
  const defaultTransition = {
1905
1930
  "transition-property": theme.property?.DEFAULT,
1906
1931
  "transition-timing-function": `var(--un-ease, var(--defaults-transition-timing-function))`,
@@ -1925,9 +1950,6 @@ const transitions = [
1925
1950
  ...defaultTransition
1926
1951
  };
1927
1952
  }
1928
- },
1929
- {
1930
- autocomplete: "transition-$transitionProperty-$duration"
1931
1953
  }
1932
1954
  ],
1933
1955
  // timings
@@ -1936,18 +1958,22 @@ const transitions = [
1936
1958
  ([, d]) => ({
1937
1959
  "--un-duration": h.bracket.cssvar.time(d),
1938
1960
  "transition-duration": h.bracket.cssvar.time(d)
1939
- }),
1940
- { autocomplete: ["transition-duration-$duration", "duration-$duration"] }
1961
+ })
1941
1962
  ],
1942
1963
  [
1943
1964
  /^(?:transition-)?delay-(.+)$/,
1944
- ([, d]) => ({ "transition-delay": h.bracket.cssvar.time(d) }),
1945
- { autocomplete: ["transition-delay-$duration", "delay-$duration"] }
1965
+ ([, d]) => ({ "transition-delay": h.bracket.cssvar.time(d) })
1946
1966
  ],
1947
1967
  [
1948
1968
  /^(?:transition-)?ease-(.+)$/,
1949
1969
  ([, d], { theme }) => {
1950
- const v = d in (theme.ease ?? {}) ? `var(--ease-${d})` : h.bracket.cssvar(d);
1970
+ let v;
1971
+ if (theme.ease?.[d]) {
1972
+ themeTracking("ease", d);
1973
+ v = `var(--ease-${d})`;
1974
+ } else {
1975
+ v = h.bracket.cssvar(d);
1976
+ }
1951
1977
  return [
1952
1978
  {
1953
1979
  "--un-ease": v,
@@ -1967,9 +1993,7 @@ const transitions = [
1967
1993
  return { "transition-property": p };
1968
1994
  },
1969
1995
  { autocomplete: [
1970
- `transition-property-(${[...globalKeywords].join("|")})`,
1971
- "transition-property-$transitionProperty",
1972
- "property-$transitionProperty"
1996
+ `transition-property-(${[...globalKeywords].join("|")})`
1973
1997
  ] }
1974
1998
  ],
1975
1999
  // none
@@ -1982,9 +2006,9 @@ const transitions = [
1982
2006
 
1983
2007
  const fonts = [
1984
2008
  // text
1985
- [/^text-(.+)$/, handleText, { autocomplete: "text-$fontSize" }],
2009
+ [/^text-(.+)$/, handleText, { autocomplete: "text-$text" }],
1986
2010
  // // text size
1987
- [/^(?:text|font)-size-(.+)$/, handleSize, { autocomplete: "text-size-$fontSize" }],
2011
+ [/^(?:text|font)-size-(.+)$/, handleSize, { autocomplete: "text-size-$text" }],
1988
2012
  // text colors
1989
2013
  [/^text-(?:color-)?(.+)$/, handlerColorOrSize, { autocomplete: "text-$colors" }],
1990
2014
  // colors
@@ -1997,7 +2021,13 @@ const fonts = [
1997
2021
  [
1998
2022
  /^(?:font|fw)-?([^-]+)$/,
1999
2023
  ([, s], { theme }) => {
2000
- const v = theme.fontWeight?.[s] ? `var(--font-weight-${s})` : h.bracket.global.number(s);
2024
+ let v;
2025
+ if (theme.fontWeight?.[s]) {
2026
+ themeTracking(`fontWeight`, s);
2027
+ v = `var(--font-weight-${s})`;
2028
+ } else {
2029
+ v = h.bracket.global.number(s);
2030
+ }
2001
2031
  return {
2002
2032
  "--un-font-weight": v,
2003
2033
  "font-weight": v
@@ -2014,7 +2044,16 @@ const fonts = [
2014
2044
  [
2015
2045
  /^(?:font-)?(?:leading|lh|line-height)-(.+)$/,
2016
2046
  ([, s], { theme }) => {
2017
- const v = theme.leading?.[s] ? `var(--leading-${s})` : numberResolver(s) ? `calc(var(--spacing) * ${numberResolver(s)})` : h.bracket.cssvar.global.rem(s);
2047
+ let v;
2048
+ if (theme.leading?.[s]) {
2049
+ themeTracking("leading", s);
2050
+ v = `var(--leading-${s})`;
2051
+ } else if (numberResolver(s)) {
2052
+ themeTracking("spacing");
2053
+ v = `calc(var(--spacing) * ${numberResolver(s)})`;
2054
+ } else {
2055
+ v = h.bracket.cssvar.global.rem(s);
2056
+ }
2018
2057
  if (v != null) {
2019
2058
  return [
2020
2059
  {
@@ -2037,13 +2076,19 @@ const fonts = [
2037
2076
  [
2038
2077
  /^(?:font-)?tracking-(.+)$/,
2039
2078
  ([, s], { theme }) => {
2040
- const v = theme.tracking?.[s] ? `var(--tracking-${s})` : h.bracket.cssvar.global.rem(s);
2079
+ let v;
2080
+ if (theme.tracking?.[s]) {
2081
+ themeTracking(`tracking`, s);
2082
+ v = `var(--tracking-${s})`;
2083
+ } else {
2084
+ v = h.bracket.cssvar.global.rem(s);
2085
+ }
2041
2086
  return {
2042
2087
  "--un-tracking": v,
2043
2088
  "letter-spacing": v
2044
2089
  };
2045
2090
  },
2046
- { autocomplete: "tracking-$letterSpacing" }
2091
+ { autocomplete: "tracking-$tracking" }
2047
2092
  ],
2048
2093
  // word-spacing
2049
2094
  [
@@ -2055,7 +2100,7 @@ const fonts = [
2055
2100
  "word-spacing": v
2056
2101
  };
2057
2102
  },
2058
- { autocomplete: "word-spacing-$wordSpacing" }
2103
+ { autocomplete: "word-spacing-$spacing" }
2059
2104
  ],
2060
2105
  // stretch
2061
2106
  ["font-stretch-normal", { "font-stretch": "normal" }],
@@ -2076,12 +2121,18 @@ const fonts = [
2076
2121
  [
2077
2122
  /^font-(.+)$/,
2078
2123
  ([, d], { theme }) => {
2079
- const v = theme.font?.[d] ? `var(--font-${d})` : h.bracket.cssvar.global(d);
2124
+ let v;
2125
+ if (theme.font?.[d]) {
2126
+ themeTracking(`font`, d);
2127
+ v = `var(--font-${d})`;
2128
+ } else {
2129
+ v = h.bracket.cssvar.global(d);
2130
+ }
2080
2131
  return {
2081
2132
  "font-family": v
2082
2133
  };
2083
2134
  },
2084
- { autocomplete: "font-$fontFamily" }
2135
+ { autocomplete: "font-$font" }
2085
2136
  ]
2086
2137
  ];
2087
2138
  const tabSizes = [
@@ -2100,6 +2151,7 @@ const textIndents = [
2100
2151
  [/^indent(?:-(.+))?$/, ([, s]) => {
2101
2152
  let v = numberResolver(s);
2102
2153
  if (v != null) {
2154
+ themeTracking(`spacing`);
2103
2155
  return { "text-indent": `calc(var(--spacing) * ${v})` };
2104
2156
  }
2105
2157
  v = h.bracket.cssvar.auto.global.rem(s);
@@ -2111,6 +2163,9 @@ const textIndents = [
2111
2163
  const textStrokes = [
2112
2164
  // widths
2113
2165
  [/^text-stroke(?:-(.+))?$/, ([, s = "DEFAULT"], { theme }) => {
2166
+ if (theme.textStrokeWidth?.[s]) {
2167
+ themeTracking(`textStrokeWidth`, s);
2168
+ }
2114
2169
  return {
2115
2170
  "-webkit-text-stroke-width": theme.textStrokeWidth?.[s] ? passThemeKey.includes(s) ? theme.textStrokeWidth?.[s] : `var(--text-stroke-width-${s})` : h.bracket.cssvar.px(s)
2116
2171
  };
@@ -2161,12 +2216,25 @@ function handleText([, s = "base"], { theme }) {
2161
2216
  return;
2162
2217
  const [size, leading] = split;
2163
2218
  const sizePairs = theme.text?.[size];
2164
- const lineHeight = leading ? theme.leading?.[leading] || h.bracket.cssvar.global.rem(leading) : void 0;
2219
+ let lineHeight;
2220
+ if (leading) {
2221
+ if (theme.leading?.[leading]) {
2222
+ themeTracking(`leading`, leading);
2223
+ lineHeight = `var(--leading-${leading})`;
2224
+ } else {
2225
+ lineHeight = h.bracket.cssvar.global.rem(leading);
2226
+ }
2227
+ }
2165
2228
  if (sizePairs) {
2229
+ themeTracking(`text`, [size, "fontSize"]);
2230
+ themeTracking(`text`, [size, "lineHeight"]);
2231
+ if (sizePairs.letterSpacing) {
2232
+ themeTracking(`text`, [size, "letterSpacing"]);
2233
+ }
2166
2234
  return {
2167
- "font-size": sizePairs.fontSize,
2168
- "line-height": lineHeight ?? sizePairs.lineHeight ?? "1",
2169
- "letter-spacing": sizePairs.letterSpacing
2235
+ "font-size": `var(--text-${size}-font-size)`,
2236
+ "line-height": lineHeight ?? `var(--un-leading, var(--text-${size}-line-height))`,
2237
+ "letter-spacing": sizePairs.letterSpacing ? `var(--text-${size}-letter-spacing)` : void 0
2170
2238
  };
2171
2239
  }
2172
2240
  const fontSize = h.bracketOfLength.rem(size);
@@ -2180,6 +2248,8 @@ function handleText([, s = "base"], { theme }) {
2180
2248
  }
2181
2249
  function handleSize([, s], { theme }) {
2182
2250
  if (theme.text?.[s] != null) {
2251
+ themeTracking(`text`, [s, "fontSize"]);
2252
+ themeTracking(`text`, [s, "lineHeight"]);
2183
2253
  return {
2184
2254
  "font-size": `var(--text-${s}-font-size)`,
2185
2255
  "line-height": `var(--un-leading, var(--text-${s}--line-height))`
@@ -1,5 +1,5 @@
1
1
  import { variantGetParameter, variantMatcher, variantGetBracket, variantParentMatcher, getBracket, hasThemeFn, transformThemeFn, getStringComponent } from '@unocss/rule-utils';
2
- import { a as h, w as resolveBreakpoints, C as CONTROL_MINI_NO_NEGATIVE, e as cssMathFnRE, f as cssVarFnRE, u as hasParseableColor } from './preset-wind4.D40diWvF.mjs';
2
+ import { b as h, A as resolveBreakpoints, C as CONTROL_MINI_NO_NEGATIVE, j as cssMathFnRE, k as cssVarFnRE, z as hasParseableColor } from './preset-wind4.47ZKbxbU.mjs';
3
3
  import { escapeRegExp, escapeSelector } from '@unocss/core';
4
4
 
5
5
  const variantAria = {
@@ -116,7 +116,7 @@ function variantBreakpoints() {
116
116
  }
117
117
  },
118
118
  multiPass: true,
119
- autocomplete: "(at-|lt-|max-|)$breakpoints:"
119
+ autocomplete: "(at-|lt-|max-|)$breakpoint:"
120
120
  };
121
121
  }
122
122
 
@@ -1,5 +1,5 @@
1
- export { s as shortcuts } from './shared/preset-wind4.Bv7psfuU.mjs';
2
- import './shared/preset-wind4.DRtfClGs.mjs';
1
+ export { s as shortcuts } from './shared/preset-wind4.BvXCZB8z.mjs';
2
+ import './shared/preset-wind4.39lqTMpc.mjs';
3
3
  import '@unocss/core';
4
- import './shared/preset-wind4.D40diWvF.mjs';
4
+ import './shared/preset-wind4.47ZKbxbU.mjs';
5
5
  import '@unocss/rule-utils';
package/dist/theme.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { colors } from './colors.mjs';
2
- export { t as theme } from './shared/preset-wind4.pue_BigB.mjs';
2
+ export { t as theme } from './shared/preset-wind4.BOe5kxIw.mjs';
3
3
  import { T as Theme } from './shared/preset-wind4.MiZzPO05.mjs';
4
4
  export { C as Colors, a as ThemeAnimation } from './shared/preset-wind4.MiZzPO05.mjs';
5
5
 
@@ -514,6 +514,7 @@ declare const perspective: {
514
514
  declare const defaults: {
515
515
  transition: {
516
516
  duration: string;
517
+ timingFunction: string;
517
518
  };
518
519
  font: {
519
520
  family: string;
package/dist/theme.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { colors } from './colors.js';
2
- export { t as theme } from './shared/preset-wind4.pue_BigB.js';
2
+ export { t as theme } from './shared/preset-wind4.BOe5kxIw.js';
3
3
  import { T as Theme } from './shared/preset-wind4.MiZzPO05.js';
4
4
  export { C as Colors, a as ThemeAnimation } from './shared/preset-wind4.MiZzPO05.js';
5
5
 
@@ -514,6 +514,7 @@ declare const perspective: {
514
514
  declare const defaults: {
515
515
  transition: {
516
516
  duration: string;
517
+ timingFunction: string;
517
518
  };
518
519
  font: {
519
520
  family: string;
package/dist/theme.mjs CHANGED
@@ -461,7 +461,8 @@ const perspective = {
461
461
  };
462
462
  const defaults = {
463
463
  transition: {
464
- duration: "150ms"
464
+ duration: "150ms",
465
+ timingFunction: "cubic-bezier(0.4, 0, 0.2, 1)"
465
466
  },
466
467
  font: {
467
468
  family: "var(--font-sans)",
package/dist/utils.d.mts CHANGED
@@ -1,10 +1,20 @@
1
+ import { Arrayable, DynamicMatcher, RuleContext, CSSObject, CSSValueInput, VariantContext, StaticRule } from '@unocss/core';
1
2
  import * as _unocss_rule_utils from '@unocss/rule-utils';
2
3
  export * from '@unocss/rule-utils';
3
- import { DynamicMatcher, RuleContext, CSSObject, CSSValueInput, VariantContext, StaticRule } from '@unocss/core';
4
4
  import { T as Theme, C as Colors } from './shared/preset-wind4.MiZzPO05.mjs';
5
5
 
6
+ declare const PRESET_NAME = "@unocss/preset-wind4";
6
7
  /** Keys will not appear in the theme variable. */
7
8
  declare const passThemeKey: string[];
9
+ /**
10
+ * Used to track theme keys.
11
+ *
12
+ * eg: colors:red-100
13
+ *
14
+ * @internal
15
+ */
16
+ declare const trackedTheme: Set<string>;
17
+ declare function themeTracking(key: string, props?: Arrayable<string>): void;
8
18
 
9
19
  declare function numberWithUnit(str: string): string | undefined;
10
20
  declare function auto(str: string): "auto" | undefined;
@@ -47,8 +57,8 @@ declare namespace handlers {
47
57
  export { handlers_auto as auto, handlers_bracket as bracket, handlers_bracketOfColor as bracketOfColor, handlers_bracketOfLength as bracketOfLength, handlers_bracketOfPosition as bracketOfPosition, handlers_cssvar as cssvar, handlers_degree as degree, handlers_fraction as fraction, handlers_global as global, handlers_none as none, handlers_number as number, handlers_numberWithUnit as numberWithUnit, handlers_percent as percent, handlers_position as position, handlers_properties as properties, handlers_px as px, handlers_rem as rem, handlers_time as time };
48
58
  }
49
59
 
50
- declare const handler: _unocss_rule_utils.ValueHandler<"number" | "none" | "position" | "global" | "px" | "auto" | "numberWithUnit" | "rem" | "percent" | "fraction" | "bracket" | "bracketOfColor" | "bracketOfLength" | "bracketOfPosition" | "cssvar" | "time" | "degree" | "properties">;
51
- declare const h: _unocss_rule_utils.ValueHandler<"number" | "none" | "position" | "global" | "px" | "auto" | "numberWithUnit" | "rem" | "percent" | "fraction" | "bracket" | "bracketOfColor" | "bracketOfLength" | "bracketOfPosition" | "cssvar" | "time" | "degree" | "properties">;
60
+ declare const handler: _unocss_rule_utils.ValueHandler<"number" | "global" | "none" | "px" | "auto" | "position" | "numberWithUnit" | "rem" | "percent" | "fraction" | "bracket" | "bracketOfColor" | "bracketOfLength" | "bracketOfPosition" | "cssvar" | "time" | "degree" | "properties">;
61
+ declare const h: _unocss_rule_utils.ValueHandler<"number" | "global" | "none" | "px" | "auto" | "position" | "numberWithUnit" | "rem" | "percent" | "fraction" | "bracket" | "bracketOfColor" | "bracketOfLength" | "bracketOfPosition" | "cssvar" | "time" | "degree" | "properties">;
52
62
 
53
63
  declare const directionMap: Record<string, string[]>;
54
64
  declare const insetMap: Record<string, string[]>;
@@ -126,7 +136,8 @@ declare function makeGlobalStaticRules(prefix: string, property?: string): Stati
126
136
  declare function isCSSMathFn(value: string | undefined): boolean;
127
137
  declare function isSize(str: string): boolean;
128
138
  declare function transformXYZ(d: string, v: string, name: string): [string, string][];
129
- declare function camelToHyphen(str: string): string;
139
+ declare function camelize(str: string): string;
140
+ declare function hyphenate(str: string): string;
130
141
  declare function compressCSS(css: string): string;
131
142
  declare function defineProperty(property: string, options?: {
132
143
  syntax?: string;
@@ -134,4 +145,4 @@ declare function defineProperty(property: string, options?: {
134
145
  initialValue?: unknown;
135
146
  }): string;
136
147
 
137
- export { CONTROL_MINI_NO_NEGATIVE, SpecialColorKey, camelToHyphen, colorCSSGenerator, colorResolver, colorVariable, colorableShadows, compressCSS, cornerMap, cssMathFnRE, cssVarFnRE, defineProperty, directionMap, directionSize, getThemeColor, globalKeywords, h, handler, hasParseableColor, insetMap, isCSSMathFn, isSize, makeGlobalStaticRules, numberResolver, parseColor, parseThemeColor, passThemeKey, positionMap, resolveBreakpoints, resolveVerticalBreakpoints, splitShorthand, transformXYZ, handlers as valueHandlers, xyzArray, xyzMap };
148
+ export { CONTROL_MINI_NO_NEGATIVE, PRESET_NAME, SpecialColorKey, camelize, colorCSSGenerator, colorResolver, colorVariable, colorableShadows, compressCSS, cornerMap, cssMathFnRE, cssVarFnRE, defineProperty, directionMap, directionSize, getThemeColor, globalKeywords, h, handler, hasParseableColor, hyphenate, insetMap, isCSSMathFn, isSize, makeGlobalStaticRules, numberResolver, parseColor, parseThemeColor, passThemeKey, positionMap, resolveBreakpoints, resolveVerticalBreakpoints, splitShorthand, themeTracking, trackedTheme, transformXYZ, handlers as valueHandlers, xyzArray, xyzMap };
package/dist/utils.d.ts CHANGED
@@ -1,10 +1,20 @@
1
+ import { Arrayable, DynamicMatcher, RuleContext, CSSObject, CSSValueInput, VariantContext, StaticRule } from '@unocss/core';
1
2
  import * as _unocss_rule_utils from '@unocss/rule-utils';
2
3
  export * from '@unocss/rule-utils';
3
- import { DynamicMatcher, RuleContext, CSSObject, CSSValueInput, VariantContext, StaticRule } from '@unocss/core';
4
4
  import { T as Theme, C as Colors } from './shared/preset-wind4.MiZzPO05.js';
5
5
 
6
+ declare const PRESET_NAME = "@unocss/preset-wind4";
6
7
  /** Keys will not appear in the theme variable. */
7
8
  declare const passThemeKey: string[];
9
+ /**
10
+ * Used to track theme keys.
11
+ *
12
+ * eg: colors:red-100
13
+ *
14
+ * @internal
15
+ */
16
+ declare const trackedTheme: Set<string>;
17
+ declare function themeTracking(key: string, props?: Arrayable<string>): void;
8
18
 
9
19
  declare function numberWithUnit(str: string): string | undefined;
10
20
  declare function auto(str: string): "auto" | undefined;
@@ -47,8 +57,8 @@ declare namespace handlers {
47
57
  export { handlers_auto as auto, handlers_bracket as bracket, handlers_bracketOfColor as bracketOfColor, handlers_bracketOfLength as bracketOfLength, handlers_bracketOfPosition as bracketOfPosition, handlers_cssvar as cssvar, handlers_degree as degree, handlers_fraction as fraction, handlers_global as global, handlers_none as none, handlers_number as number, handlers_numberWithUnit as numberWithUnit, handlers_percent as percent, handlers_position as position, handlers_properties as properties, handlers_px as px, handlers_rem as rem, handlers_time as time };
48
58
  }
49
59
 
50
- declare const handler: _unocss_rule_utils.ValueHandler<"number" | "none" | "position" | "global" | "px" | "auto" | "numberWithUnit" | "rem" | "percent" | "fraction" | "bracket" | "bracketOfColor" | "bracketOfLength" | "bracketOfPosition" | "cssvar" | "time" | "degree" | "properties">;
51
- declare const h: _unocss_rule_utils.ValueHandler<"number" | "none" | "position" | "global" | "px" | "auto" | "numberWithUnit" | "rem" | "percent" | "fraction" | "bracket" | "bracketOfColor" | "bracketOfLength" | "bracketOfPosition" | "cssvar" | "time" | "degree" | "properties">;
60
+ declare const handler: _unocss_rule_utils.ValueHandler<"number" | "global" | "none" | "px" | "auto" | "position" | "numberWithUnit" | "rem" | "percent" | "fraction" | "bracket" | "bracketOfColor" | "bracketOfLength" | "bracketOfPosition" | "cssvar" | "time" | "degree" | "properties">;
61
+ declare const h: _unocss_rule_utils.ValueHandler<"number" | "global" | "none" | "px" | "auto" | "position" | "numberWithUnit" | "rem" | "percent" | "fraction" | "bracket" | "bracketOfColor" | "bracketOfLength" | "bracketOfPosition" | "cssvar" | "time" | "degree" | "properties">;
52
62
 
53
63
  declare const directionMap: Record<string, string[]>;
54
64
  declare const insetMap: Record<string, string[]>;
@@ -126,7 +136,8 @@ declare function makeGlobalStaticRules(prefix: string, property?: string): Stati
126
136
  declare function isCSSMathFn(value: string | undefined): boolean;
127
137
  declare function isSize(str: string): boolean;
128
138
  declare function transformXYZ(d: string, v: string, name: string): [string, string][];
129
- declare function camelToHyphen(str: string): string;
139
+ declare function camelize(str: string): string;
140
+ declare function hyphenate(str: string): string;
130
141
  declare function compressCSS(css: string): string;
131
142
  declare function defineProperty(property: string, options?: {
132
143
  syntax?: string;
@@ -134,4 +145,4 @@ declare function defineProperty(property: string, options?: {
134
145
  initialValue?: unknown;
135
146
  }): string;
136
147
 
137
- export { CONTROL_MINI_NO_NEGATIVE, SpecialColorKey, camelToHyphen, colorCSSGenerator, colorResolver, colorVariable, colorableShadows, compressCSS, cornerMap, cssMathFnRE, cssVarFnRE, defineProperty, directionMap, directionSize, getThemeColor, globalKeywords, h, handler, hasParseableColor, insetMap, isCSSMathFn, isSize, makeGlobalStaticRules, numberResolver, parseColor, parseThemeColor, passThemeKey, positionMap, resolveBreakpoints, resolveVerticalBreakpoints, splitShorthand, transformXYZ, handlers as valueHandlers, xyzArray, xyzMap };
148
+ export { CONTROL_MINI_NO_NEGATIVE, PRESET_NAME, SpecialColorKey, camelize, colorCSSGenerator, colorResolver, colorVariable, colorableShadows, compressCSS, cornerMap, cssMathFnRE, cssVarFnRE, defineProperty, directionMap, directionSize, getThemeColor, globalKeywords, h, handler, hasParseableColor, hyphenate, insetMap, isCSSMathFn, isSize, makeGlobalStaticRules, numberResolver, parseColor, parseThemeColor, passThemeKey, positionMap, resolveBreakpoints, resolveVerticalBreakpoints, splitShorthand, themeTracking, trackedTheme, transformXYZ, handlers as valueHandlers, xyzArray, xyzMap };
package/dist/utils.mjs CHANGED
@@ -1,4 +1,3 @@
1
- export { p as passThemeKey } from './shared/preset-wind4.DRtKeBWc.mjs';
2
- export { C as CONTROL_MINI_NO_NEGATIVE, S as SpecialColorKey, E as camelToHyphen, l as colorCSSGenerator, m as colorResolver, t as colorVariable, k as colorableShadows, F as compressCSS, c as cornerMap, e as cssMathFnRE, f as cssVarFnRE, G as defineProperty, d as directionMap, j as directionSize, r as getThemeColor, g as globalKeywords, a as h, h as handler, u as hasParseableColor, i as insetMap, A as isCSSMathFn, B as isSize, z as makeGlobalStaticRules, n as numberResolver, o as parseColor, q as parseThemeColor, p as positionMap, w as resolveBreakpoints, y as resolveVerticalBreakpoints, s as splitShorthand, D as transformXYZ, v as valueHandlers, b as xyzArray, x as xyzMap } from './shared/preset-wind4.D40diWvF.mjs';
1
+ export { C as CONTROL_MINI_NO_NEGATIVE, P as PRESET_NAME, S as SpecialColorKey, H as camelize, o as colorCSSGenerator, q as colorResolver, y as colorVariable, m as colorableShadows, J as compressCSS, c as cornerMap, j as cssMathFnRE, k as cssVarFnRE, K as defineProperty, d as directionMap, l as directionSize, w as getThemeColor, g as globalKeywords, b as h, h as handler, z as hasParseableColor, I as hyphenate, i as insetMap, E as isCSSMathFn, F as isSize, D as makeGlobalStaticRules, n as numberResolver, r as parseColor, u as parseThemeColor, p as passThemeKey, f as positionMap, A as resolveBreakpoints, B as resolveVerticalBreakpoints, s as splitShorthand, a as themeTracking, t as trackedTheme, G as transformXYZ, v as valueHandlers, e as xyzArray, x as xyzMap } from './shared/preset-wind4.47ZKbxbU.mjs';
3
2
  export * from '@unocss/rule-utils';
4
3
  import '@unocss/core';
@@ -4,7 +4,7 @@ import { PresetWind4Options } from './index.mjs';
4
4
  export { variants } from './index.mjs';
5
5
  import './shared/preset-wind4.DIUjJahF.mjs';
6
6
  import './shortcuts.mjs';
7
- import './shared/preset-wind4.pue_BigB.mjs';
7
+ import './shared/preset-wind4.BOe5kxIw.mjs';
8
8
 
9
9
  declare const variantAria: VariantObject<Theme>;
10
10
  declare const variantTaggedAriaAttributes: Variant<Theme>[];
@@ -4,7 +4,7 @@ import { PresetWind4Options } from './index.js';
4
4
  export { variants } from './index.js';
5
5
  import './shared/preset-wind4.BJEl798_.js';
6
6
  import './shortcuts.js';
7
- import './shared/preset-wind4.pue_BigB.js';
7
+ import './shared/preset-wind4.BOe5kxIw.js';
8
8
 
9
9
  declare const variantAria: VariantObject<Theme>;
10
10
  declare const variantTaggedAriaAttributes: Variant<Theme>[];
package/dist/variants.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export { c as calcMaxWidthBySize, D as placeholderModifier, v as variantAria, b as variantBreakpoints, d as variantChildren, h as variantColorsMediaOrClass, i as variantColorsScheme, e as variantCombinators, g as variantContainerQuery, q as variantContrasts, w as variantCssLayer, p as variantCustomMedia, j as variantDataAttribute, t as variantForcedColors, n as variantImportant, x as variantInternalLayer, m as variantLanguageDirections, r as variantMotions, C as variantNegative, s as variantOrientations, H as variantPartClasses, o as variantPrint, F as variantPseudoClassFunctions, E as variantPseudoClassesAndElements, y as variantScope, u as variantSelector, I as variantStartingStyle, B as variantStickyHover, J as variantSupports, f as variantSvgCombinators, a as variantTaggedAriaAttributes, k as variantTaggedDataAttributes, G as variantTaggedPseudoClasses, A as variantTheme, z as variantVariables, l as variants } from './shared/preset-wind4.BxOT-c8M.mjs';
1
+ export { c as calcMaxWidthBySize, D as placeholderModifier, v as variantAria, b as variantBreakpoints, d as variantChildren, h as variantColorsMediaOrClass, i as variantColorsScheme, e as variantCombinators, g as variantContainerQuery, q as variantContrasts, w as variantCssLayer, p as variantCustomMedia, j as variantDataAttribute, t as variantForcedColors, n as variantImportant, x as variantInternalLayer, m as variantLanguageDirections, r as variantMotions, C as variantNegative, s as variantOrientations, H as variantPartClasses, o as variantPrint, F as variantPseudoClassFunctions, E as variantPseudoClassesAndElements, y as variantScope, u as variantSelector, I as variantStartingStyle, B as variantStickyHover, J as variantSupports, f as variantSvgCombinators, a as variantTaggedAriaAttributes, k as variantTaggedDataAttributes, G as variantTaggedPseudoClasses, A as variantTheme, z as variantVariables, l as variants } from './shared/preset-wind4.fVfslvMN.mjs';
2
2
  import '@unocss/rule-utils';
3
- import './shared/preset-wind4.D40diWvF.mjs';
3
+ import './shared/preset-wind4.47ZKbxbU.mjs';
4
4
  import '@unocss/core';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@unocss/preset-wind4",
3
3
  "type": "module",
4
- "version": "66.1.0-beta.4",
4
+ "version": "66.1.0-beta.6",
5
5
  "description": "Tailwind 4 compact preset for UnoCSS",
6
6
  "author": "Anthony Fu <anthonyfu117@hotmail.com>",
7
7
  "license": "MIT",
@@ -65,9 +65,9 @@
65
65
  "dist"
66
66
  ],
67
67
  "dependencies": {
68
- "@unocss/core": "66.1.0-beta.4",
69
- "@unocss/extractor-arbitrary-variants": "66.1.0-beta.4",
70
- "@unocss/rule-utils": "66.1.0-beta.4"
68
+ "@unocss/core": "66.1.0-beta.6",
69
+ "@unocss/extractor-arbitrary-variants": "66.1.0-beta.6",
70
+ "@unocss/rule-utils": "66.1.0-beta.6"
71
71
  },
72
72
  "scripts": {
73
73
  "build": "unbuild",
@@ -1,3 +0,0 @@
1
- const passThemeKey = ["DEFAULT", "none"];
2
-
3
- export { passThemeKey as p };