@unocss/preset-wind4 66.4.2 → 66.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1,14 +1,14 @@
1
1
  import { uniq, toArray, definePreset } from '@unocss/core';
2
2
  import { extractorArbitraryVariants } from '@unocss/extractor-arbitrary-variants';
3
- import { n as trackedProperties, k as themeTracking, M as compressCSS, z as getThemeByKey, m as detectThemeValue, t as trackedTheme, g as globalKeywords, P as PRESET_NAME } from './shared/preset-wind4.Dh6P6wnz.mjs';
3
+ import { n as trackedProperties, k as themeTracking, M as compressCSS, z as getThemeByKey, m as detectThemeValue, t as trackedTheme, g as globalKeywords, P as PRESET_NAME } from './shared/preset-wind4.DQ5mCnzs.mjs';
4
4
  import { alphaPlaceholdersRE } from '@unocss/rule-utils';
5
5
  import { postprocessors } from './postprocess.mjs';
6
- import { k as variants } from './shared/preset-wind4.CGl5yp9H.mjs';
6
+ import { k as variants } from './shared/preset-wind4.CnuVK22X.mjs';
7
7
  import { theme as theme$1 } from './theme.mjs';
8
- import { s as shortcuts } from './shared/preset-wind4.DJR3nFnD.mjs';
9
- import { r as rules } from './shared/preset-wind4.DL_o-1Od.mjs';
8
+ import { s as shortcuts } from './shared/preset-wind4.B-pGDZEs.mjs';
9
+ import { r as rules } from './shared/preset-wind4.0HJheUIP.mjs';
10
10
  import './colors.mjs';
11
- import './shared/preset-wind4.Y5BADsqi.mjs';
11
+ import './shared/preset-wind4.MfvwEdUa.mjs';
12
12
 
