@walkeros/explorer 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  loadPackageTypes,
6
6
  loadTypeLibraryFromURL,
7
7
  registerWalkerOSTypes
8
- } from "./chunk-P5UDSGZL.mjs";
8
+ } from "./chunk-WKBCYMTQ.mjs";
9
9
 
10
10
  // src/components/demos/MappingDemo.tsx
11
11
  import { useState as useState5, useCallback as useCallback4, useEffect as useEffect4 } from "react";
@@ -202,8 +202,9 @@ var palenightTheme = {
202
202
  // Transparent
203
203
  "editorLineNumber.foreground": "#676E95",
204
204
  "editorLineNumber.activeForeground": "#c084fc",
205
- // Editor Cursor & Selection - transparent for read-only snippets
206
- "editorCursor.foreground": "#00000000",
205
+ // Editor Cursor & Selection
206
+ "editorCursor.foreground": "#c084fc",
207
+ // Purple cursor for dark theme
207
208
  "editor.selectionBackground": "#00000000",
208
209
  "editor.inactiveSelectionBackground": "#00000000",
209
210
  "editor.selectionHighlightBackground": "#00000000",
@@ -404,8 +405,9 @@ var lighthouseTheme = {
404
405
  // Transparent
405
406
  "editorLineNumber.foreground": "#1B1F2380",
406
407
  "editorLineNumber.activeForeground": "#6F42C1",
407
- // Editor Cursor & Selection - transparent for read-only snippets
408
- "editorCursor.foreground": "#00000000",
408
+ // Editor Cursor & Selection
409
+ "editorCursor.foreground": "#6F42C1",
410
+ // Purple cursor for light theme
409
411
  "editor.selectionBackground": "#00000000",
410
412
  "editor.inactiveSelectionBackground": "#00000000",
411
413
  "editor.selectionHighlightBackground": "#00000000",
@@ -548,6 +550,130 @@ function registerDataElbStyles() {
548
550
  document.head.appendChild(style);
549
551
  }
550
552
 
553
+ // src/utils/monaco-formatters.ts
554
+ import * as prettier from "prettier/standalone";
555
+ import prettierBabel from "prettier/plugins/babel";
556
+ import prettierEstree from "prettier/plugins/estree";
557
+ import prettierTypescript from "prettier/plugins/typescript";
558
+ import prettierHtml from "prettier/plugins/html";
559
+ function registerFormatters(monacoInstance) {
560
+ monacoInstance.languages.registerDocumentFormattingEditProvider(
561
+ "javascript",
562
+ {
563
+ async provideDocumentFormattingEdits(model, options) {
564
+ try {
565
+ const text = model.getValue();
566
+ const formatted = await prettier.format(text, {
567
+ parser: "babel",
568
+ plugins: [prettierBabel, prettierEstree],
569
+ tabWidth: options.tabSize,
570
+ useTabs: !options.insertSpaces,
571
+ semi: true,
572
+ singleQuote: true,
573
+ trailingComma: "all"
574
+ });
575
+ return [
576
+ {
577
+ range: model.getFullModelRange(),
578
+ text: formatted
579
+ }
580
+ ];
581
+ } catch (error) {
582
+ return [];
583
+ }
584
+ }
585
+ }
586
+ );
587
+ monacoInstance.languages.registerDocumentFormattingEditProvider(
588
+ "typescript",
589
+ {
590
+ async provideDocumentFormattingEdits(model, options) {
591
+ try {
592
+ const text = model.getValue();
593
+ const formatted = await prettier.format(text, {
594
+ parser: "typescript",
595
+ plugins: [prettierTypescript, prettierEstree],
596
+ tabWidth: options.tabSize,
597
+ useTabs: !options.insertSpaces,
598
+ semi: true,
599
+ singleQuote: true,
600
+ trailingComma: "all"
601
+ });
602
+ return [
603
+ {
604
+ range: model.getFullModelRange(),
605
+ text: formatted
606
+ }
607
+ ];
608
+ } catch (error) {
609
+ return [];
610
+ }
611
+ }
612
+ }
613
+ );
614
+ monacoInstance.languages.registerDocumentFormattingEditProvider("json", {
615
+ async provideDocumentFormattingEdits(model, options) {
616
+ try {
617
+ const text = model.getValue();
618
+ const parsed = JSON.parse(text);
619
+ const formatted = JSON.stringify(parsed, null, options.tabSize);
620
+ return [
621
+ {
622
+ range: model.getFullModelRange(),
623
+ text: formatted
624
+ }
625
+ ];
626
+ } catch (error) {
627
+ return [];
628
+ }
629
+ }
630
+ });
631
+ monacoInstance.languages.registerDocumentFormattingEditProvider("html", {
632
+ async provideDocumentFormattingEdits(model, options) {
633
+ try {
634
+ const text = model.getValue();
635
+ const formatted = await prettier.format(text, {
636
+ parser: "html",
637
+ plugins: [prettierHtml],
638
+ tabWidth: options.tabSize,
639
+ useTabs: !options.insertSpaces,
640
+ htmlWhitespaceSensitivity: "css"
641
+ });
642
+ return [
643
+ {
644
+ range: model.getFullModelRange(),
645
+ text: formatted
646
+ }
647
+ ];
648
+ } catch (error) {
649
+ return [];
650
+ }
651
+ }
652
+ });
653
+ monacoInstance.languages.registerDocumentFormattingEditProvider("css", {
654
+ async provideDocumentFormattingEdits(model, options) {
655
+ try {
656
+ const text = model.getValue();
657
+ const formatted = await prettier.format(text, {
658
+ parser: "css",
659
+ plugins: [prettierHtml],
660
+ // CSS parser is in html plugin
661
+ tabWidth: options.tabSize,
662
+ useTabs: !options.insertSpaces
663
+ });
664
+ return [
665
+ {
666
+ range: model.getFullModelRange(),
667
+ text: formatted
668
+ }
669
+ ];
670
+ } catch (error) {
671
+ return [];
672
+ }
673
+ }
674
+ });
675
+ }
676
+
551
677
  // src/hooks/useMonacoHeight.ts
552
678
  import { useState, useRef, useCallback } from "react";
553
679
  function useMonacoHeight({
@@ -738,9 +864,10 @@ function Code({
738
864
  return;
739
865
  }
740
866
  registerAllThemes(monaco);
867
+ registerFormatters(monaco);
741
868
  if (packages && packages.length > 0) {
742
869
  registerWalkerOSTypes(monaco);
743
- const { loadPackageTypes: loadPackageTypes2 } = await import("./monaco-types-T3WXA7KH.mjs");
870
+ const { loadPackageTypes: loadPackageTypes2 } = await import("./monaco-types-GHUJ2SZE.mjs");
744
871
  for (const pkg of packages) {
745
872
  if (pkg !== "@walkeros/core") {
746
873
  await loadPackageTypes2(monaco, { package: pkg }).catch((err) => {
@@ -823,7 +950,26 @@ function Code({
823
950
  vertical: "auto",
824
951
  horizontal: "auto",
825
952
  alwaysConsumeMouseWheel: false
826
- }
953
+ },
954
+ // Cursor and selection behavior
955
+ cursorBlinking: "blink",
956
+ // Make cursor blink visibly
957
+ cursorStyle: "line",
958
+ // Use line cursor (most visible)
959
+ cursorWidth: 2,
960
+ // Make cursor 2px wide for better visibility
961
+ cursorSmoothCaretAnimation: "off",
962
+ // Disable smooth cursor animation
963
+ selectionHighlight: false,
964
+ // Disable auto-highlighting of selected text occurrences
965
+ occurrencesHighlight: "off",
966
+ // Disable highlighting matching words
967
+ selectOnLineNumbers: false,
968
+ // Don't select line when clicking line numbers
969
+ wordBasedSuggestions: "off",
970
+ // Reduce auto-completion interference
971
+ quickSuggestions: false
972
+ // Disable quick suggestions popup
827
973
  }
828
974
  }
829
975
  ) });
@@ -1325,7 +1471,8 @@ function DestinationDemo({
1325
1471
  config,
1326
1472
  data: processed.data,
1327
1473
  mapping: processed.mapping,
1328
- env: destination.env || {}
1474
+ env: destination.env || {},
1475
+ logger: collector.logger
1329
1476
  };
1330
1477
  if (fn) {
1331
1478
  const result2 = await fn(processed.event, context);
@@ -1406,7 +1553,8 @@ function DestinationInitDemo({
1406
1553
  const context = {
1407
1554
  collector,
1408
1555
  config,
1409
- env: destination.env || {}
1556
+ env: destination.env || {},
1557
+ logger: collector.logger
1410
1558
  };
1411
1559
  if (!destination.init) {
1412
1560
  setOutput("No init method defined for this destination");
@@ -1454,6 +1602,7 @@ import { useState as useState12, useCallback as useCallback9 } from "react";
1454
1602
 
1455
1603
  // src/components/molecules/preview.tsx
1456
1604
  import { useState as useState9, useEffect as useEffect8, useRef as useRef5, useCallback as useCallback8 } from "react";
1605
+ import { createLogger } from "@walkeros/core";
1457
1606
  import { sourceBrowser } from "@walkeros/web-source-browser";
1458
1607
 
1459
1608
  // src/components/atoms/preview-footer.tsx
@@ -1483,7 +1632,12 @@ function PreviewFooter({
1483
1632
 
1484
1633
  // src/components/molecules/preview.tsx
1485
1634
  import { jsx as jsx11 } from "react/jsx-runtime";
1486
- function Preview({ html, css = "", onEvent, label = "Preview" }) {
1635
+ function Preview({
1636
+ html,
1637
+ css = "",
1638
+ onEvent,
1639
+ label = "Preview"
1640
+ }) {
1487
1641
  const [highlights, setHighlights] = useState9(/* @__PURE__ */ new Set());
1488
1642
  const iframeRef = useRef5(null);
1489
1643
  const updateTimeoutRef = useRef5(void 0);
@@ -1636,7 +1790,8 @@ function Preview({ html, css = "", onEvent, label = "Preview" }) {
1636
1790
  failed: []
1637
1791
  })),
1638
1792
  window: iframe.contentWindow,
1639
- document: iframe.contentDocument
1793
+ document: iframe.contentDocument,
1794
+ logger: createLogger()
1640
1795
  }
1641
1796
  );
1642
1797
  sourceInstanceRef.current = sourceInstance;
@@ -2163,10 +2318,14 @@ function PromotionPlayground({
2163
2318
  const [capturedEvent, setCapturedEvent] = useState12(
2164
2319
  null
2165
2320
  );
2321
+ const [eventInput, setEventInput] = useState12(
2322
+ "// Click elements in the preview to see events"
2323
+ );
2166
2324
  const handleEvent = useCallback9((event) => {
2167
2325
  setCapturedEvent(event);
2326
+ setEventInput(JSON.stringify(event, null, 2));
2168
2327
  }, []);
2169
- const eventDisplay = capturedEvent ? JSON.stringify(capturedEvent, null, 2) : "// Click elements in the preview to see events";
2328
+ const eventDisplay = eventInput;
2170
2329
  return /* @__PURE__ */ jsxs9(Grid, { columns: 5, rowHeight: 600, children: [
2171
2330
  /* @__PURE__ */ jsx16(
2172
2331
  BrowserBox,
@@ -2198,7 +2357,7 @@ function PromotionPlayground({
2198
2357
  {
2199
2358
  label: labelEvents,
2200
2359
  code: eventDisplay,
2201
- disabled: true,
2360
+ onChange: setEventInput,
2202
2361
  language: "json",
2203
2362
  wordWrap: true
2204
2363
  }
@@ -2216,7 +2375,7 @@ function PromotionPlayground({
2216
2375
  /* @__PURE__ */ jsx16(
2217
2376
  CollectorBox,
2218
2377
  {
2219
- event: capturedEvent ? JSON.stringify(capturedEvent) : "{}",
2378
+ event: eventInput,
2220
2379
  mapping: mappingInput,
2221
2380
  destination,
2222
2381
  label: labelResult,
@@ -10238,22 +10397,96 @@ function ConfigEditor(props) {
10238
10397
  return /* @__PURE__ */ jsx87(ConfigEditorBox, { ...props });
10239
10398
  }
10240
10399
 
10400
+ // src/components/molecules/code-snippet.tsx
10401
+ import { useState as useState36, useEffect as useEffect24 } from "react";
10402
+
10403
+ // src/utils/format-code.ts
10404
+ import * as prettier2 from "prettier/standalone";
10405
+ import prettierBabel2 from "prettier/plugins/babel";
10406
+ import prettierEstree2 from "prettier/plugins/estree";
10407
+ import prettierTypescript2 from "prettier/plugins/typescript";
10408
+ import prettierHtml2 from "prettier/plugins/html";
10409
+ async function formatCode(code, language) {
10410
+ try {
10411
+ let formatted;
10412
+ switch (language) {
10413
+ case "javascript":
10414
+ case "js":
10415
+ formatted = await prettier2.format(code, {
10416
+ parser: "babel",
10417
+ plugins: [prettierBabel2, prettierEstree2],
10418
+ semi: true,
10419
+ singleQuote: true,
10420
+ trailingComma: "all"
10421
+ });
10422
+ break;
10423
+ case "typescript":
10424
+ case "ts":
10425
+ case "tsx":
10426
+ formatted = await prettier2.format(code, {
10427
+ parser: "typescript",
10428
+ plugins: [prettierTypescript2, prettierEstree2],
10429
+ semi: true,
10430
+ singleQuote: true,
10431
+ trailingComma: "all"
10432
+ });
10433
+ break;
10434
+ case "json":
10435
+ const parsed = JSON.parse(code);
10436
+ formatted = JSON.stringify(parsed, null, 2);
10437
+ break;
10438
+ case "html":
10439
+ formatted = await prettier2.format(code, {
10440
+ parser: "html",
10441
+ plugins: [prettierHtml2],
10442
+ htmlWhitespaceSensitivity: "css"
10443
+ });
10444
+ break;
10445
+ case "css":
10446
+ case "scss":
10447
+ formatted = await prettier2.format(code, {
10448
+ parser: "css",
10449
+ plugins: [prettierHtml2]
10450
+ });
10451
+ break;
10452
+ default:
10453
+ return code;
10454
+ }
10455
+ return formatted.trim();
10456
+ } catch (error) {
10457
+ return code;
10458
+ }
10459
+ }
10460
+
10241
10461
  // src/components/molecules/code-snippet.tsx
10242
10462
  import { jsx as jsx88 } from "react/jsx-runtime";
10243
10463
  function CodeSnippet(props) {
10244
10464
  const {
10465
+ code,
10466
+ language = "javascript",
10245
10467
  className,
10246
10468
  disabled = true,
10247
10469
  showCopy = true,
10248
10470
  autoHeight = { min: 20, max: 600 },
10249
10471
  fontSize = 15,
10472
+ format: format3 = true,
10250
10473
  ...rest
10251
10474
  } = props;
10252
10475
  const snippetClassName = `elb-code-snippet ${className || ""}`.trim();
10476
+ const [formattedCode, setFormattedCode] = useState36(code);
10477
+ useEffect24(() => {
10478
+ if (format3) {
10479
+ formatCode(code, language).then(setFormattedCode);
10480
+ } else {
10481
+ setFormattedCode(code);
10482
+ }
10483
+ }, [code, language, format3]);
10253
10484
  return /* @__PURE__ */ jsx88(
10254
10485
  CodeBox,
10255
10486
  {
10256
10487
  ...rest,
10488
+ code: formattedCode,
10489
+ language,
10257
10490
  className: snippetClassName,
10258
10491
  showHeader: false,
10259
10492
  disabled,
@@ -10265,7 +10498,7 @@ function CodeSnippet(props) {
10265
10498
  }
10266
10499
 
10267
10500
  // src/components/molecules/property-table.tsx
10268
- import { useState as useState36 } from "react";
10501
+ import { useState as useState37 } from "react";
10269
10502
  import { jsx as jsx89, jsxs as jsxs66 } from "react/jsx-runtime";
10270
10503
  function schemaToProperties(schema) {
10271
10504
  const properties = [];
@@ -10377,10 +10610,10 @@ function PropertyModal({ property, isOpen, onClose }) {
10377
10610
  ] }) });
10378
10611
  }
10379
10612
  function PropertyTable({ schema, className }) {
10380
- const [selectedProperty, setSelectedProperty] = useState36(
10613
+ const [selectedProperty, setSelectedProperty] = useState37(
10381
10614
  null
10382
10615
  );
10383
- const [isModalOpen, setIsModalOpen] = useState36(false);
10616
+ const [isModalOpen, setIsModalOpen] = useState37(false);
10384
10617
  const properties = schemaToProperties(schema);
10385
10618
  const hasRequiredProperties = properties.some(
10386
10619
  (property) => property.required
@@ -10556,18 +10789,46 @@ function Footer({ children, className = "" }) {
10556
10789
  return /* @__PURE__ */ jsx90("div", { className: `elb-explorer-footer ${className}`, children });
10557
10790
  }
10558
10791
 
10792
+ // src/components/atoms/button-link.tsx
10793
+ import { jsx as jsx91 } from "react/jsx-runtime";
10794
+ function ButtonLink({
10795
+ variant = "default",
10796
+ size = "md",
10797
+ href,
10798
+ onClick,
10799
+ children,
10800
+ className = "",
10801
+ disabled = false
10802
+ }) {
10803
+ const baseClass = "elb-button-link";
10804
+ const classes = `${baseClass} ${baseClass}-${variant} ${baseClass}-${size} ${className}`.trim();
10805
+ if (href && !disabled) {
10806
+ return /* @__PURE__ */ jsx91("a", { href, className: classes, children });
10807
+ }
10808
+ return /* @__PURE__ */ jsx91(
10809
+ "button",
10810
+ {
10811
+ type: "button",
10812
+ className: classes,
10813
+ onClick,
10814
+ disabled,
10815
+ children
10816
+ }
10817
+ );
10818
+ }
10819
+
10559
10820
  // src/components/atoms/panel-hints.tsx
10560
- import { jsx as jsx91, jsxs as jsxs67 } from "react/jsx-runtime";
10821
+ import { jsx as jsx92, jsxs as jsxs67 } from "react/jsx-runtime";
10561
10822
  function PanelHints({
10562
10823
  title = "Common patterns",
10563
10824
  hints,
10564
10825
  className = ""
10565
10826
  }) {
10566
10827
  return /* @__PURE__ */ jsxs67("div", { className: `elb-panel-hints ${className}`, children: [
10567
- title && /* @__PURE__ */ jsx91("div", { className: "elb-panel-hints-title", children: title }),
10568
- /* @__PURE__ */ jsx91("ul", { className: "elb-panel-hints-list", children: hints.map((hint, index) => /* @__PURE__ */ jsxs67("li", { className: "elb-panel-hints-item", children: [
10569
- /* @__PURE__ */ jsx91("code", { className: "elb-panel-hints-code", children: hint.code }),
10570
- /* @__PURE__ */ jsx91("span", { className: "elb-panel-hints-desc", children: hint.description })
10828
+ title && /* @__PURE__ */ jsx92("div", { className: "elb-panel-hints-title", children: title }),
10829
+ /* @__PURE__ */ jsx92("ul", { className: "elb-panel-hints-list", children: hints.map((hint, index) => /* @__PURE__ */ jsxs67("li", { className: "elb-panel-hints-item", children: [
10830
+ /* @__PURE__ */ jsx92("code", { className: "elb-panel-hints-code", children: hint.code }),
10831
+ /* @__PURE__ */ jsx92("span", { className: "elb-panel-hints-desc", children: hint.description })
10571
10832
  ] }, index)) })
10572
10833
  ] });
10573
10834
  }
@@ -10604,7 +10865,7 @@ function MDXProvider(properties) {
10604
10865
 
10605
10866
  // src/components/atoms/mdx-code.tsx
10606
10867
  import { Children } from "react";
10607
- import { jsx as jsx92 } from "react/jsx-runtime";
10868
+ import { jsx as jsx93 } from "react/jsx-runtime";
10608
10869
  var MDXCode = ({
10609
10870
  className,
10610
10871
  children
@@ -10618,7 +10879,7 @@ var MDXCode = ({
10618
10879
  return false;
10619
10880
  });
10620
10881
  if (!hasClassName || !hasNewlines) {
10621
- return /* @__PURE__ */ jsx92("code", { className: "elb-code-inline", children });
10882
+ return /* @__PURE__ */ jsx93("code", { className: "elb-code-inline", children });
10622
10883
  }
10623
10884
  const mdxLanguage = className.replace(/^language-/, "");
10624
10885
  const languageMap = {
@@ -10633,7 +10894,7 @@ var MDXCode = ({
10633
10894
  };
10634
10895
  const monacoLanguage = languageMap[mdxLanguage] || mdxLanguage;
10635
10896
  const code = childrenArray.map((child) => typeof child === "string" ? child : "").join("").trim();
10636
- return /* @__PURE__ */ jsx92(
10897
+ return /* @__PURE__ */ jsx93(
10637
10898
  CodeBox,
10638
10899
  {
10639
10900
  code,
@@ -10647,7 +10908,7 @@ var MDXCode = ({
10647
10908
  };
10648
10909
 
10649
10910
  // src/providers/MDXProvider.tsx
10650
- import { jsx as jsx93 } from "react/jsx-runtime";
10911
+ import { jsx as jsx94 } from "react/jsx-runtime";
10651
10912
  var MDXProvider2 = ({ children }) => {
10652
10913
  const components = {
10653
10914
  // Markdown element mappings
@@ -10659,7 +10920,7 @@ var MDXProvider2 = ({ children }) => {
10659
10920
  DestinationInitDemo,
10660
10921
  DestinationDemo
10661
10922
  };
10662
- return /* @__PURE__ */ jsx93(MDXProvider, { components, children });
10923
+ return /* @__PURE__ */ jsx94(MDXProvider, { components, children });
10663
10924
  };
10664
10925
 
10665
10926
  // node_modules/clsx/dist/clsx.mjs
@@ -10678,7 +10939,28 @@ function clsx() {
10678
10939
  }
10679
10940
 
10680
10941
  // node_modules/tailwind-merge/dist/bundle-mjs.mjs
10942
+ var concatArrays = (array1, array2) => {
10943
+ const combinedArray = new Array(array1.length + array2.length);
10944
+ for (let i = 0; i < array1.length; i++) {
10945
+ combinedArray[i] = array1[i];
10946
+ }
10947
+ for (let i = 0; i < array2.length; i++) {
10948
+ combinedArray[array1.length + i] = array2[i];
10949
+ }
10950
+ return combinedArray;
10951
+ };
10952
+ var createClassValidatorObject = (classGroupId, validator2) => ({
10953
+ classGroupId,
10954
+ validator: validator2
10955
+ });
10956
+ var createClassPartObject = (nextPart = /* @__PURE__ */ new Map(), validators = null, classGroupId) => ({
10957
+ nextPart,
10958
+ validators,
10959
+ classGroupId
10960
+ });
10681
10961
  var CLASS_PART_SEPARATOR = "-";
10962
+ var EMPTY_CONFLICTS = [];
10963
+ var ARBITRARY_PROPERTY_PREFIX = "arbitrary..";
10682
10964
  var createClassGroupUtils = (config) => {
10683
10965
  const classMap = createClassMap(config);
10684
10966
  const {
@@ -10686,121 +10968,134 @@ var createClassGroupUtils = (config) => {
10686
10968
  conflictingClassGroupModifiers
10687
10969
  } = config;
10688
10970
  const getClassGroupId = (className) => {
10689
- const classParts = className.split(CLASS_PART_SEPARATOR);
10690
- if (classParts[0] === "" && classParts.length !== 1) {
10691
- classParts.shift();
10971
+ if (className.startsWith("[") && className.endsWith("]")) {
10972
+ return getGroupIdForArbitraryProperty(className);
10692
10973
  }
10693
- return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);
10974
+ const classParts = className.split(CLASS_PART_SEPARATOR);
10975
+ const startIndex = classParts[0] === "" && classParts.length > 1 ? 1 : 0;
10976
+ return getGroupRecursive(classParts, startIndex, classMap);
10694
10977
  };
10695
10978
  const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {
10696
- const conflicts = conflictingClassGroups[classGroupId] || [];
10697
- if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {
10698
- return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];
10979
+ if (hasPostfixModifier) {
10980
+ const modifierConflicts = conflictingClassGroupModifiers[classGroupId];
10981
+ const baseConflicts = conflictingClassGroups[classGroupId];
10982
+ if (modifierConflicts) {
10983
+ if (baseConflicts) {
10984
+ return concatArrays(baseConflicts, modifierConflicts);
10985
+ }
10986
+ return modifierConflicts;
10987
+ }
10988
+ return baseConflicts || EMPTY_CONFLICTS;
10699
10989
  }
10700
- return conflicts;
10990
+ return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;
10701
10991
  };
10702
10992
  return {
10703
10993
  getClassGroupId,
10704
10994
  getConflictingClassGroupIds
10705
10995
  };
10706
10996
  };
10707
- var getGroupRecursive = (classParts, classPartObject) => {
10708
- if (classParts.length === 0) {
10997
+ var getGroupRecursive = (classParts, startIndex, classPartObject) => {
10998
+ const classPathsLength = classParts.length - startIndex;
10999
+ if (classPathsLength === 0) {
10709
11000
  return classPartObject.classGroupId;
10710
11001
  }
10711
- const currentClassPart = classParts[0];
11002
+ const currentClassPart = classParts[startIndex];
10712
11003
  const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);
10713
- const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : void 0;
10714
- if (classGroupFromNextClassPart) {
10715
- return classGroupFromNextClassPart;
11004
+ if (nextClassPartObject) {
11005
+ const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);
11006
+ if (result) return result;
10716
11007
  }
10717
- if (classPartObject.validators.length === 0) {
11008
+ const validators = classPartObject.validators;
11009
+ if (validators === null) {
10718
11010
  return void 0;
10719
11011
  }
10720
- const classRest = classParts.join(CLASS_PART_SEPARATOR);
10721
- return classPartObject.validators.find(({
10722
- validator: validator2
10723
- }) => validator2(classRest))?.classGroupId;
10724
- };
10725
- var arbitraryPropertyRegex = /^\[(.+)\]$/;
10726
- var getGroupIdForArbitraryProperty = (className) => {
10727
- if (arbitraryPropertyRegex.test(className)) {
10728
- const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];
10729
- const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(":"));
10730
- if (property) {
10731
- return "arbitrary.." + property;
11012
+ const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);
11013
+ const validatorsLength = validators.length;
11014
+ for (let i = 0; i < validatorsLength; i++) {
11015
+ const validatorObj = validators[i];
11016
+ if (validatorObj.validator(classRest)) {
11017
+ return validatorObj.classGroupId;
10732
11018
  }
10733
11019
  }
11020
+ return void 0;
10734
11021
  };
11022
+ var getGroupIdForArbitraryProperty = (className) => className.slice(1, -1).indexOf(":") === -1 ? void 0 : (() => {
11023
+ const content = className.slice(1, -1);
11024
+ const colonIndex = content.indexOf(":");
11025
+ const property = content.slice(0, colonIndex);
11026
+ return property ? ARBITRARY_PROPERTY_PREFIX + property : void 0;
11027
+ })();
10735
11028
  var createClassMap = (config) => {
10736
11029
  const {
10737
11030
  theme,
10738
- prefix
11031
+ classGroups
10739
11032
  } = config;
10740
- const classMap = {
10741
- nextPart: /* @__PURE__ */ new Map(),
10742
- validators: []
10743
- };
10744
- const prefixedClassGroupEntries = getPrefixedClassGroupEntries(Object.entries(config.classGroups), prefix);
10745
- prefixedClassGroupEntries.forEach(([classGroupId, classGroup]) => {
10746
- processClassesRecursively(classGroup, classMap, classGroupId, theme);
10747
- });
11033
+ return processClassGroups(classGroups, theme);
11034
+ };
11035
+ var processClassGroups = (classGroups, theme) => {
11036
+ const classMap = createClassPartObject();
11037
+ for (const classGroupId in classGroups) {
11038
+ const group = classGroups[classGroupId];
11039
+ processClassesRecursively(group, classMap, classGroupId, theme);
11040
+ }
10748
11041
  return classMap;
10749
11042
  };
10750
11043
  var processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {
10751
- classGroup.forEach((classDefinition) => {
10752
- if (typeof classDefinition === "string") {
10753
- const classPartObjectToEdit = classDefinition === "" ? classPartObject : getPart(classPartObject, classDefinition);
10754
- classPartObjectToEdit.classGroupId = classGroupId;
10755
- return;
10756
- }
10757
- if (typeof classDefinition === "function") {
10758
- if (isThemeGetter(classDefinition)) {
10759
- processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);
10760
- return;
10761
- }
10762
- classPartObject.validators.push({
10763
- validator: classDefinition,
10764
- classGroupId
10765
- });
10766
- return;
10767
- }
10768
- Object.entries(classDefinition).forEach(([key, classGroup2]) => {
10769
- processClassesRecursively(classGroup2, getPart(classPartObject, key), classGroupId, theme);
10770
- });
10771
- });
11044
+ const len = classGroup.length;
11045
+ for (let i = 0; i < len; i++) {
11046
+ const classDefinition = classGroup[i];
11047
+ processClassDefinition(classDefinition, classPartObject, classGroupId, theme);
11048
+ }
10772
11049
  };
10773
- var getPart = (classPartObject, path) => {
10774
- let currentClassPartObject = classPartObject;
10775
- path.split(CLASS_PART_SEPARATOR).forEach((pathPart) => {
10776
- if (!currentClassPartObject.nextPart.has(pathPart)) {
10777
- currentClassPartObject.nextPart.set(pathPart, {
10778
- nextPart: /* @__PURE__ */ new Map(),
10779
- validators: []
10780
- });
10781
- }
10782
- currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);
10783
- });
10784
- return currentClassPartObject;
11050
+ var processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {
11051
+ if (typeof classDefinition === "string") {
11052
+ processStringDefinition(classDefinition, classPartObject, classGroupId);
11053
+ return;
11054
+ }
11055
+ if (typeof classDefinition === "function") {
11056
+ processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);
11057
+ return;
11058
+ }
11059
+ processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);
10785
11060
  };
10786
- var isThemeGetter = (func) => func.isThemeGetter;
10787
- var getPrefixedClassGroupEntries = (classGroupEntries, prefix) => {
10788
- if (!prefix) {
10789
- return classGroupEntries;
11061
+ var processStringDefinition = (classDefinition, classPartObject, classGroupId) => {
11062
+ const classPartObjectToEdit = classDefinition === "" ? classPartObject : getPart(classPartObject, classDefinition);
11063
+ classPartObjectToEdit.classGroupId = classGroupId;
11064
+ };
11065
+ var processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {
11066
+ if (isThemeGetter(classDefinition)) {
11067
+ processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);
11068
+ return;
11069
+ }
11070
+ if (classPartObject.validators === null) {
11071
+ classPartObject.validators = [];
11072
+ }
11073
+ classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));
11074
+ };
11075
+ var processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {
11076
+ const entries = Object.entries(classDefinition);
11077
+ const len = entries.length;
11078
+ for (let i = 0; i < len; i++) {
11079
+ const [key, value] = entries[i];
11080
+ processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);
10790
11081
  }
10791
- return classGroupEntries.map(([classGroupId, classGroup]) => {
10792
- const prefixedClassGroup = classGroup.map((classDefinition) => {
10793
- if (typeof classDefinition === "string") {
10794
- return prefix + classDefinition;
10795
- }
10796
- if (typeof classDefinition === "object") {
10797
- return Object.fromEntries(Object.entries(classDefinition).map(([key, value]) => [prefix + key, value]));
10798
- }
10799
- return classDefinition;
10800
- });
10801
- return [classGroupId, prefixedClassGroup];
10802
- });
10803
11082
  };
11083
+ var getPart = (classPartObject, path) => {
11084
+ let current = classPartObject;
11085
+ const parts = path.split(CLASS_PART_SEPARATOR);
11086
+ const len = parts.length;
11087
+ for (let i = 0; i < len; i++) {
11088
+ const part = parts[i];
11089
+ let next = current.nextPart.get(part);
11090
+ if (!next) {
11091
+ next = createClassPartObject();
11092
+ current.nextPart.set(part, next);
11093
+ }
11094
+ current = next;
11095
+ }
11096
+ return current;
11097
+ };
11098
+ var isThemeGetter = (func) => "isThemeGetter" in func && func.isThemeGetter === true;
10804
11099
  var createLruCache = (maxCacheSize) => {
10805
11100
  if (maxCacheSize < 1) {
10806
11101
  return {
@@ -10810,31 +11105,31 @@ var createLruCache = (maxCacheSize) => {
10810
11105
  };
10811
11106
  }
10812
11107
  let cacheSize = 0;
10813
- let cache = /* @__PURE__ */ new Map();
10814
- let previousCache = /* @__PURE__ */ new Map();
11108
+ let cache = /* @__PURE__ */ Object.create(null);
11109
+ let previousCache = /* @__PURE__ */ Object.create(null);
10815
11110
  const update = (key, value) => {
10816
- cache.set(key, value);
11111
+ cache[key] = value;
10817
11112
  cacheSize++;
10818
11113
  if (cacheSize > maxCacheSize) {
10819
11114
  cacheSize = 0;
10820
11115
  previousCache = cache;
10821
- cache = /* @__PURE__ */ new Map();
11116
+ cache = /* @__PURE__ */ Object.create(null);
10822
11117
  }
10823
11118
  };
10824
11119
  return {
10825
11120
  get(key) {
10826
- let value = cache.get(key);
11121
+ let value = cache[key];
10827
11122
  if (value !== void 0) {
10828
11123
  return value;
10829
11124
  }
10830
- if ((value = previousCache.get(key)) !== void 0) {
11125
+ if ((value = previousCache[key]) !== void 0) {
10831
11126
  update(key, value);
10832
11127
  return value;
10833
11128
  }
10834
11129
  },
10835
11130
  set(key, value) {
10836
- if (cache.has(key)) {
10837
- cache.set(key, value);
11131
+ if (key in cache) {
11132
+ cache[key] = value;
10838
11133
  } else {
10839
11134
  update(key, value);
10840
11135
  }
@@ -10842,25 +11137,33 @@ var createLruCache = (maxCacheSize) => {
10842
11137
  };
10843
11138
  };
10844
11139
  var IMPORTANT_MODIFIER = "!";
11140
+ var MODIFIER_SEPARATOR = ":";
11141
+ var EMPTY_MODIFIERS = [];
11142
+ var createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({
11143
+ modifiers,
11144
+ hasImportantModifier,
11145
+ baseClassName,
11146
+ maybePostfixModifierPosition,
11147
+ isExternal
11148
+ });
10845
11149
  var createParseClassName = (config) => {
10846
11150
  const {
10847
- separator,
11151
+ prefix,
10848
11152
  experimentalParseClassName
10849
11153
  } = config;
10850
- const isSeparatorSingleCharacter = separator.length === 1;
10851
- const firstSeparatorCharacter = separator[0];
10852
- const separatorLength = separator.length;
10853
- const parseClassName = (className) => {
11154
+ let parseClassName = (className) => {
10854
11155
  const modifiers = [];
10855
11156
  let bracketDepth = 0;
11157
+ let parenDepth = 0;
10856
11158
  let modifierStart = 0;
10857
11159
  let postfixModifierPosition;
10858
- for (let index = 0; index < className.length; index++) {
10859
- let currentCharacter = className[index];
10860
- if (bracketDepth === 0) {
10861
- if (currentCharacter === firstSeparatorCharacter && (isSeparatorSingleCharacter || className.slice(index, index + separatorLength) === separator)) {
11160
+ const len = className.length;
11161
+ for (let index = 0; index < len; index++) {
11162
+ const currentCharacter = className[index];
11163
+ if (bracketDepth === 0 && parenDepth === 0) {
11164
+ if (currentCharacter === MODIFIER_SEPARATOR) {
10862
11165
  modifiers.push(className.slice(modifierStart, index));
10863
- modifierStart = index + separatorLength;
11166
+ modifierStart = index + 1;
10864
11167
  continue;
10865
11168
  }
10866
11169
  if (currentCharacter === "/") {
@@ -10868,52 +11171,78 @@ var createParseClassName = (config) => {
10868
11171
  continue;
10869
11172
  }
10870
11173
  }
10871
- if (currentCharacter === "[") {
10872
- bracketDepth++;
10873
- } else if (currentCharacter === "]") {
10874
- bracketDepth--;
10875
- }
11174
+ if (currentCharacter === "[") bracketDepth++;
11175
+ else if (currentCharacter === "]") bracketDepth--;
11176
+ else if (currentCharacter === "(") parenDepth++;
11177
+ else if (currentCharacter === ")") parenDepth--;
11178
+ }
11179
+ const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);
11180
+ let baseClassName = baseClassNameWithImportantModifier;
11181
+ let hasImportantModifier = false;
11182
+ if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {
11183
+ baseClassName = baseClassNameWithImportantModifier.slice(0, -1);
11184
+ hasImportantModifier = true;
11185
+ } else if (
11186
+ /**
11187
+ * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.
11188
+ * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864
11189
+ */
11190
+ baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)
11191
+ ) {
11192
+ baseClassName = baseClassNameWithImportantModifier.slice(1);
11193
+ hasImportantModifier = true;
10876
11194
  }
10877
- const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);
10878
- const hasImportantModifier = baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER);
10879
- const baseClassName = hasImportantModifier ? baseClassNameWithImportantModifier.substring(1) : baseClassNameWithImportantModifier;
10880
11195
  const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : void 0;
10881
- return {
10882
- modifiers,
10883
- hasImportantModifier,
10884
- baseClassName,
10885
- maybePostfixModifierPosition
10886
- };
11196
+ return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);
10887
11197
  };
11198
+ if (prefix) {
11199
+ const fullPrefix = prefix + MODIFIER_SEPARATOR;
11200
+ const parseClassNameOriginal = parseClassName;
11201
+ parseClassName = (className) => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, void 0, true);
11202
+ }
10888
11203
  if (experimentalParseClassName) {
10889
- return (className) => experimentalParseClassName({
11204
+ const parseClassNameOriginal = parseClassName;
11205
+ parseClassName = (className) => experimentalParseClassName({
10890
11206
  className,
10891
- parseClassName
11207
+ parseClassName: parseClassNameOriginal
10892
11208
  });
10893
11209
  }
10894
11210
  return parseClassName;
10895
11211
  };
10896
- var sortModifiers = (modifiers) => {
10897
- if (modifiers.length <= 1) {
10898
- return modifiers;
10899
- }
10900
- const sortedModifiers = [];
10901
- let unsortedModifiers = [];
10902
- modifiers.forEach((modifier) => {
10903
- const isArbitraryVariant = modifier[0] === "[";
10904
- if (isArbitraryVariant) {
10905
- sortedModifiers.push(...unsortedModifiers.sort(), modifier);
10906
- unsortedModifiers = [];
10907
- } else {
10908
- unsortedModifiers.push(modifier);
10909
- }
11212
+ var createSortModifiers = (config) => {
11213
+ const modifierWeights = /* @__PURE__ */ new Map();
11214
+ config.orderSensitiveModifiers.forEach((mod, index) => {
11215
+ modifierWeights.set(mod, 1e6 + index);
10910
11216
  });
10911
- sortedModifiers.push(...unsortedModifiers.sort());
10912
- return sortedModifiers;
11217
+ return (modifiers) => {
11218
+ const result = [];
11219
+ let currentSegment = [];
11220
+ for (let i = 0; i < modifiers.length; i++) {
11221
+ const modifier = modifiers[i];
11222
+ const isArbitrary = modifier[0] === "[";
11223
+ const isOrderSensitive = modifierWeights.has(modifier);
11224
+ if (isArbitrary || isOrderSensitive) {
11225
+ if (currentSegment.length > 0) {
11226
+ currentSegment.sort();
11227
+ result.push(...currentSegment);
11228
+ currentSegment = [];
11229
+ }
11230
+ result.push(modifier);
11231
+ } else {
11232
+ currentSegment.push(modifier);
11233
+ }
11234
+ }
11235
+ if (currentSegment.length > 0) {
11236
+ currentSegment.sort();
11237
+ result.push(...currentSegment);
11238
+ }
11239
+ return result;
11240
+ };
10913
11241
  };
10914
11242
  var createConfigUtils = (config) => ({
10915
11243
  cache: createLruCache(config.cacheSize),
10916
11244
  parseClassName: createParseClassName(config),
11245
+ sortModifiers: createSortModifiers(config),
10917
11246
  ...createClassGroupUtils(config)
10918
11247
  });
10919
11248
  var SPLIT_CLASSES_REGEX = /\s+/;
@@ -10921,7 +11250,8 @@ var mergeClassList = (classList, configUtils) => {
10921
11250
  const {
10922
11251
  parseClassName,
10923
11252
  getClassGroupId,
10924
- getConflictingClassGroupIds
11253
+ getConflictingClassGroupIds,
11254
+ sortModifiers
10925
11255
  } = configUtils;
10926
11256
  const classGroupsInConflict = [];
10927
11257
  const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);
@@ -10929,12 +11259,17 @@ var mergeClassList = (classList, configUtils) => {
10929
11259
  for (let index = classNames.length - 1; index >= 0; index -= 1) {
10930
11260
  const originalClassName = classNames[index];
10931
11261
  const {
11262
+ isExternal,
10932
11263
  modifiers,
10933
11264
  hasImportantModifier,
10934
11265
  baseClassName,
10935
11266
  maybePostfixModifierPosition
10936
11267
  } = parseClassName(originalClassName);
10937
- let hasPostfixModifier = Boolean(maybePostfixModifierPosition);
11268
+ if (isExternal) {
11269
+ result = originalClassName + (result.length > 0 ? " " + result : result);
11270
+ continue;
11271
+ }
11272
+ let hasPostfixModifier = !!maybePostfixModifierPosition;
10938
11273
  let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);
10939
11274
  if (!classGroupId) {
10940
11275
  if (!hasPostfixModifier) {
@@ -10948,10 +11283,10 @@ var mergeClassList = (classList, configUtils) => {
10948
11283
  }
10949
11284
  hasPostfixModifier = false;
10950
11285
  }
10951
- const variantModifier = sortModifiers(modifiers).join(":");
11286
+ const variantModifier = modifiers.length === 0 ? "" : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(":");
10952
11287
  const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;
10953
11288
  const classId = modifierId + classGroupId;
10954
- if (classGroupsInConflict.includes(classId)) {
11289
+ if (classGroupsInConflict.indexOf(classId) > -1) {
10955
11290
  continue;
10956
11291
  }
10957
11292
  classGroupsInConflict.push(classId);
@@ -10964,13 +11299,13 @@ var mergeClassList = (classList, configUtils) => {
10964
11299
  }
10965
11300
  return result;
10966
11301
  };
10967
- function twJoin() {
11302
+ var twJoin = (...classLists) => {
10968
11303
  let index = 0;
10969
11304
  let argument;
10970
11305
  let resolvedValue;
10971
11306
  let string = "";
10972
- while (index < arguments.length) {
10973
- if (argument = arguments[index++]) {
11307
+ while (index < classLists.length) {
11308
+ if (argument = classLists[index++]) {
10974
11309
  if (resolvedValue = toValue(argument)) {
10975
11310
  string && (string += " ");
10976
11311
  string += resolvedValue;
@@ -10978,7 +11313,7 @@ function twJoin() {
10978
11313
  }
10979
11314
  }
10980
11315
  return string;
10981
- }
11316
+ };
10982
11317
  var toValue = (mix) => {
10983
11318
  if (typeof mix === "string") {
10984
11319
  return mix;
@@ -10995,20 +11330,20 @@ var toValue = (mix) => {
10995
11330
  }
10996
11331
  return string;
10997
11332
  };
10998
- function createTailwindMerge(createConfigFirst, ...createConfigRest) {
11333
+ var createTailwindMerge = (createConfigFirst, ...createConfigRest) => {
10999
11334
  let configUtils;
11000
11335
  let cacheGet;
11001
11336
  let cacheSet;
11002
- let functionToCall = initTailwindMerge;
11003
- function initTailwindMerge(classList) {
11337
+ let functionToCall;
11338
+ const initTailwindMerge = (classList) => {
11004
11339
  const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());
11005
11340
  configUtils = createConfigUtils(config);
11006
11341
  cacheGet = configUtils.cache.get;
11007
11342
  cacheSet = configUtils.cache.set;
11008
11343
  functionToCall = tailwindMerge;
11009
11344
  return tailwindMerge(classList);
11010
- }
11011
- function tailwindMerge(classList) {
11345
+ };
11346
+ const tailwindMerge = (classList) => {
11012
11347
  const cachedResult = cacheGet(classList);
11013
11348
  if (cachedResult) {
11014
11349
  return cachedResult;
@@ -11016,49 +11351,30 @@ function createTailwindMerge(createConfigFirst, ...createConfigRest) {
11016
11351
  const result = mergeClassList(classList, configUtils);
11017
11352
  cacheSet(classList, result);
11018
11353
  return result;
11019
- }
11020
- return function callTailwindMerge() {
11021
- return functionToCall(twJoin.apply(null, arguments));
11022
11354
  };
11023
- }
11355
+ functionToCall = initTailwindMerge;
11356
+ return (...args) => functionToCall(twJoin(...args));
11357
+ };
11358
+ var fallbackThemeArr = [];
11024
11359
  var fromTheme = (key) => {
11025
- const themeGetter = (theme) => theme[key] || [];
11360
+ const themeGetter = (theme) => theme[key] || fallbackThemeArr;
11026
11361
  themeGetter.isThemeGetter = true;
11027
11362
  return themeGetter;
11028
11363
  };
11029
- var arbitraryValueRegex = /^\[(?:([a-z-]+):)?(.+)\]$/i;
11364
+ var arbitraryValueRegex = /^\[(?:(\w[\w-]*):)?(.+)\]$/i;
11365
+ var arbitraryVariableRegex = /^\((?:(\w[\w-]*):)?(.+)\)$/i;
11030
11366
  var fractionRegex = /^\d+\/\d+$/;
11031
- var stringLengths = /* @__PURE__ */ new Set(["px", "full", "screen"]);
11032
11367
  var tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/;
11033
11368
  var lengthUnitRegex = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/;
11034
- var colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/;
11369
+ var colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/;
11035
11370
  var shadowRegex = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/;
11036
11371
  var imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;
11037
- var isLength = (value) => isNumber(value) || stringLengths.has(value) || fractionRegex.test(value);
11038
- var isArbitraryLength = (value) => getIsArbitraryValue(value, "length", isLengthOnly);
11039
- var isNumber = (value) => Boolean(value) && !Number.isNaN(Number(value));
11040
- var isArbitraryNumber = (value) => getIsArbitraryValue(value, "number", isNumber);
11041
- var isInteger = (value) => Boolean(value) && Number.isInteger(Number(value));
11372
+ var isFraction = (value) => fractionRegex.test(value);
11373
+ var isNumber = (value) => !!value && !Number.isNaN(Number(value));
11374
+ var isInteger = (value) => !!value && Number.isInteger(Number(value));
11042
11375
  var isPercent = (value) => value.endsWith("%") && isNumber(value.slice(0, -1));
11043
- var isArbitraryValue = (value) => arbitraryValueRegex.test(value);
11044
11376
  var isTshirtSize = (value) => tshirtUnitRegex.test(value);
11045
- var sizeLabels = /* @__PURE__ */ new Set(["length", "size", "percentage"]);
11046
- var isArbitrarySize = (value) => getIsArbitraryValue(value, sizeLabels, isNever);
11047
- var isArbitraryPosition = (value) => getIsArbitraryValue(value, "position", isNever);
11048
- var imageLabels = /* @__PURE__ */ new Set(["image", "url"]);
11049
- var isArbitraryImage = (value) => getIsArbitraryValue(value, imageLabels, isImage);
11050
- var isArbitraryShadow = (value) => getIsArbitraryValue(value, "", isShadow);
11051
11377
  var isAny = () => true;
11052
- var getIsArbitraryValue = (value, label, testValue) => {
11053
- const result = arbitraryValueRegex.exec(value);
11054
- if (result) {
11055
- if (result[1]) {
11056
- return typeof label === "string" ? result[1] === label : label.has(result[1]);
11057
- }
11058
- return testValue(result[2]);
11059
- }
11060
- return false;
11061
- };
11062
11378
  var isLengthOnly = (value) => (
11063
11379
  // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.
11064
11380
  // For example, `hsl(0 0% 0%)` would be classified as a length without this check.
@@ -11068,87 +11384,177 @@ var isLengthOnly = (value) => (
11068
11384
  var isNever = () => false;
11069
11385
  var isShadow = (value) => shadowRegex.test(value);
11070
11386
  var isImage = (value) => imageRegex.test(value);
11387
+ var isAnyNonArbitrary = (value) => !isArbitraryValue(value) && !isArbitraryVariable(value);
11388
+ var isArbitrarySize = (value) => getIsArbitraryValue(value, isLabelSize, isNever);
11389
+ var isArbitraryValue = (value) => arbitraryValueRegex.test(value);
11390
+ var isArbitraryLength = (value) => getIsArbitraryValue(value, isLabelLength, isLengthOnly);
11391
+ var isArbitraryNumber = (value) => getIsArbitraryValue(value, isLabelNumber, isNumber);
11392
+ var isArbitraryPosition = (value) => getIsArbitraryValue(value, isLabelPosition, isNever);
11393
+ var isArbitraryImage = (value) => getIsArbitraryValue(value, isLabelImage, isImage);
11394
+ var isArbitraryShadow = (value) => getIsArbitraryValue(value, isLabelShadow, isShadow);
11395
+ var isArbitraryVariable = (value) => arbitraryVariableRegex.test(value);
11396
+ var isArbitraryVariableLength = (value) => getIsArbitraryVariable(value, isLabelLength);
11397
+ var isArbitraryVariableFamilyName = (value) => getIsArbitraryVariable(value, isLabelFamilyName);
11398
+ var isArbitraryVariablePosition = (value) => getIsArbitraryVariable(value, isLabelPosition);
11399
+ var isArbitraryVariableSize = (value) => getIsArbitraryVariable(value, isLabelSize);
11400
+ var isArbitraryVariableImage = (value) => getIsArbitraryVariable(value, isLabelImage);
11401
+ var isArbitraryVariableShadow = (value) => getIsArbitraryVariable(value, isLabelShadow, true);
11402
+ var getIsArbitraryValue = (value, testLabel, testValue) => {
11403
+ const result = arbitraryValueRegex.exec(value);
11404
+ if (result) {
11405
+ if (result[1]) {
11406
+ return testLabel(result[1]);
11407
+ }
11408
+ return testValue(result[2]);
11409
+ }
11410
+ return false;
11411
+ };
11412
+ var getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {
11413
+ const result = arbitraryVariableRegex.exec(value);
11414
+ if (result) {
11415
+ if (result[1]) {
11416
+ return testLabel(result[1]);
11417
+ }
11418
+ return shouldMatchNoLabel;
11419
+ }
11420
+ return false;
11421
+ };
11422
+ var isLabelPosition = (label) => label === "position" || label === "percentage";
11423
+ var isLabelImage = (label) => label === "image" || label === "url";
11424
+ var isLabelSize = (label) => label === "length" || label === "size" || label === "bg-size";
11425
+ var isLabelLength = (label) => label === "length";
11426
+ var isLabelNumber = (label) => label === "number";
11427
+ var isLabelFamilyName = (label) => label === "family-name";
11428
+ var isLabelShadow = (label) => label === "shadow";
11071
11429
  var getDefaultConfig = () => {
11072
- const colors = fromTheme("colors");
11073
- const spacing = fromTheme("spacing");
11074
- const blur = fromTheme("blur");
11075
- const brightness = fromTheme("brightness");
11076
- const borderColor = fromTheme("borderColor");
11077
- const borderRadius = fromTheme("borderRadius");
11078
- const borderSpacing = fromTheme("borderSpacing");
11079
- const borderWidth = fromTheme("borderWidth");
11080
- const contrast = fromTheme("contrast");
11081
- const grayscale = fromTheme("grayscale");
11082
- const hueRotate = fromTheme("hueRotate");
11083
- const invert = fromTheme("invert");
11084
- const gap = fromTheme("gap");
11085
- const gradientColorStops = fromTheme("gradientColorStops");
11086
- const gradientColorStopPositions = fromTheme("gradientColorStopPositions");
11087
- const inset = fromTheme("inset");
11088
- const margin = fromTheme("margin");
11089
- const opacity = fromTheme("opacity");
11090
- const padding = fromTheme("padding");
11091
- const saturate = fromTheme("saturate");
11092
- const scale = fromTheme("scale");
11093
- const sepia = fromTheme("sepia");
11094
- const skew = fromTheme("skew");
11095
- const space = fromTheme("space");
11096
- const translate = fromTheme("translate");
11097
- const getOverscroll = () => ["auto", "contain", "none"];
11098
- const getOverflow = () => ["auto", "hidden", "clip", "visible", "scroll"];
11099
- const getSpacingWithAutoAndArbitrary = () => ["auto", isArbitraryValue, spacing];
11100
- const getSpacingWithArbitrary = () => [isArbitraryValue, spacing];
11101
- const getLengthWithEmptyAndArbitrary = () => ["", isLength, isArbitraryLength];
11102
- const getNumberWithAutoAndArbitrary = () => ["auto", isNumber, isArbitraryValue];
11103
- const getPositions = () => ["bottom", "center", "left", "left-bottom", "left-top", "right", "right-bottom", "right-top", "top"];
11104
- const getLineStyles = () => ["solid", "dashed", "dotted", "double", "none"];
11105
- const getBlendModes = () => ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"];
11106
- const getAlign = () => ["start", "end", "center", "between", "around", "evenly", "stretch"];
11107
- const getZeroAndEmpty = () => ["", "0", isArbitraryValue];
11108
- const getBreaks = () => ["auto", "avoid", "all", "avoid-page", "page", "left", "right", "column"];
11109
- const getNumberAndArbitrary = () => [isNumber, isArbitraryValue];
11430
+ const themeColor = fromTheme("color");
11431
+ const themeFont = fromTheme("font");
11432
+ const themeText = fromTheme("text");
11433
+ const themeFontWeight = fromTheme("font-weight");
11434
+ const themeTracking = fromTheme("tracking");
11435
+ const themeLeading = fromTheme("leading");
11436
+ const themeBreakpoint = fromTheme("breakpoint");
11437
+ const themeContainer = fromTheme("container");
11438
+ const themeSpacing = fromTheme("spacing");
11439
+ const themeRadius = fromTheme("radius");
11440
+ const themeShadow = fromTheme("shadow");
11441
+ const themeInsetShadow = fromTheme("inset-shadow");
11442
+ const themeTextShadow = fromTheme("text-shadow");
11443
+ const themeDropShadow = fromTheme("drop-shadow");
11444
+ const themeBlur = fromTheme("blur");
11445
+ const themePerspective = fromTheme("perspective");
11446
+ const themeAspect = fromTheme("aspect");
11447
+ const themeEase = fromTheme("ease");
11448
+ const themeAnimate = fromTheme("animate");
11449
+ const scaleBreak = () => ["auto", "avoid", "all", "avoid-page", "page", "left", "right", "column"];
11450
+ const scalePosition = () => [
11451
+ "center",
11452
+ "top",
11453
+ "bottom",
11454
+ "left",
11455
+ "right",
11456
+ "top-left",
11457
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
11458
+ "left-top",
11459
+ "top-right",
11460
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
11461
+ "right-top",
11462
+ "bottom-right",
11463
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
11464
+ "right-bottom",
11465
+ "bottom-left",
11466
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
11467
+ "left-bottom"
11468
+ ];
11469
+ const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];
11470
+ const scaleOverflow = () => ["auto", "hidden", "clip", "visible", "scroll"];
11471
+ const scaleOverscroll = () => ["auto", "contain", "none"];
11472
+ const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];
11473
+ const scaleInset = () => [isFraction, "full", "auto", ...scaleUnambiguousSpacing()];
11474
+ const scaleGridTemplateColsRows = () => [isInteger, "none", "subgrid", isArbitraryVariable, isArbitraryValue];
11475
+ const scaleGridColRowStartAndEnd = () => ["auto", {
11476
+ span: ["full", isInteger, isArbitraryVariable, isArbitraryValue]
11477
+ }, isInteger, isArbitraryVariable, isArbitraryValue];
11478
+ const scaleGridColRowStartOrEnd = () => [isInteger, "auto", isArbitraryVariable, isArbitraryValue];
11479
+ const scaleGridAutoColsRows = () => ["auto", "min", "max", "fr", isArbitraryVariable, isArbitraryValue];
11480
+ const scaleAlignPrimaryAxis = () => ["start", "end", "center", "between", "around", "evenly", "stretch", "baseline", "center-safe", "end-safe"];
11481
+ const scaleAlignSecondaryAxis = () => ["start", "end", "center", "stretch", "center-safe", "end-safe"];
11482
+ const scaleMargin = () => ["auto", ...scaleUnambiguousSpacing()];
11483
+ const scaleSizing = () => [isFraction, "auto", "full", "dvw", "dvh", "lvw", "lvh", "svw", "svh", "min", "max", "fit", ...scaleUnambiguousSpacing()];
11484
+ const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];
11485
+ const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {
11486
+ position: [isArbitraryVariable, isArbitraryValue]
11487
+ }];
11488
+ const scaleBgRepeat = () => ["no-repeat", {
11489
+ repeat: ["", "x", "y", "space", "round"]
11490
+ }];
11491
+ const scaleBgSize = () => ["auto", "cover", "contain", isArbitraryVariableSize, isArbitrarySize, {
11492
+ size: [isArbitraryVariable, isArbitraryValue]
11493
+ }];
11494
+ const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];
11495
+ const scaleRadius = () => [
11496
+ // Deprecated since Tailwind CSS v4.0.0
11497
+ "",
11498
+ "none",
11499
+ "full",
11500
+ themeRadius,
11501
+ isArbitraryVariable,
11502
+ isArbitraryValue
11503
+ ];
11504
+ const scaleBorderWidth = () => ["", isNumber, isArbitraryVariableLength, isArbitraryLength];
11505
+ const scaleLineStyle = () => ["solid", "dashed", "dotted", "double"];
11506
+ const scaleBlendMode = () => ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"];
11507
+ const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];
11508
+ const scaleBlur = () => [
11509
+ // Deprecated since Tailwind CSS v4.0.0
11510
+ "",
11511
+ "none",
11512
+ themeBlur,
11513
+ isArbitraryVariable,
11514
+ isArbitraryValue
11515
+ ];
11516
+ const scaleRotate = () => ["none", isNumber, isArbitraryVariable, isArbitraryValue];
11517
+ const scaleScale = () => ["none", isNumber, isArbitraryVariable, isArbitraryValue];
11518
+ const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];
11519
+ const scaleTranslate = () => [isFraction, "full", ...scaleUnambiguousSpacing()];
11110
11520
  return {
11111
11521
  cacheSize: 500,
11112
- separator: ":",
11113
11522
  theme: {
11114
- colors: [isAny],
11115
- spacing: [isLength, isArbitraryLength],
11116
- blur: ["none", "", isTshirtSize, isArbitraryValue],
11117
- brightness: getNumberAndArbitrary(),
11118
- borderColor: [colors],
11119
- borderRadius: ["none", "", "full", isTshirtSize, isArbitraryValue],
11120
- borderSpacing: getSpacingWithArbitrary(),
11121
- borderWidth: getLengthWithEmptyAndArbitrary(),
11122
- contrast: getNumberAndArbitrary(),
11123
- grayscale: getZeroAndEmpty(),
11124
- hueRotate: getNumberAndArbitrary(),
11125
- invert: getZeroAndEmpty(),
11126
- gap: getSpacingWithArbitrary(),
11127
- gradientColorStops: [colors],
11128
- gradientColorStopPositions: [isPercent, isArbitraryLength],
11129
- inset: getSpacingWithAutoAndArbitrary(),
11130
- margin: getSpacingWithAutoAndArbitrary(),
11131
- opacity: getNumberAndArbitrary(),
11132
- padding: getSpacingWithArbitrary(),
11133
- saturate: getNumberAndArbitrary(),
11134
- scale: getNumberAndArbitrary(),
11135
- sepia: getZeroAndEmpty(),
11136
- skew: getNumberAndArbitrary(),
11137
- space: getSpacingWithArbitrary(),
11138
- translate: getSpacingWithArbitrary()
11523
+ animate: ["spin", "ping", "pulse", "bounce"],
11524
+ aspect: ["video"],
11525
+ blur: [isTshirtSize],
11526
+ breakpoint: [isTshirtSize],
11527
+ color: [isAny],
11528
+ container: [isTshirtSize],
11529
+ "drop-shadow": [isTshirtSize],
11530
+ ease: ["in", "out", "in-out"],
11531
+ font: [isAnyNonArbitrary],
11532
+ "font-weight": ["thin", "extralight", "light", "normal", "medium", "semibold", "bold", "extrabold", "black"],
11533
+ "inset-shadow": [isTshirtSize],
11534
+ leading: ["none", "tight", "snug", "normal", "relaxed", "loose"],
11535
+ perspective: ["dramatic", "near", "normal", "midrange", "distant", "none"],
11536
+ radius: [isTshirtSize],
11537
+ shadow: [isTshirtSize],
11538
+ spacing: ["px", isNumber],
11539
+ text: [isTshirtSize],
11540
+ "text-shadow": [isTshirtSize],
11541
+ tracking: ["tighter", "tight", "normal", "wide", "wider", "widest"]
11139
11542
  },
11140
11543
  classGroups: {
11141
- // Layout
11544
+ // --------------
11545
+ // --- Layout ---
11546
+ // --------------
11142
11547
  /**
11143
11548
  * Aspect Ratio
11144
11549
  * @see https://tailwindcss.com/docs/aspect-ratio
11145
11550
  */
11146
11551
  aspect: [{
11147
- aspect: ["auto", "square", "video", isArbitraryValue]
11552
+ aspect: ["auto", "square", isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]
11148
11553
  }],
11149
11554
  /**
11150
11555
  * Container
11151
11556
  * @see https://tailwindcss.com/docs/container
11557
+ * @deprecated since Tailwind CSS v4.0.0
11152
11558
  */
11153
11559
  container: ["container"],
11154
11560
  /**
@@ -11156,21 +11562,21 @@ var getDefaultConfig = () => {
11156
11562
  * @see https://tailwindcss.com/docs/columns
11157
11563
  */
11158
11564
  columns: [{
11159
- columns: [isTshirtSize]
11565
+ columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]
11160
11566
  }],
11161
11567
  /**
11162
11568
  * Break After
11163
11569
  * @see https://tailwindcss.com/docs/break-after
11164
11570
  */
11165
11571
  "break-after": [{
11166
- "break-after": getBreaks()
11572
+ "break-after": scaleBreak()
11167
11573
  }],
11168
11574
  /**
11169
11575
  * Break Before
11170
11576
  * @see https://tailwindcss.com/docs/break-before
11171
11577
  */
11172
11578
  "break-before": [{
11173
- "break-before": getBreaks()
11579
+ "break-before": scaleBreak()
11174
11580
  }],
11175
11581
  /**
11176
11582
  * Break Inside
@@ -11198,6 +11604,11 @@ var getDefaultConfig = () => {
11198
11604
  * @see https://tailwindcss.com/docs/display
11199
11605
  */
11200
11606
  display: ["block", "inline-block", "inline", "flex", "inline-flex", "table", "inline-table", "table-caption", "table-cell", "table-column", "table-column-group", "table-footer-group", "table-header-group", "table-row-group", "table-row", "flow-root", "grid", "inline-grid", "contents", "list-item", "hidden"],
11607
+ /**
11608
+ * Screen Reader Only
11609
+ * @see https://tailwindcss.com/docs/display#screen-reader-only
11610
+ */
11611
+ sr: ["sr-only", "not-sr-only"],
11201
11612
  /**
11202
11613
  * Floats
11203
11614
  * @see https://tailwindcss.com/docs/float
@@ -11229,49 +11640,49 @@ var getDefaultConfig = () => {
11229
11640
  * @see https://tailwindcss.com/docs/object-position
11230
11641
  */
11231
11642
  "object-position": [{
11232
- object: [...getPositions(), isArbitraryValue]
11643
+ object: scalePositionWithArbitrary()
11233
11644
  }],
11234
11645
  /**
11235
11646
  * Overflow
11236
11647
  * @see https://tailwindcss.com/docs/overflow
11237
11648
  */
11238
11649
  overflow: [{
11239
- overflow: getOverflow()
11650
+ overflow: scaleOverflow()
11240
11651
  }],
11241
11652
  /**
11242
11653
  * Overflow X
11243
11654
  * @see https://tailwindcss.com/docs/overflow
11244
11655
  */
11245
11656
  "overflow-x": [{
11246
- "overflow-x": getOverflow()
11657
+ "overflow-x": scaleOverflow()
11247
11658
  }],
11248
11659
  /**
11249
11660
  * Overflow Y
11250
11661
  * @see https://tailwindcss.com/docs/overflow
11251
11662
  */
11252
11663
  "overflow-y": [{
11253
- "overflow-y": getOverflow()
11664
+ "overflow-y": scaleOverflow()
11254
11665
  }],
11255
11666
  /**
11256
11667
  * Overscroll Behavior
11257
11668
  * @see https://tailwindcss.com/docs/overscroll-behavior
11258
11669
  */
11259
11670
  overscroll: [{
11260
- overscroll: getOverscroll()
11671
+ overscroll: scaleOverscroll()
11261
11672
  }],
11262
11673
  /**
11263
11674
  * Overscroll Behavior X
11264
11675
  * @see https://tailwindcss.com/docs/overscroll-behavior
11265
11676
  */
11266
11677
  "overscroll-x": [{
11267
- "overscroll-x": getOverscroll()
11678
+ "overscroll-x": scaleOverscroll()
11268
11679
  }],
11269
11680
  /**
11270
11681
  * Overscroll Behavior Y
11271
11682
  * @see https://tailwindcss.com/docs/overscroll-behavior
11272
11683
  */
11273
11684
  "overscroll-y": [{
11274
- "overscroll-y": getOverscroll()
11685
+ "overscroll-y": scaleOverscroll()
11275
11686
  }],
11276
11687
  /**
11277
11688
  * Position
@@ -11283,63 +11694,63 @@ var getDefaultConfig = () => {
11283
11694
  * @see https://tailwindcss.com/docs/top-right-bottom-left
11284
11695
  */
11285
11696
  inset: [{
11286
- inset: [inset]
11697
+ inset: scaleInset()
11287
11698
  }],
11288
11699
  /**
11289
11700
  * Right / Left
11290
11701
  * @see https://tailwindcss.com/docs/top-right-bottom-left
11291
11702
  */
11292
11703
  "inset-x": [{
11293
- "inset-x": [inset]
11704
+ "inset-x": scaleInset()
11294
11705
  }],
11295
11706
  /**
11296
11707
  * Top / Bottom
11297
11708
  * @see https://tailwindcss.com/docs/top-right-bottom-left
11298
11709
  */
11299
11710
  "inset-y": [{
11300
- "inset-y": [inset]
11711
+ "inset-y": scaleInset()
11301
11712
  }],
11302
11713
  /**
11303
11714
  * Start
11304
11715
  * @see https://tailwindcss.com/docs/top-right-bottom-left
11305
11716
  */
11306
11717
  start: [{
11307
- start: [inset]
11718
+ start: scaleInset()
11308
11719
  }],
11309
11720
  /**
11310
11721
  * End
11311
11722
  * @see https://tailwindcss.com/docs/top-right-bottom-left
11312
11723
  */
11313
11724
  end: [{
11314
- end: [inset]
11725
+ end: scaleInset()
11315
11726
  }],
11316
11727
  /**
11317
11728
  * Top
11318
11729
  * @see https://tailwindcss.com/docs/top-right-bottom-left
11319
11730
  */
11320
11731
  top: [{
11321
- top: [inset]
11732
+ top: scaleInset()
11322
11733
  }],
11323
11734
  /**
11324
11735
  * Right
11325
11736
  * @see https://tailwindcss.com/docs/top-right-bottom-left
11326
11737
  */
11327
11738
  right: [{
11328
- right: [inset]
11739
+ right: scaleInset()
11329
11740
  }],
11330
11741
  /**
11331
11742
  * Bottom
11332
11743
  * @see https://tailwindcss.com/docs/top-right-bottom-left
11333
11744
  */
11334
11745
  bottom: [{
11335
- bottom: [inset]
11746
+ bottom: scaleInset()
11336
11747
  }],
11337
11748
  /**
11338
11749
  * Left
11339
11750
  * @see https://tailwindcss.com/docs/top-right-bottom-left
11340
11751
  */
11341
11752
  left: [{
11342
- left: [inset]
11753
+ left: scaleInset()
11343
11754
  }],
11344
11755
  /**
11345
11756
  * Visibility
@@ -11351,15 +11762,17 @@ var getDefaultConfig = () => {
11351
11762
  * @see https://tailwindcss.com/docs/z-index
11352
11763
  */
11353
11764
  z: [{
11354
- z: ["auto", isInteger, isArbitraryValue]
11765
+ z: [isInteger, "auto", isArbitraryVariable, isArbitraryValue]
11355
11766
  }],
11356
- // Flexbox and Grid
11767
+ // ------------------------
11768
+ // --- Flexbox and Grid ---
11769
+ // ------------------------
11357
11770
  /**
11358
11771
  * Flex Basis
11359
11772
  * @see https://tailwindcss.com/docs/flex-basis
11360
11773
  */
11361
11774
  basis: [{
11362
- basis: getSpacingWithAutoAndArbitrary()
11775
+ basis: [isFraction, "full", "auto", themeContainer, ...scaleUnambiguousSpacing()]
11363
11776
  }],
11364
11777
  /**
11365
11778
  * Flex Direction
@@ -11373,95 +11786,91 @@ var getDefaultConfig = () => {
11373
11786
  * @see https://tailwindcss.com/docs/flex-wrap
11374
11787
  */
11375
11788
  "flex-wrap": [{
11376
- flex: ["wrap", "wrap-reverse", "nowrap"]
11789
+ flex: ["nowrap", "wrap", "wrap-reverse"]
11377
11790
  }],
11378
11791
  /**
11379
11792
  * Flex
11380
11793
  * @see https://tailwindcss.com/docs/flex
11381
11794
  */
11382
11795
  flex: [{
11383
- flex: ["1", "auto", "initial", "none", isArbitraryValue]
11796
+ flex: [isNumber, isFraction, "auto", "initial", "none", isArbitraryValue]
11384
11797
  }],
11385
11798
  /**
11386
11799
  * Flex Grow
11387
11800
  * @see https://tailwindcss.com/docs/flex-grow
11388
11801
  */
11389
11802
  grow: [{
11390
- grow: getZeroAndEmpty()
11803
+ grow: ["", isNumber, isArbitraryVariable, isArbitraryValue]
11391
11804
  }],
11392
11805
  /**
11393
11806
  * Flex Shrink
11394
11807
  * @see https://tailwindcss.com/docs/flex-shrink
11395
11808
  */
11396
11809
  shrink: [{
11397
- shrink: getZeroAndEmpty()
11810
+ shrink: ["", isNumber, isArbitraryVariable, isArbitraryValue]
11398
11811
  }],
11399
11812
  /**
11400
11813
  * Order
11401
11814
  * @see https://tailwindcss.com/docs/order
11402
11815
  */
11403
11816
  order: [{
11404
- order: ["first", "last", "none", isInteger, isArbitraryValue]
11817
+ order: [isInteger, "first", "last", "none", isArbitraryVariable, isArbitraryValue]
11405
11818
  }],
11406
11819
  /**
11407
11820
  * Grid Template Columns
11408
11821
  * @see https://tailwindcss.com/docs/grid-template-columns
11409
11822
  */
11410
11823
  "grid-cols": [{
11411
- "grid-cols": [isAny]
11824
+ "grid-cols": scaleGridTemplateColsRows()
11412
11825
  }],
11413
11826
  /**
11414
11827
  * Grid Column Start / End
11415
11828
  * @see https://tailwindcss.com/docs/grid-column
11416
11829
  */
11417
11830
  "col-start-end": [{
11418
- col: ["auto", {
11419
- span: ["full", isInteger, isArbitraryValue]
11420
- }, isArbitraryValue]
11831
+ col: scaleGridColRowStartAndEnd()
11421
11832
  }],
11422
11833
  /**
11423
11834
  * Grid Column Start
11424
11835
  * @see https://tailwindcss.com/docs/grid-column
11425
11836
  */
11426
11837
  "col-start": [{
11427
- "col-start": getNumberWithAutoAndArbitrary()
11838
+ "col-start": scaleGridColRowStartOrEnd()
11428
11839
  }],
11429
11840
  /**
11430
11841
  * Grid Column End
11431
11842
  * @see https://tailwindcss.com/docs/grid-column
11432
11843
  */
11433
11844
  "col-end": [{
11434
- "col-end": getNumberWithAutoAndArbitrary()
11845
+ "col-end": scaleGridColRowStartOrEnd()
11435
11846
  }],
11436
11847
  /**
11437
11848
  * Grid Template Rows
11438
11849
  * @see https://tailwindcss.com/docs/grid-template-rows
11439
11850
  */
11440
11851
  "grid-rows": [{
11441
- "grid-rows": [isAny]
11852
+ "grid-rows": scaleGridTemplateColsRows()
11442
11853
  }],
11443
11854
  /**
11444
11855
  * Grid Row Start / End
11445
11856
  * @see https://tailwindcss.com/docs/grid-row
11446
11857
  */
11447
11858
  "row-start-end": [{
11448
- row: ["auto", {
11449
- span: [isInteger, isArbitraryValue]
11450
- }, isArbitraryValue]
11859
+ row: scaleGridColRowStartAndEnd()
11451
11860
  }],
11452
11861
  /**
11453
11862
  * Grid Row Start
11454
11863
  * @see https://tailwindcss.com/docs/grid-row
11455
11864
  */
11456
11865
  "row-start": [{
11457
- "row-start": getNumberWithAutoAndArbitrary()
11866
+ "row-start": scaleGridColRowStartOrEnd()
11458
11867
  }],
11459
11868
  /**
11460
11869
  * Grid Row End
11461
11870
  * @see https://tailwindcss.com/docs/grid-row
11462
11871
  */
11463
11872
  "row-end": [{
11464
- "row-end": getNumberWithAutoAndArbitrary()
11873
+ "row-end": scaleGridColRowStartOrEnd()
11465
11874
  }],
11466
11875
  /**
11467
11876
  * Grid Auto Flow
@@ -11475,98 +11884,102 @@ var getDefaultConfig = () => {
11475
11884
  * @see https://tailwindcss.com/docs/grid-auto-columns
11476
11885
  */
11477
11886
  "auto-cols": [{
11478
- "auto-cols": ["auto", "min", "max", "fr", isArbitraryValue]
11887
+ "auto-cols": scaleGridAutoColsRows()
11479
11888
  }],
11480
11889
  /**
11481
11890
  * Grid Auto Rows
11482
11891
  * @see https://tailwindcss.com/docs/grid-auto-rows
11483
11892
  */
11484
11893
  "auto-rows": [{
11485
- "auto-rows": ["auto", "min", "max", "fr", isArbitraryValue]
11894
+ "auto-rows": scaleGridAutoColsRows()
11486
11895
  }],
11487
11896
  /**
11488
11897
  * Gap
11489
11898
  * @see https://tailwindcss.com/docs/gap
11490
11899
  */
11491
11900
  gap: [{
11492
- gap: [gap]
11901
+ gap: scaleUnambiguousSpacing()
11493
11902
  }],
11494
11903
  /**
11495
11904
  * Gap X
11496
11905
  * @see https://tailwindcss.com/docs/gap
11497
11906
  */
11498
11907
  "gap-x": [{
11499
- "gap-x": [gap]
11908
+ "gap-x": scaleUnambiguousSpacing()
11500
11909
  }],
11501
11910
  /**
11502
11911
  * Gap Y
11503
11912
  * @see https://tailwindcss.com/docs/gap
11504
11913
  */
11505
11914
  "gap-y": [{
11506
- "gap-y": [gap]
11915
+ "gap-y": scaleUnambiguousSpacing()
11507
11916
  }],
11508
11917
  /**
11509
11918
  * Justify Content
11510
11919
  * @see https://tailwindcss.com/docs/justify-content
11511
11920
  */
11512
11921
  "justify-content": [{
11513
- justify: ["normal", ...getAlign()]
11922
+ justify: [...scaleAlignPrimaryAxis(), "normal"]
11514
11923
  }],
11515
11924
  /**
11516
11925
  * Justify Items
11517
11926
  * @see https://tailwindcss.com/docs/justify-items
11518
11927
  */
11519
11928
  "justify-items": [{
11520
- "justify-items": ["start", "end", "center", "stretch"]
11929
+ "justify-items": [...scaleAlignSecondaryAxis(), "normal"]
11521
11930
  }],
11522
11931
  /**
11523
11932
  * Justify Self
11524
11933
  * @see https://tailwindcss.com/docs/justify-self
11525
11934
  */
11526
11935
  "justify-self": [{
11527
- "justify-self": ["auto", "start", "end", "center", "stretch"]
11936
+ "justify-self": ["auto", ...scaleAlignSecondaryAxis()]
11528
11937
  }],
11529
11938
  /**
11530
11939
  * Align Content
11531
11940
  * @see https://tailwindcss.com/docs/align-content
11532
11941
  */
11533
11942
  "align-content": [{
11534
- content: ["normal", ...getAlign(), "baseline"]
11943
+ content: ["normal", ...scaleAlignPrimaryAxis()]
11535
11944
  }],
11536
11945
  /**
11537
11946
  * Align Items
11538
11947
  * @see https://tailwindcss.com/docs/align-items
11539
11948
  */
11540
11949
  "align-items": [{
11541
- items: ["start", "end", "center", "baseline", "stretch"]
11950
+ items: [...scaleAlignSecondaryAxis(), {
11951
+ baseline: ["", "last"]
11952
+ }]
11542
11953
  }],
11543
11954
  /**
11544
11955
  * Align Self
11545
11956
  * @see https://tailwindcss.com/docs/align-self
11546
11957
  */
11547
11958
  "align-self": [{
11548
- self: ["auto", "start", "end", "center", "stretch", "baseline"]
11959
+ self: ["auto", ...scaleAlignSecondaryAxis(), {
11960
+ baseline: ["", "last"]
11961
+ }]
11549
11962
  }],
11550
11963
  /**
11551
11964
  * Place Content
11552
11965
  * @see https://tailwindcss.com/docs/place-content
11553
11966
  */
11554
11967
  "place-content": [{
11555
- "place-content": [...getAlign(), "baseline"]
11968
+ "place-content": scaleAlignPrimaryAxis()
11556
11969
  }],
11557
11970
  /**
11558
11971
  * Place Items
11559
11972
  * @see https://tailwindcss.com/docs/place-items
11560
11973
  */
11561
11974
  "place-items": [{
11562
- "place-items": ["start", "end", "center", "baseline", "stretch"]
11975
+ "place-items": [...scaleAlignSecondaryAxis(), "baseline"]
11563
11976
  }],
11564
11977
  /**
11565
11978
  * Place Self
11566
11979
  * @see https://tailwindcss.com/docs/place-self
11567
11980
  */
11568
11981
  "place-self": [{
11569
- "place-self": ["auto", "start", "end", "center", "stretch"]
11982
+ "place-self": ["auto", ...scaleAlignSecondaryAxis()]
11570
11983
  }],
11571
11984
  // Spacing
11572
11985
  /**
@@ -11574,210 +11987,229 @@ var getDefaultConfig = () => {
11574
11987
  * @see https://tailwindcss.com/docs/padding
11575
11988
  */
11576
11989
  p: [{
11577
- p: [padding]
11990
+ p: scaleUnambiguousSpacing()
11578
11991
  }],
11579
11992
  /**
11580
11993
  * Padding X
11581
11994
  * @see https://tailwindcss.com/docs/padding
11582
11995
  */
11583
11996
  px: [{
11584
- px: [padding]
11997
+ px: scaleUnambiguousSpacing()
11585
11998
  }],
11586
11999
  /**
11587
12000
  * Padding Y
11588
12001
  * @see https://tailwindcss.com/docs/padding
11589
12002
  */
11590
12003
  py: [{
11591
- py: [padding]
12004
+ py: scaleUnambiguousSpacing()
11592
12005
  }],
11593
12006
  /**
11594
12007
  * Padding Start
11595
12008
  * @see https://tailwindcss.com/docs/padding
11596
12009
  */
11597
12010
  ps: [{
11598
- ps: [padding]
12011
+ ps: scaleUnambiguousSpacing()
11599
12012
  }],
11600
12013
  /**
11601
12014
  * Padding End
11602
12015
  * @see https://tailwindcss.com/docs/padding
11603
12016
  */
11604
12017
  pe: [{
11605
- pe: [padding]
12018
+ pe: scaleUnambiguousSpacing()
11606
12019
  }],
11607
12020
  /**
11608
12021
  * Padding Top
11609
12022
  * @see https://tailwindcss.com/docs/padding
11610
12023
  */
11611
12024
  pt: [{
11612
- pt: [padding]
12025
+ pt: scaleUnambiguousSpacing()
11613
12026
  }],
11614
12027
  /**
11615
12028
  * Padding Right
11616
12029
  * @see https://tailwindcss.com/docs/padding
11617
12030
  */
11618
12031
  pr: [{
11619
- pr: [padding]
12032
+ pr: scaleUnambiguousSpacing()
11620
12033
  }],
11621
12034
  /**
11622
12035
  * Padding Bottom
11623
12036
  * @see https://tailwindcss.com/docs/padding
11624
12037
  */
11625
12038
  pb: [{
11626
- pb: [padding]
12039
+ pb: scaleUnambiguousSpacing()
11627
12040
  }],
11628
12041
  /**
11629
12042
  * Padding Left
11630
12043
  * @see https://tailwindcss.com/docs/padding
11631
12044
  */
11632
12045
  pl: [{
11633
- pl: [padding]
12046
+ pl: scaleUnambiguousSpacing()
11634
12047
  }],
11635
12048
  /**
11636
12049
  * Margin
11637
12050
  * @see https://tailwindcss.com/docs/margin
11638
12051
  */
11639
12052
  m: [{
11640
- m: [margin]
12053
+ m: scaleMargin()
11641
12054
  }],
11642
12055
  /**
11643
12056
  * Margin X
11644
12057
  * @see https://tailwindcss.com/docs/margin
11645
12058
  */
11646
12059
  mx: [{
11647
- mx: [margin]
12060
+ mx: scaleMargin()
11648
12061
  }],
11649
12062
  /**
11650
12063
  * Margin Y
11651
12064
  * @see https://tailwindcss.com/docs/margin
11652
12065
  */
11653
12066
  my: [{
11654
- my: [margin]
12067
+ my: scaleMargin()
11655
12068
  }],
11656
12069
  /**
11657
12070
  * Margin Start
11658
12071
  * @see https://tailwindcss.com/docs/margin
11659
12072
  */
11660
12073
  ms: [{
11661
- ms: [margin]
12074
+ ms: scaleMargin()
11662
12075
  }],
11663
12076
  /**
11664
12077
  * Margin End
11665
12078
  * @see https://tailwindcss.com/docs/margin
11666
12079
  */
11667
12080
  me: [{
11668
- me: [margin]
12081
+ me: scaleMargin()
11669
12082
  }],
11670
12083
  /**
11671
12084
  * Margin Top
11672
12085
  * @see https://tailwindcss.com/docs/margin
11673
12086
  */
11674
12087
  mt: [{
11675
- mt: [margin]
12088
+ mt: scaleMargin()
11676
12089
  }],
11677
12090
  /**
11678
12091
  * Margin Right
11679
12092
  * @see https://tailwindcss.com/docs/margin
11680
12093
  */
11681
12094
  mr: [{
11682
- mr: [margin]
12095
+ mr: scaleMargin()
11683
12096
  }],
11684
12097
  /**
11685
12098
  * Margin Bottom
11686
12099
  * @see https://tailwindcss.com/docs/margin
11687
12100
  */
11688
12101
  mb: [{
11689
- mb: [margin]
12102
+ mb: scaleMargin()
11690
12103
  }],
11691
12104
  /**
11692
12105
  * Margin Left
11693
12106
  * @see https://tailwindcss.com/docs/margin
11694
12107
  */
11695
12108
  ml: [{
11696
- ml: [margin]
12109
+ ml: scaleMargin()
11697
12110
  }],
11698
12111
  /**
11699
12112
  * Space Between X
11700
- * @see https://tailwindcss.com/docs/space
12113
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
11701
12114
  */
11702
12115
  "space-x": [{
11703
- "space-x": [space]
12116
+ "space-x": scaleUnambiguousSpacing()
11704
12117
  }],
11705
12118
  /**
11706
12119
  * Space Between X Reverse
11707
- * @see https://tailwindcss.com/docs/space
12120
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
11708
12121
  */
11709
12122
  "space-x-reverse": ["space-x-reverse"],
11710
12123
  /**
11711
12124
  * Space Between Y
11712
- * @see https://tailwindcss.com/docs/space
12125
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
11713
12126
  */
11714
12127
  "space-y": [{
11715
- "space-y": [space]
12128
+ "space-y": scaleUnambiguousSpacing()
11716
12129
  }],
11717
12130
  /**
11718
12131
  * Space Between Y Reverse
11719
- * @see https://tailwindcss.com/docs/space
12132
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
11720
12133
  */
11721
12134
  "space-y-reverse": ["space-y-reverse"],
11722
- // Sizing
12135
+ // --------------
12136
+ // --- Sizing ---
12137
+ // --------------
12138
+ /**
12139
+ * Size
12140
+ * @see https://tailwindcss.com/docs/width#setting-both-width-and-height
12141
+ */
12142
+ size: [{
12143
+ size: scaleSizing()
12144
+ }],
11723
12145
  /**
11724
12146
  * Width
11725
12147
  * @see https://tailwindcss.com/docs/width
11726
12148
  */
11727
12149
  w: [{
11728
- w: ["auto", "min", "max", "fit", "svw", "lvw", "dvw", isArbitraryValue, spacing]
12150
+ w: [themeContainer, "screen", ...scaleSizing()]
11729
12151
  }],
11730
12152
  /**
11731
12153
  * Min-Width
11732
12154
  * @see https://tailwindcss.com/docs/min-width
11733
12155
  */
11734
12156
  "min-w": [{
11735
- "min-w": [isArbitraryValue, spacing, "min", "max", "fit"]
12157
+ "min-w": [
12158
+ themeContainer,
12159
+ "screen",
12160
+ /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
12161
+ "none",
12162
+ ...scaleSizing()
12163
+ ]
11736
12164
  }],
11737
12165
  /**
11738
12166
  * Max-Width
11739
12167
  * @see https://tailwindcss.com/docs/max-width
11740
12168
  */
11741
12169
  "max-w": [{
11742
- "max-w": [isArbitraryValue, spacing, "none", "full", "min", "max", "fit", "prose", {
11743
- screen: [isTshirtSize]
11744
- }, isTshirtSize]
12170
+ "max-w": [
12171
+ themeContainer,
12172
+ "screen",
12173
+ "none",
12174
+ /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
12175
+ "prose",
12176
+ /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
12177
+ {
12178
+ screen: [themeBreakpoint]
12179
+ },
12180
+ ...scaleSizing()
12181
+ ]
11745
12182
  }],
11746
12183
  /**
11747
12184
  * Height
11748
12185
  * @see https://tailwindcss.com/docs/height
11749
12186
  */
11750
12187
  h: [{
11751
- h: [isArbitraryValue, spacing, "auto", "min", "max", "fit", "svh", "lvh", "dvh"]
12188
+ h: ["screen", "lh", ...scaleSizing()]
11752
12189
  }],
11753
12190
  /**
11754
12191
  * Min-Height
11755
12192
  * @see https://tailwindcss.com/docs/min-height
11756
12193
  */
11757
12194
  "min-h": [{
11758
- "min-h": [isArbitraryValue, spacing, "min", "max", "fit", "svh", "lvh", "dvh"]
12195
+ "min-h": ["screen", "lh", "none", ...scaleSizing()]
11759
12196
  }],
11760
12197
  /**
11761
12198
  * Max-Height
11762
12199
  * @see https://tailwindcss.com/docs/max-height
11763
12200
  */
11764
12201
  "max-h": [{
11765
- "max-h": [isArbitraryValue, spacing, "min", "max", "fit", "svh", "lvh", "dvh"]
11766
- }],
11767
- /**
11768
- * Size
11769
- * @see https://tailwindcss.com/docs/size
11770
- */
11771
- size: [{
11772
- size: [isArbitraryValue, spacing, "auto", "min", "max", "fit"]
12202
+ "max-h": ["screen", "lh", ...scaleSizing()]
11773
12203
  }],
11774
- // Typography
12204
+ // ------------------
12205
+ // --- Typography ---
12206
+ // ------------------
11775
12207
  /**
11776
12208
  * Font Size
11777
12209
  * @see https://tailwindcss.com/docs/font-size
11778
12210
  */
11779
12211
  "font-size": [{
11780
- text: ["base", isTshirtSize, isArbitraryLength]
12212
+ text: ["base", themeText, isArbitraryVariableLength, isArbitraryLength]
11781
12213
  }],
11782
12214
  /**
11783
12215
  * Font Smoothing
@@ -11794,14 +12226,21 @@ var getDefaultConfig = () => {
11794
12226
  * @see https://tailwindcss.com/docs/font-weight
11795
12227
  */
11796
12228
  "font-weight": [{
11797
- font: ["thin", "extralight", "light", "normal", "medium", "semibold", "bold", "extrabold", "black", isArbitraryNumber]
12229
+ font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]
12230
+ }],
12231
+ /**
12232
+ * Font Stretch
12233
+ * @see https://tailwindcss.com/docs/font-stretch
12234
+ */
12235
+ "font-stretch": [{
12236
+ "font-stretch": ["ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "normal", "semi-expanded", "expanded", "extra-expanded", "ultra-expanded", isPercent, isArbitraryValue]
11798
12237
  }],
11799
12238
  /**
11800
12239
  * Font Family
11801
12240
  * @see https://tailwindcss.com/docs/font-family
11802
12241
  */
11803
12242
  "font-family": [{
11804
- font: [isAny]
12243
+ font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]
11805
12244
  }],
11806
12245
  /**
11807
12246
  * Font Variant Numeric
@@ -11838,35 +12277,32 @@ var getDefaultConfig = () => {
11838
12277
  * @see https://tailwindcss.com/docs/letter-spacing
11839
12278
  */
11840
12279
  tracking: [{
11841
- tracking: ["tighter", "tight", "normal", "wide", "wider", "widest", isArbitraryValue]
12280
+ tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]
11842
12281
  }],
11843
12282
  /**
11844
12283
  * Line Clamp
11845
12284
  * @see https://tailwindcss.com/docs/line-clamp
11846
12285
  */
11847
12286
  "line-clamp": [{
11848
- "line-clamp": ["none", isNumber, isArbitraryNumber]
12287
+ "line-clamp": [isNumber, "none", isArbitraryVariable, isArbitraryNumber]
11849
12288
  }],
11850
12289
  /**
11851
12290
  * Line Height
11852
12291
  * @see https://tailwindcss.com/docs/line-height
11853
12292
  */
11854
12293
  leading: [{
11855
- leading: ["none", "tight", "snug", "normal", "relaxed", "loose", isLength, isArbitraryValue]
12294
+ leading: [
12295
+ /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
12296
+ themeLeading,
12297
+ ...scaleUnambiguousSpacing()
12298
+ ]
11856
12299
  }],
11857
12300
  /**
11858
12301
  * List Style Image
11859
12302
  * @see https://tailwindcss.com/docs/list-style-image
11860
12303
  */
11861
12304
  "list-image": [{
11862
- "list-image": ["none", isArbitraryValue]
11863
- }],
11864
- /**
11865
- * List Style Type
11866
- * @see https://tailwindcss.com/docs/list-style-type
11867
- */
11868
- "list-style-type": [{
11869
- list: ["none", "disc", "decimal", isArbitraryValue]
12305
+ "list-image": ["none", isArbitraryVariable, isArbitraryValue]
11870
12306
  }],
11871
12307
  /**
11872
12308
  * List Style Position
@@ -11876,19 +12312,11 @@ var getDefaultConfig = () => {
11876
12312
  list: ["inside", "outside"]
11877
12313
  }],
11878
12314
  /**
11879
- * Placeholder Color
11880
- * @deprecated since Tailwind CSS v3.0.0
11881
- * @see https://tailwindcss.com/docs/placeholder-color
11882
- */
11883
- "placeholder-color": [{
11884
- placeholder: [colors]
11885
- }],
11886
- /**
11887
- * Placeholder Opacity
11888
- * @see https://tailwindcss.com/docs/placeholder-opacity
12315
+ * List Style Type
12316
+ * @see https://tailwindcss.com/docs/list-style-type
11889
12317
  */
11890
- "placeholder-opacity": [{
11891
- "placeholder-opacity": [opacity]
12318
+ "list-style-type": [{
12319
+ list: ["disc", "decimal", "none", isArbitraryVariable, isArbitraryValue]
11892
12320
  }],
11893
12321
  /**
11894
12322
  * Text Alignment
@@ -11898,18 +12326,19 @@ var getDefaultConfig = () => {
11898
12326
  text: ["left", "center", "right", "justify", "start", "end"]
11899
12327
  }],
11900
12328
  /**
11901
- * Text Color
11902
- * @see https://tailwindcss.com/docs/text-color
12329
+ * Placeholder Color
12330
+ * @deprecated since Tailwind CSS v3.0.0
12331
+ * @see https://v3.tailwindcss.com/docs/placeholder-color
11903
12332
  */
11904
- "text-color": [{
11905
- text: [colors]
12333
+ "placeholder-color": [{
12334
+ placeholder: scaleColor()
11906
12335
  }],
11907
12336
  /**
11908
- * Text Opacity
11909
- * @see https://tailwindcss.com/docs/text-opacity
12337
+ * Text Color
12338
+ * @see https://tailwindcss.com/docs/text-color
11910
12339
  */
11911
- "text-opacity": [{
11912
- "text-opacity": [opacity]
12340
+ "text-color": [{
12341
+ text: scaleColor()
11913
12342
  }],
11914
12343
  /**
11915
12344
  * Text Decoration
@@ -11921,28 +12350,28 @@ var getDefaultConfig = () => {
11921
12350
  * @see https://tailwindcss.com/docs/text-decoration-style
11922
12351
  */
11923
12352
  "text-decoration-style": [{
11924
- decoration: [...getLineStyles(), "wavy"]
12353
+ decoration: [...scaleLineStyle(), "wavy"]
11925
12354
  }],
11926
12355
  /**
11927
12356
  * Text Decoration Thickness
11928
12357
  * @see https://tailwindcss.com/docs/text-decoration-thickness
11929
12358
  */
11930
12359
  "text-decoration-thickness": [{
11931
- decoration: ["auto", "from-font", isLength, isArbitraryLength]
11932
- }],
11933
- /**
11934
- * Text Underline Offset
11935
- * @see https://tailwindcss.com/docs/text-underline-offset
11936
- */
11937
- "underline-offset": [{
11938
- "underline-offset": ["auto", isLength, isArbitraryValue]
12360
+ decoration: [isNumber, "from-font", "auto", isArbitraryVariable, isArbitraryLength]
11939
12361
  }],
11940
12362
  /**
11941
12363
  * Text Decoration Color
11942
12364
  * @see https://tailwindcss.com/docs/text-decoration-color
11943
12365
  */
11944
12366
  "text-decoration-color": [{
11945
- decoration: [colors]
12367
+ decoration: scaleColor()
12368
+ }],
12369
+ /**
12370
+ * Text Underline Offset
12371
+ * @see https://tailwindcss.com/docs/text-underline-offset
12372
+ */
12373
+ "underline-offset": [{
12374
+ "underline-offset": [isNumber, "auto", isArbitraryVariable, isArbitraryValue]
11946
12375
  }],
11947
12376
  /**
11948
12377
  * Text Transform
@@ -11966,14 +12395,14 @@ var getDefaultConfig = () => {
11966
12395
  * @see https://tailwindcss.com/docs/text-indent
11967
12396
  */
11968
12397
  indent: [{
11969
- indent: getSpacingWithArbitrary()
12398
+ indent: scaleUnambiguousSpacing()
11970
12399
  }],
11971
12400
  /**
11972
12401
  * Vertical Alignment
11973
12402
  * @see https://tailwindcss.com/docs/vertical-align
11974
12403
  */
11975
12404
  "vertical-align": [{
11976
- align: ["baseline", "top", "middle", "bottom", "text-top", "text-bottom", "sub", "super", isArbitraryValue]
12405
+ align: ["baseline", "top", "middle", "bottom", "text-top", "text-bottom", "sub", "super", isArbitraryVariable, isArbitraryValue]
11977
12406
  }],
11978
12407
  /**
11979
12408
  * Whitespace
@@ -11989,6 +12418,13 @@ var getDefaultConfig = () => {
11989
12418
  break: [{
11990
12419
  break: ["normal", "words", "all", "keep"]
11991
12420
  }],
12421
+ /**
12422
+ * Overflow Wrap
12423
+ * @see https://tailwindcss.com/docs/overflow-wrap
12424
+ */
12425
+ wrap: [{
12426
+ wrap: ["break-word", "anywhere", "normal"]
12427
+ }],
11992
12428
  /**
11993
12429
  * Hyphens
11994
12430
  * @see https://tailwindcss.com/docs/hyphens
@@ -12001,9 +12437,11 @@ var getDefaultConfig = () => {
12001
12437
  * @see https://tailwindcss.com/docs/content
12002
12438
  */
12003
12439
  content: [{
12004
- content: ["none", isArbitraryValue]
12440
+ content: ["none", isArbitraryVariable, isArbitraryValue]
12005
12441
  }],
12006
- // Backgrounds
12442
+ // -------------------
12443
+ // --- Backgrounds ---
12444
+ // -------------------
12007
12445
  /**
12008
12446
  * Background Attachment
12009
12447
  * @see https://tailwindcss.com/docs/background-attachment
@@ -12018,14 +12456,6 @@ var getDefaultConfig = () => {
12018
12456
  "bg-clip": [{
12019
12457
  "bg-clip": ["border", "padding", "content", "text"]
12020
12458
  }],
12021
- /**
12022
- * Background Opacity
12023
- * @deprecated since Tailwind CSS v3.0.0
12024
- * @see https://tailwindcss.com/docs/background-opacity
12025
- */
12026
- "bg-opacity": [{
12027
- "bg-opacity": [opacity]
12028
- }],
12029
12459
  /**
12030
12460
  * Background Origin
12031
12461
  * @see https://tailwindcss.com/docs/background-origin
@@ -12038,23 +12468,21 @@ var getDefaultConfig = () => {
12038
12468
  * @see https://tailwindcss.com/docs/background-position
12039
12469
  */
12040
12470
  "bg-position": [{
12041
- bg: [...getPositions(), isArbitraryPosition]
12471
+ bg: scaleBgPosition()
12042
12472
  }],
12043
12473
  /**
12044
12474
  * Background Repeat
12045
12475
  * @see https://tailwindcss.com/docs/background-repeat
12046
12476
  */
12047
12477
  "bg-repeat": [{
12048
- bg: ["no-repeat", {
12049
- repeat: ["", "x", "y", "round", "space"]
12050
- }]
12478
+ bg: scaleBgRepeat()
12051
12479
  }],
12052
12480
  /**
12053
12481
  * Background Size
12054
12482
  * @see https://tailwindcss.com/docs/background-size
12055
12483
  */
12056
12484
  "bg-size": [{
12057
- bg: ["auto", "cover", "contain", isArbitrarySize]
12485
+ bg: scaleBgSize()
12058
12486
  }],
12059
12487
  /**
12060
12488
  * Background Image
@@ -12062,597 +12490,863 @@ var getDefaultConfig = () => {
12062
12490
  */
12063
12491
  "bg-image": [{
12064
12492
  bg: ["none", {
12065
- "gradient-to": ["t", "tr", "r", "br", "b", "bl", "l", "tl"]
12066
- }, isArbitraryImage]
12493
+ linear: [{
12494
+ to: ["t", "tr", "r", "br", "b", "bl", "l", "tl"]
12495
+ }, isInteger, isArbitraryVariable, isArbitraryValue],
12496
+ radial: ["", isArbitraryVariable, isArbitraryValue],
12497
+ conic: [isInteger, isArbitraryVariable, isArbitraryValue]
12498
+ }, isArbitraryVariableImage, isArbitraryImage]
12067
12499
  }],
12068
12500
  /**
12069
12501
  * Background Color
12070
12502
  * @see https://tailwindcss.com/docs/background-color
12071
12503
  */
12072
12504
  "bg-color": [{
12073
- bg: [colors]
12505
+ bg: scaleColor()
12074
12506
  }],
12075
12507
  /**
12076
12508
  * Gradient Color Stops From Position
12077
12509
  * @see https://tailwindcss.com/docs/gradient-color-stops
12078
12510
  */
12079
12511
  "gradient-from-pos": [{
12080
- from: [gradientColorStopPositions]
12512
+ from: scaleGradientStopPosition()
12081
12513
  }],
12082
12514
  /**
12083
12515
  * Gradient Color Stops Via Position
12084
12516
  * @see https://tailwindcss.com/docs/gradient-color-stops
12085
12517
  */
12086
12518
  "gradient-via-pos": [{
12087
- via: [gradientColorStopPositions]
12519
+ via: scaleGradientStopPosition()
12088
12520
  }],
12089
12521
  /**
12090
12522
  * Gradient Color Stops To Position
12091
12523
  * @see https://tailwindcss.com/docs/gradient-color-stops
12092
12524
  */
12093
12525
  "gradient-to-pos": [{
12094
- to: [gradientColorStopPositions]
12526
+ to: scaleGradientStopPosition()
12095
12527
  }],
12096
12528
  /**
12097
12529
  * Gradient Color Stops From
12098
12530
  * @see https://tailwindcss.com/docs/gradient-color-stops
12099
12531
  */
12100
12532
  "gradient-from": [{
12101
- from: [gradientColorStops]
12533
+ from: scaleColor()
12102
12534
  }],
12103
12535
  /**
12104
12536
  * Gradient Color Stops Via
12105
12537
  * @see https://tailwindcss.com/docs/gradient-color-stops
12106
12538
  */
12107
12539
  "gradient-via": [{
12108
- via: [gradientColorStops]
12540
+ via: scaleColor()
12109
12541
  }],
12110
12542
  /**
12111
12543
  * Gradient Color Stops To
12112
12544
  * @see https://tailwindcss.com/docs/gradient-color-stops
12113
12545
  */
12114
12546
  "gradient-to": [{
12115
- to: [gradientColorStops]
12547
+ to: scaleColor()
12116
12548
  }],
12117
- // Borders
12549
+ // ---------------
12550
+ // --- Borders ---
12551
+ // ---------------
12118
12552
  /**
12119
12553
  * Border Radius
12120
12554
  * @see https://tailwindcss.com/docs/border-radius
12121
12555
  */
12122
12556
  rounded: [{
12123
- rounded: [borderRadius]
12557
+ rounded: scaleRadius()
12124
12558
  }],
12125
12559
  /**
12126
12560
  * Border Radius Start
12127
12561
  * @see https://tailwindcss.com/docs/border-radius
12128
12562
  */
12129
12563
  "rounded-s": [{
12130
- "rounded-s": [borderRadius]
12564
+ "rounded-s": scaleRadius()
12131
12565
  }],
12132
12566
  /**
12133
12567
  * Border Radius End
12134
12568
  * @see https://tailwindcss.com/docs/border-radius
12135
12569
  */
12136
12570
  "rounded-e": [{
12137
- "rounded-e": [borderRadius]
12571
+ "rounded-e": scaleRadius()
12138
12572
  }],
12139
12573
  /**
12140
12574
  * Border Radius Top
12141
12575
  * @see https://tailwindcss.com/docs/border-radius
12142
12576
  */
12143
12577
  "rounded-t": [{
12144
- "rounded-t": [borderRadius]
12578
+ "rounded-t": scaleRadius()
12145
12579
  }],
12146
12580
  /**
12147
12581
  * Border Radius Right
12148
12582
  * @see https://tailwindcss.com/docs/border-radius
12149
12583
  */
12150
12584
  "rounded-r": [{
12151
- "rounded-r": [borderRadius]
12585
+ "rounded-r": scaleRadius()
12152
12586
  }],
12153
12587
  /**
12154
12588
  * Border Radius Bottom
12155
12589
  * @see https://tailwindcss.com/docs/border-radius
12156
12590
  */
12157
12591
  "rounded-b": [{
12158
- "rounded-b": [borderRadius]
12592
+ "rounded-b": scaleRadius()
12159
12593
  }],
12160
12594
  /**
12161
12595
  * Border Radius Left
12162
12596
  * @see https://tailwindcss.com/docs/border-radius
12163
12597
  */
12164
12598
  "rounded-l": [{
12165
- "rounded-l": [borderRadius]
12599
+ "rounded-l": scaleRadius()
12166
12600
  }],
12167
12601
  /**
12168
12602
  * Border Radius Start Start
12169
12603
  * @see https://tailwindcss.com/docs/border-radius
12170
12604
  */
12171
12605
  "rounded-ss": [{
12172
- "rounded-ss": [borderRadius]
12606
+ "rounded-ss": scaleRadius()
12173
12607
  }],
12174
12608
  /**
12175
12609
  * Border Radius Start End
12176
12610
  * @see https://tailwindcss.com/docs/border-radius
12177
12611
  */
12178
12612
  "rounded-se": [{
12179
- "rounded-se": [borderRadius]
12613
+ "rounded-se": scaleRadius()
12180
12614
  }],
12181
12615
  /**
12182
12616
  * Border Radius End End
12183
12617
  * @see https://tailwindcss.com/docs/border-radius
12184
12618
  */
12185
12619
  "rounded-ee": [{
12186
- "rounded-ee": [borderRadius]
12620
+ "rounded-ee": scaleRadius()
12187
12621
  }],
12188
12622
  /**
12189
12623
  * Border Radius End Start
12190
12624
  * @see https://tailwindcss.com/docs/border-radius
12191
12625
  */
12192
12626
  "rounded-es": [{
12193
- "rounded-es": [borderRadius]
12627
+ "rounded-es": scaleRadius()
12194
12628
  }],
12195
12629
  /**
12196
12630
  * Border Radius Top Left
12197
12631
  * @see https://tailwindcss.com/docs/border-radius
12198
12632
  */
12199
12633
  "rounded-tl": [{
12200
- "rounded-tl": [borderRadius]
12634
+ "rounded-tl": scaleRadius()
12201
12635
  }],
12202
12636
  /**
12203
12637
  * Border Radius Top Right
12204
12638
  * @see https://tailwindcss.com/docs/border-radius
12205
12639
  */
12206
12640
  "rounded-tr": [{
12207
- "rounded-tr": [borderRadius]
12641
+ "rounded-tr": scaleRadius()
12208
12642
  }],
12209
12643
  /**
12210
12644
  * Border Radius Bottom Right
12211
12645
  * @see https://tailwindcss.com/docs/border-radius
12212
12646
  */
12213
12647
  "rounded-br": [{
12214
- "rounded-br": [borderRadius]
12648
+ "rounded-br": scaleRadius()
12215
12649
  }],
12216
12650
  /**
12217
12651
  * Border Radius Bottom Left
12218
12652
  * @see https://tailwindcss.com/docs/border-radius
12219
12653
  */
12220
12654
  "rounded-bl": [{
12221
- "rounded-bl": [borderRadius]
12655
+ "rounded-bl": scaleRadius()
12222
12656
  }],
12223
12657
  /**
12224
12658
  * Border Width
12225
12659
  * @see https://tailwindcss.com/docs/border-width
12226
12660
  */
12227
12661
  "border-w": [{
12228
- border: [borderWidth]
12662
+ border: scaleBorderWidth()
12229
12663
  }],
12230
12664
  /**
12231
12665
  * Border Width X
12232
12666
  * @see https://tailwindcss.com/docs/border-width
12233
12667
  */
12234
12668
  "border-w-x": [{
12235
- "border-x": [borderWidth]
12669
+ "border-x": scaleBorderWidth()
12236
12670
  }],
12237
12671
  /**
12238
12672
  * Border Width Y
12239
12673
  * @see https://tailwindcss.com/docs/border-width
12240
12674
  */
12241
12675
  "border-w-y": [{
12242
- "border-y": [borderWidth]
12676
+ "border-y": scaleBorderWidth()
12243
12677
  }],
12244
12678
  /**
12245
12679
  * Border Width Start
12246
12680
  * @see https://tailwindcss.com/docs/border-width
12247
12681
  */
12248
12682
  "border-w-s": [{
12249
- "border-s": [borderWidth]
12683
+ "border-s": scaleBorderWidth()
12250
12684
  }],
12251
12685
  /**
12252
12686
  * Border Width End
12253
12687
  * @see https://tailwindcss.com/docs/border-width
12254
12688
  */
12255
12689
  "border-w-e": [{
12256
- "border-e": [borderWidth]
12690
+ "border-e": scaleBorderWidth()
12257
12691
  }],
12258
12692
  /**
12259
12693
  * Border Width Top
12260
12694
  * @see https://tailwindcss.com/docs/border-width
12261
12695
  */
12262
12696
  "border-w-t": [{
12263
- "border-t": [borderWidth]
12697
+ "border-t": scaleBorderWidth()
12264
12698
  }],
12265
12699
  /**
12266
12700
  * Border Width Right
12267
12701
  * @see https://tailwindcss.com/docs/border-width
12268
12702
  */
12269
12703
  "border-w-r": [{
12270
- "border-r": [borderWidth]
12704
+ "border-r": scaleBorderWidth()
12271
12705
  }],
12272
12706
  /**
12273
12707
  * Border Width Bottom
12274
12708
  * @see https://tailwindcss.com/docs/border-width
12275
12709
  */
12276
12710
  "border-w-b": [{
12277
- "border-b": [borderWidth]
12711
+ "border-b": scaleBorderWidth()
12278
12712
  }],
12279
12713
  /**
12280
12714
  * Border Width Left
12281
12715
  * @see https://tailwindcss.com/docs/border-width
12282
12716
  */
12283
12717
  "border-w-l": [{
12284
- "border-l": [borderWidth]
12285
- }],
12286
- /**
12287
- * Border Opacity
12288
- * @see https://tailwindcss.com/docs/border-opacity
12289
- */
12290
- "border-opacity": [{
12291
- "border-opacity": [opacity]
12292
- }],
12293
- /**
12294
- * Border Style
12295
- * @see https://tailwindcss.com/docs/border-style
12296
- */
12297
- "border-style": [{
12298
- border: [...getLineStyles(), "hidden"]
12718
+ "border-l": scaleBorderWidth()
12299
12719
  }],
12300
12720
  /**
12301
12721
  * Divide Width X
12302
- * @see https://tailwindcss.com/docs/divide-width
12722
+ * @see https://tailwindcss.com/docs/border-width#between-children
12303
12723
  */
12304
12724
  "divide-x": [{
12305
- "divide-x": [borderWidth]
12725
+ "divide-x": scaleBorderWidth()
12306
12726
  }],
12307
12727
  /**
12308
12728
  * Divide Width X Reverse
12309
- * @see https://tailwindcss.com/docs/divide-width
12729
+ * @see https://tailwindcss.com/docs/border-width#between-children
12310
12730
  */
12311
12731
  "divide-x-reverse": ["divide-x-reverse"],
12312
12732
  /**
12313
12733
  * Divide Width Y
12314
- * @see https://tailwindcss.com/docs/divide-width
12734
+ * @see https://tailwindcss.com/docs/border-width#between-children
12315
12735
  */
12316
12736
  "divide-y": [{
12317
- "divide-y": [borderWidth]
12737
+ "divide-y": scaleBorderWidth()
12318
12738
  }],
12319
12739
  /**
12320
12740
  * Divide Width Y Reverse
12321
- * @see https://tailwindcss.com/docs/divide-width
12741
+ * @see https://tailwindcss.com/docs/border-width#between-children
12322
12742
  */
12323
12743
  "divide-y-reverse": ["divide-y-reverse"],
12324
12744
  /**
12325
- * Divide Opacity
12326
- * @see https://tailwindcss.com/docs/divide-opacity
12745
+ * Border Style
12746
+ * @see https://tailwindcss.com/docs/border-style
12327
12747
  */
12328
- "divide-opacity": [{
12329
- "divide-opacity": [opacity]
12748
+ "border-style": [{
12749
+ border: [...scaleLineStyle(), "hidden", "none"]
12330
12750
  }],
12331
12751
  /**
12332
12752
  * Divide Style
12333
- * @see https://tailwindcss.com/docs/divide-style
12753
+ * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style
12334
12754
  */
12335
12755
  "divide-style": [{
12336
- divide: getLineStyles()
12756
+ divide: [...scaleLineStyle(), "hidden", "none"]
12337
12757
  }],
12338
12758
  /**
12339
12759
  * Border Color
12340
12760
  * @see https://tailwindcss.com/docs/border-color
12341
12761
  */
12342
12762
  "border-color": [{
12343
- border: [borderColor]
12763
+ border: scaleColor()
12344
12764
  }],
12345
12765
  /**
12346
12766
  * Border Color X
12347
12767
  * @see https://tailwindcss.com/docs/border-color
12348
12768
  */
12349
12769
  "border-color-x": [{
12350
- "border-x": [borderColor]
12770
+ "border-x": scaleColor()
12351
12771
  }],
12352
12772
  /**
12353
12773
  * Border Color Y
12354
12774
  * @see https://tailwindcss.com/docs/border-color
12355
12775
  */
12356
12776
  "border-color-y": [{
12357
- "border-y": [borderColor]
12777
+ "border-y": scaleColor()
12358
12778
  }],
12359
12779
  /**
12360
12780
  * Border Color S
12361
12781
  * @see https://tailwindcss.com/docs/border-color
12362
12782
  */
12363
12783
  "border-color-s": [{
12364
- "border-s": [borderColor]
12784
+ "border-s": scaleColor()
12365
12785
  }],
12366
12786
  /**
12367
12787
  * Border Color E
12368
12788
  * @see https://tailwindcss.com/docs/border-color
12369
12789
  */
12370
12790
  "border-color-e": [{
12371
- "border-e": [borderColor]
12791
+ "border-e": scaleColor()
12372
12792
  }],
12373
12793
  /**
12374
12794
  * Border Color Top
12375
12795
  * @see https://tailwindcss.com/docs/border-color
12376
12796
  */
12377
12797
  "border-color-t": [{
12378
- "border-t": [borderColor]
12798
+ "border-t": scaleColor()
12379
12799
  }],
12380
12800
  /**
12381
12801
  * Border Color Right
12382
12802
  * @see https://tailwindcss.com/docs/border-color
12383
12803
  */
12384
12804
  "border-color-r": [{
12385
- "border-r": [borderColor]
12805
+ "border-r": scaleColor()
12386
12806
  }],
12387
12807
  /**
12388
12808
  * Border Color Bottom
12389
12809
  * @see https://tailwindcss.com/docs/border-color
12390
12810
  */
12391
12811
  "border-color-b": [{
12392
- "border-b": [borderColor]
12812
+ "border-b": scaleColor()
12393
12813
  }],
12394
12814
  /**
12395
12815
  * Border Color Left
12396
12816
  * @see https://tailwindcss.com/docs/border-color
12397
12817
  */
12398
12818
  "border-color-l": [{
12399
- "border-l": [borderColor]
12819
+ "border-l": scaleColor()
12400
12820
  }],
12401
12821
  /**
12402
12822
  * Divide Color
12403
12823
  * @see https://tailwindcss.com/docs/divide-color
12404
12824
  */
12405
12825
  "divide-color": [{
12406
- divide: [borderColor]
12826
+ divide: scaleColor()
12407
12827
  }],
12408
12828
  /**
12409
12829
  * Outline Style
12410
12830
  * @see https://tailwindcss.com/docs/outline-style
12411
12831
  */
12412
12832
  "outline-style": [{
12413
- outline: ["", ...getLineStyles()]
12833
+ outline: [...scaleLineStyle(), "none", "hidden"]
12414
12834
  }],
12415
12835
  /**
12416
12836
  * Outline Offset
12417
12837
  * @see https://tailwindcss.com/docs/outline-offset
12418
12838
  */
12419
12839
  "outline-offset": [{
12420
- "outline-offset": [isLength, isArbitraryValue]
12840
+ "outline-offset": [isNumber, isArbitraryVariable, isArbitraryValue]
12421
12841
  }],
12422
12842
  /**
12423
12843
  * Outline Width
12424
12844
  * @see https://tailwindcss.com/docs/outline-width
12425
12845
  */
12426
12846
  "outline-w": [{
12427
- outline: [isLength, isArbitraryLength]
12847
+ outline: ["", isNumber, isArbitraryVariableLength, isArbitraryLength]
12428
12848
  }],
12429
12849
  /**
12430
12850
  * Outline Color
12431
12851
  * @see https://tailwindcss.com/docs/outline-color
12432
12852
  */
12433
12853
  "outline-color": [{
12434
- outline: [colors]
12854
+ outline: scaleColor()
12855
+ }],
12856
+ // ---------------
12857
+ // --- Effects ---
12858
+ // ---------------
12859
+ /**
12860
+ * Box Shadow
12861
+ * @see https://tailwindcss.com/docs/box-shadow
12862
+ */
12863
+ shadow: [{
12864
+ shadow: [
12865
+ // Deprecated since Tailwind CSS v4.0.0
12866
+ "",
12867
+ "none",
12868
+ themeShadow,
12869
+ isArbitraryVariableShadow,
12870
+ isArbitraryShadow
12871
+ ]
12872
+ }],
12873
+ /**
12874
+ * Box Shadow Color
12875
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color
12876
+ */
12877
+ "shadow-color": [{
12878
+ shadow: scaleColor()
12879
+ }],
12880
+ /**
12881
+ * Inset Box Shadow
12882
+ * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow
12883
+ */
12884
+ "inset-shadow": [{
12885
+ "inset-shadow": ["none", themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]
12886
+ }],
12887
+ /**
12888
+ * Inset Box Shadow Color
12889
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color
12890
+ */
12891
+ "inset-shadow-color": [{
12892
+ "inset-shadow": scaleColor()
12435
12893
  }],
12436
12894
  /**
12437
12895
  * Ring Width
12438
- * @see https://tailwindcss.com/docs/ring-width
12896
+ * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring
12439
12897
  */
12440
12898
  "ring-w": [{
12441
- ring: getLengthWithEmptyAndArbitrary()
12899
+ ring: scaleBorderWidth()
12442
12900
  }],
12443
12901
  /**
12444
12902
  * Ring Width Inset
12445
- * @see https://tailwindcss.com/docs/ring-width
12903
+ * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings
12904
+ * @deprecated since Tailwind CSS v4.0.0
12905
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
12446
12906
  */
12447
12907
  "ring-w-inset": ["ring-inset"],
12448
12908
  /**
12449
12909
  * Ring Color
12450
- * @see https://tailwindcss.com/docs/ring-color
12910
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color
12451
12911
  */
12452
12912
  "ring-color": [{
12453
- ring: [colors]
12454
- }],
12455
- /**
12456
- * Ring Opacity
12457
- * @see https://tailwindcss.com/docs/ring-opacity
12458
- */
12459
- "ring-opacity": [{
12460
- "ring-opacity": [opacity]
12913
+ ring: scaleColor()
12461
12914
  }],
12462
12915
  /**
12463
12916
  * Ring Offset Width
12464
- * @see https://tailwindcss.com/docs/ring-offset-width
12917
+ * @see https://v3.tailwindcss.com/docs/ring-offset-width
12918
+ * @deprecated since Tailwind CSS v4.0.0
12919
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
12465
12920
  */
12466
12921
  "ring-offset-w": [{
12467
- "ring-offset": [isLength, isArbitraryLength]
12922
+ "ring-offset": [isNumber, isArbitraryLength]
12468
12923
  }],
12469
12924
  /**
12470
12925
  * Ring Offset Color
12471
- * @see https://tailwindcss.com/docs/ring-offset-color
12926
+ * @see https://v3.tailwindcss.com/docs/ring-offset-color
12927
+ * @deprecated since Tailwind CSS v4.0.0
12928
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
12472
12929
  */
12473
12930
  "ring-offset-color": [{
12474
- "ring-offset": [colors]
12931
+ "ring-offset": scaleColor()
12475
12932
  }],
12476
- // Effects
12477
12933
  /**
12478
- * Box Shadow
12479
- * @see https://tailwindcss.com/docs/box-shadow
12934
+ * Inset Ring Width
12935
+ * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring
12480
12936
  */
12481
- shadow: [{
12482
- shadow: ["", "inner", "none", isTshirtSize, isArbitraryShadow]
12937
+ "inset-ring-w": [{
12938
+ "inset-ring": scaleBorderWidth()
12483
12939
  }],
12484
12940
  /**
12485
- * Box Shadow Color
12486
- * @see https://tailwindcss.com/docs/box-shadow-color
12941
+ * Inset Ring Color
12942
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color
12487
12943
  */
12488
- "shadow-color": [{
12489
- shadow: [isAny]
12944
+ "inset-ring-color": [{
12945
+ "inset-ring": scaleColor()
12946
+ }],
12947
+ /**
12948
+ * Text Shadow
12949
+ * @see https://tailwindcss.com/docs/text-shadow
12950
+ */
12951
+ "text-shadow": [{
12952
+ "text-shadow": ["none", themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]
12953
+ }],
12954
+ /**
12955
+ * Text Shadow Color
12956
+ * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color
12957
+ */
12958
+ "text-shadow-color": [{
12959
+ "text-shadow": scaleColor()
12490
12960
  }],
12491
12961
  /**
12492
12962
  * Opacity
12493
12963
  * @see https://tailwindcss.com/docs/opacity
12494
12964
  */
12495
12965
  opacity: [{
12496
- opacity: [opacity]
12966
+ opacity: [isNumber, isArbitraryVariable, isArbitraryValue]
12497
12967
  }],
12498
12968
  /**
12499
12969
  * Mix Blend Mode
12500
12970
  * @see https://tailwindcss.com/docs/mix-blend-mode
12501
12971
  */
12502
12972
  "mix-blend": [{
12503
- "mix-blend": [...getBlendModes(), "plus-lighter", "plus-darker"]
12973
+ "mix-blend": [...scaleBlendMode(), "plus-darker", "plus-lighter"]
12504
12974
  }],
12505
12975
  /**
12506
12976
  * Background Blend Mode
12507
12977
  * @see https://tailwindcss.com/docs/background-blend-mode
12508
12978
  */
12509
12979
  "bg-blend": [{
12510
- "bg-blend": getBlendModes()
12980
+ "bg-blend": scaleBlendMode()
12511
12981
  }],
12512
- // Filters
12982
+ /**
12983
+ * Mask Clip
12984
+ * @see https://tailwindcss.com/docs/mask-clip
12985
+ */
12986
+ "mask-clip": [{
12987
+ "mask-clip": ["border", "padding", "content", "fill", "stroke", "view"]
12988
+ }, "mask-no-clip"],
12989
+ /**
12990
+ * Mask Composite
12991
+ * @see https://tailwindcss.com/docs/mask-composite
12992
+ */
12993
+ "mask-composite": [{
12994
+ mask: ["add", "subtract", "intersect", "exclude"]
12995
+ }],
12996
+ /**
12997
+ * Mask Image
12998
+ * @see https://tailwindcss.com/docs/mask-image
12999
+ */
13000
+ "mask-image-linear-pos": [{
13001
+ "mask-linear": [isNumber]
13002
+ }],
13003
+ "mask-image-linear-from-pos": [{
13004
+ "mask-linear-from": scaleMaskImagePosition()
13005
+ }],
13006
+ "mask-image-linear-to-pos": [{
13007
+ "mask-linear-to": scaleMaskImagePosition()
13008
+ }],
13009
+ "mask-image-linear-from-color": [{
13010
+ "mask-linear-from": scaleColor()
13011
+ }],
13012
+ "mask-image-linear-to-color": [{
13013
+ "mask-linear-to": scaleColor()
13014
+ }],
13015
+ "mask-image-t-from-pos": [{
13016
+ "mask-t-from": scaleMaskImagePosition()
13017
+ }],
13018
+ "mask-image-t-to-pos": [{
13019
+ "mask-t-to": scaleMaskImagePosition()
13020
+ }],
13021
+ "mask-image-t-from-color": [{
13022
+ "mask-t-from": scaleColor()
13023
+ }],
13024
+ "mask-image-t-to-color": [{
13025
+ "mask-t-to": scaleColor()
13026
+ }],
13027
+ "mask-image-r-from-pos": [{
13028
+ "mask-r-from": scaleMaskImagePosition()
13029
+ }],
13030
+ "mask-image-r-to-pos": [{
13031
+ "mask-r-to": scaleMaskImagePosition()
13032
+ }],
13033
+ "mask-image-r-from-color": [{
13034
+ "mask-r-from": scaleColor()
13035
+ }],
13036
+ "mask-image-r-to-color": [{
13037
+ "mask-r-to": scaleColor()
13038
+ }],
13039
+ "mask-image-b-from-pos": [{
13040
+ "mask-b-from": scaleMaskImagePosition()
13041
+ }],
13042
+ "mask-image-b-to-pos": [{
13043
+ "mask-b-to": scaleMaskImagePosition()
13044
+ }],
13045
+ "mask-image-b-from-color": [{
13046
+ "mask-b-from": scaleColor()
13047
+ }],
13048
+ "mask-image-b-to-color": [{
13049
+ "mask-b-to": scaleColor()
13050
+ }],
13051
+ "mask-image-l-from-pos": [{
13052
+ "mask-l-from": scaleMaskImagePosition()
13053
+ }],
13054
+ "mask-image-l-to-pos": [{
13055
+ "mask-l-to": scaleMaskImagePosition()
13056
+ }],
13057
+ "mask-image-l-from-color": [{
13058
+ "mask-l-from": scaleColor()
13059
+ }],
13060
+ "mask-image-l-to-color": [{
13061
+ "mask-l-to": scaleColor()
13062
+ }],
13063
+ "mask-image-x-from-pos": [{
13064
+ "mask-x-from": scaleMaskImagePosition()
13065
+ }],
13066
+ "mask-image-x-to-pos": [{
13067
+ "mask-x-to": scaleMaskImagePosition()
13068
+ }],
13069
+ "mask-image-x-from-color": [{
13070
+ "mask-x-from": scaleColor()
13071
+ }],
13072
+ "mask-image-x-to-color": [{
13073
+ "mask-x-to": scaleColor()
13074
+ }],
13075
+ "mask-image-y-from-pos": [{
13076
+ "mask-y-from": scaleMaskImagePosition()
13077
+ }],
13078
+ "mask-image-y-to-pos": [{
13079
+ "mask-y-to": scaleMaskImagePosition()
13080
+ }],
13081
+ "mask-image-y-from-color": [{
13082
+ "mask-y-from": scaleColor()
13083
+ }],
13084
+ "mask-image-y-to-color": [{
13085
+ "mask-y-to": scaleColor()
13086
+ }],
13087
+ "mask-image-radial": [{
13088
+ "mask-radial": [isArbitraryVariable, isArbitraryValue]
13089
+ }],
13090
+ "mask-image-radial-from-pos": [{
13091
+ "mask-radial-from": scaleMaskImagePosition()
13092
+ }],
13093
+ "mask-image-radial-to-pos": [{
13094
+ "mask-radial-to": scaleMaskImagePosition()
13095
+ }],
13096
+ "mask-image-radial-from-color": [{
13097
+ "mask-radial-from": scaleColor()
13098
+ }],
13099
+ "mask-image-radial-to-color": [{
13100
+ "mask-radial-to": scaleColor()
13101
+ }],
13102
+ "mask-image-radial-shape": [{
13103
+ "mask-radial": ["circle", "ellipse"]
13104
+ }],
13105
+ "mask-image-radial-size": [{
13106
+ "mask-radial": [{
13107
+ closest: ["side", "corner"],
13108
+ farthest: ["side", "corner"]
13109
+ }]
13110
+ }],
13111
+ "mask-image-radial-pos": [{
13112
+ "mask-radial-at": scalePosition()
13113
+ }],
13114
+ "mask-image-conic-pos": [{
13115
+ "mask-conic": [isNumber]
13116
+ }],
13117
+ "mask-image-conic-from-pos": [{
13118
+ "mask-conic-from": scaleMaskImagePosition()
13119
+ }],
13120
+ "mask-image-conic-to-pos": [{
13121
+ "mask-conic-to": scaleMaskImagePosition()
13122
+ }],
13123
+ "mask-image-conic-from-color": [{
13124
+ "mask-conic-from": scaleColor()
13125
+ }],
13126
+ "mask-image-conic-to-color": [{
13127
+ "mask-conic-to": scaleColor()
13128
+ }],
13129
+ /**
13130
+ * Mask Mode
13131
+ * @see https://tailwindcss.com/docs/mask-mode
13132
+ */
13133
+ "mask-mode": [{
13134
+ mask: ["alpha", "luminance", "match"]
13135
+ }],
13136
+ /**
13137
+ * Mask Origin
13138
+ * @see https://tailwindcss.com/docs/mask-origin
13139
+ */
13140
+ "mask-origin": [{
13141
+ "mask-origin": ["border", "padding", "content", "fill", "stroke", "view"]
13142
+ }],
13143
+ /**
13144
+ * Mask Position
13145
+ * @see https://tailwindcss.com/docs/mask-position
13146
+ */
13147
+ "mask-position": [{
13148
+ mask: scaleBgPosition()
13149
+ }],
13150
+ /**
13151
+ * Mask Repeat
13152
+ * @see https://tailwindcss.com/docs/mask-repeat
13153
+ */
13154
+ "mask-repeat": [{
13155
+ mask: scaleBgRepeat()
13156
+ }],
13157
+ /**
13158
+ * Mask Size
13159
+ * @see https://tailwindcss.com/docs/mask-size
13160
+ */
13161
+ "mask-size": [{
13162
+ mask: scaleBgSize()
13163
+ }],
13164
+ /**
13165
+ * Mask Type
13166
+ * @see https://tailwindcss.com/docs/mask-type
13167
+ */
13168
+ "mask-type": [{
13169
+ "mask-type": ["alpha", "luminance"]
13170
+ }],
13171
+ /**
13172
+ * Mask Image
13173
+ * @see https://tailwindcss.com/docs/mask-image
13174
+ */
13175
+ "mask-image": [{
13176
+ mask: ["none", isArbitraryVariable, isArbitraryValue]
13177
+ }],
13178
+ // ---------------
13179
+ // --- Filters ---
13180
+ // ---------------
12513
13181
  /**
12514
13182
  * Filter
12515
- * @deprecated since Tailwind CSS v3.0.0
12516
13183
  * @see https://tailwindcss.com/docs/filter
12517
13184
  */
12518
13185
  filter: [{
12519
- filter: ["", "none"]
13186
+ filter: [
13187
+ // Deprecated since Tailwind CSS v3.0.0
13188
+ "",
13189
+ "none",
13190
+ isArbitraryVariable,
13191
+ isArbitraryValue
13192
+ ]
12520
13193
  }],
12521
13194
  /**
12522
13195
  * Blur
12523
13196
  * @see https://tailwindcss.com/docs/blur
12524
13197
  */
12525
13198
  blur: [{
12526
- blur: [blur]
13199
+ blur: scaleBlur()
12527
13200
  }],
12528
13201
  /**
12529
13202
  * Brightness
12530
13203
  * @see https://tailwindcss.com/docs/brightness
12531
13204
  */
12532
13205
  brightness: [{
12533
- brightness: [brightness]
13206
+ brightness: [isNumber, isArbitraryVariable, isArbitraryValue]
12534
13207
  }],
12535
13208
  /**
12536
13209
  * Contrast
12537
13210
  * @see https://tailwindcss.com/docs/contrast
12538
13211
  */
12539
13212
  contrast: [{
12540
- contrast: [contrast]
13213
+ contrast: [isNumber, isArbitraryVariable, isArbitraryValue]
12541
13214
  }],
12542
13215
  /**
12543
13216
  * Drop Shadow
12544
13217
  * @see https://tailwindcss.com/docs/drop-shadow
12545
13218
  */
12546
13219
  "drop-shadow": [{
12547
- "drop-shadow": ["", "none", isTshirtSize, isArbitraryValue]
13220
+ "drop-shadow": [
13221
+ // Deprecated since Tailwind CSS v4.0.0
13222
+ "",
13223
+ "none",
13224
+ themeDropShadow,
13225
+ isArbitraryVariableShadow,
13226
+ isArbitraryShadow
13227
+ ]
13228
+ }],
13229
+ /**
13230
+ * Drop Shadow Color
13231
+ * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color
13232
+ */
13233
+ "drop-shadow-color": [{
13234
+ "drop-shadow": scaleColor()
12548
13235
  }],
12549
13236
  /**
12550
13237
  * Grayscale
12551
13238
  * @see https://tailwindcss.com/docs/grayscale
12552
13239
  */
12553
13240
  grayscale: [{
12554
- grayscale: [grayscale]
13241
+ grayscale: ["", isNumber, isArbitraryVariable, isArbitraryValue]
12555
13242
  }],
12556
13243
  /**
12557
13244
  * Hue Rotate
12558
13245
  * @see https://tailwindcss.com/docs/hue-rotate
12559
13246
  */
12560
13247
  "hue-rotate": [{
12561
- "hue-rotate": [hueRotate]
13248
+ "hue-rotate": [isNumber, isArbitraryVariable, isArbitraryValue]
12562
13249
  }],
12563
13250
  /**
12564
13251
  * Invert
12565
13252
  * @see https://tailwindcss.com/docs/invert
12566
13253
  */
12567
13254
  invert: [{
12568
- invert: [invert]
13255
+ invert: ["", isNumber, isArbitraryVariable, isArbitraryValue]
12569
13256
  }],
12570
13257
  /**
12571
13258
  * Saturate
12572
13259
  * @see https://tailwindcss.com/docs/saturate
12573
13260
  */
12574
13261
  saturate: [{
12575
- saturate: [saturate]
13262
+ saturate: [isNumber, isArbitraryVariable, isArbitraryValue]
12576
13263
  }],
12577
13264
  /**
12578
13265
  * Sepia
12579
13266
  * @see https://tailwindcss.com/docs/sepia
12580
13267
  */
12581
13268
  sepia: [{
12582
- sepia: [sepia]
13269
+ sepia: ["", isNumber, isArbitraryVariable, isArbitraryValue]
12583
13270
  }],
12584
13271
  /**
12585
13272
  * Backdrop Filter
12586
- * @deprecated since Tailwind CSS v3.0.0
12587
13273
  * @see https://tailwindcss.com/docs/backdrop-filter
12588
13274
  */
12589
13275
  "backdrop-filter": [{
12590
- "backdrop-filter": ["", "none"]
13276
+ "backdrop-filter": [
13277
+ // Deprecated since Tailwind CSS v3.0.0
13278
+ "",
13279
+ "none",
13280
+ isArbitraryVariable,
13281
+ isArbitraryValue
13282
+ ]
12591
13283
  }],
12592
13284
  /**
12593
13285
  * Backdrop Blur
12594
13286
  * @see https://tailwindcss.com/docs/backdrop-blur
12595
13287
  */
12596
13288
  "backdrop-blur": [{
12597
- "backdrop-blur": [blur]
13289
+ "backdrop-blur": scaleBlur()
12598
13290
  }],
12599
13291
  /**
12600
13292
  * Backdrop Brightness
12601
13293
  * @see https://tailwindcss.com/docs/backdrop-brightness
12602
13294
  */
12603
13295
  "backdrop-brightness": [{
12604
- "backdrop-brightness": [brightness]
13296
+ "backdrop-brightness": [isNumber, isArbitraryVariable, isArbitraryValue]
12605
13297
  }],
12606
13298
  /**
12607
13299
  * Backdrop Contrast
12608
13300
  * @see https://tailwindcss.com/docs/backdrop-contrast
12609
13301
  */
12610
13302
  "backdrop-contrast": [{
12611
- "backdrop-contrast": [contrast]
13303
+ "backdrop-contrast": [isNumber, isArbitraryVariable, isArbitraryValue]
12612
13304
  }],
12613
13305
  /**
12614
13306
  * Backdrop Grayscale
12615
13307
  * @see https://tailwindcss.com/docs/backdrop-grayscale
12616
13308
  */
12617
13309
  "backdrop-grayscale": [{
12618
- "backdrop-grayscale": [grayscale]
13310
+ "backdrop-grayscale": ["", isNumber, isArbitraryVariable, isArbitraryValue]
12619
13311
  }],
12620
13312
  /**
12621
13313
  * Backdrop Hue Rotate
12622
13314
  * @see https://tailwindcss.com/docs/backdrop-hue-rotate
12623
13315
  */
12624
13316
  "backdrop-hue-rotate": [{
12625
- "backdrop-hue-rotate": [hueRotate]
13317
+ "backdrop-hue-rotate": [isNumber, isArbitraryVariable, isArbitraryValue]
12626
13318
  }],
12627
13319
  /**
12628
13320
  * Backdrop Invert
12629
13321
  * @see https://tailwindcss.com/docs/backdrop-invert
12630
13322
  */
12631
13323
  "backdrop-invert": [{
12632
- "backdrop-invert": [invert]
13324
+ "backdrop-invert": ["", isNumber, isArbitraryVariable, isArbitraryValue]
12633
13325
  }],
12634
13326
  /**
12635
13327
  * Backdrop Opacity
12636
13328
  * @see https://tailwindcss.com/docs/backdrop-opacity
12637
13329
  */
12638
13330
  "backdrop-opacity": [{
12639
- "backdrop-opacity": [opacity]
13331
+ "backdrop-opacity": [isNumber, isArbitraryVariable, isArbitraryValue]
12640
13332
  }],
12641
13333
  /**
12642
13334
  * Backdrop Saturate
12643
13335
  * @see https://tailwindcss.com/docs/backdrop-saturate
12644
13336
  */
12645
13337
  "backdrop-saturate": [{
12646
- "backdrop-saturate": [saturate]
13338
+ "backdrop-saturate": [isNumber, isArbitraryVariable, isArbitraryValue]
12647
13339
  }],
12648
13340
  /**
12649
13341
  * Backdrop Sepia
12650
13342
  * @see https://tailwindcss.com/docs/backdrop-sepia
12651
13343
  */
12652
13344
  "backdrop-sepia": [{
12653
- "backdrop-sepia": [sepia]
13345
+ "backdrop-sepia": ["", isNumber, isArbitraryVariable, isArbitraryValue]
12654
13346
  }],
12655
- // Tables
13347
+ // --------------
13348
+ // --- Tables ---
13349
+ // --------------
12656
13350
  /**
12657
13351
  * Border Collapse
12658
13352
  * @see https://tailwindcss.com/docs/border-collapse
@@ -12665,21 +13359,21 @@ var getDefaultConfig = () => {
12665
13359
  * @see https://tailwindcss.com/docs/border-spacing
12666
13360
  */
12667
13361
  "border-spacing": [{
12668
- "border-spacing": [borderSpacing]
13362
+ "border-spacing": scaleUnambiguousSpacing()
12669
13363
  }],
12670
13364
  /**
12671
13365
  * Border Spacing X
12672
13366
  * @see https://tailwindcss.com/docs/border-spacing
12673
13367
  */
12674
13368
  "border-spacing-x": [{
12675
- "border-spacing-x": [borderSpacing]
13369
+ "border-spacing-x": scaleUnambiguousSpacing()
12676
13370
  }],
12677
13371
  /**
12678
13372
  * Border Spacing Y
12679
13373
  * @see https://tailwindcss.com/docs/border-spacing
12680
13374
  */
12681
13375
  "border-spacing-y": [{
12682
- "border-spacing-y": [borderSpacing]
13376
+ "border-spacing-y": scaleUnambiguousSpacing()
12683
13377
  }],
12684
13378
  /**
12685
13379
  * Table Layout
@@ -12695,120 +13389,220 @@ var getDefaultConfig = () => {
12695
13389
  caption: [{
12696
13390
  caption: ["top", "bottom"]
12697
13391
  }],
12698
- // Transitions and Animation
13392
+ // ---------------------------------
13393
+ // --- Transitions and Animation ---
13394
+ // ---------------------------------
12699
13395
  /**
12700
- * Tranisition Property
13396
+ * Transition Property
12701
13397
  * @see https://tailwindcss.com/docs/transition-property
12702
13398
  */
12703
13399
  transition: [{
12704
- transition: ["none", "all", "", "colors", "opacity", "shadow", "transform", isArbitraryValue]
13400
+ transition: ["", "all", "colors", "opacity", "shadow", "transform", "none", isArbitraryVariable, isArbitraryValue]
13401
+ }],
13402
+ /**
13403
+ * Transition Behavior
13404
+ * @see https://tailwindcss.com/docs/transition-behavior
13405
+ */
13406
+ "transition-behavior": [{
13407
+ transition: ["normal", "discrete"]
12705
13408
  }],
12706
13409
  /**
12707
13410
  * Transition Duration
12708
13411
  * @see https://tailwindcss.com/docs/transition-duration
12709
13412
  */
12710
13413
  duration: [{
12711
- duration: getNumberAndArbitrary()
13414
+ duration: [isNumber, "initial", isArbitraryVariable, isArbitraryValue]
12712
13415
  }],
12713
13416
  /**
12714
13417
  * Transition Timing Function
12715
13418
  * @see https://tailwindcss.com/docs/transition-timing-function
12716
13419
  */
12717
13420
  ease: [{
12718
- ease: ["linear", "in", "out", "in-out", isArbitraryValue]
13421
+ ease: ["linear", "initial", themeEase, isArbitraryVariable, isArbitraryValue]
12719
13422
  }],
12720
13423
  /**
12721
13424
  * Transition Delay
12722
13425
  * @see https://tailwindcss.com/docs/transition-delay
12723
13426
  */
12724
13427
  delay: [{
12725
- delay: getNumberAndArbitrary()
13428
+ delay: [isNumber, isArbitraryVariable, isArbitraryValue]
12726
13429
  }],
12727
13430
  /**
12728
13431
  * Animation
12729
13432
  * @see https://tailwindcss.com/docs/animation
12730
13433
  */
12731
13434
  animate: [{
12732
- animate: ["none", "spin", "ping", "pulse", "bounce", isArbitraryValue]
13435
+ animate: ["none", themeAnimate, isArbitraryVariable, isArbitraryValue]
12733
13436
  }],
12734
- // Transforms
13437
+ // ------------------
13438
+ // --- Transforms ---
13439
+ // ------------------
12735
13440
  /**
12736
- * Transform
12737
- * @see https://tailwindcss.com/docs/transform
13441
+ * Backface Visibility
13442
+ * @see https://tailwindcss.com/docs/backface-visibility
12738
13443
  */
12739
- transform: [{
12740
- transform: ["", "gpu", "none"]
13444
+ backface: [{
13445
+ backface: ["hidden", "visible"]
13446
+ }],
13447
+ /**
13448
+ * Perspective
13449
+ * @see https://tailwindcss.com/docs/perspective
13450
+ */
13451
+ perspective: [{
13452
+ perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]
13453
+ }],
13454
+ /**
13455
+ * Perspective Origin
13456
+ * @see https://tailwindcss.com/docs/perspective-origin
13457
+ */
13458
+ "perspective-origin": [{
13459
+ "perspective-origin": scalePositionWithArbitrary()
13460
+ }],
13461
+ /**
13462
+ * Rotate
13463
+ * @see https://tailwindcss.com/docs/rotate
13464
+ */
13465
+ rotate: [{
13466
+ rotate: scaleRotate()
13467
+ }],
13468
+ /**
13469
+ * Rotate X
13470
+ * @see https://tailwindcss.com/docs/rotate
13471
+ */
13472
+ "rotate-x": [{
13473
+ "rotate-x": scaleRotate()
13474
+ }],
13475
+ /**
13476
+ * Rotate Y
13477
+ * @see https://tailwindcss.com/docs/rotate
13478
+ */
13479
+ "rotate-y": [{
13480
+ "rotate-y": scaleRotate()
13481
+ }],
13482
+ /**
13483
+ * Rotate Z
13484
+ * @see https://tailwindcss.com/docs/rotate
13485
+ */
13486
+ "rotate-z": [{
13487
+ "rotate-z": scaleRotate()
12741
13488
  }],
12742
13489
  /**
12743
13490
  * Scale
12744
13491
  * @see https://tailwindcss.com/docs/scale
12745
13492
  */
12746
13493
  scale: [{
12747
- scale: [scale]
13494
+ scale: scaleScale()
12748
13495
  }],
12749
13496
  /**
12750
13497
  * Scale X
12751
13498
  * @see https://tailwindcss.com/docs/scale
12752
13499
  */
12753
13500
  "scale-x": [{
12754
- "scale-x": [scale]
13501
+ "scale-x": scaleScale()
12755
13502
  }],
12756
13503
  /**
12757
13504
  * Scale Y
12758
13505
  * @see https://tailwindcss.com/docs/scale
12759
13506
  */
12760
13507
  "scale-y": [{
12761
- "scale-y": [scale]
13508
+ "scale-y": scaleScale()
12762
13509
  }],
12763
13510
  /**
12764
- * Rotate
12765
- * @see https://tailwindcss.com/docs/rotate
13511
+ * Scale Z
13512
+ * @see https://tailwindcss.com/docs/scale
12766
13513
  */
12767
- rotate: [{
12768
- rotate: [isInteger, isArbitraryValue]
13514
+ "scale-z": [{
13515
+ "scale-z": scaleScale()
12769
13516
  }],
12770
13517
  /**
12771
- * Translate X
12772
- * @see https://tailwindcss.com/docs/translate
13518
+ * Scale 3D
13519
+ * @see https://tailwindcss.com/docs/scale
12773
13520
  */
12774
- "translate-x": [{
12775
- "translate-x": [translate]
12776
- }],
13521
+ "scale-3d": ["scale-3d"],
12777
13522
  /**
12778
- * Translate Y
12779
- * @see https://tailwindcss.com/docs/translate
13523
+ * Skew
13524
+ * @see https://tailwindcss.com/docs/skew
12780
13525
  */
12781
- "translate-y": [{
12782
- "translate-y": [translate]
13526
+ skew: [{
13527
+ skew: scaleSkew()
12783
13528
  }],
12784
13529
  /**
12785
13530
  * Skew X
12786
13531
  * @see https://tailwindcss.com/docs/skew
12787
13532
  */
12788
13533
  "skew-x": [{
12789
- "skew-x": [skew]
13534
+ "skew-x": scaleSkew()
12790
13535
  }],
12791
13536
  /**
12792
13537
  * Skew Y
12793
13538
  * @see https://tailwindcss.com/docs/skew
12794
13539
  */
12795
13540
  "skew-y": [{
12796
- "skew-y": [skew]
13541
+ "skew-y": scaleSkew()
13542
+ }],
13543
+ /**
13544
+ * Transform
13545
+ * @see https://tailwindcss.com/docs/transform
13546
+ */
13547
+ transform: [{
13548
+ transform: [isArbitraryVariable, isArbitraryValue, "", "none", "gpu", "cpu"]
12797
13549
  }],
12798
13550
  /**
12799
13551
  * Transform Origin
12800
13552
  * @see https://tailwindcss.com/docs/transform-origin
12801
13553
  */
12802
13554
  "transform-origin": [{
12803
- origin: ["center", "top", "top-right", "right", "bottom-right", "bottom", "bottom-left", "left", "top-left", isArbitraryValue]
13555
+ origin: scalePositionWithArbitrary()
13556
+ }],
13557
+ /**
13558
+ * Transform Style
13559
+ * @see https://tailwindcss.com/docs/transform-style
13560
+ */
13561
+ "transform-style": [{
13562
+ transform: ["3d", "flat"]
13563
+ }],
13564
+ /**
13565
+ * Translate
13566
+ * @see https://tailwindcss.com/docs/translate
13567
+ */
13568
+ translate: [{
13569
+ translate: scaleTranslate()
13570
+ }],
13571
+ /**
13572
+ * Translate X
13573
+ * @see https://tailwindcss.com/docs/translate
13574
+ */
13575
+ "translate-x": [{
13576
+ "translate-x": scaleTranslate()
13577
+ }],
13578
+ /**
13579
+ * Translate Y
13580
+ * @see https://tailwindcss.com/docs/translate
13581
+ */
13582
+ "translate-y": [{
13583
+ "translate-y": scaleTranslate()
12804
13584
  }],
12805
- // Interactivity
13585
+ /**
13586
+ * Translate Z
13587
+ * @see https://tailwindcss.com/docs/translate
13588
+ */
13589
+ "translate-z": [{
13590
+ "translate-z": scaleTranslate()
13591
+ }],
13592
+ /**
13593
+ * Translate None
13594
+ * @see https://tailwindcss.com/docs/translate
13595
+ */
13596
+ "translate-none": ["translate-none"],
13597
+ // ---------------------
13598
+ // --- Interactivity ---
13599
+ // ---------------------
12806
13600
  /**
12807
13601
  * Accent Color
12808
13602
  * @see https://tailwindcss.com/docs/accent-color
12809
13603
  */
12810
13604
  accent: [{
12811
- accent: ["auto", colors]
13605
+ accent: scaleColor()
12812
13606
  }],
12813
13607
  /**
12814
13608
  * Appearance
@@ -12817,33 +13611,47 @@ var getDefaultConfig = () => {
12817
13611
  appearance: [{
12818
13612
  appearance: ["none", "auto"]
12819
13613
  }],
13614
+ /**
13615
+ * Caret Color
13616
+ * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities
13617
+ */
13618
+ "caret-color": [{
13619
+ caret: scaleColor()
13620
+ }],
13621
+ /**
13622
+ * Color Scheme
13623
+ * @see https://tailwindcss.com/docs/color-scheme
13624
+ */
13625
+ "color-scheme": [{
13626
+ scheme: ["normal", "dark", "light", "light-dark", "only-dark", "only-light"]
13627
+ }],
12820
13628
  /**
12821
13629
  * Cursor
12822
13630
  * @see https://tailwindcss.com/docs/cursor
12823
13631
  */
12824
13632
  cursor: [{
12825
- cursor: ["auto", "default", "pointer", "wait", "text", "move", "help", "not-allowed", "none", "context-menu", "progress", "cell", "crosshair", "vertical-text", "alias", "copy", "no-drop", "grab", "grabbing", "all-scroll", "col-resize", "row-resize", "n-resize", "e-resize", "s-resize", "w-resize", "ne-resize", "nw-resize", "se-resize", "sw-resize", "ew-resize", "ns-resize", "nesw-resize", "nwse-resize", "zoom-in", "zoom-out", isArbitraryValue]
13633
+ cursor: ["auto", "default", "pointer", "wait", "text", "move", "help", "not-allowed", "none", "context-menu", "progress", "cell", "crosshair", "vertical-text", "alias", "copy", "no-drop", "grab", "grabbing", "all-scroll", "col-resize", "row-resize", "n-resize", "e-resize", "s-resize", "w-resize", "ne-resize", "nw-resize", "se-resize", "sw-resize", "ew-resize", "ns-resize", "nesw-resize", "nwse-resize", "zoom-in", "zoom-out", isArbitraryVariable, isArbitraryValue]
12826
13634
  }],
12827
13635
  /**
12828
- * Caret Color
12829
- * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities
13636
+ * Field Sizing
13637
+ * @see https://tailwindcss.com/docs/field-sizing
12830
13638
  */
12831
- "caret-color": [{
12832
- caret: [colors]
13639
+ "field-sizing": [{
13640
+ "field-sizing": ["fixed", "content"]
12833
13641
  }],
12834
13642
  /**
12835
13643
  * Pointer Events
12836
13644
  * @see https://tailwindcss.com/docs/pointer-events
12837
13645
  */
12838
13646
  "pointer-events": [{
12839
- "pointer-events": ["none", "auto"]
13647
+ "pointer-events": ["auto", "none"]
12840
13648
  }],
12841
13649
  /**
12842
13650
  * Resize
12843
13651
  * @see https://tailwindcss.com/docs/resize
12844
13652
  */
12845
13653
  resize: [{
12846
- resize: ["none", "y", "x", ""]
13654
+ resize: ["none", "", "y", "x"]
12847
13655
  }],
12848
13656
  /**
12849
13657
  * Scroll Behavior
@@ -12857,126 +13665,126 @@ var getDefaultConfig = () => {
12857
13665
  * @see https://tailwindcss.com/docs/scroll-margin
12858
13666
  */
12859
13667
  "scroll-m": [{
12860
- "scroll-m": getSpacingWithArbitrary()
13668
+ "scroll-m": scaleUnambiguousSpacing()
12861
13669
  }],
12862
13670
  /**
12863
13671
  * Scroll Margin X
12864
13672
  * @see https://tailwindcss.com/docs/scroll-margin
12865
13673
  */
12866
13674
  "scroll-mx": [{
12867
- "scroll-mx": getSpacingWithArbitrary()
13675
+ "scroll-mx": scaleUnambiguousSpacing()
12868
13676
  }],
12869
13677
  /**
12870
13678
  * Scroll Margin Y
12871
13679
  * @see https://tailwindcss.com/docs/scroll-margin
12872
13680
  */
12873
13681
  "scroll-my": [{
12874
- "scroll-my": getSpacingWithArbitrary()
13682
+ "scroll-my": scaleUnambiguousSpacing()
12875
13683
  }],
12876
13684
  /**
12877
13685
  * Scroll Margin Start
12878
13686
  * @see https://tailwindcss.com/docs/scroll-margin
12879
13687
  */
12880
13688
  "scroll-ms": [{
12881
- "scroll-ms": getSpacingWithArbitrary()
13689
+ "scroll-ms": scaleUnambiguousSpacing()
12882
13690
  }],
12883
13691
  /**
12884
13692
  * Scroll Margin End
12885
13693
  * @see https://tailwindcss.com/docs/scroll-margin
12886
13694
  */
12887
13695
  "scroll-me": [{
12888
- "scroll-me": getSpacingWithArbitrary()
13696
+ "scroll-me": scaleUnambiguousSpacing()
12889
13697
  }],
12890
13698
  /**
12891
13699
  * Scroll Margin Top
12892
13700
  * @see https://tailwindcss.com/docs/scroll-margin
12893
13701
  */
12894
13702
  "scroll-mt": [{
12895
- "scroll-mt": getSpacingWithArbitrary()
13703
+ "scroll-mt": scaleUnambiguousSpacing()
12896
13704
  }],
12897
13705
  /**
12898
13706
  * Scroll Margin Right
12899
13707
  * @see https://tailwindcss.com/docs/scroll-margin
12900
13708
  */
12901
13709
  "scroll-mr": [{
12902
- "scroll-mr": getSpacingWithArbitrary()
13710
+ "scroll-mr": scaleUnambiguousSpacing()
12903
13711
  }],
12904
13712
  /**
12905
13713
  * Scroll Margin Bottom
12906
13714
  * @see https://tailwindcss.com/docs/scroll-margin
12907
13715
  */
12908
13716
  "scroll-mb": [{
12909
- "scroll-mb": getSpacingWithArbitrary()
13717
+ "scroll-mb": scaleUnambiguousSpacing()
12910
13718
  }],
12911
13719
  /**
12912
13720
  * Scroll Margin Left
12913
13721
  * @see https://tailwindcss.com/docs/scroll-margin
12914
13722
  */
12915
13723
  "scroll-ml": [{
12916
- "scroll-ml": getSpacingWithArbitrary()
13724
+ "scroll-ml": scaleUnambiguousSpacing()
12917
13725
  }],
12918
13726
  /**
12919
13727
  * Scroll Padding
12920
13728
  * @see https://tailwindcss.com/docs/scroll-padding
12921
13729
  */
12922
13730
  "scroll-p": [{
12923
- "scroll-p": getSpacingWithArbitrary()
13731
+ "scroll-p": scaleUnambiguousSpacing()
12924
13732
  }],
12925
13733
  /**
12926
13734
  * Scroll Padding X
12927
13735
  * @see https://tailwindcss.com/docs/scroll-padding
12928
13736
  */
12929
13737
  "scroll-px": [{
12930
- "scroll-px": getSpacingWithArbitrary()
13738
+ "scroll-px": scaleUnambiguousSpacing()
12931
13739
  }],
12932
13740
  /**
12933
13741
  * Scroll Padding Y
12934
13742
  * @see https://tailwindcss.com/docs/scroll-padding
12935
13743
  */
12936
13744
  "scroll-py": [{
12937
- "scroll-py": getSpacingWithArbitrary()
13745
+ "scroll-py": scaleUnambiguousSpacing()
12938
13746
  }],
12939
13747
  /**
12940
13748
  * Scroll Padding Start
12941
13749
  * @see https://tailwindcss.com/docs/scroll-padding
12942
13750
  */
12943
13751
  "scroll-ps": [{
12944
- "scroll-ps": getSpacingWithArbitrary()
13752
+ "scroll-ps": scaleUnambiguousSpacing()
12945
13753
  }],
12946
13754
  /**
12947
13755
  * Scroll Padding End
12948
13756
  * @see https://tailwindcss.com/docs/scroll-padding
12949
13757
  */
12950
13758
  "scroll-pe": [{
12951
- "scroll-pe": getSpacingWithArbitrary()
13759
+ "scroll-pe": scaleUnambiguousSpacing()
12952
13760
  }],
12953
13761
  /**
12954
13762
  * Scroll Padding Top
12955
13763
  * @see https://tailwindcss.com/docs/scroll-padding
12956
13764
  */
12957
13765
  "scroll-pt": [{
12958
- "scroll-pt": getSpacingWithArbitrary()
13766
+ "scroll-pt": scaleUnambiguousSpacing()
12959
13767
  }],
12960
13768
  /**
12961
13769
  * Scroll Padding Right
12962
13770
  * @see https://tailwindcss.com/docs/scroll-padding
12963
13771
  */
12964
13772
  "scroll-pr": [{
12965
- "scroll-pr": getSpacingWithArbitrary()
13773
+ "scroll-pr": scaleUnambiguousSpacing()
12966
13774
  }],
12967
13775
  /**
12968
13776
  * Scroll Padding Bottom
12969
13777
  * @see https://tailwindcss.com/docs/scroll-padding
12970
13778
  */
12971
13779
  "scroll-pb": [{
12972
- "scroll-pb": getSpacingWithArbitrary()
13780
+ "scroll-pb": scaleUnambiguousSpacing()
12973
13781
  }],
12974
13782
  /**
12975
13783
  * Scroll Padding Left
12976
13784
  * @see https://tailwindcss.com/docs/scroll-padding
12977
13785
  */
12978
13786
  "scroll-pl": [{
12979
- "scroll-pl": getSpacingWithArbitrary()
13787
+ "scroll-pl": scaleUnambiguousSpacing()
12980
13788
  }],
12981
13789
  /**
12982
13790
  * Scroll Snap Align
@@ -13044,36 +13852,35 @@ var getDefaultConfig = () => {
13044
13852
  * @see https://tailwindcss.com/docs/will-change
13045
13853
  */
13046
13854
  "will-change": [{
13047
- "will-change": ["auto", "scroll", "contents", "transform", isArbitraryValue]
13855
+ "will-change": ["auto", "scroll", "contents", "transform", isArbitraryVariable, isArbitraryValue]
13048
13856
  }],
13049
- // SVG
13857
+ // -----------
13858
+ // --- SVG ---
13859
+ // -----------
13050
13860
  /**
13051
13861
  * Fill
13052
13862
  * @see https://tailwindcss.com/docs/fill
13053
13863
  */
13054
13864
  fill: [{
13055
- fill: [colors, "none"]
13865
+ fill: ["none", ...scaleColor()]
13056
13866
  }],
13057
13867
  /**
13058
13868
  * Stroke Width
13059
13869
  * @see https://tailwindcss.com/docs/stroke-width
13060
13870
  */
13061
13871
  "stroke-w": [{
13062
- stroke: [isLength, isArbitraryLength, isArbitraryNumber]
13872
+ stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]
13063
13873
  }],
13064
13874
  /**
13065
13875
  * Stroke
13066
13876
  * @see https://tailwindcss.com/docs/stroke
13067
13877
  */
13068
13878
  stroke: [{
13069
- stroke: [colors, "none"]
13879
+ stroke: ["none", ...scaleColor()]
13070
13880
  }],
13071
- // Accessibility
13072
- /**
13073
- * Screen Readers
13074
- * @see https://tailwindcss.com/docs/screen-readers
13075
- */
13076
- sr: ["sr-only", "not-sr-only"],
13881
+ // ---------------------
13882
+ // --- Accessibility ---
13883
+ // ---------------------
13077
13884
  /**
13078
13885
  * Forced Color Adjust
13079
13886
  * @see https://tailwindcss.com/docs/forced-color-adjust
@@ -13113,12 +13920,14 @@ var getDefaultConfig = () => {
13113
13920
  "rounded-b": ["rounded-br", "rounded-bl"],
13114
13921
  "rounded-l": ["rounded-tl", "rounded-bl"],
13115
13922
  "border-spacing": ["border-spacing-x", "border-spacing-y"],
13116
- "border-w": ["border-w-s", "border-w-e", "border-w-t", "border-w-r", "border-w-b", "border-w-l"],
13923
+ "border-w": ["border-w-x", "border-w-y", "border-w-s", "border-w-e", "border-w-t", "border-w-r", "border-w-b", "border-w-l"],
13117
13924
  "border-w-x": ["border-w-r", "border-w-l"],
13118
13925
  "border-w-y": ["border-w-t", "border-w-b"],
13119
- "border-color": ["border-color-s", "border-color-e", "border-color-t", "border-color-r", "border-color-b", "border-color-l"],
13926
+ "border-color": ["border-color-x", "border-color-y", "border-color-s", "border-color-e", "border-color-t", "border-color-r", "border-color-b", "border-color-l"],
13120
13927
  "border-color-x": ["border-color-r", "border-color-l"],
13121
13928
  "border-color-y": ["border-color-t", "border-color-b"],
13929
+ translate: ["translate-x", "translate-y", "translate-none"],
13930
+ "translate-none": ["translate", "translate-x", "translate-y", "translate-z"],
13122
13931
  "scroll-m": ["scroll-mx", "scroll-my", "scroll-ms", "scroll-me", "scroll-mt", "scroll-mr", "scroll-mb", "scroll-ml"],
13123
13932
  "scroll-mx": ["scroll-mr", "scroll-ml"],
13124
13933
  "scroll-my": ["scroll-mt", "scroll-mb"],
@@ -13132,7 +13941,8 @@ var getDefaultConfig = () => {
13132
13941
  },
13133
13942
  conflictingClassGroupModifiers: {
13134
13943
  "font-size": ["leading"]
13135
- }
13944
+ },
13945
+ orderSensitiveModifiers: ["*", "**", "after", "backdrop", "before", "details-content", "file", "first-letter", "first-line", "marker", "placeholder", "selection"]
13136
13946
  };
13137
13947
  };
13138
13948
  var twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
@@ -13146,6 +13956,7 @@ export {
13146
13956
  BrowserBox,
13147
13957
  Button,
13148
13958
  ButtonGroup,
13959
+ ButtonLink,
13149
13960
  Code,
13150
13961
  CodeBox,
13151
13962
  CodeSnippet,