13
13
  function properties() {
14
14
  return {
@@ -446,7 +446,8 @@ const ExcludeCssVarKeys = [
446
446
  "property",
447
447
  "aria",
448
448
  "media",
449
- "supports"
449
+ "supports",
450
+ "containers"
450
451
  ];
451
452
  function getThemeVarsMap(theme2, keys) {
452
453
  const themeMap = /* @__PURE__ */ new Map([
package/dist/rules.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { Rule, CSSEntries, Shortcut, StaticRule, CSSValueInput } from '@unocss/core';
1
+ import { Rule, CSSEntries, Shortcut, StaticRule, CSSValueInput, VariantHandler } from '@unocss/core';
2
2
  import { T as Theme } from './shared/preset-wind4.CeNzqhCV.mjs';
3
3
  export { r as rules } from './shared/preset-wind4.O8irdiHr.mjs';
4
4
  import { Theme as Theme$1 } from '@unocss/preset-wind4';
@@ -105,7 +105,7 @@ declare const aspectRatio: Rule<Theme>[];
105
105
  declare const paddings: Rule<Theme>[];
106
106
  declare const margins: Rule<Theme>[];
107
107
  declare const spaces: Rule<Theme>[];
108
- declare function notLastChildSelector(s: string): string;
108
+ declare function notLastChildSelectorVariant(s: string): VariantHandler;
109
109
 
110
110
  declare const displays: Rule<Theme>[];
111
111
  declare const appearances: Rule<Theme>[];
@@ -168,4 +168,4 @@ declare const cssProperty: Rule<Theme>[];
168
168
 
169
169
  declare const viewTransition: Rule<Theme>[];
170
170
 
171
- export { accents, accessibility, alignments, animations, appearance, appearances, aspectRatio, backgroundBlendModes, backgroundStyles, bgColors, borderStyles, borders, boxShadows, boxSizing, breaks, carets, colorScheme, columns, container, containerParent, containerShortcuts, contains, contentVisibility, contents, cssProperty, cssVariables, cursors, displays, divides, dynamicViewportHeight, fieldSizing, filters, flex, flexGridJustifiesAlignments, floats, fontSmoothings, fontStyles, fontVariantNumeric, fonts, gaps, grids, handlerBorderStyle, hyphens, imageRenderings, insets, isolations, justifies, lineClamps, listStyle, margins, masks, mixBlendModes, notLastChildSelector, objectPositions, opacity, orders, outline, overflows, overscrolls, paddings, placeholders, placements, pointerEvents, positions, questionMark, resizes, rings, screenReadersAccess, scrollBehaviors, scrolls, shadowProperties, sizes, spaces, splitShorthand, svgUtilities, tabSizes, tables, textAligns, textDecorations, textIndents, textOverflows, textShadows, textStrokes, textTransforms, textWraps, touchActions, transformBase, transforms, transitions, userSelects, verticalAligns, viewTransition, whitespaces, willChange, writingModes, writingOrientations, zIndexes };
171
+ export { accents, accessibility, alignments, animations, appearance, appearances, aspectRatio, backgroundBlendModes, backgroundStyles, bgColors, borderStyles, borders, boxShadows, boxSizing, breaks, carets, colorScheme, columns, container, containerParent, containerShortcuts, contains, contentVisibility, contents, cssProperty, cssVariables, cursors, displays, divides, dynamicViewportHeight, fieldSizing, filters, flex, flexGridJustifiesAlignments, floats, fontSmoothings, fontStyles, fontVariantNumeric, fonts, gaps, grids, handlerBorderStyle, hyphens, imageRenderings, insets, isolations, justifies, lineClamps, listStyle, margins, masks, mixBlendModes, notLastChildSelectorVariant, objectPositions, opacity, orders, outline, overflows, overscrolls, paddings, placeholders, placements, pointerEvents, positions, questionMark, resizes, rings, screenReadersAccess, scrollBehaviors, scrolls, shadowProperties, sizes, spaces, splitShorthand, svgUtilities, tabSizes, tables, textAligns, textDecorations, textIndents, textOverflows, textShadows, textStrokes, textTransforms, textWraps, touchActions, transformBase, transforms, transitions, userSelects, verticalAligns, viewTransition, whitespaces, willChange, writingModes, writingOrientations, zIndexes };
package/dist/rules.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Rule, CSSEntries, Shortcut, StaticRule, CSSValueInput } from '@unocss/core';
1
+ import { Rule, CSSEntries, Shortcut, StaticRule, CSSValueInput, VariantHandler } from '@unocss/core';
2
2
  import { T as Theme } from './shared/preset-wind4.CeNzqhCV.js';
3
3
  export { r as rules } from './shared/preset-wind4.oLaz9HAb.js';
4
4
  import { Theme as Theme$1 } from '@unocss/preset-wind4';
@@ -105,7 +105,7 @@ declare const aspectRatio: Rule<Theme>[];
105
105
  declare const paddings: Rule<Theme>[];
106
106
  declare const margins: Rule<Theme>[];
107
107
  declare const spaces: Rule<Theme>[];
108
- declare function notLastChildSelector(s: string): string;
108
+ declare function notLastChildSelectorVariant(s: string): VariantHandler;
109
109
 
110
110
  declare const displays: Rule<Theme>[];
111
111
  declare const appearances: Rule<Theme>[];
@@ -168,4 +168,4 @@ declare const cssProperty: Rule<Theme>[];
168
168
 
169
169
  declare const viewTransition: Rule<Theme>[];
170
170
 
171
- export { accents, accessibility, alignments, animations, appearance, appearances, aspectRatio, backgroundBlendModes, backgroundStyles, bgColors, borderStyles, borders, boxShadows, boxSizing, breaks, carets, colorScheme, columns, container, containerParent, containerShortcuts, contains, contentVisibility, contents, cssProperty, cssVariables, cursors, displays, divides, dynamicViewportHeight, fieldSizing, filters, flex, flexGridJustifiesAlignments, floats, fontSmoothings, fontStyles, fontVariantNumeric, fonts, gaps, grids, handlerBorderStyle, hyphens, imageRenderings, insets, isolations, justifies, lineClamps, listStyle, margins, masks, mixBlendModes, notLastChildSelector, objectPositions, opacity, orders, outline, overflows, overscrolls, paddings, placeholders, placements, pointerEvents, positions, questionMark, resizes, rings, screenReadersAccess, scrollBehaviors, scrolls, shadowProperties, sizes, spaces, splitShorthand, svgUtilities, tabSizes, tables, textAligns, textDecorations, textIndents, textOverflows, textShadows, textStrokes, textTransforms, textWraps, touchActions, transformBase, transforms, transitions, userSelects, verticalAligns, viewTransition, whitespaces, willChange, writingModes, writingOrientations, zIndexes };
171
+ export { accents, accessibility, alignments, animations, appearance, appearances, aspectRatio, backgroundBlendModes, backgroundStyles, bgColors, borderStyles, borders, boxShadows, boxSizing, breaks, carets, colorScheme, columns, container, containerParent, containerShortcuts, contains, contentVisibility, contents, cssProperty, cssVariables, cursors, displays, divides, dynamicViewportHeight, fieldSizing, filters, flex, flexGridJustifiesAlignments, floats, fontSmoothings, fontStyles, fontVariantNumeric, fonts, gaps, grids, handlerBorderStyle, hyphens, imageRenderings, insets, isolations, justifies, lineClamps, listStyle, margins, masks, mixBlendModes, notLastChildSelectorVariant, objectPositions, opacity, orders, outline, overflows, overscrolls, paddings, placeholders, placements, pointerEvents, positions, questionMark, resizes, rings, screenReadersAccess, scrollBehaviors, scrolls, shadowProperties, sizes, spaces, splitShorthand, svgUtilities, tabSizes, tables, textAligns, textDecorations, textIndents, textOverflows, textShadows, textStrokes, textTransforms, textWraps, touchActions, transformBase, transforms, transitions, userSelects, verticalAligns, viewTransition, whitespaces, willChange, writingModes, writingOrientations, zIndexes };
package/dist/rules.mjs CHANGED
@@ -1,5 +1,5 @@
1
- export { d as accents, an as accessibility, I as alignments, a as animations, c as appearance, $ as appearances, V as aspectRatio, ak as backgroundBlendModes, b as backgroundStyles, m as bgColors, g as borderStyles, h as borders, T as boxShadows, O as boxSizing, a8 as breaks, e as carets, n as colorScheme, p as columns, a1 as contains, a6 as contentVisibility, a7 as contents, aD as cssProperty, aC as cssVariables, a0 as cursors, _ as displays, u as divides, am as dynamicViewportHeight, ao as fieldSizing, x as filters, y as flex, K as flexGridJustifiesAlignments, M as floats, ad as fontSmoothings, ac as fontStyles, aA as fontVariantNumeric, av as fonts, z as gaps, A as grids, j as handlerBorderStyle, ae as hyphens, i as imageRenderings, L as insets, ai as isolations, G as justifies, C as lineClamps, l as listStyle, X as margins, D as masks, al as mixBlendModes, Z as notLastChildSelector, aj as objectPositions, k as opacity, H as orders, o as outline, B as overflows, f as overscrolls, W as paddings, E as placeholders, J as placements, a2 as pointerEvents, F as positions, P as questionMark, a3 as resizes, Q as rings, r as rules, ah as screenReadersAccess, s as scrollBehaviors, R as scrolls, S as shadowProperties, U as sizes, Y as spaces, aB as splitShorthand, ap as svgUtilities, aw as tabSizes, aq as tables, t as textAligns, q as textDecorations, ax as textIndents, aa as textOverflows, az as textShadows, ay as textStrokes, ab as textTransforms, a9 as textWraps, ar as touchActions, as as transformBase, at as transforms, au as transitions, a4 as userSelects, v as verticalAligns, aE as viewTransition, a5 as whitespaces, w as willChange, af as writingModes, ag as writingOrientations, N as zIndexes } from './shared/preset-wind4.DL_o-1Od.mjs';
2
- export { a as container, c as containerParent, b as containerShortcuts } from './shared/preset-wind4.Y5BADsqi.mjs';
3
- import './shared/preset-wind4.Dh6P6wnz.mjs';
1
+ export { d as accents, an as accessibility, I as alignments, a as animations, c as appearance, $ as appearances, V as aspectRatio, ak as backgroundBlendModes, b as backgroundStyles, m as bgColors, g as borderStyles, h as borders, T as boxShadows, O as boxSizing, a8 as breaks, e as carets, n as colorScheme, p as columns, a1 as contains, a6 as contentVisibility, a7 as contents, aD as cssProperty, aC as cssVariables, a0 as cursors, _ as displays, u as divides, am as dynamicViewportHeight, ao as fieldSizing, x as filters, y as flex, K as flexGridJustifiesAlignments, M as floats, ad as fontSmoothings, ac as fontStyles, aA as fontVariantNumeric, av as fonts, z as gaps, A as grids, j as handlerBorderStyle, ae as hyphens, i as imageRenderings, L as insets, ai as isolations, G as justifies, C as lineClamps, l as listStyle, X as margins, D as masks, al as mixBlendModes, Z as notLastChildSelectorVariant, aj as objectPositions, k as opacity, H as orders, o as outline, B as overflows, f as overscrolls, W as paddings, E as placeholders, J as placements, a2 as pointerEvents, F as positions, P as questionMark, a3 as resizes, Q as rings, r as rules, ah as screenReadersAccess, s as scrollBehaviors, R as scrolls, S as shadowProperties, U as sizes, Y as spaces, aB as splitShorthand, ap as svgUtilities, aw as tabSizes, aq as tables, t as textAligns, q as textDecorations, ax as textIndents, aa as textOverflows, az as textShadows, ay as textStrokes, ab as textTransforms, a9 as textWraps, ar as touchActions, as as transformBase, at as transforms, au as transitions, a4 as userSelects, v as verticalAligns, aE as viewTransition, a5 as whitespaces, w as willChange, af as writingModes, ag as writingOrientations, N as zIndexes } from './shared/preset-wind4.0HJheUIP.mjs';
2
+ export { a as container, c as containerParent, b as containerShortcuts } from './shared/preset-wind4.MfvwEdUa.mjs';
3
+ import './shared/preset-wind4.DQ5mCnzs.mjs';
4
4
  import '@unocss/core';
5
5
  import '@unocss/rule-utils';
@@ -1,7 +1,7 @@
1
- import { g as globalKeywords, b as h, G as makeGlobalStaticRules, p as positionMap, w as parseColor, S as SpecialColorKey, l as generateThemeVariable, H as defineProperty, k as themeTracking, m as detectThemeValue, B as colorResolver, I as isCSSMathFn, d as directionMap, E as hasParseableColor, c as cornerMap, A as colorCSSGenerator, J as isSize, s as directionSize, q as numberResolver, D as colorableShadows, L as hyphenate, i as insetMap, r as resolveBreakpoints, C as CONTROL_NO_NEGATIVE, x as xyzMap, N as splitComma, e as xyzArray, O as bracketTypeRe } from './preset-wind4.Dh6P6wnz.mjs';
1
+ import { g as globalKeywords, b as h, G as makeGlobalStaticRules, p as positionMap, w as parseColor, S as SpecialColorKey, l as generateThemeVariable, H as defineProperty, k as themeTracking, m as detectThemeValue, B as colorResolver, I as isCSSMathFn, d as directionMap, E as hasParseableColor, c as cornerMap, A as colorCSSGenerator, J as isSize, s as directionSize, q as numberResolver, D as colorableShadows, L as hyphenate, i as insetMap, r as resolveBreakpoints, C as CONTROL_NO_NEGATIVE, x as xyzMap, N as splitComma, e as xyzArray, O as bracketTypeRe } from './preset-wind4.DQ5mCnzs.mjs';
2
2
  import { symbols, notNull } from '@unocss/core';
3
- import { a as container, c as containerParent } from './preset-wind4.Y5BADsqi.mjs';
4
- import { getStringComponent } from '@unocss/rule-utils';
3
+ import { a as container, c as containerParent } from './preset-wind4.MfvwEdUa.mjs';
4
+ import { getStringComponents, getStringComponent } from '@unocss/rule-utils';
5
5
 
6
6
  const verticalAlignAlias = {
7
7
  "mid": "middle",
@@ -634,19 +634,25 @@ const margins = [
634
634
  ];
635
635
  const spaces = [
636
636
  [/^space-([xy])-(.+)$/, handlerSpace, { autocomplete: ["space-(x|y)", "space-(x|y)-reverse", "space-(x|y)-$spacing"] }],
637
- [/^space-([xy])-reverse$/, function* ([, d], { symbols }) {
637
+ [/^space-([xy])-reverse$/, function* ([m, d], { symbols }) {
638
638
  yield {
639
- [symbols.selector]: notLastChildSelector,
639
+ [symbols.variants]: [notLastChildSelectorVariant(m)],
640
640
  [`--un-space-${d}-reverse`]: "1"
641
641
  };
642
642
  yield defineProperty(`--un-space-${d}-reverse`, { initialValue: 0 });
643
643
  }]
644
644
  ];
645
- function notLastChildSelector(s) {
646
- const not = ">:not(:last-child)";
647
- return s.includes(not) ? s : `${s}${not}`;
645
+ function notLastChildSelectorVariant(s) {
646
+ return {
647
+ matcher: s,
648
+ handle: (input, next) => next({
649
+ ...input,
650
+ parent: `${input.parent ? `${input.parent} $$ ` : ""}${input.selector}`,
651
+ selector: ":where(&>:not(:last-child))"
652
+ })
653
+ };
648
654
  }
649
- function* handlerSpace([, d, s], { theme, symbols }) {
655
+ function* handlerSpace([m, d, s], { theme, symbols }) {
650
656
  let v;
651
657
  const num = numberResolver(s);
652
658
  if (num != null) {
@@ -663,7 +669,7 @@ function* handlerSpace([, d, s], { theme, symbols }) {
663
669
  });
664
670
  if (results) {
665
671
  yield {
666
- [symbols.selector]: notLastChildSelector,
672
+ [symbols.variants]: [notLastChildSelectorVariant(m)],
667
673
  [`--un-space-${d}-reverse`]: "0",
668
674
  ...Object.fromEntries(results)
669
675
  };
@@ -678,37 +684,37 @@ const divides = [
678
684
  const result = colorResolver("border-color", "divide")(match, ctx);
679
685
  if (result) {
680
686
  yield {
681
- [ctx.symbols.selector]: notLastChildSelector,
687
+ [ctx.symbols.variants]: [notLastChildSelectorVariant(match[0])],
682
688
  ...result[0]
683
689
  };
684
690
  yield result[1];
685
691
  }
686
692
  }, { autocomplete: "divide-$colors" }],
687
- [/^divide-op(?:acity)?-?(.+)$/, function* ([, opacity], { symbols }) {
693
+ [/^divide-op(?:acity)?-?(.+)$/, function* ([match, opacity], { symbols }) {
688
694
  yield {
689
- [symbols.selector]: notLastChildSelector,
695
+ [symbols.variants]: [notLastChildSelectorVariant(match)],
690
696
  "--un-divide-opacity": h.bracket.percent(opacity)
691
697
  };
692
698
  }, { autocomplete: ["divide-(op|opacity)", "divide-(op|opacity)-<percent>"] }],
693
699
  // divides
694
700
  [/^divide-?([xy])$/, handlerDivide, { autocomplete: ["divide-(x|y)", "divide-(x|y)-reverse"] }],
695
701
  [/^divide-?([xy])-?(.+)$/, handlerDivide],
696
- [/^divide-?([xy])-reverse$/, function* ([, d], { symbols }) {
702
+ [/^divide-?([xy])-reverse$/, function* ([m, d], { symbols }) {
697
703
  yield {
698
- [symbols.selector]: notLastChildSelector,
704
+ [symbols.variants]: [notLastChildSelectorVariant(m)],
699
705
  [`--un-divide-${d}-reverse`]: "1"
700
706
  };
701
707
  yield defineProperty(`--un-divide-${d}-reverse`, { initialValue: 0 });
702
708
  }],
703
709
  // styles
704
- [new RegExp(`^divide-(${borderStyles.join("|")})$`), function* ([, style], { symbols }) {
710
+ [new RegExp(`^divide-(${borderStyles.join("|")})$`), function* ([match, style], { symbols }) {
705
711
  yield {
706
- [symbols.selector]: notLastChildSelector,
712
+ [symbols.variants]: [notLastChildSelectorVariant(match)],
707
713
  "border-style": style
708
714
  };
709
715
  }, { autocomplete: borderStyles.map((i) => `divide-${i}`) }]
710
716
  ];
711
- function* handlerDivide([, d, s], { symbols }) {
717
+ function* handlerDivide([m, d, s], { symbols }) {
712
718
  let v = h.bracket.cssvar.px(s || "1");
713
719
  if (v != null) {
714
720
  if (v === "0")
@@ -726,7 +732,7 @@ function* handlerDivide([, d, s], { symbols }) {
726
732
  });
727
733
  if (results) {
728
734
  yield {
729
- [symbols.selector]: notLastChildSelector,
735
+ [symbols.variants]: [notLastChildSelectorVariant(m)],
730
736
  [`--un-divide-${d}-reverse`]: 0,
731
737
  ...Object.fromEntries(results.flat())
732
738
  };
@@ -795,18 +801,31 @@ function toFilter(varName, resolver) {
795
801
  }
796
802
  };
797
803
  }
798
- function dropShadowResolver([, s], { theme }) {
799
- let v = theme.dropShadow?.[s || "DEFAULT"];
800
- if (v != null) {
801
- const shadows = colorableShadows(v, "--un-drop-shadow-color");
804
+ function dropShadowResolver(match, ctx) {
805
+ const [, s] = match;
806
+ const { theme } = ctx;
807
+ let res = [];
808
+ if (s) {
809
+ res = getStringComponents(s, "/", 2) ?? [];
810
+ if (s.startsWith("/"))
811
+ res = ["", s.slice(1)];
812
+ }
813
+ let v = theme.dropShadow?.[res[0] || "DEFAULT"];
814
+ const c = s ? h.bracket.cssvar(s) : void 0;
815
+ if ((v != null || c != null) && !hasParseableColor(c, theme)) {
816
+ const alpha = res[1] ? h.bracket.percent.cssvar(res[1]) : void 0;
802
817
  return [
803
818
  {
804
- "--un-drop-shadow": `drop-shadow(${shadows.join(") drop-shadow(")})`,
819
+ "--un-drop-shadow-opacity": alpha,
820
+ "--un-drop-shadow": `drop-shadow(${colorableShadows(v || c, "--un-drop-shadow-color", alpha).join(") drop-shadow(")})`,
805
821
  "filter": filterCSS
806
822
  },
807
823
  ...filterProperties
808
824
  ];
809
825
  }
826
+ if (hasParseableColor(s, theme)) {
827
+ return colorResolver("--un-drop-shadow-color", "drop-shadow")(match, ctx);
828
+ }
810
829
  v = h.bracket.cssvar(s) ?? (s === "none" ? "" : void 0);
811
830
  if (v != null) {
812
831
  return [
@@ -824,7 +843,7 @@ const filters = [
824
843
  [/^(?:(backdrop-)|filter-)?brightness-(.+)$/, toFilter("brightness", (s) => h.bracket.cssvar.percent(s)), { autocomplete: ["(backdrop|filter)-brightness-<percent>", "brightness-<percent>"] }],
825
844
  [/^(?:(backdrop-)|filter-)?contrast-(.+)$/, toFilter("contrast", (s) => h.bracket.cssvar.percent(s)), { autocomplete: ["(backdrop|filter)-contrast-<percent>", "contrast-<percent>"] }],
826
845
  // drop-shadow only on filter
827
- [/^(?:filter-)?drop-shadow(?:-(.+))?$/, dropShadowResolver, {
846
+ [/^(?:filter-)?drop-shadow(?:-?(.+))?$/, dropShadowResolver, {
828
847
  autocomplete: [
829
848
  "filter-drop",
830
849
  "filter-drop-shadow",
@@ -833,16 +852,18 @@ const filters = [
833
852
  "drop-shadow-color",
834
853
  "filter-drop-shadow-$dropShadow",
835
854
  "drop-shadow-$dropShadow",
855
+ "filter-drop-shadow-$colors",
856
+ "drop-shadow-$colors",
836
857
  "filter-drop-shadow-color-$colors",
837
858
  "drop-shadow-color-$colors",
838
859
  "filter-drop-shadow-color-(op|opacity)",
839
860
  "drop-shadow-color-(op|opacity)",
840
861
  "filter-drop-shadow-color-(op|opacity)-<percent>",
841
- "drop-shadow-color-(op|opacity)-<percent>"
862
+ "drop-shadow(-color)?-(op|opacity)-<percent>"
842
863
  ]
843
864
  }],
844
865
  [/^(?:filter-)?drop-shadow-color-(.+)$/, colorResolver("--un-drop-shadow-color", "drop-shadow")],
845
- [/^(?:filter-)?drop-shadow-color-op(?:acity)?-?(.+)$/, ([, opacity]) => ({ "--un-drop-shadow-opacity": h.bracket.percent(opacity) })],
866
+ [/^(?:filter-)?drop-shadow(?:-color)?-op(?:acity)?-?(.+)$/, ([, opacity]) => ({ "--un-drop-shadow-opacity": h.bracket.percent(opacity) })],
846
867
  [/^(?:(backdrop-)|filter-)?grayscale(?:-(.+))?$/, toFilter("grayscale", percentWithDefault), { autocomplete: ["(backdrop|filter)-grayscale", "(backdrop|filter)-grayscale-<percent>", "grayscale-<percent>"] }],
847
868
  [/^(?:(backdrop-)|filter-)?hue-rotate-(.+)$/, toFilter("hue-rotate", (s) => h.bracket.cssvar.degree(s))],
848
869
  [/^(?:(backdrop-)|filter-)?invert(?:-(.+))?$/, toFilter("invert", percentWithDefault), { autocomplete: ["(backdrop|filter)-invert", "(backdrop|filter)-invert-<percent>", "invert-<percent>"] }],
@@ -1395,7 +1416,7 @@ const shadowProperties = {
1395
1416
  };
1396
1417
  const boxShadows = [
1397
1418
  // shadow
1398
- [/^shadow(?:-(.+))?$/, handleShadow("shadow"), { autocomplete: ["shadow-$colors", "shadow-$shadow"] }],
1419
+ [/^shadow(?:-?(.+))?$/, handleShadow("shadow"), { autocomplete: ["shadow-$colors", "shadow-$shadow"] }],
1399
1420
  [/^shadow-op(?:acity)?-?(.+)$/, ([, opacity]) => ({ "--un-shadow-opacity": h.bracket.percent.cssvar(opacity) }), { autocomplete: "shadow-(op|opacity)-<percent>" }],
1400
1421
  // inset shadow
1401
1422
  [/^inset-shadow(?:-(.+))?$/, handleShadow("insetShadow"), { autocomplete: ["inset-shadow-$colors", "inset-shadow-$insetShadow"] }],
@@ -1405,13 +1426,21 @@ function handleShadow(themeKey) {
1405
1426
  return (match, ctx) => {
1406
1427
  const [, d] = match;
1407
1428
  const { theme } = ctx;
1408
- const v = theme[themeKey]?.[d || "DEFAULT"];
1429
+ let res = [];
1430
+ if (d) {
1431
+ res = getStringComponents(d, "/", 2) ?? [];
1432
+ if (d.startsWith("/"))
1433
+ res = ["", d.slice(1)];
1434
+ }
1435
+ const v = theme[themeKey]?.[res[0] || "DEFAULT"];
1409
1436
  const c = d ? h.bracket.cssvar(d) : void 0;
1410
1437
  const shadowVar = hyphenate(themeKey);
1411
1438
  if ((v != null || c != null) && !hasParseableColor(c, theme)) {
1439
+ const alpha = res[1] ? h.bracket.percent.cssvar(res[1]) : void 0;
1412
1440
  return [
1413
1441
  {
1414
- [`--un-${shadowVar}`]: colorableShadows(v || c, `--un-${shadowVar}-color`).join(","),
1442
+ [`--un-${shadowVar}-opacity`]: alpha,
1443
+ [`--un-${shadowVar}`]: colorableShadows(v || c, `--un-${shadowVar}-color`, alpha).join(","),
1415
1444
  "box-shadow": "var(--un-inset-shadow), var(--un-inset-ring-shadow), var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow)"
1416
1445
  },
1417
1446
  ...Object.values(shadowProperties)
@@ -2454,21 +2483,27 @@ const textStrokes = [
2454
2483
  [/^text-stroke-(.+)$/, colorResolver("-webkit-text-stroke-color", "text-stroke"), { autocomplete: "text-stroke-$colors" }],
2455
2484
  [/^text-stroke-op(?:acity)?-?(.+)$/, ([, opacity]) => ({ "--un-text-stroke-opacity": h.bracket.percent.cssvar(opacity) }), { autocomplete: "text-stroke-(op|opacity)-<percent>" }]
2456
2485
  ];
2457
- const opRE = /op(?:acity)?-/;
2486
+ function handleTextShadow(match, ctx) {
2487
+ const [, s] = match;
2488
+ const { theme } = ctx;
2489
+ let res = [];
2490
+ if (s) {
2491
+ res = getStringComponents(s, "/", 2) ?? [];
2492
+ }
2493
+ const v = theme.textShadow?.[res[0]];
2494
+ const c = s ? h.bracket.cssvar(s) : void 0;
2495
+ if ((v != null || c != null) && !hasParseableColor(c, theme)) {
2496
+ const alpha = res[1] ? h.bracket.percent.cssvar(res[1]) : void 0;
2497
+ return {
2498
+ "--un-text-shadow-opacity": alpha,
2499
+ "--un-text-shadow": colorableShadows(v || c, "--un-text-shadow-color", alpha).join(","),
2500
+ "text-shadow": "var(--un-text-shadow)"
2501
+ };
2502
+ }
2503
+ return colorResolver("--un-text-shadow-color", "text-shadow")(match, ctx) ?? { "text-shadow": h.bracket.cssvar.global(s) };
2504
+ }
2458
2505
  const textShadows = [
2459
- [/^text-shadow(?:-(.+))?$/, (match, ctx) => {
2460
- const [_, s = "DEFAULT"] = match;
2461
- const v = ctx.theme.textShadow?.[s];
2462
- if (v != null) {
2463
- return {
2464
- "--un-text-shadow": colorableShadows(v, "--un-text-shadow-color").join(","),
2465
- "text-shadow": "var(--un-text-shadow)"
2466
- };
2467
- }
2468
- if (opRE.test(s))
2469
- return { "--un-text-shadow-opacity": h.bracket.percent.cssvar(s.replace(opRE, "")) };
2470
- return colorResolver("--un-text-shadow-color", "text-shadow")(match, ctx) ?? { "text-shadow": h.bracket.cssvar.global(s) };
2471
- }, {
2506
+ [/^text-shadow-(.+)$/, handleTextShadow, {
2472
2507
  autocomplete: [
2473
2508
  "text-shadow-$textShadow",
2474
2509
  "text-shadow(-color)?-$colors",
@@ -2477,7 +2512,7 @@ const textShadows = [
2477
2512
  }],
2478
2513
  // colors
2479
2514
  [/^text-shadow-color-(.+)$/, colorResolver("--un-text-shadow-color", "text-shadow"), { autocomplete: "text-shadow-color-$colors" }],
2480
- [/^text-shadow-color-op(?:acity)?-?(.+)$/, ([, opacity]) => ({ "--un-text-shadow-opacity": h.bracket.percent.cssvar(opacity) }), { autocomplete: "text-shadow-color-(op|opacity)-<percent>" }]
2515
+ [/^text-shadow(?:-color)?-op(?:acity)?-?(.+)$/, ([, opacity]) => ({ "--un-text-shadow-opacity": h.bracket.percent.cssvar(opacity) }), { autocomplete: "text-shadow(-color)?-(op|opacity)-<percent>" }]
2481
2516
  ];
2482
2517
  const fontVariantNumericProperties = [
2483
2518
  defineProperty("--un-ordinal"),
@@ -2748,4 +2783,4 @@ const rules = [
2748
2783
  questionMark
2749
2784
  ].flat();
2750
2785
 
2751
- export { appearances as $, grids as A, overflows as B, lineClamps as C, masks as D, placeholders as E, positions as F, justifies as G, orders as H, alignments as I, placements as J, flexGridJustifiesAlignments as K, insets as L, floats as M, zIndexes as N, boxSizing as O, questionMark as P, rings as Q, scrolls as R, shadowProperties as S, boxShadows as T, sizes as U, aspectRatio as V, paddings as W, margins as X, spaces as Y, notLastChildSelector as Z, displays as _, animations as a, cursors as a0, contains as a1, pointerEvents as a2, resizes as a3, userSelects as a4, whitespaces as a5, contentVisibility as a6, contents as a7, breaks as a8, textWraps as a9, fontVariantNumeric as aA, splitShorthand as aB, cssVariables as aC, cssProperty as aD, viewTransition as aE, textOverflows as aa, textTransforms as ab, fontStyles as ac, fontSmoothings as ad, hyphens as ae, writingModes as af, writingOrientations as ag, screenReadersAccess as ah, isolations as ai, objectPositions as aj, backgroundBlendModes as ak, mixBlendModes as al, dynamicViewportHeight as am, accessibility as an, fieldSizing as ao, svgUtilities as ap, tables as aq, touchActions as ar, transformBase as as, transforms as at, transitions as au, fonts as av, tabSizes as aw, textIndents as ax, textStrokes as ay, textShadows as az, backgroundStyles as b, appearance as c, accents as d, carets as e, overscrolls as f, borderStyles as g, borders as h, imageRenderings as i, handlerBorderStyle as j, opacity as k, listStyle as l, bgColors as m, colorScheme as n, outline as o, columns as p, textDecorations as q, rules as r, scrollBehaviors as s, textAligns as t, divides as u, verticalAligns as v, willChange as w, filters as x, flex as y, gaps as z };
2786
+ export { appearances as $, grids as A, overflows as B, lineClamps as C, masks as D, placeholders as E, positions as F, justifies as G, orders as H, alignments as I, placements as J, flexGridJustifiesAlignments as K, insets as L, floats as M, zIndexes as N, boxSizing as O, questionMark as P, rings as Q, scrolls as R, shadowProperties as S, boxShadows as T, sizes as U, aspectRatio as V, paddings as W, margins as X, spaces as Y, notLastChildSelectorVariant as Z, displays as _, animations as a, cursors as a0, contains as a1, pointerEvents as a2, resizes as a3, userSelects as a4, whitespaces as a5, contentVisibility as a6, contents as a7, breaks as a8, textWraps as a9, fontVariantNumeric as aA, splitShorthand as aB, cssVariables as aC, cssProperty as aD, viewTransition as aE, textOverflows as aa, textTransforms as ab, fontStyles as ac, fontSmoothings as ad, hyphens as ae, writingModes as af, writingOrientations as ag, screenReadersAccess as ah, isolations as ai, objectPositions as aj, backgroundBlendModes as ak, mixBlendModes as al, dynamicViewportHeight as am, accessibility as an, fieldSizing as ao, svgUtilities as ap, tables as aq, touchActions as ar, transformBase as as, transforms as at, transitions as au, fonts as av, tabSizes as aw, textIndents as ax, textStrokes as ay, textShadows as az, backgroundStyles as b, appearance as c, accents as d, carets as e, overscrolls as f, borderStyles as g, borders as h, imageRenderings as i, handlerBorderStyle as j, opacity as k, listStyle as l, bgColors as m, colorScheme as n, outline as o, columns as p, textDecorations as q, rules as r, scrollBehaviors as s, textAligns as t, divides as u, verticalAligns as v, willChange as w, filters as x, flex as y, gaps as z };
@@ -1,4 +1,4 @@
1
- import { b as containerShortcuts } from './preset-wind4.Y5BADsqi.mjs';
1
+ import { b as containerShortcuts } from './preset-wind4.MfvwEdUa.mjs';
2
2
 
3
3
  const shortcuts = [
4
4
  ...containerShortcuts
@@ -1,5 +1,5 @@
1
1
  import { variantGetParameter, calcMaxWidthBySize, variantMatcher, variantGetBracket, variantParentMatcher, getBracket, hasThemeFn, transformThemeFn, getStringComponent, createPartClasses, createPseudoClassesAndElements, createPseudoClassFunctions, createTaggedPseudoClasses } from '@unocss/rule-utils';
2
- import { b as h, r as resolveBreakpoints, C as CONTROL_NO_NEGATIVE, f as cssMathFnRE, j as cssVarFnRE, E as hasParseableColor } from './preset-wind4.Dh6P6wnz.mjs';
2
+ import { b as h, r as resolveBreakpoints, C as CONTROL_NO_NEGATIVE, f as cssMathFnRE, j as cssVarFnRE, E as hasParseableColor } from './preset-wind4.DQ5mCnzs.mjs';
3
3
  import { toArray } from '@unocss/core';
4
4
 
5
5
  const variantAria = {
@@ -538,7 +538,7 @@ const variantImplicitGroup = {
538
538
  const anchoredNumberRE = /^-?[0-9.]+(?:[a-z]+|%)?$/;
539
539
  const numberRE = /-?[0-9.]+(?:[a-z]+|%)?/;
540
540
  const ignoreProps = [
541
- /\b(opacity|color|flex|backdrop-filter|^filter|transform|mask-image)\b/
541
+ /\b(opacity|color|flex|backdrop-filter|^filter|^scale|transform|mask-image)\b/
542
542
  ];
543
543
  function negateMathFunction(value) {
544
544
  const match = value.match(cssMathFnRE) || value.match(cssVarFnRE);
@@ -428,7 +428,7 @@ function numberResolver(size, defaultValue) {
428
428
  }
429
429
  }
430
430
  function directionSize(property, map = directionMap, formatter = (p, d) => `${p}${d}`) {
431
- return ([_, direction, size], { theme }) => {
431
+ return (([_, direction, size], { theme }) => {
432
432
  if (size != null && direction != null) {
433
433
  let v;
434
434
  const isNegative = size.startsWith("-");
@@ -447,7 +447,7 @@ function directionSize(property, map = directionMap, formatter = (p, d) => `${p}
447
447
  return map[direction].map((i) => [formatter(property, i), v]);
448
448
  }
449
449
  }
450
- };
450
+ });
451
451
  }
452
452
  function splitShorthand(body, type) {
453
453
  const [front, rest] = getStringComponent(body, "[", "]", ["/", ":"]) ?? [];
@@ -584,11 +584,12 @@ function colorCSSGenerator(data, property, varName, ctx) {
584
584
  if (keys) {
585
585
  themeTracking(`colors`, keys);
586
586
  if (!modifier) {
587
+ const colorValue = ["shadow", "inset-shadow", "text-shadow", "drop-shadow"].includes(varName) ? `${alpha ? `color-mix(in oklab, ${value} ${alpha}, transparent)` : `${value}`} var(${alphaKey})` : `${value} ${alpha ?? `var(${alphaKey})`}`;
587
588
  result.push({
588
589
  [symbols.parent]: "@supports (color: color-mix(in lab, red, red))",
589
590
  [symbols.noMerge]: true,
590
591
  [symbols.shortcutsNoMerge]: true,
591
- [property]: `color-mix(in oklab, ${value} ${alpha ?? `var(${alphaKey})`}, transparent)${rawColorComment}`
592
+ [property]: `color-mix(in oklab, ${colorValue}, transparent)${rawColorComment}`
592
593
  });
593
594
  }
594
595
  }
@@ -607,7 +608,7 @@ function colorResolver(property, varName) {
607
608
  return colorCSSGenerator(data, property, varName, ctx);
608
609
  };
609
610
  }
610
- function colorableShadows(shadows, colorVar) {
611
+ function colorableShadows(shadows, colorVar, alpha) {
611
612
  const colored = [];
612
613
  shadows = toArray(shadows);
613
614
  for (let i = 0; i < shadows.length; i++) {
@@ -625,16 +626,17 @@ function colorableShadows(shadows, colorVar) {
625
626
  if (parseCssColor(components.at(0))) {
626
627
  const color = parseCssColor(components.shift());
627
628
  if (color)
628
- colorVarValue = `, ${colorToString(color)}`;
629
+ colorVarValue = colorToString(color);
629
630
  } else if (parseCssColor(lastComp)) {
630
631
  const color = parseCssColor(components.pop());
631
632
  if (color)
632
- colorVarValue = `, ${colorToString(color)}`;
633
+ colorVarValue = colorToString(color);
633
634
  } else if (lastComp && cssVarFnRE.test(lastComp)) {
634
635
  const color = components.pop();
635
- colorVarValue = `, ${color}`;
636
+ if (color)
637
+ colorVarValue = color;
636
638
  }
637
- colored.push(`${isInset ? "inset " : ""}${components.join(" ")} var(${colorVar}${colorVarValue})`);
639
+ colored.push(`${isInset ? "inset " : ""}${components.join(" ")} var(${colorVar}, ${alpha ? `oklab(from ${colorVarValue} l a b / ${alpha})` : colorVarValue})`);
638
640
  }
639
641
  return colored;
640
642
  }
@@ -1,5 +1,5 @@
1
1
  import { isString } from '@unocss/core';
2
- import { r as resolveBreakpoints } from './preset-wind4.Dh6P6wnz.mjs';
2
+ import { r as resolveBreakpoints } from './preset-wind4.DQ5mCnzs.mjs';
3
3
 
4
4
  const containerParent = [
5
5
  [/^@container(?:\/(\w+))?(?:-(normal))?$/, ([, l, v]) => {
@@ -1,5 +1,5 @@
1
- export { s as shortcuts } from './shared/preset-wind4.DJR3nFnD.mjs';
2
- import './shared/preset-wind4.Y5BADsqi.mjs';
1
+ export { s as shortcuts } from './shared/preset-wind4.B-pGDZEs.mjs';
2
+ import './shared/preset-wind4.MfvwEdUa.mjs';
3
3
  import '@unocss/core';
4
- import './shared/preset-wind4.Dh6P6wnz.mjs';
4
+ import './shared/preset-wind4.DQ5mCnzs.mjs';
5
5
  import '@unocss/rule-utils';
package/dist/utils.d.mts CHANGED
@@ -155,7 +155,7 @@ declare function parseThemeColor(theme: Theme, keys: string[]): {
155
155
  declare function getThemeByKey(theme: Theme, themeKey: keyof Theme, keys: string[]): any;
156
156
  declare function colorCSSGenerator(data: ReturnType<typeof parseColor>, property: string, varName: string, ctx?: RuleContext<Theme>): [CSSObject, ...CSSValueInput[]] | undefined;
157
157
  declare function colorResolver(property: string, varName: string): ([, body]: string[], ctx: RuleContext<Theme>) => (CSSValueInput | string)[] | undefined;
158
- declare function colorableShadows(shadows: string | string[], colorVar: string): string[];
158
+ declare function colorableShadows(shadows: string | string[], colorVar: string, alpha?: string): string[];
159
159
  declare function hasParseableColor(color: string | undefined, theme: Theme): boolean;
160
160
  declare function resolveBreakpoints({ theme, generator }: Readonly<VariantContext<Theme>>, key?: 'breakpoint' | 'verticalBreakpoint'): {
161
161
  point: string;
package/dist/utils.d.ts CHANGED
@@ -155,7 +155,7 @@ declare function parseThemeColor(theme: Theme, keys: string[]): {
155
155
  declare function getThemeByKey(theme: Theme, themeKey: keyof Theme, keys: string[]): any;
156
156
  declare function colorCSSGenerator(data: ReturnType<typeof parseColor>, property: string, varName: string, ctx?: RuleContext<Theme>): [CSSObject, ...CSSValueInput[]] | undefined;
157
157
  declare function colorResolver(property: string, varName: string): ([, body]: string[], ctx: RuleContext<Theme>) => (CSSValueInput | string)[] | undefined;
158
- declare function colorableShadows(shadows: string | string[], colorVar: string): string[];
158
+ declare function colorableShadows(shadows: string | string[], colorVar: string, alpha?: string): string[];
159
159
  declare function hasParseableColor(color: string | undefined, theme: Theme): boolean;
160
160
  declare function resolveBreakpoints({ theme, generator }: Readonly<VariantContext<Theme>>, key?: 'breakpoint' | 'verticalBreakpoint'): {
161
161
  point: string;
package/dist/utils.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { a as remRE } from './shared/preset-wind4.Dh6P6wnz.mjs';
2
- export { C as CONTROL_NO_NEGATIVE, P as PRESET_NAME, S as SpecialColorKey, K as camelize, A as colorCSSGenerator, B as colorResolver, D as colorableShadows, M as compressCSS, c as cornerMap, f as cssMathFnRE, j as cssVarFnRE, H as defineProperty, m as detectThemeValue, d as directionMap, s as directionSize, l as generateThemeVariable, z as getThemeByKey, g as globalKeywords, b as h, h as handler, E as hasParseableColor, L as hyphenate, i as insetMap, I as isCSSMathFn, J as isSize, G as makeGlobalStaticRules, q as numberResolver, w as parseColor, y as parseThemeColor, p as positionMap, o as propertyTracking, r as resolveBreakpoints, F as resolveVerticalBreakpoints, u as splitShorthand, k as themeTracking, n as trackedProperties, t as trackedTheme, v as valueHandlers, e as xyzArray, x as xyzMap } from './shared/preset-wind4.Dh6P6wnz.mjs';
1
+ import { a as remRE } from './shared/preset-wind4.DQ5mCnzs.mjs';
2
+ export { C as CONTROL_NO_NEGATIVE, P as PRESET_NAME, S as SpecialColorKey, K as camelize, A as colorCSSGenerator, B as colorResolver, D as colorableShadows, M as compressCSS, c as cornerMap, f as cssMathFnRE, j as cssVarFnRE, H as defineProperty, m as detectThemeValue, d as directionMap, s as directionSize, l as generateThemeVariable, z as getThemeByKey, g as globalKeywords, b as h, h as handler, E as hasParseableColor, L as hyphenate, i as insetMap, I as isCSSMathFn, J as isSize, G as makeGlobalStaticRules, q as numberResolver, w as parseColor, y as parseThemeColor, p as positionMap, o as propertyTracking, r as resolveBreakpoints, F as resolveVerticalBreakpoints, u as splitShorthand, k as themeTracking, n as trackedProperties, t as trackedTheme, v as valueHandlers, e as xyzArray, x as xyzMap } from './shared/preset-wind4.DQ5mCnzs.mjs';
3
3
  export * from '@unocss/rule-utils';
4
4
  import '@unocss/core';
5
5
 
package/dist/variants.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export { F as placeholderModifier, v as variantAria, b as variantBreakpoints, c as variantChildren, g as variantColorsMediaOrClass, h as variantColorsScheme, d as variantCombinators, f as variantContainerQuery, r as variantContrasts, x as variantCssLayer, q as variantCustomMedia, i as variantDataAttribute, u as variantForcedColors, D as variantImplicitGroup, m as variantImportant, y as variantInternalLayer, l as variantLanguageDirections, s as variantMotions, E as variantNegative, n as variantNoscript, t as variantOrientations, J as variantPartClasses, p as variantPrint, H as variantPseudoClassFunctions, G as variantPseudoClassesAndElements, z as variantScope, o as variantScripting, w as variantSelector, K as variantStartingStyle, C as variantStickyHover, L as variantSupports, e as variantSvgCombinators, a as variantTaggedAriaAttributes, j as variantTaggedDataAttributes, I as variantTaggedPseudoClasses, B as variantTheme, A as variantVariables, k as variants } from './shared/preset-wind4.CGl5yp9H.mjs';
1
+ export { F as placeholderModifier, v as variantAria, b as variantBreakpoints, c as variantChildren, g as variantColorsMediaOrClass, h as variantColorsScheme, d as variantCombinators, f as variantContainerQuery, r as variantContrasts, x as variantCssLayer, q as variantCustomMedia, i as variantDataAttribute, u as variantForcedColors, D as variantImplicitGroup, m as variantImportant, y as variantInternalLayer, l as variantLanguageDirections, s as variantMotions, E as variantNegative, n as variantNoscript, t as variantOrientations, J as variantPartClasses, p as variantPrint, H as variantPseudoClassFunctions, G as variantPseudoClassesAndElements, z as variantScope, o as variantScripting, w as variantSelector, K as variantStartingStyle, C as variantStickyHover, L as variantSupports, e as variantSvgCombinators, a as variantTaggedAriaAttributes, j as variantTaggedDataAttributes, I as variantTaggedPseudoClasses, B as variantTheme, A as variantVariables, k as variants } from './shared/preset-wind4.CnuVK22X.mjs';
2
2
  import '@unocss/rule-utils';
3
- import './shared/preset-wind4.Dh6P6wnz.mjs';
3
+ import './shared/preset-wind4.DQ5mCnzs.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.4.2",
4
+ "version": "66.5.1",
5
5
  "description": "Tailwind 4 compact preset for UnoCSS",
6
6
  "authors": [
7
7
  {
@@ -74,9 +74,9 @@
74
74
  "dist"
75
75
  ],
76
76
  "dependencies": {
77
- "@unocss/core": "66.4.2",
78
- "@unocss/extractor-arbitrary-variants": "66.4.2",
79
- "@unocss/rule-utils": "66.4.2"
77
+ "@unocss/core": "66.5.1",
78
+ "@unocss/extractor-arbitrary-variants": "66.5.1",
79
+ "@unocss/rule-utils": "66.5.1"
80
80
  },
81
81
  "scripts": {
82
82
  "build": "unbuild",