@webskill/sdk 0.21.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/dist/abnfDiagram-O67JEVCF-DtYFjfqO.js +109 -0
  2. package/dist/agent.d.ts +3 -3
  3. package/dist/agent.js +1174 -169
  4. package/dist/{approval-DwN2o2QG.js → approval-7CuZS3Z4.js} +104 -18
  5. package/dist/arc-8U_6NQWm.js +130 -0
  6. package/dist/architecture-7GRP2DOG-RTw1wpAq.js +4 -0
  7. package/dist/architectureDiagram-NJMV4G6O-XmmXrJAK.js +7473 -0
  8. package/dist/array-DQfpQNY8.js +8 -0
  9. package/dist/blockDiagram-BEXU5L5S-D4yjnCD1.js +2582 -0
  10. package/dist/browser.d.ts +455 -49
  11. package/dist/browser.js +2134 -138
  12. package/dist/c4Diagram-YGBWAQC7-BLmA_JSd.js +3668 -0
  13. package/dist/channel-CZxxLrG7.js +9 -0
  14. package/dist/chunk-2Q5K7J3B-Ck03gkFR.js +21 -0
  15. package/dist/chunk-3FUC2YCW-tr6jmbQf.js +530 -0
  16. package/dist/chunk-5DYCD2WN-Bt97YGTd.js +58 -0
  17. package/dist/chunk-5VM5RSS4-BBxa48HL.js +21 -0
  18. package/dist/chunk-6AEJRKK7-JXK89I-O.js +14 -0
  19. package/dist/chunk-742MDFTN-CPmgCGwC.js +466 -0
  20. package/dist/chunk-7INBJB4K-C9jq9o66.js +6552 -0
  21. package/dist/chunk-7M6MHVWA-BrKCWcR1.js +4894 -0
  22. package/dist/chunk-7PRAP22T-BHED6GVs.js +95 -0
  23. package/dist/chunk-DUW6YSOI-DoZj78PO.js +19 -0
  24. package/dist/chunk-FOHPRMQF-Dkbp819z.js +27189 -0
  25. package/dist/chunk-GNY47TPC-Bpvq1T49.js +87 -0
  26. package/dist/chunk-GTNCS2PH-CLmh4I2c.js +686 -0
  27. package/dist/chunk-GWA4HPMP-B6vN3fkL.js +95 -0
  28. package/dist/chunk-J5ZVWO5B-Bi_Pcobw.js +26 -0
  29. package/dist/chunk-JWPE2WC7-D1rC79GS.js +12 -0
  30. package/dist/chunk-LNGE3PJU-D5OIoe3Z.js +2582 -0
  31. package/dist/chunk-MBY4JIJT-C34L7a4f.js +2276 -0
  32. package/dist/chunk-NETBCI7D-Cg84k8N8.js +321 -0
  33. package/dist/chunk-O7XYJQB3-B6K0KOSL.js +8846 -0
  34. package/dist/chunk-UA2S7LBM-DxHM29_K.js +612 -0
  35. package/dist/chunk-WEXAMYUT-Ba6jFWhB.js +33 -0
  36. package/dist/chunk-XXDRQBXY-DPbSy4kg.js +12 -0
  37. package/dist/chunk-Y2CYZVJY-U3QOMqrW.js +15 -0
  38. package/dist/chunk-Z7XXMR3K-oLg1h8F3.js +1038 -0
  39. package/dist/chunk-ZIGJFQKS-DqEFBuHR.js +2215 -0
  40. package/dist/classDiagram-v2-NBCMYWYE-BqnOWIUt.js +3845 -0
  41. package/dist/cose-bilkent-JH36ORCC-C0dTAHVK.js +4270 -0
  42. package/dist/cynefin-OW5HDTMX-B2QvgEQj.js +4 -0
  43. package/dist/cynefinDiagram-VND7K2PF-yAWc6Z3W.js +479 -0
  44. package/dist/cytoscape.esm-C64mRh9B.js +28325 -0
  45. package/dist/dagre-6A5THRUB-D0w2W27v.js +4816 -0
  46. package/dist/defaultLocale-B_EoOkSF.js +249 -0
  47. package/dist/diagram-22UHCM2B-DvgzhUzP.js +6115 -0
  48. package/dist/diagram-3UASUU5V-DWgUB-ef.js +795 -0
  49. package/dist/diagram-ATOU4E4O-P1olqwIs.js +553 -0
  50. package/dist/diagram-CDSNMT55-BUlZuLUe.js +402 -0
  51. package/dist/diagram-MLGK6HIB-6w5qmkGt.js +186 -0
  52. package/dist/diagram-MPIPVDR6-DEFiSo8o.js +289 -0
  53. package/dist/dist-UajCDt3n.js +92 -0
  54. package/dist/ebnfDiagram-ZINNZB2B-CI8liCfR.js +123 -0
  55. package/dist/elk-276RUBZZ-3SvW6OAK.js +90034 -0
  56. package/dist/erDiagram-OPXOYQCR-CPTbKhwP.js +2301 -0
  57. package/dist/eventmodeling-NTZA5JFV-BlyuqGp0.js +4 -0
  58. package/dist/flowDiagram-KWPJA3E3-CcUJ6HbV.js +18 -0
  59. package/dist/ganttDiagram-FUAMR5RP-31UjY0KK.js +3939 -0
  60. package/dist/{toolSource-C9oNuKmr.js → geometry-CRhuySKV.js} +169 -12
  61. package/dist/gitGraph-4MIJSDKK-ChdVlrk7.js +4 -0
  62. package/dist/gitGraphDiagram-X574FWY7-DKuxJymB.js +1153 -0
  63. package/dist/governance.d.ts +22 -4
  64. package/dist/governance.js +100 -10
  65. package/dist/graphlib-tk9gQYuN.js +4194 -0
  66. package/dist/{index-DHopiH_m.d.ts → index-7No55dRb.d.ts} +161 -11
  67. package/dist/{index-B8Tgmpwh.d.ts → index-ShvCB5I9.d.ts} +2 -2
  68. package/dist/{index-CYLt5u4L.d.ts → index-V76_OFj2.d.ts} +789 -21
  69. package/dist/index.d.ts +4 -4
  70. package/dist/index.js +11 -9
  71. package/dist/info-A6RAGUB7-CxRAt9S9.js +4 -0
  72. package/dist/infoDiagram-VRGFBTTK-pRspGfjZ.js +25 -0
  73. package/dist/init-CMOIWdg-.js +16 -0
  74. package/dist/ishikawaDiagram-OU5B5YK6-DKerAPAg.js +975 -0
  75. package/dist/journeyDiagram-ZHPQQLJL-C4MK-YO5.js +1227 -0
  76. package/dist/kanban-definition-PNTS6WVX-BqsZpMXx.js +1244 -0
  77. package/dist/katex-BcRRvyh_.js +26465 -0
  78. package/dist/{kind-DaKqLX2F.js → kind-Dc8x0HWz.js} +54 -7
  79. package/dist/line-LgV8iVMV.js +48 -0
  80. package/dist/linear-BWKR0Tqd.js +393 -0
  81. package/dist/linkedDocument-CZZOl9cO.js +456 -0
  82. package/dist/mcp.d.ts +2 -2
  83. package/dist/{memoryArtifactStore-D6dLeY55.js → memoryArtifactStore-Bs7glPqm.js} +14 -0
  84. package/dist/mermaid-parser.core-pYR5siSx.js +754 -0
  85. package/dist/mermaid.core-DMtwGCHy.js +1756 -0
  86. package/dist/mindmap-definition-NLK3R4M7-CXbD-myG.js +1312 -0
  87. package/dist/node.d.ts +3 -3
  88. package/dist/node.js +12 -5
  89. package/dist/{openUiLibrary-b0i7F_oZ.js → openUiLibrary-B7j3rLrm.js} +1 -1
  90. package/dist/{openUiSpecLang-CLXJEeRU.js → openUiSpecLang-BSYYnjay.js} +1 -1
  91. package/dist/ordinal-CxA6GHQS.js +84 -0
  92. package/dist/packet-AYTQ26CC-BOm08cxl.js +4 -0
  93. package/dist/path-C27Z2Bjv.js +106 -0
  94. package/dist/{pathSecurity-B1owvJAF.js → pathSecurity-CirkQwWP.js} +12 -1
  95. package/dist/pegDiagram-GJSIUBJH-BLGJOewQ.js +115 -0
  96. package/dist/pie-WAS4IAKB-Dvg7glpk.js +4 -0
  97. package/dist/pieDiagram-5QR66LMP-laoaV_PB.js +298 -0
  98. package/dist/quadrantDiagram-O4NWA36T-Db_wFBkT.js +2236 -0
  99. package/dist/radar-RG4KPBEZ-BZDaTu06.js +4 -0
  100. package/dist/railroad-74A4TZTK-C-UhjkOy.js +4 -0
  101. package/dist/railroad-abnf-HS5TGJTU-dUKVA4OS.js +4 -0
  102. package/dist/railroad-ebnf-LZEXJU2U-DzQumk18.js +4 -0
  103. package/dist/railroad-peg-WCYAUIDC-B3vvTWed.js +4 -0
  104. package/dist/railroadDiagram-XR7U4H2S-BY0sTM4X.js +89 -0
  105. package/dist/requirementDiagram-PLB6GJNP-3rkQfEhs.js +2474 -0
  106. package/dist/rough.cjs-AmDd_NQk.js +1395 -0
  107. package/dist/sankeyDiagram-IPEJSGJF-CGAJhyG2.js +3578 -0
  108. package/dist/sequenceDiagram-PO4LG4MO-9FJjFX06.js +5522 -0
  109. package/dist/sizeCapture-INFHLROL-D8PWxdOn.js +56 -0
  110. package/dist/{skill-CAJMsLod.js → skill-WSUDp6A1.js} +1 -1
  111. package/dist/{skillVersionStore-B24Jjjry-BkOk9wI_.d.ts → skillVersionStore-S4_HJ_Fl-Cvy9LqVu.d.ts} +35 -4
  112. package/dist/src-NkhI3UMl.js +2653 -0
  113. package/dist/stateDiagram-v2-GCMORJYK-B0O3wc1-.js +2715 -0
  114. package/dist/swimlanes-2SLR337P-D4EOnrpu.js +6637 -0
  115. package/dist/swimlanesDiagram-TC7HE7FX-BUx29EJ9.js +30 -0
  116. package/dist/testing.d.ts +2 -1
  117. package/dist/testing.js +1 -1
  118. package/dist/timeline-definition-EJHVYXUP-CrgiiB4C.js +1513 -0
  119. package/dist/treeView-Q6P3EWNA-C1by-Gzc.js +4 -0
  120. package/dist/treemap-WGGIJYW6-mC2NZ6ad.js +4 -0
  121. package/dist/{types-BvTV_05--BW8zDuEk.d.ts → types-CpDRZ0rA-BiZBXGm4.d.ts} +66 -8
  122. package/dist/ui-react.d.ts +3 -3
  123. package/dist/ui-react.js +3746 -96
  124. package/dist/ui-vue.d.ts +1 -1
  125. package/dist/ui.d.ts +3 -3
  126. package/dist/ui.js +2 -2
  127. package/dist/usecaseDiagram-POWQR4AR-BUt_TQOY.js +14397 -0
  128. package/dist/vennDiagram-UO4OBE2U-CwXr0wjA.js +2808 -0
  129. package/dist/wardley-WFR3VGLG-CVSYjq_S.js +4 -0
  130. package/dist/wardleyDiagram-VNRHLVJA-Cpfd47dQ.js +874 -0
  131. package/dist/{webSkillApi-Cib6G-94.js → webSkillApi-D5VMUnrv.js} +2 -2
  132. package/dist/{webskillLitCatalog-W06npwej.js → webskillLitCatalog-D5BCiMCU.js} +1 -1
  133. package/dist/xychartDiagram-PMCCYNJV-e1TeVoc6.js +2704 -0
  134. package/package.json +1 -1
  135. package/dist/linkedDocument-C0gj1sMq.js +0 -245
package/dist/ui-react.js CHANGED
@@ -2,7 +2,7 @@ import { a as __toCommonJS, i as __require, n as __esmMin, o as __toESM, r as __
2
2
  import { n as messageOf, t as WebSkillError } from "./errors-BDZNpC13.js";
3
3
  import { n as validateUiSpecEvent, r as validateUiSpecNode } from "./surface-DVGiCmwq.js";
4
4
  import { a as applySuggestion, c as DEFAULT_SURFACE_FORM_TEXTS, f as resolveSurfaceFormTexts, i as renderMiniMarkdown, l as DEFAULT_SURFACE_HOST_CONTROL_TEXTS, m as shapeInteractionValue, o as collectValues, p as resolveSurfaceHostControlTexts, r as renderMiniChart, u as interactionToFormModel } from "./miniChart-D0nYMzz8.js";
5
- import { C as DEFAULT_CHART_FONT_SIZES, E as resolveChartFontSizes, S as gaugePercent, T as mountEchart, c as resolveColumnWidths, d as collectFormScopes, f as collectScopedValues, g as uiCatalog, i as normalizeFieldOptions, n as interactionToUiSpec, p as qualifyFieldName, r as toJsonRenderSpec, s as normalizeColumnWidths, t as toOpenUiSpecLang, u as evaluateFieldCondition, w as chartSpecFromProps } from "./openUiSpecLang-CLXJEeRU.js";
5
+ import { C as DEFAULT_CHART_FONT_SIZES, E as resolveChartFontSizes, S as gaugePercent, T as mountEchart, c as resolveColumnWidths, d as collectFormScopes, f as collectScopedValues, g as uiCatalog, i as normalizeFieldOptions, n as interactionToUiSpec, p as qualifyFieldName, r as toJsonRenderSpec, s as normalizeColumnWidths, t as toOpenUiSpecLang, u as evaluateFieldCondition, w as chartSpecFromProps } from "./openUiSpecLang-BSYYnjay.js";
6
6
  import minpath from "node:path";
7
7
  import { fileURLToPath as urlToPath } from "node:url";
8
8
  import { z } from "zod";
@@ -258,6 +258,8 @@ var ReactBridgeState = class {
258
258
  streamingRunId = null;
259
259
  streamingText = "";
260
260
  #listeners = /* @__PURE__ */ new Set();
261
+ /** 待决交互队列,队头即 `pending`(0.23.0 分册 19 FR-19.6) */
262
+ #queue = [];
261
263
  #resolvers = /* @__PURE__ */ new Map();
262
264
  #surfaceActionResolvers = /* @__PURE__ */ new Map();
263
265
  #processedSurfaceActionNonces = /* @__PURE__ */ new Set();
@@ -301,10 +303,11 @@ var ReactBridgeState = class {
301
303
  for (const listener of [...this.#listeners]) listener();
302
304
  }
303
305
  request(input) {
304
- this.pending = input;
305
- this.#emit();
306
306
  return new Promise((resolve) => {
307
307
  this.#resolvers.set(input.id, resolve);
308
+ this.#queue.push(input);
309
+ this.pending = this.#queue[0] ?? null;
310
+ this.#emit();
308
311
  });
309
312
  }
310
313
  /** 组件提交/取消回调 */
@@ -312,7 +315,8 @@ var ReactBridgeState = class {
312
315
  const resolver = this.#resolvers.get(response.id);
313
316
  if (!resolver) return;
314
317
  this.#resolvers.delete(response.id);
315
- this.pending = null;
318
+ this.#queue = this.#queue.filter((request) => request.id !== response.id);
319
+ this.pending = this.#queue[0] ?? null;
316
320
  this.#emit();
317
321
  resolver(response);
318
322
  }
@@ -34522,6 +34526,7 @@ var require_lucide_react = /* @__PURE__ */ __commonJSMin(((exports) => {
34522
34526
  ]);
34523
34527
  exports.Check = Check;
34524
34528
  exports.ChevronDown = ChevronDown;
34529
+ exports.ImageOff = ImageOff;
34525
34530
  exports.LoaderCircle = LoaderCircle;
34526
34531
  }));
34527
34532
 
@@ -41592,6 +41597,3411 @@ function DataTable({ children, className = "", containerClassName = "", ...props
41592
41597
  });
41593
41598
  }
41594
41599
 
41600
+ //#endregion
41601
+ //#region ../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
41602
+ function r$1(e) {
41603
+ var t, f, n = "";
41604
+ if ("string" == typeof e || "number" == typeof e) n += e;
41605
+ else if ("object" == typeof e) if (Array.isArray(e)) {
41606
+ var o = e.length;
41607
+ for (t = 0; t < o; t++) e[t] && (f = r$1(e[t])) && (n && (n += " "), n += f);
41608
+ } else for (f in e) e[f] && (n && (n += " "), n += f);
41609
+ return n;
41610
+ }
41611
+ function clsx() {
41612
+ for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r$1(e)) && (n && (n += " "), n += t);
41613
+ return n;
41614
+ }
41615
+
41616
+ //#endregion
41617
+ //#region ../../node_modules/.pnpm/tailwind-merge@3.6.0/node_modules/tailwind-merge/dist/bundle-mjs.mjs
41618
+ /**
41619
+ * Concatenates two arrays faster than the array spread operator.
41620
+ */
41621
+ const concatArrays = (array1, array2) => {
41622
+ const combinedArray = new Array(array1.length + array2.length);
41623
+ for (let i = 0; i < array1.length; i++) combinedArray[i] = array1[i];
41624
+ for (let i = 0; i < array2.length; i++) combinedArray[array1.length + i] = array2[i];
41625
+ return combinedArray;
41626
+ };
41627
+ const createClassValidatorObject = (classGroupId, validator) => ({
41628
+ classGroupId,
41629
+ validator
41630
+ });
41631
+ const createClassPartObject = (nextPart = /* @__PURE__ */ new Map(), validators = null, classGroupId) => ({
41632
+ nextPart,
41633
+ validators,
41634
+ classGroupId
41635
+ });
41636
+ const CLASS_PART_SEPARATOR = "-";
41637
+ const EMPTY_CONFLICTS = [];
41638
+ const ARBITRARY_PROPERTY_PREFIX = "arbitrary..";
41639
+ const createClassGroupUtils = (config) => {
41640
+ const classMap = createClassMap(config);
41641
+ const { conflictingClassGroups, conflictingClassGroupModifiers } = config;
41642
+ const getClassGroupId = (className) => {
41643
+ if (className.startsWith("[") && className.endsWith("]")) return getGroupIdForArbitraryProperty(className);
41644
+ const classParts = className.split(CLASS_PART_SEPARATOR);
41645
+ const startIndex = classParts[0] === "" && classParts.length > 1 ? 1 : 0;
41646
+ return getGroupRecursive(classParts, startIndex, classMap);
41647
+ };
41648
+ const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {
41649
+ if (hasPostfixModifier) {
41650
+ const modifierConflicts = conflictingClassGroupModifiers[classGroupId];
41651
+ const baseConflicts = conflictingClassGroups[classGroupId];
41652
+ if (modifierConflicts) {
41653
+ if (baseConflicts) return concatArrays(baseConflicts, modifierConflicts);
41654
+ return modifierConflicts;
41655
+ }
41656
+ return baseConflicts || EMPTY_CONFLICTS;
41657
+ }
41658
+ return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;
41659
+ };
41660
+ return {
41661
+ getClassGroupId,
41662
+ getConflictingClassGroupIds
41663
+ };
41664
+ };
41665
+ const getGroupRecursive = (classParts, startIndex, classPartObject) => {
41666
+ if (classParts.length - startIndex === 0) return classPartObject.classGroupId;
41667
+ const currentClassPart = classParts[startIndex];
41668
+ const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);
41669
+ if (nextClassPartObject) {
41670
+ const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);
41671
+ if (result) return result;
41672
+ }
41673
+ const validators = classPartObject.validators;
41674
+ if (validators === null) return;
41675
+ const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);
41676
+ const validatorsLength = validators.length;
41677
+ for (let i = 0; i < validatorsLength; i++) {
41678
+ const validatorObj = validators[i];
41679
+ if (validatorObj.validator(classRest)) return validatorObj.classGroupId;
41680
+ }
41681
+ };
41682
+ /**
41683
+ * Get the class group ID for an arbitrary property.
41684
+ *
41685
+ * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.
41686
+ */
41687
+ const getGroupIdForArbitraryProperty = (className) => className.slice(1, -1).indexOf(":") === -1 ? void 0 : (() => {
41688
+ const content = className.slice(1, -1);
41689
+ const colonIndex = content.indexOf(":");
41690
+ const property = content.slice(0, colonIndex);
41691
+ return property ? ARBITRARY_PROPERTY_PREFIX + property : void 0;
41692
+ })();
41693
+ /**
41694
+ * Exported for testing only
41695
+ */
41696
+ const createClassMap = (config) => {
41697
+ const { theme, classGroups } = config;
41698
+ return processClassGroups(classGroups, theme);
41699
+ };
41700
+ const processClassGroups = (classGroups, theme) => {
41701
+ const classMap = createClassPartObject();
41702
+ for (const classGroupId in classGroups) {
41703
+ const group = classGroups[classGroupId];
41704
+ processClassesRecursively(group, classMap, classGroupId, theme);
41705
+ }
41706
+ return classMap;
41707
+ };
41708
+ const processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {
41709
+ const len = classGroup.length;
41710
+ for (let i = 0; i < len; i++) {
41711
+ const classDefinition = classGroup[i];
41712
+ processClassDefinition(classDefinition, classPartObject, classGroupId, theme);
41713
+ }
41714
+ };
41715
+ const processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {
41716
+ if (typeof classDefinition === "string") {
41717
+ processStringDefinition(classDefinition, classPartObject, classGroupId);
41718
+ return;
41719
+ }
41720
+ if (typeof classDefinition === "function") {
41721
+ processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);
41722
+ return;
41723
+ }
41724
+ processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);
41725
+ };
41726
+ const processStringDefinition = (classDefinition, classPartObject, classGroupId) => {
41727
+ const classPartObjectToEdit = classDefinition === "" ? classPartObject : getPart(classPartObject, classDefinition);
41728
+ classPartObjectToEdit.classGroupId = classGroupId;
41729
+ };
41730
+ const processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {
41731
+ if (isThemeGetter(classDefinition)) {
41732
+ processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);
41733
+ return;
41734
+ }
41735
+ if (classPartObject.validators === null) classPartObject.validators = [];
41736
+ classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));
41737
+ };
41738
+ const processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {
41739
+ const entries = Object.entries(classDefinition);
41740
+ const len = entries.length;
41741
+ for (let i = 0; i < len; i++) {
41742
+ const [key, value] = entries[i];
41743
+ processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);
41744
+ }
41745
+ };
41746
+ const getPart = (classPartObject, path) => {
41747
+ let current = classPartObject;
41748
+ const parts = path.split(CLASS_PART_SEPARATOR);
41749
+ const len = parts.length;
41750
+ for (let i = 0; i < len; i++) {
41751
+ const part = parts[i];
41752
+ let next = current.nextPart.get(part);
41753
+ if (!next) {
41754
+ next = createClassPartObject();
41755
+ current.nextPart.set(part, next);
41756
+ }
41757
+ current = next;
41758
+ }
41759
+ return current;
41760
+ };
41761
+ const isThemeGetter = (func) => "isThemeGetter" in func && func.isThemeGetter === true;
41762
+ const createLruCache = (maxCacheSize) => {
41763
+ if (maxCacheSize < 1) return {
41764
+ get: () => void 0,
41765
+ set: () => {}
41766
+ };
41767
+ let cacheSize = 0;
41768
+ let cache = Object.create(null);
41769
+ let previousCache = Object.create(null);
41770
+ const update = (key, value) => {
41771
+ cache[key] = value;
41772
+ cacheSize++;
41773
+ if (cacheSize > maxCacheSize) {
41774
+ cacheSize = 0;
41775
+ previousCache = cache;
41776
+ cache = Object.create(null);
41777
+ }
41778
+ };
41779
+ return {
41780
+ get(key) {
41781
+ let value = cache[key];
41782
+ if (value !== void 0) return value;
41783
+ if ((value = previousCache[key]) !== void 0) {
41784
+ update(key, value);
41785
+ return value;
41786
+ }
41787
+ },
41788
+ set(key, value) {
41789
+ if (key in cache) cache[key] = value;
41790
+ else update(key, value);
41791
+ }
41792
+ };
41793
+ };
41794
+ const IMPORTANT_MODIFIER = "!";
41795
+ const MODIFIER_SEPARATOR = ":";
41796
+ const EMPTY_MODIFIERS = [];
41797
+ const createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({
41798
+ modifiers,
41799
+ hasImportantModifier,
41800
+ baseClassName,
41801
+ maybePostfixModifierPosition,
41802
+ isExternal
41803
+ });
41804
+ const createParseClassName = (config) => {
41805
+ const { prefix, experimentalParseClassName } = config;
41806
+ /**
41807
+ * Parse class name into parts.
41808
+ *
41809
+ * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS
41810
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js
41811
+ */
41812
+ let parseClassName = (className) => {
41813
+ const modifiers = [];
41814
+ let bracketDepth = 0;
41815
+ let parenDepth = 0;
41816
+ let modifierStart = 0;
41817
+ let postfixModifierPosition;
41818
+ const len = className.length;
41819
+ for (let index = 0; index < len; index++) {
41820
+ const currentCharacter = className[index];
41821
+ if (bracketDepth === 0 && parenDepth === 0) {
41822
+ if (currentCharacter === MODIFIER_SEPARATOR) {
41823
+ modifiers.push(className.slice(modifierStart, index));
41824
+ modifierStart = index + 1;
41825
+ continue;
41826
+ }
41827
+ if (currentCharacter === "/") {
41828
+ postfixModifierPosition = index;
41829
+ continue;
41830
+ }
41831
+ }
41832
+ if (currentCharacter === "[") bracketDepth++;
41833
+ else if (currentCharacter === "]") bracketDepth--;
41834
+ else if (currentCharacter === "(") parenDepth++;
41835
+ else if (currentCharacter === ")") parenDepth--;
41836
+ }
41837
+ const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);
41838
+ let baseClassName = baseClassNameWithImportantModifier;
41839
+ let hasImportantModifier = false;
41840
+ if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {
41841
+ baseClassName = baseClassNameWithImportantModifier.slice(0, -1);
41842
+ hasImportantModifier = true;
41843
+ } else if (baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {
41844
+ baseClassName = baseClassNameWithImportantModifier.slice(1);
41845
+ hasImportantModifier = true;
41846
+ }
41847
+ const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : void 0;
41848
+ return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);
41849
+ };
41850
+ if (prefix) {
41851
+ const fullPrefix = prefix + MODIFIER_SEPARATOR;
41852
+ const parseClassNameOriginal = parseClassName;
41853
+ parseClassName = (className) => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, void 0, true);
41854
+ }
41855
+ if (experimentalParseClassName) {
41856
+ const parseClassNameOriginal = parseClassName;
41857
+ parseClassName = (className) => experimentalParseClassName({
41858
+ className,
41859
+ parseClassName: parseClassNameOriginal
41860
+ });
41861
+ }
41862
+ return parseClassName;
41863
+ };
41864
+ /**
41865
+ * Sorts modifiers according to following schema:
41866
+ * - Predefined modifiers are sorted alphabetically
41867
+ * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it
41868
+ */
41869
+ const createSortModifiers = (config) => {
41870
+ const modifierWeights = /* @__PURE__ */ new Map();
41871
+ config.orderSensitiveModifiers.forEach((mod, index) => {
41872
+ modifierWeights.set(mod, 1e6 + index);
41873
+ });
41874
+ return (modifiers) => {
41875
+ const result = [];
41876
+ let currentSegment = [];
41877
+ for (let i = 0; i < modifiers.length; i++) {
41878
+ const modifier = modifiers[i];
41879
+ const isArbitrary = modifier[0] === "[";
41880
+ const isOrderSensitive = modifierWeights.has(modifier);
41881
+ if (isArbitrary || isOrderSensitive) {
41882
+ if (currentSegment.length > 0) {
41883
+ currentSegment.sort();
41884
+ result.push(...currentSegment);
41885
+ currentSegment = [];
41886
+ }
41887
+ result.push(modifier);
41888
+ } else currentSegment.push(modifier);
41889
+ }
41890
+ if (currentSegment.length > 0) {
41891
+ currentSegment.sort();
41892
+ result.push(...currentSegment);
41893
+ }
41894
+ return result;
41895
+ };
41896
+ };
41897
+ const createConfigUtils = (config) => ({
41898
+ cache: createLruCache(config.cacheSize),
41899
+ parseClassName: createParseClassName(config),
41900
+ sortModifiers: createSortModifiers(config),
41901
+ postfixLookupClassGroupIds: createPostfixLookupClassGroupIds(config),
41902
+ ...createClassGroupUtils(config)
41903
+ });
41904
+ const createPostfixLookupClassGroupIds = (config) => {
41905
+ const lookup = Object.create(null);
41906
+ const classGroupIds = config.postfixLookupClassGroups;
41907
+ if (classGroupIds) for (let i = 0; i < classGroupIds.length; i++) lookup[classGroupIds[i]] = true;
41908
+ return lookup;
41909
+ };
41910
+ const SPLIT_CLASSES_REGEX = /\s+/;
41911
+ const mergeClassList = (classList, configUtils) => {
41912
+ const { parseClassName, getClassGroupId, getConflictingClassGroupIds, sortModifiers, postfixLookupClassGroupIds } = configUtils;
41913
+ /**
41914
+ * Set of classGroupIds in following format:
41915
+ * `{importantModifier}{variantModifiers}{classGroupId}`
41916
+ * @example 'float'
41917
+ * @example 'hover:focus:bg-color'
41918
+ * @example 'md:!pr'
41919
+ */
41920
+ const classGroupsInConflict = [];
41921
+ const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);
41922
+ let result = "";
41923
+ for (let index = classNames.length - 1; index >= 0; index -= 1) {
41924
+ const originalClassName = classNames[index];
41925
+ const { isExternal, modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition } = parseClassName(originalClassName);
41926
+ if (isExternal) {
41927
+ result = originalClassName + (result.length > 0 ? " " + result : result);
41928
+ continue;
41929
+ }
41930
+ let hasPostfixModifier = !!maybePostfixModifierPosition;
41931
+ let classGroupId;
41932
+ if (hasPostfixModifier) {
41933
+ classGroupId = getClassGroupId(baseClassName.substring(0, maybePostfixModifierPosition));
41934
+ const classGroupIdWithPostfix = classGroupId && postfixLookupClassGroupIds[classGroupId] ? getClassGroupId(baseClassName) : void 0;
41935
+ if (classGroupIdWithPostfix && classGroupIdWithPostfix !== classGroupId) {
41936
+ classGroupId = classGroupIdWithPostfix;
41937
+ hasPostfixModifier = false;
41938
+ }
41939
+ } else classGroupId = getClassGroupId(baseClassName);
41940
+ if (!classGroupId) {
41941
+ if (!hasPostfixModifier) {
41942
+ result = originalClassName + (result.length > 0 ? " " + result : result);
41943
+ continue;
41944
+ }
41945
+ classGroupId = getClassGroupId(baseClassName);
41946
+ if (!classGroupId) {
41947
+ result = originalClassName + (result.length > 0 ? " " + result : result);
41948
+ continue;
41949
+ }
41950
+ hasPostfixModifier = false;
41951
+ }
41952
+ const variantModifier = modifiers.length === 0 ? "" : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(":");
41953
+ const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;
41954
+ const classId = modifierId + classGroupId;
41955
+ if (classGroupsInConflict.indexOf(classId) > -1) continue;
41956
+ classGroupsInConflict.push(classId);
41957
+ const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);
41958
+ for (let i = 0; i < conflictGroups.length; ++i) {
41959
+ const group = conflictGroups[i];
41960
+ classGroupsInConflict.push(modifierId + group);
41961
+ }
41962
+ result = originalClassName + (result.length > 0 ? " " + result : result);
41963
+ }
41964
+ return result;
41965
+ };
41966
+ /**
41967
+ * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.
41968
+ *
41969
+ * Specifically:
41970
+ * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js
41971
+ * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts
41972
+ *
41973
+ * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
41974
+ */
41975
+ const twJoin = (...classLists) => {
41976
+ let index = 0;
41977
+ let argument;
41978
+ let resolvedValue;
41979
+ let string = "";
41980
+ while (index < classLists.length) if (argument = classLists[index++]) {
41981
+ if (resolvedValue = toValue(argument)) {
41982
+ string && (string += " ");
41983
+ string += resolvedValue;
41984
+ }
41985
+ }
41986
+ return string;
41987
+ };
41988
+ const toValue = (mix) => {
41989
+ if (typeof mix === "string") return mix;
41990
+ let resolvedValue;
41991
+ let string = "";
41992
+ for (let k = 0; k < mix.length; k++) if (mix[k]) {
41993
+ if (resolvedValue = toValue(mix[k])) {
41994
+ string && (string += " ");
41995
+ string += resolvedValue;
41996
+ }
41997
+ }
41998
+ return string;
41999
+ };
42000
+ const createTailwindMerge = (createConfigFirst, ...createConfigRest) => {
42001
+ let configUtils;
42002
+ let cacheGet;
42003
+ let cacheSet;
42004
+ let functionToCall;
42005
+ const initTailwindMerge = (classList) => {
42006
+ const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());
42007
+ configUtils = createConfigUtils(config);
42008
+ cacheGet = configUtils.cache.get;
42009
+ cacheSet = configUtils.cache.set;
42010
+ functionToCall = tailwindMerge;
42011
+ return tailwindMerge(classList);
42012
+ };
42013
+ const tailwindMerge = (classList) => {
42014
+ const cachedResult = cacheGet(classList);
42015
+ if (cachedResult) return cachedResult;
42016
+ const result = mergeClassList(classList, configUtils);
42017
+ cacheSet(classList, result);
42018
+ return result;
42019
+ };
42020
+ functionToCall = initTailwindMerge;
42021
+ return (...args) => functionToCall(twJoin(...args));
42022
+ };
42023
+ const fallbackThemeArr = [];
42024
+ const fromTheme = (key) => {
42025
+ const themeGetter = (theme) => theme[key] || fallbackThemeArr;
42026
+ themeGetter.isThemeGetter = true;
42027
+ return themeGetter;
42028
+ };
42029
+ const arbitraryValueRegex = /^\[(?:(\w[\w-]*):)?(.+)\]$/i;
42030
+ const arbitraryVariableRegex = /^\((?:(\w[\w-]*):)?(.+)\)$/i;
42031
+ const fractionRegex = /^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/;
42032
+ const tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/;
42033
+ const 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$/;
42034
+ const colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/;
42035
+ const shadowRegex = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/;
42036
+ const imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;
42037
+ const isFraction = (value) => fractionRegex.test(value);
42038
+ const isNumber = (value) => !!value && !Number.isNaN(Number(value));
42039
+ const isInteger = (value) => !!value && Number.isInteger(Number(value));
42040
+ const isPercent = (value) => value.endsWith("%") && isNumber(value.slice(0, -1));
42041
+ const isTshirtSize = (value) => tshirtUnitRegex.test(value);
42042
+ const isAny = () => true;
42043
+ const isLengthOnly = (value) => lengthUnitRegex.test(value) && !colorFunctionRegex.test(value);
42044
+ const isNever = () => false;
42045
+ const isShadow = (value) => shadowRegex.test(value);
42046
+ const isImage = (value) => imageRegex.test(value);
42047
+ const isAnyNonArbitrary = (value) => !isArbitraryValue(value) && !isArbitraryVariable(value);
42048
+ const isNamedContainerQuery = (value) => value.startsWith("@container") && (value[10] === "/" && value[11] !== void 0 || value[11] === "s" && value[16] !== void 0 && value.startsWith("-size/", 10) || value[11] === "n" && value[18] !== void 0 && value.startsWith("-normal/", 10));
42049
+ const isArbitrarySize = (value) => getIsArbitraryValue(value, isLabelSize, isNever);
42050
+ const isArbitraryValue = (value) => arbitraryValueRegex.test(value);
42051
+ const isArbitraryLength = (value) => getIsArbitraryValue(value, isLabelLength, isLengthOnly);
42052
+ const isArbitraryNumber = (value) => getIsArbitraryValue(value, isLabelNumber, isNumber);
42053
+ const isArbitraryWeight = (value) => getIsArbitraryValue(value, isLabelWeight, isAny);
42054
+ const isArbitraryFamilyName = (value) => getIsArbitraryValue(value, isLabelFamilyName, isNever);
42055
+ const isArbitraryPosition = (value) => getIsArbitraryValue(value, isLabelPosition, isNever);
42056
+ const isArbitraryImage = (value) => getIsArbitraryValue(value, isLabelImage, isImage);
42057
+ const isArbitraryShadow = (value) => getIsArbitraryValue(value, isLabelShadow, isShadow);
42058
+ const isArbitraryVariable = (value) => arbitraryVariableRegex.test(value);
42059
+ const isArbitraryVariableLength = (value) => getIsArbitraryVariable(value, isLabelLength);
42060
+ const isArbitraryVariableFamilyName = (value) => getIsArbitraryVariable(value, isLabelFamilyName);
42061
+ const isArbitraryVariablePosition = (value) => getIsArbitraryVariable(value, isLabelPosition);
42062
+ const isArbitraryVariableSize = (value) => getIsArbitraryVariable(value, isLabelSize);
42063
+ const isArbitraryVariableImage = (value) => getIsArbitraryVariable(value, isLabelImage);
42064
+ const isArbitraryVariableShadow = (value) => getIsArbitraryVariable(value, isLabelShadow, true);
42065
+ const isArbitraryVariableWeight = (value) => getIsArbitraryVariable(value, isLabelWeight, true);
42066
+ const getIsArbitraryValue = (value, testLabel, testValue) => {
42067
+ const result = arbitraryValueRegex.exec(value);
42068
+ if (result) {
42069
+ if (result[1]) return testLabel(result[1]);
42070
+ return testValue(result[2]);
42071
+ }
42072
+ return false;
42073
+ };
42074
+ const getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {
42075
+ const result = arbitraryVariableRegex.exec(value);
42076
+ if (result) {
42077
+ if (result[1]) return testLabel(result[1]);
42078
+ return shouldMatchNoLabel;
42079
+ }
42080
+ return false;
42081
+ };
42082
+ const isLabelPosition = (label) => label === "position" || label === "percentage";
42083
+ const isLabelImage = (label) => label === "image" || label === "url";
42084
+ const isLabelSize = (label) => label === "length" || label === "size" || label === "bg-size";
42085
+ const isLabelLength = (label) => label === "length";
42086
+ const isLabelNumber = (label) => label === "number";
42087
+ const isLabelFamilyName = (label) => label === "family-name";
42088
+ const isLabelWeight = (label) => label === "number" || label === "weight";
42089
+ const isLabelShadow = (label) => label === "shadow";
42090
+ const getDefaultConfig = () => {
42091
+ /**
42092
+ * Theme getters for theme variable namespaces
42093
+ * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces
42094
+ */
42095
+ const themeColor = fromTheme("color");
42096
+ const themeFont = fromTheme("font");
42097
+ const themeText = fromTheme("text");
42098
+ const themeFontWeight = fromTheme("font-weight");
42099
+ const themeTracking = fromTheme("tracking");
42100
+ const themeLeading = fromTheme("leading");
42101
+ const themeBreakpoint = fromTheme("breakpoint");
42102
+ const themeContainer = fromTheme("container");
42103
+ const themeSpacing = fromTheme("spacing");
42104
+ const themeRadius = fromTheme("radius");
42105
+ const themeShadow = fromTheme("shadow");
42106
+ const themeInsetShadow = fromTheme("inset-shadow");
42107
+ const themeTextShadow = fromTheme("text-shadow");
42108
+ const themeDropShadow = fromTheme("drop-shadow");
42109
+ const themeBlur = fromTheme("blur");
42110
+ const themePerspective = fromTheme("perspective");
42111
+ const themeAspect = fromTheme("aspect");
42112
+ const themeEase = fromTheme("ease");
42113
+ const themeAnimate = fromTheme("animate");
42114
+ /**
42115
+ * Helpers to avoid repeating the same scales
42116
+ *
42117
+ * We use functions that create a new array every time they're called instead of static arrays.
42118
+ * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.
42119
+ */
42120
+ const scaleBreak = () => [
42121
+ "auto",
42122
+ "avoid",
42123
+ "all",
42124
+ "avoid-page",
42125
+ "page",
42126
+ "left",
42127
+ "right",
42128
+ "column"
42129
+ ];
42130
+ const scalePosition = () => [
42131
+ "center",
42132
+ "top",
42133
+ "bottom",
42134
+ "left",
42135
+ "right",
42136
+ "top-left",
42137
+ "left-top",
42138
+ "top-right",
42139
+ "right-top",
42140
+ "bottom-right",
42141
+ "right-bottom",
42142
+ "bottom-left",
42143
+ "left-bottom"
42144
+ ];
42145
+ const scalePositionWithArbitrary = () => [
42146
+ ...scalePosition(),
42147
+ isArbitraryVariable,
42148
+ isArbitraryValue
42149
+ ];
42150
+ const scaleOverflow = () => [
42151
+ "auto",
42152
+ "hidden",
42153
+ "clip",
42154
+ "visible",
42155
+ "scroll"
42156
+ ];
42157
+ const scaleOverscroll = () => [
42158
+ "auto",
42159
+ "contain",
42160
+ "none"
42161
+ ];
42162
+ const scaleUnambiguousSpacing = () => [
42163
+ isArbitraryVariable,
42164
+ isArbitraryValue,
42165
+ themeSpacing
42166
+ ];
42167
+ const scaleInset = () => [
42168
+ isFraction,
42169
+ "full",
42170
+ "auto",
42171
+ ...scaleUnambiguousSpacing()
42172
+ ];
42173
+ const scaleGridTemplateColsRows = () => [
42174
+ isInteger,
42175
+ "none",
42176
+ "subgrid",
42177
+ isArbitraryVariable,
42178
+ isArbitraryValue
42179
+ ];
42180
+ const scaleGridColRowStartAndEnd = () => [
42181
+ "auto",
42182
+ { span: [
42183
+ "full",
42184
+ isInteger,
42185
+ isArbitraryVariable,
42186
+ isArbitraryValue
42187
+ ] },
42188
+ isInteger,
42189
+ isArbitraryVariable,
42190
+ isArbitraryValue
42191
+ ];
42192
+ const scaleGridColRowStartOrEnd = () => [
42193
+ isInteger,
42194
+ "auto",
42195
+ isArbitraryVariable,
42196
+ isArbitraryValue
42197
+ ];
42198
+ const scaleGridAutoColsRows = () => [
42199
+ "auto",
42200
+ "min",
42201
+ "max",
42202
+ "fr",
42203
+ isArbitraryVariable,
42204
+ isArbitraryValue
42205
+ ];
42206
+ const scaleAlignPrimaryAxis = () => [
42207
+ "start",
42208
+ "end",
42209
+ "center",
42210
+ "between",
42211
+ "around",
42212
+ "evenly",
42213
+ "stretch",
42214
+ "baseline",
42215
+ "center-safe",
42216
+ "end-safe"
42217
+ ];
42218
+ const scaleAlignSecondaryAxis = () => [
42219
+ "start",
42220
+ "end",
42221
+ "center",
42222
+ "stretch",
42223
+ "center-safe",
42224
+ "end-safe"
42225
+ ];
42226
+ const scaleMargin = () => ["auto", ...scaleUnambiguousSpacing()];
42227
+ const scaleSizing = () => [
42228
+ isFraction,
42229
+ "auto",
42230
+ "full",
42231
+ "dvw",
42232
+ "dvh",
42233
+ "lvw",
42234
+ "lvh",
42235
+ "svw",
42236
+ "svh",
42237
+ "min",
42238
+ "max",
42239
+ "fit",
42240
+ ...scaleUnambiguousSpacing()
42241
+ ];
42242
+ const scaleSizingInline = () => [
42243
+ isFraction,
42244
+ "screen",
42245
+ "full",
42246
+ "dvw",
42247
+ "lvw",
42248
+ "svw",
42249
+ "min",
42250
+ "max",
42251
+ "fit",
42252
+ ...scaleUnambiguousSpacing()
42253
+ ];
42254
+ const scaleSizingBlock = () => [
42255
+ isFraction,
42256
+ "screen",
42257
+ "full",
42258
+ "lh",
42259
+ "dvh",
42260
+ "lvh",
42261
+ "svh",
42262
+ "min",
42263
+ "max",
42264
+ "fit",
42265
+ ...scaleUnambiguousSpacing()
42266
+ ];
42267
+ const scaleColor = () => [
42268
+ themeColor,
42269
+ isArbitraryVariable,
42270
+ isArbitraryValue
42271
+ ];
42272
+ const scaleBgPosition = () => [
42273
+ ...scalePosition(),
42274
+ isArbitraryVariablePosition,
42275
+ isArbitraryPosition,
42276
+ { position: [isArbitraryVariable, isArbitraryValue] }
42277
+ ];
42278
+ const scaleBgRepeat = () => ["no-repeat", { repeat: [
42279
+ "",
42280
+ "x",
42281
+ "y",
42282
+ "space",
42283
+ "round"
42284
+ ] }];
42285
+ const scaleBgSize = () => [
42286
+ "auto",
42287
+ "cover",
42288
+ "contain",
42289
+ isArbitraryVariableSize,
42290
+ isArbitrarySize,
42291
+ { size: [isArbitraryVariable, isArbitraryValue] }
42292
+ ];
42293
+ const scaleGradientStopPosition = () => [
42294
+ isPercent,
42295
+ isArbitraryVariableLength,
42296
+ isArbitraryLength
42297
+ ];
42298
+ const scaleRadius = () => [
42299
+ "",
42300
+ "none",
42301
+ "full",
42302
+ themeRadius,
42303
+ isArbitraryVariable,
42304
+ isArbitraryValue
42305
+ ];
42306
+ const scaleBorderWidth = () => [
42307
+ "",
42308
+ isNumber,
42309
+ isArbitraryVariableLength,
42310
+ isArbitraryLength
42311
+ ];
42312
+ const scaleLineStyle = () => [
42313
+ "solid",
42314
+ "dashed",
42315
+ "dotted",
42316
+ "double"
42317
+ ];
42318
+ const scaleBlendMode = () => [
42319
+ "normal",
42320
+ "multiply",
42321
+ "screen",
42322
+ "overlay",
42323
+ "darken",
42324
+ "lighten",
42325
+ "color-dodge",
42326
+ "color-burn",
42327
+ "hard-light",
42328
+ "soft-light",
42329
+ "difference",
42330
+ "exclusion",
42331
+ "hue",
42332
+ "saturation",
42333
+ "color",
42334
+ "luminosity"
42335
+ ];
42336
+ const scaleMaskImagePosition = () => [
42337
+ isNumber,
42338
+ isPercent,
42339
+ isArbitraryVariablePosition,
42340
+ isArbitraryPosition
42341
+ ];
42342
+ const scaleBlur = () => [
42343
+ "",
42344
+ "none",
42345
+ themeBlur,
42346
+ isArbitraryVariable,
42347
+ isArbitraryValue
42348
+ ];
42349
+ const scaleRotate = () => [
42350
+ "none",
42351
+ isNumber,
42352
+ isArbitraryVariable,
42353
+ isArbitraryValue
42354
+ ];
42355
+ const scaleScale = () => [
42356
+ "none",
42357
+ isNumber,
42358
+ isArbitraryVariable,
42359
+ isArbitraryValue
42360
+ ];
42361
+ const scaleSkew = () => [
42362
+ isNumber,
42363
+ isArbitraryVariable,
42364
+ isArbitraryValue
42365
+ ];
42366
+ const scaleTranslate = () => [
42367
+ isFraction,
42368
+ "full",
42369
+ ...scaleUnambiguousSpacing()
42370
+ ];
42371
+ return {
42372
+ cacheSize: 500,
42373
+ theme: {
42374
+ animate: [
42375
+ "spin",
42376
+ "ping",
42377
+ "pulse",
42378
+ "bounce"
42379
+ ],
42380
+ aspect: ["video"],
42381
+ blur: [isTshirtSize],
42382
+ breakpoint: [isTshirtSize],
42383
+ color: [isAny],
42384
+ container: [isTshirtSize],
42385
+ "drop-shadow": [isTshirtSize],
42386
+ ease: [
42387
+ "in",
42388
+ "out",
42389
+ "in-out"
42390
+ ],
42391
+ font: [isAnyNonArbitrary],
42392
+ "font-weight": [
42393
+ "thin",
42394
+ "extralight",
42395
+ "light",
42396
+ "normal",
42397
+ "medium",
42398
+ "semibold",
42399
+ "bold",
42400
+ "extrabold",
42401
+ "black"
42402
+ ],
42403
+ "inset-shadow": [isTshirtSize],
42404
+ leading: [
42405
+ "none",
42406
+ "tight",
42407
+ "snug",
42408
+ "normal",
42409
+ "relaxed",
42410
+ "loose"
42411
+ ],
42412
+ perspective: [
42413
+ "dramatic",
42414
+ "near",
42415
+ "normal",
42416
+ "midrange",
42417
+ "distant",
42418
+ "none"
42419
+ ],
42420
+ radius: [isTshirtSize],
42421
+ shadow: [isTshirtSize],
42422
+ spacing: ["px", isNumber],
42423
+ text: [isTshirtSize],
42424
+ "text-shadow": [isTshirtSize],
42425
+ tracking: [
42426
+ "tighter",
42427
+ "tight",
42428
+ "normal",
42429
+ "wide",
42430
+ "wider",
42431
+ "widest"
42432
+ ]
42433
+ },
42434
+ classGroups: {
42435
+ /**
42436
+ * Aspect Ratio
42437
+ * @see https://tailwindcss.com/docs/aspect-ratio
42438
+ */
42439
+ aspect: [{ aspect: [
42440
+ "auto",
42441
+ "square",
42442
+ isFraction,
42443
+ isArbitraryValue,
42444
+ isArbitraryVariable,
42445
+ themeAspect
42446
+ ] }],
42447
+ /**
42448
+ * Container
42449
+ * @see https://tailwindcss.com/docs/container
42450
+ * @deprecated since Tailwind CSS v4.0.0
42451
+ */
42452
+ container: ["container"],
42453
+ /**
42454
+ * Container Type
42455
+ * @see https://tailwindcss.com/docs/responsive-design#container-queries
42456
+ */
42457
+ "container-type": [{ "@container": [
42458
+ "",
42459
+ "normal",
42460
+ "size",
42461
+ isArbitraryVariable,
42462
+ isArbitraryValue
42463
+ ] }],
42464
+ /**
42465
+ * Container Name
42466
+ * @see https://tailwindcss.com/docs/responsive-design#named-containers
42467
+ */
42468
+ "container-named": [isNamedContainerQuery],
42469
+ /**
42470
+ * Columns
42471
+ * @see https://tailwindcss.com/docs/columns
42472
+ */
42473
+ columns: [{ columns: [
42474
+ isNumber,
42475
+ isArbitraryValue,
42476
+ isArbitraryVariable,
42477
+ themeContainer
42478
+ ] }],
42479
+ /**
42480
+ * Break After
42481
+ * @see https://tailwindcss.com/docs/break-after
42482
+ */
42483
+ "break-after": [{ "break-after": scaleBreak() }],
42484
+ /**
42485
+ * Break Before
42486
+ * @see https://tailwindcss.com/docs/break-before
42487
+ */
42488
+ "break-before": [{ "break-before": scaleBreak() }],
42489
+ /**
42490
+ * Break Inside
42491
+ * @see https://tailwindcss.com/docs/break-inside
42492
+ */
42493
+ "break-inside": [{ "break-inside": [
42494
+ "auto",
42495
+ "avoid",
42496
+ "avoid-page",
42497
+ "avoid-column"
42498
+ ] }],
42499
+ /**
42500
+ * Box Decoration Break
42501
+ * @see https://tailwindcss.com/docs/box-decoration-break
42502
+ */
42503
+ "box-decoration": [{ "box-decoration": ["slice", "clone"] }],
42504
+ /**
42505
+ * Box Sizing
42506
+ * @see https://tailwindcss.com/docs/box-sizing
42507
+ */
42508
+ box: [{ box: ["border", "content"] }],
42509
+ /**
42510
+ * Display
42511
+ * @see https://tailwindcss.com/docs/display
42512
+ */
42513
+ display: [
42514
+ "block",
42515
+ "inline-block",
42516
+ "inline",
42517
+ "flex",
42518
+ "inline-flex",
42519
+ "table",
42520
+ "inline-table",
42521
+ "table-caption",
42522
+ "table-cell",
42523
+ "table-column",
42524
+ "table-column-group",
42525
+ "table-footer-group",
42526
+ "table-header-group",
42527
+ "table-row-group",
42528
+ "table-row",
42529
+ "flow-root",
42530
+ "grid",
42531
+ "inline-grid",
42532
+ "contents",
42533
+ "list-item",
42534
+ "hidden"
42535
+ ],
42536
+ /**
42537
+ * Screen Reader Only
42538
+ * @see https://tailwindcss.com/docs/display#screen-reader-only
42539
+ */
42540
+ sr: ["sr-only", "not-sr-only"],
42541
+ /**
42542
+ * Floats
42543
+ * @see https://tailwindcss.com/docs/float
42544
+ */
42545
+ float: [{ float: [
42546
+ "right",
42547
+ "left",
42548
+ "none",
42549
+ "start",
42550
+ "end"
42551
+ ] }],
42552
+ /**
42553
+ * Clear
42554
+ * @see https://tailwindcss.com/docs/clear
42555
+ */
42556
+ clear: [{ clear: [
42557
+ "left",
42558
+ "right",
42559
+ "both",
42560
+ "none",
42561
+ "start",
42562
+ "end"
42563
+ ] }],
42564
+ /**
42565
+ * Isolation
42566
+ * @see https://tailwindcss.com/docs/isolation
42567
+ */
42568
+ isolation: ["isolate", "isolation-auto"],
42569
+ /**
42570
+ * Object Fit
42571
+ * @see https://tailwindcss.com/docs/object-fit
42572
+ */
42573
+ "object-fit": [{ object: [
42574
+ "contain",
42575
+ "cover",
42576
+ "fill",
42577
+ "none",
42578
+ "scale-down"
42579
+ ] }],
42580
+ /**
42581
+ * Object Position
42582
+ * @see https://tailwindcss.com/docs/object-position
42583
+ */
42584
+ "object-position": [{ object: scalePositionWithArbitrary() }],
42585
+ /**
42586
+ * Overflow
42587
+ * @see https://tailwindcss.com/docs/overflow
42588
+ */
42589
+ overflow: [{ overflow: scaleOverflow() }],
42590
+ /**
42591
+ * Overflow X
42592
+ * @see https://tailwindcss.com/docs/overflow
42593
+ */
42594
+ "overflow-x": [{ "overflow-x": scaleOverflow() }],
42595
+ /**
42596
+ * Overflow Y
42597
+ * @see https://tailwindcss.com/docs/overflow
42598
+ */
42599
+ "overflow-y": [{ "overflow-y": scaleOverflow() }],
42600
+ /**
42601
+ * Overscroll Behavior
42602
+ * @see https://tailwindcss.com/docs/overscroll-behavior
42603
+ */
42604
+ overscroll: [{ overscroll: scaleOverscroll() }],
42605
+ /**
42606
+ * Overscroll Behavior X
42607
+ * @see https://tailwindcss.com/docs/overscroll-behavior
42608
+ */
42609
+ "overscroll-x": [{ "overscroll-x": scaleOverscroll() }],
42610
+ /**
42611
+ * Overscroll Behavior Y
42612
+ * @see https://tailwindcss.com/docs/overscroll-behavior
42613
+ */
42614
+ "overscroll-y": [{ "overscroll-y": scaleOverscroll() }],
42615
+ /**
42616
+ * Position
42617
+ * @see https://tailwindcss.com/docs/position
42618
+ */
42619
+ position: [
42620
+ "static",
42621
+ "fixed",
42622
+ "absolute",
42623
+ "relative",
42624
+ "sticky"
42625
+ ],
42626
+ /**
42627
+ * Inset
42628
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
42629
+ */
42630
+ inset: [{ inset: scaleInset() }],
42631
+ /**
42632
+ * Inset Inline
42633
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
42634
+ */
42635
+ "inset-x": [{ "inset-x": scaleInset() }],
42636
+ /**
42637
+ * Inset Block
42638
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
42639
+ */
42640
+ "inset-y": [{ "inset-y": scaleInset() }],
42641
+ /**
42642
+ * Inset Inline Start
42643
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
42644
+ * @todo class group will be renamed to `inset-s` in next major release
42645
+ */
42646
+ start: [{
42647
+ "inset-s": scaleInset(),
42648
+ /**
42649
+ * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-s-*` utilities.
42650
+ * @see https://github.com/tailwindlabs/tailwindcss/pull/19613
42651
+ */
42652
+ start: scaleInset()
42653
+ }],
42654
+ /**
42655
+ * Inset Inline End
42656
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
42657
+ * @todo class group will be renamed to `inset-e` in next major release
42658
+ */
42659
+ end: [{
42660
+ "inset-e": scaleInset(),
42661
+ /**
42662
+ * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-e-*` utilities.
42663
+ * @see https://github.com/tailwindlabs/tailwindcss/pull/19613
42664
+ */
42665
+ end: scaleInset()
42666
+ }],
42667
+ /**
42668
+ * Inset Block Start
42669
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
42670
+ */
42671
+ "inset-bs": [{ "inset-bs": scaleInset() }],
42672
+ /**
42673
+ * Inset Block End
42674
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
42675
+ */
42676
+ "inset-be": [{ "inset-be": scaleInset() }],
42677
+ /**
42678
+ * Top
42679
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
42680
+ */
42681
+ top: [{ top: scaleInset() }],
42682
+ /**
42683
+ * Right
42684
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
42685
+ */
42686
+ right: [{ right: scaleInset() }],
42687
+ /**
42688
+ * Bottom
42689
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
42690
+ */
42691
+ bottom: [{ bottom: scaleInset() }],
42692
+ /**
42693
+ * Left
42694
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
42695
+ */
42696
+ left: [{ left: scaleInset() }],
42697
+ /**
42698
+ * Visibility
42699
+ * @see https://tailwindcss.com/docs/visibility
42700
+ */
42701
+ visibility: [
42702
+ "visible",
42703
+ "invisible",
42704
+ "collapse"
42705
+ ],
42706
+ /**
42707
+ * Z-Index
42708
+ * @see https://tailwindcss.com/docs/z-index
42709
+ */
42710
+ z: [{ z: [
42711
+ isInteger,
42712
+ "auto",
42713
+ isArbitraryVariable,
42714
+ isArbitraryValue
42715
+ ] }],
42716
+ /**
42717
+ * Flex Basis
42718
+ * @see https://tailwindcss.com/docs/flex-basis
42719
+ */
42720
+ basis: [{ basis: [
42721
+ isFraction,
42722
+ "full",
42723
+ "auto",
42724
+ themeContainer,
42725
+ ...scaleUnambiguousSpacing()
42726
+ ] }],
42727
+ /**
42728
+ * Flex Direction
42729
+ * @see https://tailwindcss.com/docs/flex-direction
42730
+ */
42731
+ "flex-direction": [{ flex: [
42732
+ "row",
42733
+ "row-reverse",
42734
+ "col",
42735
+ "col-reverse"
42736
+ ] }],
42737
+ /**
42738
+ * Flex Wrap
42739
+ * @see https://tailwindcss.com/docs/flex-wrap
42740
+ */
42741
+ "flex-wrap": [{ flex: [
42742
+ "nowrap",
42743
+ "wrap",
42744
+ "wrap-reverse"
42745
+ ] }],
42746
+ /**
42747
+ * Flex
42748
+ * @see https://tailwindcss.com/docs/flex
42749
+ */
42750
+ flex: [{ flex: [
42751
+ isNumber,
42752
+ isFraction,
42753
+ "auto",
42754
+ "initial",
42755
+ "none",
42756
+ isArbitraryValue
42757
+ ] }],
42758
+ /**
42759
+ * Flex Grow
42760
+ * @see https://tailwindcss.com/docs/flex-grow
42761
+ */
42762
+ grow: [{ grow: [
42763
+ "",
42764
+ isNumber,
42765
+ isArbitraryVariable,
42766
+ isArbitraryValue
42767
+ ] }],
42768
+ /**
42769
+ * Flex Shrink
42770
+ * @see https://tailwindcss.com/docs/flex-shrink
42771
+ */
42772
+ shrink: [{ shrink: [
42773
+ "",
42774
+ isNumber,
42775
+ isArbitraryVariable,
42776
+ isArbitraryValue
42777
+ ] }],
42778
+ /**
42779
+ * Order
42780
+ * @see https://tailwindcss.com/docs/order
42781
+ */
42782
+ order: [{ order: [
42783
+ isInteger,
42784
+ "first",
42785
+ "last",
42786
+ "none",
42787
+ isArbitraryVariable,
42788
+ isArbitraryValue
42789
+ ] }],
42790
+ /**
42791
+ * Grid Template Columns
42792
+ * @see https://tailwindcss.com/docs/grid-template-columns
42793
+ */
42794
+ "grid-cols": [{ "grid-cols": scaleGridTemplateColsRows() }],
42795
+ /**
42796
+ * Grid Column Start / End
42797
+ * @see https://tailwindcss.com/docs/grid-column
42798
+ */
42799
+ "col-start-end": [{ col: scaleGridColRowStartAndEnd() }],
42800
+ /**
42801
+ * Grid Column Start
42802
+ * @see https://tailwindcss.com/docs/grid-column
42803
+ */
42804
+ "col-start": [{ "col-start": scaleGridColRowStartOrEnd() }],
42805
+ /**
42806
+ * Grid Column End
42807
+ * @see https://tailwindcss.com/docs/grid-column
42808
+ */
42809
+ "col-end": [{ "col-end": scaleGridColRowStartOrEnd() }],
42810
+ /**
42811
+ * Grid Template Rows
42812
+ * @see https://tailwindcss.com/docs/grid-template-rows
42813
+ */
42814
+ "grid-rows": [{ "grid-rows": scaleGridTemplateColsRows() }],
42815
+ /**
42816
+ * Grid Row Start / End
42817
+ * @see https://tailwindcss.com/docs/grid-row
42818
+ */
42819
+ "row-start-end": [{ row: scaleGridColRowStartAndEnd() }],
42820
+ /**
42821
+ * Grid Row Start
42822
+ * @see https://tailwindcss.com/docs/grid-row
42823
+ */
42824
+ "row-start": [{ "row-start": scaleGridColRowStartOrEnd() }],
42825
+ /**
42826
+ * Grid Row End
42827
+ * @see https://tailwindcss.com/docs/grid-row
42828
+ */
42829
+ "row-end": [{ "row-end": scaleGridColRowStartOrEnd() }],
42830
+ /**
42831
+ * Grid Auto Flow
42832
+ * @see https://tailwindcss.com/docs/grid-auto-flow
42833
+ */
42834
+ "grid-flow": [{ "grid-flow": [
42835
+ "row",
42836
+ "col",
42837
+ "dense",
42838
+ "row-dense",
42839
+ "col-dense"
42840
+ ] }],
42841
+ /**
42842
+ * Grid Auto Columns
42843
+ * @see https://tailwindcss.com/docs/grid-auto-columns
42844
+ */
42845
+ "auto-cols": [{ "auto-cols": scaleGridAutoColsRows() }],
42846
+ /**
42847
+ * Grid Auto Rows
42848
+ * @see https://tailwindcss.com/docs/grid-auto-rows
42849
+ */
42850
+ "auto-rows": [{ "auto-rows": scaleGridAutoColsRows() }],
42851
+ /**
42852
+ * Gap
42853
+ * @see https://tailwindcss.com/docs/gap
42854
+ */
42855
+ gap: [{ gap: scaleUnambiguousSpacing() }],
42856
+ /**
42857
+ * Gap X
42858
+ * @see https://tailwindcss.com/docs/gap
42859
+ */
42860
+ "gap-x": [{ "gap-x": scaleUnambiguousSpacing() }],
42861
+ /**
42862
+ * Gap Y
42863
+ * @see https://tailwindcss.com/docs/gap
42864
+ */
42865
+ "gap-y": [{ "gap-y": scaleUnambiguousSpacing() }],
42866
+ /**
42867
+ * Justify Content
42868
+ * @see https://tailwindcss.com/docs/justify-content
42869
+ */
42870
+ "justify-content": [{ justify: [...scaleAlignPrimaryAxis(), "normal"] }],
42871
+ /**
42872
+ * Justify Items
42873
+ * @see https://tailwindcss.com/docs/justify-items
42874
+ */
42875
+ "justify-items": [{ "justify-items": [...scaleAlignSecondaryAxis(), "normal"] }],
42876
+ /**
42877
+ * Justify Self
42878
+ * @see https://tailwindcss.com/docs/justify-self
42879
+ */
42880
+ "justify-self": [{ "justify-self": ["auto", ...scaleAlignSecondaryAxis()] }],
42881
+ /**
42882
+ * Align Content
42883
+ * @see https://tailwindcss.com/docs/align-content
42884
+ */
42885
+ "align-content": [{ content: ["normal", ...scaleAlignPrimaryAxis()] }],
42886
+ /**
42887
+ * Align Items
42888
+ * @see https://tailwindcss.com/docs/align-items
42889
+ */
42890
+ "align-items": [{ items: [...scaleAlignSecondaryAxis(), { baseline: ["", "last"] }] }],
42891
+ /**
42892
+ * Align Self
42893
+ * @see https://tailwindcss.com/docs/align-self
42894
+ */
42895
+ "align-self": [{ self: [
42896
+ "auto",
42897
+ ...scaleAlignSecondaryAxis(),
42898
+ { baseline: ["", "last"] }
42899
+ ] }],
42900
+ /**
42901
+ * Place Content
42902
+ * @see https://tailwindcss.com/docs/place-content
42903
+ */
42904
+ "place-content": [{ "place-content": scaleAlignPrimaryAxis() }],
42905
+ /**
42906
+ * Place Items
42907
+ * @see https://tailwindcss.com/docs/place-items
42908
+ */
42909
+ "place-items": [{ "place-items": [...scaleAlignSecondaryAxis(), "baseline"] }],
42910
+ /**
42911
+ * Place Self
42912
+ * @see https://tailwindcss.com/docs/place-self
42913
+ */
42914
+ "place-self": [{ "place-self": ["auto", ...scaleAlignSecondaryAxis()] }],
42915
+ /**
42916
+ * Padding
42917
+ * @see https://tailwindcss.com/docs/padding
42918
+ */
42919
+ p: [{ p: scaleUnambiguousSpacing() }],
42920
+ /**
42921
+ * Padding Inline
42922
+ * @see https://tailwindcss.com/docs/padding
42923
+ */
42924
+ px: [{ px: scaleUnambiguousSpacing() }],
42925
+ /**
42926
+ * Padding Block
42927
+ * @see https://tailwindcss.com/docs/padding
42928
+ */
42929
+ py: [{ py: scaleUnambiguousSpacing() }],
42930
+ /**
42931
+ * Padding Inline Start
42932
+ * @see https://tailwindcss.com/docs/padding
42933
+ */
42934
+ ps: [{ ps: scaleUnambiguousSpacing() }],
42935
+ /**
42936
+ * Padding Inline End
42937
+ * @see https://tailwindcss.com/docs/padding
42938
+ */
42939
+ pe: [{ pe: scaleUnambiguousSpacing() }],
42940
+ /**
42941
+ * Padding Block Start
42942
+ * @see https://tailwindcss.com/docs/padding
42943
+ */
42944
+ pbs: [{ pbs: scaleUnambiguousSpacing() }],
42945
+ /**
42946
+ * Padding Block End
42947
+ * @see https://tailwindcss.com/docs/padding
42948
+ */
42949
+ pbe: [{ pbe: scaleUnambiguousSpacing() }],
42950
+ /**
42951
+ * Padding Top
42952
+ * @see https://tailwindcss.com/docs/padding
42953
+ */
42954
+ pt: [{ pt: scaleUnambiguousSpacing() }],
42955
+ /**
42956
+ * Padding Right
42957
+ * @see https://tailwindcss.com/docs/padding
42958
+ */
42959
+ pr: [{ pr: scaleUnambiguousSpacing() }],
42960
+ /**
42961
+ * Padding Bottom
42962
+ * @see https://tailwindcss.com/docs/padding
42963
+ */
42964
+ pb: [{ pb: scaleUnambiguousSpacing() }],
42965
+ /**
42966
+ * Padding Left
42967
+ * @see https://tailwindcss.com/docs/padding
42968
+ */
42969
+ pl: [{ pl: scaleUnambiguousSpacing() }],
42970
+ /**
42971
+ * Margin
42972
+ * @see https://tailwindcss.com/docs/margin
42973
+ */
42974
+ m: [{ m: scaleMargin() }],
42975
+ /**
42976
+ * Margin Inline
42977
+ * @see https://tailwindcss.com/docs/margin
42978
+ */
42979
+ mx: [{ mx: scaleMargin() }],
42980
+ /**
42981
+ * Margin Block
42982
+ * @see https://tailwindcss.com/docs/margin
42983
+ */
42984
+ my: [{ my: scaleMargin() }],
42985
+ /**
42986
+ * Margin Inline Start
42987
+ * @see https://tailwindcss.com/docs/margin
42988
+ */
42989
+ ms: [{ ms: scaleMargin() }],
42990
+ /**
42991
+ * Margin Inline End
42992
+ * @see https://tailwindcss.com/docs/margin
42993
+ */
42994
+ me: [{ me: scaleMargin() }],
42995
+ /**
42996
+ * Margin Block Start
42997
+ * @see https://tailwindcss.com/docs/margin
42998
+ */
42999
+ mbs: [{ mbs: scaleMargin() }],
43000
+ /**
43001
+ * Margin Block End
43002
+ * @see https://tailwindcss.com/docs/margin
43003
+ */
43004
+ mbe: [{ mbe: scaleMargin() }],
43005
+ /**
43006
+ * Margin Top
43007
+ * @see https://tailwindcss.com/docs/margin
43008
+ */
43009
+ mt: [{ mt: scaleMargin() }],
43010
+ /**
43011
+ * Margin Right
43012
+ * @see https://tailwindcss.com/docs/margin
43013
+ */
43014
+ mr: [{ mr: scaleMargin() }],
43015
+ /**
43016
+ * Margin Bottom
43017
+ * @see https://tailwindcss.com/docs/margin
43018
+ */
43019
+ mb: [{ mb: scaleMargin() }],
43020
+ /**
43021
+ * Margin Left
43022
+ * @see https://tailwindcss.com/docs/margin
43023
+ */
43024
+ ml: [{ ml: scaleMargin() }],
43025
+ /**
43026
+ * Space Between X
43027
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
43028
+ */
43029
+ "space-x": [{ "space-x": scaleUnambiguousSpacing() }],
43030
+ /**
43031
+ * Space Between X Reverse
43032
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
43033
+ */
43034
+ "space-x-reverse": ["space-x-reverse"],
43035
+ /**
43036
+ * Space Between Y
43037
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
43038
+ */
43039
+ "space-y": [{ "space-y": scaleUnambiguousSpacing() }],
43040
+ /**
43041
+ * Space Between Y Reverse
43042
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
43043
+ */
43044
+ "space-y-reverse": ["space-y-reverse"],
43045
+ /**
43046
+ * Size
43047
+ * @see https://tailwindcss.com/docs/width#setting-both-width-and-height
43048
+ */
43049
+ size: [{ size: scaleSizing() }],
43050
+ /**
43051
+ * Inline Size
43052
+ * @see https://tailwindcss.com/docs/width
43053
+ */
43054
+ "inline-size": [{ inline: ["auto", ...scaleSizingInline()] }],
43055
+ /**
43056
+ * Min-Inline Size
43057
+ * @see https://tailwindcss.com/docs/min-width
43058
+ */
43059
+ "min-inline-size": [{ "min-inline": ["auto", ...scaleSizingInline()] }],
43060
+ /**
43061
+ * Max-Inline Size
43062
+ * @see https://tailwindcss.com/docs/max-width
43063
+ */
43064
+ "max-inline-size": [{ "max-inline": ["none", ...scaleSizingInline()] }],
43065
+ /**
43066
+ * Block Size
43067
+ * @see https://tailwindcss.com/docs/height
43068
+ */
43069
+ "block-size": [{ block: ["auto", ...scaleSizingBlock()] }],
43070
+ /**
43071
+ * Min-Block Size
43072
+ * @see https://tailwindcss.com/docs/min-height
43073
+ */
43074
+ "min-block-size": [{ "min-block": ["auto", ...scaleSizingBlock()] }],
43075
+ /**
43076
+ * Max-Block Size
43077
+ * @see https://tailwindcss.com/docs/max-height
43078
+ */
43079
+ "max-block-size": [{ "max-block": ["none", ...scaleSizingBlock()] }],
43080
+ /**
43081
+ * Width
43082
+ * @see https://tailwindcss.com/docs/width
43083
+ */
43084
+ w: [{ w: [
43085
+ themeContainer,
43086
+ "screen",
43087
+ ...scaleSizing()
43088
+ ] }],
43089
+ /**
43090
+ * Min-Width
43091
+ * @see https://tailwindcss.com/docs/min-width
43092
+ */
43093
+ "min-w": [{ "min-w": [
43094
+ themeContainer,
43095
+ "screen",
43096
+ "none",
43097
+ ...scaleSizing()
43098
+ ] }],
43099
+ /**
43100
+ * Max-Width
43101
+ * @see https://tailwindcss.com/docs/max-width
43102
+ */
43103
+ "max-w": [{ "max-w": [
43104
+ themeContainer,
43105
+ "screen",
43106
+ "none",
43107
+ "prose",
43108
+ { screen: [themeBreakpoint] },
43109
+ ...scaleSizing()
43110
+ ] }],
43111
+ /**
43112
+ * Height
43113
+ * @see https://tailwindcss.com/docs/height
43114
+ */
43115
+ h: [{ h: [
43116
+ "screen",
43117
+ "lh",
43118
+ ...scaleSizing()
43119
+ ] }],
43120
+ /**
43121
+ * Min-Height
43122
+ * @see https://tailwindcss.com/docs/min-height
43123
+ */
43124
+ "min-h": [{ "min-h": [
43125
+ "screen",
43126
+ "lh",
43127
+ "none",
43128
+ ...scaleSizing()
43129
+ ] }],
43130
+ /**
43131
+ * Max-Height
43132
+ * @see https://tailwindcss.com/docs/max-height
43133
+ */
43134
+ "max-h": [{ "max-h": [
43135
+ "screen",
43136
+ "lh",
43137
+ ...scaleSizing()
43138
+ ] }],
43139
+ /**
43140
+ * Font Size
43141
+ * @see https://tailwindcss.com/docs/font-size
43142
+ */
43143
+ "font-size": [{ text: [
43144
+ "base",
43145
+ themeText,
43146
+ isArbitraryVariableLength,
43147
+ isArbitraryLength
43148
+ ] }],
43149
+ /**
43150
+ * Font Smoothing
43151
+ * @see https://tailwindcss.com/docs/font-smoothing
43152
+ */
43153
+ "font-smoothing": ["antialiased", "subpixel-antialiased"],
43154
+ /**
43155
+ * Font Style
43156
+ * @see https://tailwindcss.com/docs/font-style
43157
+ */
43158
+ "font-style": ["italic", "not-italic"],
43159
+ /**
43160
+ * Font Weight
43161
+ * @see https://tailwindcss.com/docs/font-weight
43162
+ */
43163
+ "font-weight": [{ font: [
43164
+ themeFontWeight,
43165
+ isArbitraryVariableWeight,
43166
+ isArbitraryWeight
43167
+ ] }],
43168
+ /**
43169
+ * Font Stretch
43170
+ * @see https://tailwindcss.com/docs/font-stretch
43171
+ */
43172
+ "font-stretch": [{ "font-stretch": [
43173
+ "ultra-condensed",
43174
+ "extra-condensed",
43175
+ "condensed",
43176
+ "semi-condensed",
43177
+ "normal",
43178
+ "semi-expanded",
43179
+ "expanded",
43180
+ "extra-expanded",
43181
+ "ultra-expanded",
43182
+ isPercent,
43183
+ isArbitraryValue
43184
+ ] }],
43185
+ /**
43186
+ * Font Family
43187
+ * @see https://tailwindcss.com/docs/font-family
43188
+ */
43189
+ "font-family": [{ font: [
43190
+ isArbitraryVariableFamilyName,
43191
+ isArbitraryFamilyName,
43192
+ themeFont
43193
+ ] }],
43194
+ /**
43195
+ * Font Feature Settings
43196
+ * @see https://tailwindcss.com/docs/font-feature-settings
43197
+ */
43198
+ "font-features": [{ "font-features": [isArbitraryValue] }],
43199
+ /**
43200
+ * Font Variant Numeric
43201
+ * @see https://tailwindcss.com/docs/font-variant-numeric
43202
+ */
43203
+ "fvn-normal": ["normal-nums"],
43204
+ /**
43205
+ * Font Variant Numeric
43206
+ * @see https://tailwindcss.com/docs/font-variant-numeric
43207
+ */
43208
+ "fvn-ordinal": ["ordinal"],
43209
+ /**
43210
+ * Font Variant Numeric
43211
+ * @see https://tailwindcss.com/docs/font-variant-numeric
43212
+ */
43213
+ "fvn-slashed-zero": ["slashed-zero"],
43214
+ /**
43215
+ * Font Variant Numeric
43216
+ * @see https://tailwindcss.com/docs/font-variant-numeric
43217
+ */
43218
+ "fvn-figure": ["lining-nums", "oldstyle-nums"],
43219
+ /**
43220
+ * Font Variant Numeric
43221
+ * @see https://tailwindcss.com/docs/font-variant-numeric
43222
+ */
43223
+ "fvn-spacing": ["proportional-nums", "tabular-nums"],
43224
+ /**
43225
+ * Font Variant Numeric
43226
+ * @see https://tailwindcss.com/docs/font-variant-numeric
43227
+ */
43228
+ "fvn-fraction": ["diagonal-fractions", "stacked-fractions"],
43229
+ /**
43230
+ * Letter Spacing
43231
+ * @see https://tailwindcss.com/docs/letter-spacing
43232
+ */
43233
+ tracking: [{ tracking: [
43234
+ themeTracking,
43235
+ isArbitraryVariable,
43236
+ isArbitraryValue
43237
+ ] }],
43238
+ /**
43239
+ * Line Clamp
43240
+ * @see https://tailwindcss.com/docs/line-clamp
43241
+ */
43242
+ "line-clamp": [{ "line-clamp": [
43243
+ isNumber,
43244
+ "none",
43245
+ isArbitraryVariable,
43246
+ isArbitraryNumber
43247
+ ] }],
43248
+ /**
43249
+ * Line Height
43250
+ * @see https://tailwindcss.com/docs/line-height
43251
+ */
43252
+ leading: [{ leading: [themeLeading, ...scaleUnambiguousSpacing()] }],
43253
+ /**
43254
+ * List Style Image
43255
+ * @see https://tailwindcss.com/docs/list-style-image
43256
+ */
43257
+ "list-image": [{ "list-image": [
43258
+ "none",
43259
+ isArbitraryVariable,
43260
+ isArbitraryValue
43261
+ ] }],
43262
+ /**
43263
+ * List Style Position
43264
+ * @see https://tailwindcss.com/docs/list-style-position
43265
+ */
43266
+ "list-style-position": [{ list: ["inside", "outside"] }],
43267
+ /**
43268
+ * List Style Type
43269
+ * @see https://tailwindcss.com/docs/list-style-type
43270
+ */
43271
+ "list-style-type": [{ list: [
43272
+ "disc",
43273
+ "decimal",
43274
+ "none",
43275
+ isArbitraryVariable,
43276
+ isArbitraryValue
43277
+ ] }],
43278
+ /**
43279
+ * Text Alignment
43280
+ * @see https://tailwindcss.com/docs/text-align
43281
+ */
43282
+ "text-alignment": [{ text: [
43283
+ "left",
43284
+ "center",
43285
+ "right",
43286
+ "justify",
43287
+ "start",
43288
+ "end"
43289
+ ] }],
43290
+ /**
43291
+ * Placeholder Color
43292
+ * @deprecated since Tailwind CSS v3.0.0
43293
+ * @see https://v3.tailwindcss.com/docs/placeholder-color
43294
+ */
43295
+ "placeholder-color": [{ placeholder: scaleColor() }],
43296
+ /**
43297
+ * Text Color
43298
+ * @see https://tailwindcss.com/docs/text-color
43299
+ */
43300
+ "text-color": [{ text: scaleColor() }],
43301
+ /**
43302
+ * Text Decoration
43303
+ * @see https://tailwindcss.com/docs/text-decoration
43304
+ */
43305
+ "text-decoration": [
43306
+ "underline",
43307
+ "overline",
43308
+ "line-through",
43309
+ "no-underline"
43310
+ ],
43311
+ /**
43312
+ * Text Decoration Style
43313
+ * @see https://tailwindcss.com/docs/text-decoration-style
43314
+ */
43315
+ "text-decoration-style": [{ decoration: [...scaleLineStyle(), "wavy"] }],
43316
+ /**
43317
+ * Text Decoration Thickness
43318
+ * @see https://tailwindcss.com/docs/text-decoration-thickness
43319
+ */
43320
+ "text-decoration-thickness": [{ decoration: [
43321
+ isNumber,
43322
+ "from-font",
43323
+ "auto",
43324
+ isArbitraryVariable,
43325
+ isArbitraryLength
43326
+ ] }],
43327
+ /**
43328
+ * Text Decoration Color
43329
+ * @see https://tailwindcss.com/docs/text-decoration-color
43330
+ */
43331
+ "text-decoration-color": [{ decoration: scaleColor() }],
43332
+ /**
43333
+ * Text Underline Offset
43334
+ * @see https://tailwindcss.com/docs/text-underline-offset
43335
+ */
43336
+ "underline-offset": [{ "underline-offset": [
43337
+ isNumber,
43338
+ "auto",
43339
+ isArbitraryVariable,
43340
+ isArbitraryValue
43341
+ ] }],
43342
+ /**
43343
+ * Text Transform
43344
+ * @see https://tailwindcss.com/docs/text-transform
43345
+ */
43346
+ "text-transform": [
43347
+ "uppercase",
43348
+ "lowercase",
43349
+ "capitalize",
43350
+ "normal-case"
43351
+ ],
43352
+ /**
43353
+ * Text Overflow
43354
+ * @see https://tailwindcss.com/docs/text-overflow
43355
+ */
43356
+ "text-overflow": [
43357
+ "truncate",
43358
+ "text-ellipsis",
43359
+ "text-clip"
43360
+ ],
43361
+ /**
43362
+ * Text Wrap
43363
+ * @see https://tailwindcss.com/docs/text-wrap
43364
+ */
43365
+ "text-wrap": [{ text: [
43366
+ "wrap",
43367
+ "nowrap",
43368
+ "balance",
43369
+ "pretty"
43370
+ ] }],
43371
+ /**
43372
+ * Text Indent
43373
+ * @see https://tailwindcss.com/docs/text-indent
43374
+ */
43375
+ indent: [{ indent: scaleUnambiguousSpacing() }],
43376
+ /**
43377
+ * Tab Size
43378
+ * @see https://tailwindcss.com/docs/tab-size
43379
+ */
43380
+ "tab-size": [{ tab: [
43381
+ isInteger,
43382
+ isArbitraryVariable,
43383
+ isArbitraryValue
43384
+ ] }],
43385
+ /**
43386
+ * Vertical Alignment
43387
+ * @see https://tailwindcss.com/docs/vertical-align
43388
+ */
43389
+ "vertical-align": [{ align: [
43390
+ "baseline",
43391
+ "top",
43392
+ "middle",
43393
+ "bottom",
43394
+ "text-top",
43395
+ "text-bottom",
43396
+ "sub",
43397
+ "super",
43398
+ isArbitraryVariable,
43399
+ isArbitraryValue
43400
+ ] }],
43401
+ /**
43402
+ * Whitespace
43403
+ * @see https://tailwindcss.com/docs/whitespace
43404
+ */
43405
+ whitespace: [{ whitespace: [
43406
+ "normal",
43407
+ "nowrap",
43408
+ "pre",
43409
+ "pre-line",
43410
+ "pre-wrap",
43411
+ "break-spaces"
43412
+ ] }],
43413
+ /**
43414
+ * Word Break
43415
+ * @see https://tailwindcss.com/docs/word-break
43416
+ */
43417
+ break: [{ break: [
43418
+ "normal",
43419
+ "words",
43420
+ "all",
43421
+ "keep"
43422
+ ] }],
43423
+ /**
43424
+ * Overflow Wrap
43425
+ * @see https://tailwindcss.com/docs/overflow-wrap
43426
+ */
43427
+ wrap: [{ wrap: [
43428
+ "break-word",
43429
+ "anywhere",
43430
+ "normal"
43431
+ ] }],
43432
+ /**
43433
+ * Hyphens
43434
+ * @see https://tailwindcss.com/docs/hyphens
43435
+ */
43436
+ hyphens: [{ hyphens: [
43437
+ "none",
43438
+ "manual",
43439
+ "auto"
43440
+ ] }],
43441
+ /**
43442
+ * Content
43443
+ * @see https://tailwindcss.com/docs/content
43444
+ */
43445
+ content: [{ content: [
43446
+ "none",
43447
+ isArbitraryVariable,
43448
+ isArbitraryValue
43449
+ ] }],
43450
+ /**
43451
+ * Background Attachment
43452
+ * @see https://tailwindcss.com/docs/background-attachment
43453
+ */
43454
+ "bg-attachment": [{ bg: [
43455
+ "fixed",
43456
+ "local",
43457
+ "scroll"
43458
+ ] }],
43459
+ /**
43460
+ * Background Clip
43461
+ * @see https://tailwindcss.com/docs/background-clip
43462
+ */
43463
+ "bg-clip": [{ "bg-clip": [
43464
+ "border",
43465
+ "padding",
43466
+ "content",
43467
+ "text"
43468
+ ] }],
43469
+ /**
43470
+ * Background Origin
43471
+ * @see https://tailwindcss.com/docs/background-origin
43472
+ */
43473
+ "bg-origin": [{ "bg-origin": [
43474
+ "border",
43475
+ "padding",
43476
+ "content"
43477
+ ] }],
43478
+ /**
43479
+ * Background Position
43480
+ * @see https://tailwindcss.com/docs/background-position
43481
+ */
43482
+ "bg-position": [{ bg: scaleBgPosition() }],
43483
+ /**
43484
+ * Background Repeat
43485
+ * @see https://tailwindcss.com/docs/background-repeat
43486
+ */
43487
+ "bg-repeat": [{ bg: scaleBgRepeat() }],
43488
+ /**
43489
+ * Background Size
43490
+ * @see https://tailwindcss.com/docs/background-size
43491
+ */
43492
+ "bg-size": [{ bg: scaleBgSize() }],
43493
+ /**
43494
+ * Background Image
43495
+ * @see https://tailwindcss.com/docs/background-image
43496
+ */
43497
+ "bg-image": [{ bg: [
43498
+ "none",
43499
+ {
43500
+ linear: [
43501
+ { to: [
43502
+ "t",
43503
+ "tr",
43504
+ "r",
43505
+ "br",
43506
+ "b",
43507
+ "bl",
43508
+ "l",
43509
+ "tl"
43510
+ ] },
43511
+ isInteger,
43512
+ isArbitraryVariable,
43513
+ isArbitraryValue
43514
+ ],
43515
+ radial: [
43516
+ "",
43517
+ isArbitraryVariable,
43518
+ isArbitraryValue
43519
+ ],
43520
+ conic: [
43521
+ isInteger,
43522
+ isArbitraryVariable,
43523
+ isArbitraryValue
43524
+ ]
43525
+ },
43526
+ isArbitraryVariableImage,
43527
+ isArbitraryImage
43528
+ ] }],
43529
+ /**
43530
+ * Background Color
43531
+ * @see https://tailwindcss.com/docs/background-color
43532
+ */
43533
+ "bg-color": [{ bg: scaleColor() }],
43534
+ /**
43535
+ * Gradient Color Stops From Position
43536
+ * @see https://tailwindcss.com/docs/gradient-color-stops
43537
+ */
43538
+ "gradient-from-pos": [{ from: scaleGradientStopPosition() }],
43539
+ /**
43540
+ * Gradient Color Stops Via Position
43541
+ * @see https://tailwindcss.com/docs/gradient-color-stops
43542
+ */
43543
+ "gradient-via-pos": [{ via: scaleGradientStopPosition() }],
43544
+ /**
43545
+ * Gradient Color Stops To Position
43546
+ * @see https://tailwindcss.com/docs/gradient-color-stops
43547
+ */
43548
+ "gradient-to-pos": [{ to: scaleGradientStopPosition() }],
43549
+ /**
43550
+ * Gradient Color Stops From
43551
+ * @see https://tailwindcss.com/docs/gradient-color-stops
43552
+ */
43553
+ "gradient-from": [{ from: scaleColor() }],
43554
+ /**
43555
+ * Gradient Color Stops Via
43556
+ * @see https://tailwindcss.com/docs/gradient-color-stops
43557
+ */
43558
+ "gradient-via": [{ via: scaleColor() }],
43559
+ /**
43560
+ * Gradient Color Stops To
43561
+ * @see https://tailwindcss.com/docs/gradient-color-stops
43562
+ */
43563
+ "gradient-to": [{ to: scaleColor() }],
43564
+ /**
43565
+ * Border Radius
43566
+ * @see https://tailwindcss.com/docs/border-radius
43567
+ */
43568
+ rounded: [{ rounded: scaleRadius() }],
43569
+ /**
43570
+ * Border Radius Start
43571
+ * @see https://tailwindcss.com/docs/border-radius
43572
+ */
43573
+ "rounded-s": [{ "rounded-s": scaleRadius() }],
43574
+ /**
43575
+ * Border Radius End
43576
+ * @see https://tailwindcss.com/docs/border-radius
43577
+ */
43578
+ "rounded-e": [{ "rounded-e": scaleRadius() }],
43579
+ /**
43580
+ * Border Radius Top
43581
+ * @see https://tailwindcss.com/docs/border-radius
43582
+ */
43583
+ "rounded-t": [{ "rounded-t": scaleRadius() }],
43584
+ /**
43585
+ * Border Radius Right
43586
+ * @see https://tailwindcss.com/docs/border-radius
43587
+ */
43588
+ "rounded-r": [{ "rounded-r": scaleRadius() }],
43589
+ /**
43590
+ * Border Radius Bottom
43591
+ * @see https://tailwindcss.com/docs/border-radius
43592
+ */
43593
+ "rounded-b": [{ "rounded-b": scaleRadius() }],
43594
+ /**
43595
+ * Border Radius Left
43596
+ * @see https://tailwindcss.com/docs/border-radius
43597
+ */
43598
+ "rounded-l": [{ "rounded-l": scaleRadius() }],
43599
+ /**
43600
+ * Border Radius Start Start
43601
+ * @see https://tailwindcss.com/docs/border-radius
43602
+ */
43603
+ "rounded-ss": [{ "rounded-ss": scaleRadius() }],
43604
+ /**
43605
+ * Border Radius Start End
43606
+ * @see https://tailwindcss.com/docs/border-radius
43607
+ */
43608
+ "rounded-se": [{ "rounded-se": scaleRadius() }],
43609
+ /**
43610
+ * Border Radius End End
43611
+ * @see https://tailwindcss.com/docs/border-radius
43612
+ */
43613
+ "rounded-ee": [{ "rounded-ee": scaleRadius() }],
43614
+ /**
43615
+ * Border Radius End Start
43616
+ * @see https://tailwindcss.com/docs/border-radius
43617
+ */
43618
+ "rounded-es": [{ "rounded-es": scaleRadius() }],
43619
+ /**
43620
+ * Border Radius Top Left
43621
+ * @see https://tailwindcss.com/docs/border-radius
43622
+ */
43623
+ "rounded-tl": [{ "rounded-tl": scaleRadius() }],
43624
+ /**
43625
+ * Border Radius Top Right
43626
+ * @see https://tailwindcss.com/docs/border-radius
43627
+ */
43628
+ "rounded-tr": [{ "rounded-tr": scaleRadius() }],
43629
+ /**
43630
+ * Border Radius Bottom Right
43631
+ * @see https://tailwindcss.com/docs/border-radius
43632
+ */
43633
+ "rounded-br": [{ "rounded-br": scaleRadius() }],
43634
+ /**
43635
+ * Border Radius Bottom Left
43636
+ * @see https://tailwindcss.com/docs/border-radius
43637
+ */
43638
+ "rounded-bl": [{ "rounded-bl": scaleRadius() }],
43639
+ /**
43640
+ * Border Width
43641
+ * @see https://tailwindcss.com/docs/border-width
43642
+ */
43643
+ "border-w": [{ border: scaleBorderWidth() }],
43644
+ /**
43645
+ * Border Width Inline
43646
+ * @see https://tailwindcss.com/docs/border-width
43647
+ */
43648
+ "border-w-x": [{ "border-x": scaleBorderWidth() }],
43649
+ /**
43650
+ * Border Width Block
43651
+ * @see https://tailwindcss.com/docs/border-width
43652
+ */
43653
+ "border-w-y": [{ "border-y": scaleBorderWidth() }],
43654
+ /**
43655
+ * Border Width Inline Start
43656
+ * @see https://tailwindcss.com/docs/border-width
43657
+ */
43658
+ "border-w-s": [{ "border-s": scaleBorderWidth() }],
43659
+ /**
43660
+ * Border Width Inline End
43661
+ * @see https://tailwindcss.com/docs/border-width
43662
+ */
43663
+ "border-w-e": [{ "border-e": scaleBorderWidth() }],
43664
+ /**
43665
+ * Border Width Block Start
43666
+ * @see https://tailwindcss.com/docs/border-width
43667
+ */
43668
+ "border-w-bs": [{ "border-bs": scaleBorderWidth() }],
43669
+ /**
43670
+ * Border Width Block End
43671
+ * @see https://tailwindcss.com/docs/border-width
43672
+ */
43673
+ "border-w-be": [{ "border-be": scaleBorderWidth() }],
43674
+ /**
43675
+ * Border Width Top
43676
+ * @see https://tailwindcss.com/docs/border-width
43677
+ */
43678
+ "border-w-t": [{ "border-t": scaleBorderWidth() }],
43679
+ /**
43680
+ * Border Width Right
43681
+ * @see https://tailwindcss.com/docs/border-width
43682
+ */
43683
+ "border-w-r": [{ "border-r": scaleBorderWidth() }],
43684
+ /**
43685
+ * Border Width Bottom
43686
+ * @see https://tailwindcss.com/docs/border-width
43687
+ */
43688
+ "border-w-b": [{ "border-b": scaleBorderWidth() }],
43689
+ /**
43690
+ * Border Width Left
43691
+ * @see https://tailwindcss.com/docs/border-width
43692
+ */
43693
+ "border-w-l": [{ "border-l": scaleBorderWidth() }],
43694
+ /**
43695
+ * Divide Width X
43696
+ * @see https://tailwindcss.com/docs/border-width#between-children
43697
+ */
43698
+ "divide-x": [{ "divide-x": scaleBorderWidth() }],
43699
+ /**
43700
+ * Divide Width X Reverse
43701
+ * @see https://tailwindcss.com/docs/border-width#between-children
43702
+ */
43703
+ "divide-x-reverse": ["divide-x-reverse"],
43704
+ /**
43705
+ * Divide Width Y
43706
+ * @see https://tailwindcss.com/docs/border-width#between-children
43707
+ */
43708
+ "divide-y": [{ "divide-y": scaleBorderWidth() }],
43709
+ /**
43710
+ * Divide Width Y Reverse
43711
+ * @see https://tailwindcss.com/docs/border-width#between-children
43712
+ */
43713
+ "divide-y-reverse": ["divide-y-reverse"],
43714
+ /**
43715
+ * Border Style
43716
+ * @see https://tailwindcss.com/docs/border-style
43717
+ */
43718
+ "border-style": [{ border: [
43719
+ ...scaleLineStyle(),
43720
+ "hidden",
43721
+ "none"
43722
+ ] }],
43723
+ /**
43724
+ * Divide Style
43725
+ * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style
43726
+ */
43727
+ "divide-style": [{ divide: [
43728
+ ...scaleLineStyle(),
43729
+ "hidden",
43730
+ "none"
43731
+ ] }],
43732
+ /**
43733
+ * Border Color
43734
+ * @see https://tailwindcss.com/docs/border-color
43735
+ */
43736
+ "border-color": [{ border: scaleColor() }],
43737
+ /**
43738
+ * Border Color Inline
43739
+ * @see https://tailwindcss.com/docs/border-color
43740
+ */
43741
+ "border-color-x": [{ "border-x": scaleColor() }],
43742
+ /**
43743
+ * Border Color Block
43744
+ * @see https://tailwindcss.com/docs/border-color
43745
+ */
43746
+ "border-color-y": [{ "border-y": scaleColor() }],
43747
+ /**
43748
+ * Border Color Inline Start
43749
+ * @see https://tailwindcss.com/docs/border-color
43750
+ */
43751
+ "border-color-s": [{ "border-s": scaleColor() }],
43752
+ /**
43753
+ * Border Color Inline End
43754
+ * @see https://tailwindcss.com/docs/border-color
43755
+ */
43756
+ "border-color-e": [{ "border-e": scaleColor() }],
43757
+ /**
43758
+ * Border Color Block Start
43759
+ * @see https://tailwindcss.com/docs/border-color
43760
+ */
43761
+ "border-color-bs": [{ "border-bs": scaleColor() }],
43762
+ /**
43763
+ * Border Color Block End
43764
+ * @see https://tailwindcss.com/docs/border-color
43765
+ */
43766
+ "border-color-be": [{ "border-be": scaleColor() }],
43767
+ /**
43768
+ * Border Color Top
43769
+ * @see https://tailwindcss.com/docs/border-color
43770
+ */
43771
+ "border-color-t": [{ "border-t": scaleColor() }],
43772
+ /**
43773
+ * Border Color Right
43774
+ * @see https://tailwindcss.com/docs/border-color
43775
+ */
43776
+ "border-color-r": [{ "border-r": scaleColor() }],
43777
+ /**
43778
+ * Border Color Bottom
43779
+ * @see https://tailwindcss.com/docs/border-color
43780
+ */
43781
+ "border-color-b": [{ "border-b": scaleColor() }],
43782
+ /**
43783
+ * Border Color Left
43784
+ * @see https://tailwindcss.com/docs/border-color
43785
+ */
43786
+ "border-color-l": [{ "border-l": scaleColor() }],
43787
+ /**
43788
+ * Divide Color
43789
+ * @see https://tailwindcss.com/docs/divide-color
43790
+ */
43791
+ "divide-color": [{ divide: scaleColor() }],
43792
+ /**
43793
+ * Outline Style
43794
+ * @see https://tailwindcss.com/docs/outline-style
43795
+ */
43796
+ "outline-style": [{ outline: [
43797
+ ...scaleLineStyle(),
43798
+ "none",
43799
+ "hidden"
43800
+ ] }],
43801
+ /**
43802
+ * Outline Offset
43803
+ * @see https://tailwindcss.com/docs/outline-offset
43804
+ */
43805
+ "outline-offset": [{ "outline-offset": [
43806
+ isNumber,
43807
+ isArbitraryVariable,
43808
+ isArbitraryValue
43809
+ ] }],
43810
+ /**
43811
+ * Outline Width
43812
+ * @see https://tailwindcss.com/docs/outline-width
43813
+ */
43814
+ "outline-w": [{ outline: [
43815
+ "",
43816
+ isNumber,
43817
+ isArbitraryVariableLength,
43818
+ isArbitraryLength
43819
+ ] }],
43820
+ /**
43821
+ * Outline Color
43822
+ * @see https://tailwindcss.com/docs/outline-color
43823
+ */
43824
+ "outline-color": [{ outline: scaleColor() }],
43825
+ /**
43826
+ * Box Shadow
43827
+ * @see https://tailwindcss.com/docs/box-shadow
43828
+ */
43829
+ shadow: [{ shadow: [
43830
+ "",
43831
+ "none",
43832
+ themeShadow,
43833
+ isArbitraryVariableShadow,
43834
+ isArbitraryShadow
43835
+ ] }],
43836
+ /**
43837
+ * Box Shadow Color
43838
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color
43839
+ */
43840
+ "shadow-color": [{ shadow: scaleColor() }],
43841
+ /**
43842
+ * Inset Box Shadow
43843
+ * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow
43844
+ */
43845
+ "inset-shadow": [{ "inset-shadow": [
43846
+ "none",
43847
+ themeInsetShadow,
43848
+ isArbitraryVariableShadow,
43849
+ isArbitraryShadow
43850
+ ] }],
43851
+ /**
43852
+ * Inset Box Shadow Color
43853
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color
43854
+ */
43855
+ "inset-shadow-color": [{ "inset-shadow": scaleColor() }],
43856
+ /**
43857
+ * Ring Width
43858
+ * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring
43859
+ */
43860
+ "ring-w": [{ ring: scaleBorderWidth() }],
43861
+ /**
43862
+ * Ring Width Inset
43863
+ * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings
43864
+ * @deprecated since Tailwind CSS v4.0.0
43865
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
43866
+ */
43867
+ "ring-w-inset": ["ring-inset"],
43868
+ /**
43869
+ * Ring Color
43870
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color
43871
+ */
43872
+ "ring-color": [{ ring: scaleColor() }],
43873
+ /**
43874
+ * Ring Offset Width
43875
+ * @see https://v3.tailwindcss.com/docs/ring-offset-width
43876
+ * @deprecated since Tailwind CSS v4.0.0
43877
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
43878
+ */
43879
+ "ring-offset-w": [{ "ring-offset": [isNumber, isArbitraryLength] }],
43880
+ /**
43881
+ * Ring Offset Color
43882
+ * @see https://v3.tailwindcss.com/docs/ring-offset-color
43883
+ * @deprecated since Tailwind CSS v4.0.0
43884
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
43885
+ */
43886
+ "ring-offset-color": [{ "ring-offset": scaleColor() }],
43887
+ /**
43888
+ * Inset Ring Width
43889
+ * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring
43890
+ */
43891
+ "inset-ring-w": [{ "inset-ring": scaleBorderWidth() }],
43892
+ /**
43893
+ * Inset Ring Color
43894
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color
43895
+ */
43896
+ "inset-ring-color": [{ "inset-ring": scaleColor() }],
43897
+ /**
43898
+ * Text Shadow
43899
+ * @see https://tailwindcss.com/docs/text-shadow
43900
+ */
43901
+ "text-shadow": [{ "text-shadow": [
43902
+ "none",
43903
+ themeTextShadow,
43904
+ isArbitraryVariableShadow,
43905
+ isArbitraryShadow
43906
+ ] }],
43907
+ /**
43908
+ * Text Shadow Color
43909
+ * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color
43910
+ */
43911
+ "text-shadow-color": [{ "text-shadow": scaleColor() }],
43912
+ /**
43913
+ * Opacity
43914
+ * @see https://tailwindcss.com/docs/opacity
43915
+ */
43916
+ opacity: [{ opacity: [
43917
+ isNumber,
43918
+ isArbitraryVariable,
43919
+ isArbitraryValue
43920
+ ] }],
43921
+ /**
43922
+ * Mix Blend Mode
43923
+ * @see https://tailwindcss.com/docs/mix-blend-mode
43924
+ */
43925
+ "mix-blend": [{ "mix-blend": [
43926
+ ...scaleBlendMode(),
43927
+ "plus-darker",
43928
+ "plus-lighter"
43929
+ ] }],
43930
+ /**
43931
+ * Background Blend Mode
43932
+ * @see https://tailwindcss.com/docs/background-blend-mode
43933
+ */
43934
+ "bg-blend": [{ "bg-blend": scaleBlendMode() }],
43935
+ /**
43936
+ * Mask Clip
43937
+ * @see https://tailwindcss.com/docs/mask-clip
43938
+ */
43939
+ "mask-clip": [{ "mask-clip": [
43940
+ "border",
43941
+ "padding",
43942
+ "content",
43943
+ "fill",
43944
+ "stroke",
43945
+ "view"
43946
+ ] }, "mask-no-clip"],
43947
+ /**
43948
+ * Mask Composite
43949
+ * @see https://tailwindcss.com/docs/mask-composite
43950
+ */
43951
+ "mask-composite": [{ mask: [
43952
+ "add",
43953
+ "subtract",
43954
+ "intersect",
43955
+ "exclude"
43956
+ ] }],
43957
+ /**
43958
+ * Mask Image
43959
+ * @see https://tailwindcss.com/docs/mask-image
43960
+ */
43961
+ "mask-image-linear-pos": [{ "mask-linear": [isNumber] }],
43962
+ "mask-image-linear-from-pos": [{ "mask-linear-from": scaleMaskImagePosition() }],
43963
+ "mask-image-linear-to-pos": [{ "mask-linear-to": scaleMaskImagePosition() }],
43964
+ "mask-image-linear-from-color": [{ "mask-linear-from": scaleColor() }],
43965
+ "mask-image-linear-to-color": [{ "mask-linear-to": scaleColor() }],
43966
+ "mask-image-t-from-pos": [{ "mask-t-from": scaleMaskImagePosition() }],
43967
+ "mask-image-t-to-pos": [{ "mask-t-to": scaleMaskImagePosition() }],
43968
+ "mask-image-t-from-color": [{ "mask-t-from": scaleColor() }],
43969
+ "mask-image-t-to-color": [{ "mask-t-to": scaleColor() }],
43970
+ "mask-image-r-from-pos": [{ "mask-r-from": scaleMaskImagePosition() }],
43971
+ "mask-image-r-to-pos": [{ "mask-r-to": scaleMaskImagePosition() }],
43972
+ "mask-image-r-from-color": [{ "mask-r-from": scaleColor() }],
43973
+ "mask-image-r-to-color": [{ "mask-r-to": scaleColor() }],
43974
+ "mask-image-b-from-pos": [{ "mask-b-from": scaleMaskImagePosition() }],
43975
+ "mask-image-b-to-pos": [{ "mask-b-to": scaleMaskImagePosition() }],
43976
+ "mask-image-b-from-color": [{ "mask-b-from": scaleColor() }],
43977
+ "mask-image-b-to-color": [{ "mask-b-to": scaleColor() }],
43978
+ "mask-image-l-from-pos": [{ "mask-l-from": scaleMaskImagePosition() }],
43979
+ "mask-image-l-to-pos": [{ "mask-l-to": scaleMaskImagePosition() }],
43980
+ "mask-image-l-from-color": [{ "mask-l-from": scaleColor() }],
43981
+ "mask-image-l-to-color": [{ "mask-l-to": scaleColor() }],
43982
+ "mask-image-x-from-pos": [{ "mask-x-from": scaleMaskImagePosition() }],
43983
+ "mask-image-x-to-pos": [{ "mask-x-to": scaleMaskImagePosition() }],
43984
+ "mask-image-x-from-color": [{ "mask-x-from": scaleColor() }],
43985
+ "mask-image-x-to-color": [{ "mask-x-to": scaleColor() }],
43986
+ "mask-image-y-from-pos": [{ "mask-y-from": scaleMaskImagePosition() }],
43987
+ "mask-image-y-to-pos": [{ "mask-y-to": scaleMaskImagePosition() }],
43988
+ "mask-image-y-from-color": [{ "mask-y-from": scaleColor() }],
43989
+ "mask-image-y-to-color": [{ "mask-y-to": scaleColor() }],
43990
+ "mask-image-radial": [{ "mask-radial": [isArbitraryVariable, isArbitraryValue] }],
43991
+ "mask-image-radial-from-pos": [{ "mask-radial-from": scaleMaskImagePosition() }],
43992
+ "mask-image-radial-to-pos": [{ "mask-radial-to": scaleMaskImagePosition() }],
43993
+ "mask-image-radial-from-color": [{ "mask-radial-from": scaleColor() }],
43994
+ "mask-image-radial-to-color": [{ "mask-radial-to": scaleColor() }],
43995
+ "mask-image-radial-shape": [{ "mask-radial": ["circle", "ellipse"] }],
43996
+ "mask-image-radial-size": [{ "mask-radial": [{
43997
+ closest: ["side", "corner"],
43998
+ farthest: ["side", "corner"]
43999
+ }] }],
44000
+ "mask-image-radial-pos": [{ "mask-radial-at": scalePosition() }],
44001
+ "mask-image-conic-pos": [{ "mask-conic": [isNumber] }],
44002
+ "mask-image-conic-from-pos": [{ "mask-conic-from": scaleMaskImagePosition() }],
44003
+ "mask-image-conic-to-pos": [{ "mask-conic-to": scaleMaskImagePosition() }],
44004
+ "mask-image-conic-from-color": [{ "mask-conic-from": scaleColor() }],
44005
+ "mask-image-conic-to-color": [{ "mask-conic-to": scaleColor() }],
44006
+ /**
44007
+ * Mask Mode
44008
+ * @see https://tailwindcss.com/docs/mask-mode
44009
+ */
44010
+ "mask-mode": [{ mask: [
44011
+ "alpha",
44012
+ "luminance",
44013
+ "match"
44014
+ ] }],
44015
+ /**
44016
+ * Mask Origin
44017
+ * @see https://tailwindcss.com/docs/mask-origin
44018
+ */
44019
+ "mask-origin": [{ "mask-origin": [
44020
+ "border",
44021
+ "padding",
44022
+ "content",
44023
+ "fill",
44024
+ "stroke",
44025
+ "view"
44026
+ ] }],
44027
+ /**
44028
+ * Mask Position
44029
+ * @see https://tailwindcss.com/docs/mask-position
44030
+ */
44031
+ "mask-position": [{ mask: scaleBgPosition() }],
44032
+ /**
44033
+ * Mask Repeat
44034
+ * @see https://tailwindcss.com/docs/mask-repeat
44035
+ */
44036
+ "mask-repeat": [{ mask: scaleBgRepeat() }],
44037
+ /**
44038
+ * Mask Size
44039
+ * @see https://tailwindcss.com/docs/mask-size
44040
+ */
44041
+ "mask-size": [{ mask: scaleBgSize() }],
44042
+ /**
44043
+ * Mask Type
44044
+ * @see https://tailwindcss.com/docs/mask-type
44045
+ */
44046
+ "mask-type": [{ "mask-type": ["alpha", "luminance"] }],
44047
+ /**
44048
+ * Mask Image
44049
+ * @see https://tailwindcss.com/docs/mask-image
44050
+ */
44051
+ "mask-image": [{ mask: [
44052
+ "none",
44053
+ isArbitraryVariable,
44054
+ isArbitraryValue
44055
+ ] }],
44056
+ /**
44057
+ * Filter
44058
+ * @see https://tailwindcss.com/docs/filter
44059
+ */
44060
+ filter: [{ filter: [
44061
+ "",
44062
+ "none",
44063
+ isArbitraryVariable,
44064
+ isArbitraryValue
44065
+ ] }],
44066
+ /**
44067
+ * Blur
44068
+ * @see https://tailwindcss.com/docs/blur
44069
+ */
44070
+ blur: [{ blur: scaleBlur() }],
44071
+ /**
44072
+ * Brightness
44073
+ * @see https://tailwindcss.com/docs/brightness
44074
+ */
44075
+ brightness: [{ brightness: [
44076
+ isNumber,
44077
+ isArbitraryVariable,
44078
+ isArbitraryValue
44079
+ ] }],
44080
+ /**
44081
+ * Contrast
44082
+ * @see https://tailwindcss.com/docs/contrast
44083
+ */
44084
+ contrast: [{ contrast: [
44085
+ isNumber,
44086
+ isArbitraryVariable,
44087
+ isArbitraryValue
44088
+ ] }],
44089
+ /**
44090
+ * Drop Shadow
44091
+ * @see https://tailwindcss.com/docs/drop-shadow
44092
+ */
44093
+ "drop-shadow": [{ "drop-shadow": [
44094
+ "",
44095
+ "none",
44096
+ themeDropShadow,
44097
+ isArbitraryVariableShadow,
44098
+ isArbitraryShadow
44099
+ ] }],
44100
+ /**
44101
+ * Drop Shadow Color
44102
+ * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color
44103
+ */
44104
+ "drop-shadow-color": [{ "drop-shadow": scaleColor() }],
44105
+ /**
44106
+ * Grayscale
44107
+ * @see https://tailwindcss.com/docs/grayscale
44108
+ */
44109
+ grayscale: [{ grayscale: [
44110
+ "",
44111
+ isNumber,
44112
+ isArbitraryVariable,
44113
+ isArbitraryValue
44114
+ ] }],
44115
+ /**
44116
+ * Hue Rotate
44117
+ * @see https://tailwindcss.com/docs/hue-rotate
44118
+ */
44119
+ "hue-rotate": [{ "hue-rotate": [
44120
+ isNumber,
44121
+ isArbitraryVariable,
44122
+ isArbitraryValue
44123
+ ] }],
44124
+ /**
44125
+ * Invert
44126
+ * @see https://tailwindcss.com/docs/invert
44127
+ */
44128
+ invert: [{ invert: [
44129
+ "",
44130
+ isNumber,
44131
+ isArbitraryVariable,
44132
+ isArbitraryValue
44133
+ ] }],
44134
+ /**
44135
+ * Saturate
44136
+ * @see https://tailwindcss.com/docs/saturate
44137
+ */
44138
+ saturate: [{ saturate: [
44139
+ isNumber,
44140
+ isArbitraryVariable,
44141
+ isArbitraryValue
44142
+ ] }],
44143
+ /**
44144
+ * Sepia
44145
+ * @see https://tailwindcss.com/docs/sepia
44146
+ */
44147
+ sepia: [{ sepia: [
44148
+ "",
44149
+ isNumber,
44150
+ isArbitraryVariable,
44151
+ isArbitraryValue
44152
+ ] }],
44153
+ /**
44154
+ * Backdrop Filter
44155
+ * @see https://tailwindcss.com/docs/backdrop-filter
44156
+ */
44157
+ "backdrop-filter": [{ "backdrop-filter": [
44158
+ "",
44159
+ "none",
44160
+ isArbitraryVariable,
44161
+ isArbitraryValue
44162
+ ] }],
44163
+ /**
44164
+ * Backdrop Blur
44165
+ * @see https://tailwindcss.com/docs/backdrop-blur
44166
+ */
44167
+ "backdrop-blur": [{ "backdrop-blur": scaleBlur() }],
44168
+ /**
44169
+ * Backdrop Brightness
44170
+ * @see https://tailwindcss.com/docs/backdrop-brightness
44171
+ */
44172
+ "backdrop-brightness": [{ "backdrop-brightness": [
44173
+ isNumber,
44174
+ isArbitraryVariable,
44175
+ isArbitraryValue
44176
+ ] }],
44177
+ /**
44178
+ * Backdrop Contrast
44179
+ * @see https://tailwindcss.com/docs/backdrop-contrast
44180
+ */
44181
+ "backdrop-contrast": [{ "backdrop-contrast": [
44182
+ isNumber,
44183
+ isArbitraryVariable,
44184
+ isArbitraryValue
44185
+ ] }],
44186
+ /**
44187
+ * Backdrop Grayscale
44188
+ * @see https://tailwindcss.com/docs/backdrop-grayscale
44189
+ */
44190
+ "backdrop-grayscale": [{ "backdrop-grayscale": [
44191
+ "",
44192
+ isNumber,
44193
+ isArbitraryVariable,
44194
+ isArbitraryValue
44195
+ ] }],
44196
+ /**
44197
+ * Backdrop Hue Rotate
44198
+ * @see https://tailwindcss.com/docs/backdrop-hue-rotate
44199
+ */
44200
+ "backdrop-hue-rotate": [{ "backdrop-hue-rotate": [
44201
+ isNumber,
44202
+ isArbitraryVariable,
44203
+ isArbitraryValue
44204
+ ] }],
44205
+ /**
44206
+ * Backdrop Invert
44207
+ * @see https://tailwindcss.com/docs/backdrop-invert
44208
+ */
44209
+ "backdrop-invert": [{ "backdrop-invert": [
44210
+ "",
44211
+ isNumber,
44212
+ isArbitraryVariable,
44213
+ isArbitraryValue
44214
+ ] }],
44215
+ /**
44216
+ * Backdrop Opacity
44217
+ * @see https://tailwindcss.com/docs/backdrop-opacity
44218
+ */
44219
+ "backdrop-opacity": [{ "backdrop-opacity": [
44220
+ isNumber,
44221
+ isArbitraryVariable,
44222
+ isArbitraryValue
44223
+ ] }],
44224
+ /**
44225
+ * Backdrop Saturate
44226
+ * @see https://tailwindcss.com/docs/backdrop-saturate
44227
+ */
44228
+ "backdrop-saturate": [{ "backdrop-saturate": [
44229
+ isNumber,
44230
+ isArbitraryVariable,
44231
+ isArbitraryValue
44232
+ ] }],
44233
+ /**
44234
+ * Backdrop Sepia
44235
+ * @see https://tailwindcss.com/docs/backdrop-sepia
44236
+ */
44237
+ "backdrop-sepia": [{ "backdrop-sepia": [
44238
+ "",
44239
+ isNumber,
44240
+ isArbitraryVariable,
44241
+ isArbitraryValue
44242
+ ] }],
44243
+ /**
44244
+ * Border Collapse
44245
+ * @see https://tailwindcss.com/docs/border-collapse
44246
+ */
44247
+ "border-collapse": [{ border: ["collapse", "separate"] }],
44248
+ /**
44249
+ * Border Spacing
44250
+ * @see https://tailwindcss.com/docs/border-spacing
44251
+ */
44252
+ "border-spacing": [{ "border-spacing": scaleUnambiguousSpacing() }],
44253
+ /**
44254
+ * Border Spacing X
44255
+ * @see https://tailwindcss.com/docs/border-spacing
44256
+ */
44257
+ "border-spacing-x": [{ "border-spacing-x": scaleUnambiguousSpacing() }],
44258
+ /**
44259
+ * Border Spacing Y
44260
+ * @see https://tailwindcss.com/docs/border-spacing
44261
+ */
44262
+ "border-spacing-y": [{ "border-spacing-y": scaleUnambiguousSpacing() }],
44263
+ /**
44264
+ * Table Layout
44265
+ * @see https://tailwindcss.com/docs/table-layout
44266
+ */
44267
+ "table-layout": [{ table: ["auto", "fixed"] }],
44268
+ /**
44269
+ * Caption Side
44270
+ * @see https://tailwindcss.com/docs/caption-side
44271
+ */
44272
+ caption: [{ caption: ["top", "bottom"] }],
44273
+ /**
44274
+ * Transition Property
44275
+ * @see https://tailwindcss.com/docs/transition-property
44276
+ */
44277
+ transition: [{ transition: [
44278
+ "",
44279
+ "all",
44280
+ "colors",
44281
+ "opacity",
44282
+ "shadow",
44283
+ "transform",
44284
+ "none",
44285
+ isArbitraryVariable,
44286
+ isArbitraryValue
44287
+ ] }],
44288
+ /**
44289
+ * Transition Behavior
44290
+ * @see https://tailwindcss.com/docs/transition-behavior
44291
+ */
44292
+ "transition-behavior": [{ transition: ["normal", "discrete"] }],
44293
+ /**
44294
+ * Transition Duration
44295
+ * @see https://tailwindcss.com/docs/transition-duration
44296
+ */
44297
+ duration: [{ duration: [
44298
+ isNumber,
44299
+ "initial",
44300
+ isArbitraryVariable,
44301
+ isArbitraryValue
44302
+ ] }],
44303
+ /**
44304
+ * Transition Timing Function
44305
+ * @see https://tailwindcss.com/docs/transition-timing-function
44306
+ */
44307
+ ease: [{ ease: [
44308
+ "linear",
44309
+ "initial",
44310
+ themeEase,
44311
+ isArbitraryVariable,
44312
+ isArbitraryValue
44313
+ ] }],
44314
+ /**
44315
+ * Transition Delay
44316
+ * @see https://tailwindcss.com/docs/transition-delay
44317
+ */
44318
+ delay: [{ delay: [
44319
+ isNumber,
44320
+ isArbitraryVariable,
44321
+ isArbitraryValue
44322
+ ] }],
44323
+ /**
44324
+ * Animation
44325
+ * @see https://tailwindcss.com/docs/animation
44326
+ */
44327
+ animate: [{ animate: [
44328
+ "none",
44329
+ themeAnimate,
44330
+ isArbitraryVariable,
44331
+ isArbitraryValue
44332
+ ] }],
44333
+ /**
44334
+ * Backface Visibility
44335
+ * @see https://tailwindcss.com/docs/backface-visibility
44336
+ */
44337
+ backface: [{ backface: ["hidden", "visible"] }],
44338
+ /**
44339
+ * Perspective
44340
+ * @see https://tailwindcss.com/docs/perspective
44341
+ */
44342
+ perspective: [{ perspective: [
44343
+ themePerspective,
44344
+ isArbitraryVariable,
44345
+ isArbitraryValue
44346
+ ] }],
44347
+ /**
44348
+ * Perspective Origin
44349
+ * @see https://tailwindcss.com/docs/perspective-origin
44350
+ */
44351
+ "perspective-origin": [{ "perspective-origin": scalePositionWithArbitrary() }],
44352
+ /**
44353
+ * Rotate
44354
+ * @see https://tailwindcss.com/docs/rotate
44355
+ */
44356
+ rotate: [{ rotate: scaleRotate() }],
44357
+ /**
44358
+ * Rotate X
44359
+ * @see https://tailwindcss.com/docs/rotate
44360
+ */
44361
+ "rotate-x": [{ "rotate-x": scaleRotate() }],
44362
+ /**
44363
+ * Rotate Y
44364
+ * @see https://tailwindcss.com/docs/rotate
44365
+ */
44366
+ "rotate-y": [{ "rotate-y": scaleRotate() }],
44367
+ /**
44368
+ * Rotate Z
44369
+ * @see https://tailwindcss.com/docs/rotate
44370
+ */
44371
+ "rotate-z": [{ "rotate-z": scaleRotate() }],
44372
+ /**
44373
+ * Scale
44374
+ * @see https://tailwindcss.com/docs/scale
44375
+ */
44376
+ scale: [{ scale: scaleScale() }],
44377
+ /**
44378
+ * Scale X
44379
+ * @see https://tailwindcss.com/docs/scale
44380
+ */
44381
+ "scale-x": [{ "scale-x": scaleScale() }],
44382
+ /**
44383
+ * Scale Y
44384
+ * @see https://tailwindcss.com/docs/scale
44385
+ */
44386
+ "scale-y": [{ "scale-y": scaleScale() }],
44387
+ /**
44388
+ * Scale Z
44389
+ * @see https://tailwindcss.com/docs/scale
44390
+ */
44391
+ "scale-z": [{ "scale-z": scaleScale() }],
44392
+ /**
44393
+ * Scale 3D
44394
+ * @see https://tailwindcss.com/docs/scale
44395
+ */
44396
+ "scale-3d": ["scale-3d"],
44397
+ /**
44398
+ * Skew
44399
+ * @see https://tailwindcss.com/docs/skew
44400
+ */
44401
+ skew: [{ skew: scaleSkew() }],
44402
+ /**
44403
+ * Skew X
44404
+ * @see https://tailwindcss.com/docs/skew
44405
+ */
44406
+ "skew-x": [{ "skew-x": scaleSkew() }],
44407
+ /**
44408
+ * Skew Y
44409
+ * @see https://tailwindcss.com/docs/skew
44410
+ */
44411
+ "skew-y": [{ "skew-y": scaleSkew() }],
44412
+ /**
44413
+ * Transform
44414
+ * @see https://tailwindcss.com/docs/transform
44415
+ */
44416
+ transform: [{ transform: [
44417
+ isArbitraryVariable,
44418
+ isArbitraryValue,
44419
+ "",
44420
+ "none",
44421
+ "gpu",
44422
+ "cpu"
44423
+ ] }],
44424
+ /**
44425
+ * Transform Origin
44426
+ * @see https://tailwindcss.com/docs/transform-origin
44427
+ */
44428
+ "transform-origin": [{ origin: scalePositionWithArbitrary() }],
44429
+ /**
44430
+ * Transform Style
44431
+ * @see https://tailwindcss.com/docs/transform-style
44432
+ */
44433
+ "transform-style": [{ transform: ["3d", "flat"] }],
44434
+ /**
44435
+ * Translate
44436
+ * @see https://tailwindcss.com/docs/translate
44437
+ */
44438
+ translate: [{ translate: scaleTranslate() }],
44439
+ /**
44440
+ * Translate X
44441
+ * @see https://tailwindcss.com/docs/translate
44442
+ */
44443
+ "translate-x": [{ "translate-x": scaleTranslate() }],
44444
+ /**
44445
+ * Translate Y
44446
+ * @see https://tailwindcss.com/docs/translate
44447
+ */
44448
+ "translate-y": [{ "translate-y": scaleTranslate() }],
44449
+ /**
44450
+ * Translate Z
44451
+ * @see https://tailwindcss.com/docs/translate
44452
+ */
44453
+ "translate-z": [{ "translate-z": scaleTranslate() }],
44454
+ /**
44455
+ * Translate None
44456
+ * @see https://tailwindcss.com/docs/translate
44457
+ */
44458
+ "translate-none": ["translate-none"],
44459
+ /**
44460
+ * Zoom
44461
+ * @see https://tailwindcss.com/docs/zoom
44462
+ */
44463
+ zoom: [{ zoom: [
44464
+ isInteger,
44465
+ isArbitraryVariable,
44466
+ isArbitraryValue
44467
+ ] }],
44468
+ /**
44469
+ * Accent Color
44470
+ * @see https://tailwindcss.com/docs/accent-color
44471
+ */
44472
+ accent: [{ accent: scaleColor() }],
44473
+ /**
44474
+ * Appearance
44475
+ * @see https://tailwindcss.com/docs/appearance
44476
+ */
44477
+ appearance: [{ appearance: ["none", "auto"] }],
44478
+ /**
44479
+ * Caret Color
44480
+ * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities
44481
+ */
44482
+ "caret-color": [{ caret: scaleColor() }],
44483
+ /**
44484
+ * Color Scheme
44485
+ * @see https://tailwindcss.com/docs/color-scheme
44486
+ */
44487
+ "color-scheme": [{ scheme: [
44488
+ "normal",
44489
+ "dark",
44490
+ "light",
44491
+ "light-dark",
44492
+ "only-dark",
44493
+ "only-light"
44494
+ ] }],
44495
+ /**
44496
+ * Cursor
44497
+ * @see https://tailwindcss.com/docs/cursor
44498
+ */
44499
+ cursor: [{ cursor: [
44500
+ "auto",
44501
+ "default",
44502
+ "pointer",
44503
+ "wait",
44504
+ "text",
44505
+ "move",
44506
+ "help",
44507
+ "not-allowed",
44508
+ "none",
44509
+ "context-menu",
44510
+ "progress",
44511
+ "cell",
44512
+ "crosshair",
44513
+ "vertical-text",
44514
+ "alias",
44515
+ "copy",
44516
+ "no-drop",
44517
+ "grab",
44518
+ "grabbing",
44519
+ "all-scroll",
44520
+ "col-resize",
44521
+ "row-resize",
44522
+ "n-resize",
44523
+ "e-resize",
44524
+ "s-resize",
44525
+ "w-resize",
44526
+ "ne-resize",
44527
+ "nw-resize",
44528
+ "se-resize",
44529
+ "sw-resize",
44530
+ "ew-resize",
44531
+ "ns-resize",
44532
+ "nesw-resize",
44533
+ "nwse-resize",
44534
+ "zoom-in",
44535
+ "zoom-out",
44536
+ isArbitraryVariable,
44537
+ isArbitraryValue
44538
+ ] }],
44539
+ /**
44540
+ * Field Sizing
44541
+ * @see https://tailwindcss.com/docs/field-sizing
44542
+ */
44543
+ "field-sizing": [{ "field-sizing": ["fixed", "content"] }],
44544
+ /**
44545
+ * Pointer Events
44546
+ * @see https://tailwindcss.com/docs/pointer-events
44547
+ */
44548
+ "pointer-events": [{ "pointer-events": ["auto", "none"] }],
44549
+ /**
44550
+ * Resize
44551
+ * @see https://tailwindcss.com/docs/resize
44552
+ */
44553
+ resize: [{ resize: [
44554
+ "none",
44555
+ "",
44556
+ "y",
44557
+ "x"
44558
+ ] }],
44559
+ /**
44560
+ * Scroll Behavior
44561
+ * @see https://tailwindcss.com/docs/scroll-behavior
44562
+ */
44563
+ "scroll-behavior": [{ scroll: ["auto", "smooth"] }],
44564
+ /**
44565
+ * Scrollbar Thumb Color
44566
+ * @see https://tailwindcss.com/docs/scrollbar-color
44567
+ */
44568
+ "scrollbar-thumb-color": [{ "scrollbar-thumb": scaleColor() }],
44569
+ /**
44570
+ * Scrollbar Track Color
44571
+ * @see https://tailwindcss.com/docs/scrollbar-color
44572
+ */
44573
+ "scrollbar-track-color": [{ "scrollbar-track": scaleColor() }],
44574
+ /**
44575
+ * Scrollbar Gutter
44576
+ * @see https://tailwindcss.com/docs/scrollbar-gutter
44577
+ */
44578
+ "scrollbar-gutter": [{ "scrollbar-gutter": [
44579
+ "auto",
44580
+ "stable",
44581
+ "both"
44582
+ ] }],
44583
+ /**
44584
+ * Scrollbar Width
44585
+ * @see https://tailwindcss.com/docs/scrollbar-width
44586
+ */
44587
+ "scrollbar-w": [{ scrollbar: [
44588
+ "auto",
44589
+ "thin",
44590
+ "none"
44591
+ ] }],
44592
+ /**
44593
+ * Scroll Margin
44594
+ * @see https://tailwindcss.com/docs/scroll-margin
44595
+ */
44596
+ "scroll-m": [{ "scroll-m": scaleUnambiguousSpacing() }],
44597
+ /**
44598
+ * Scroll Margin Inline
44599
+ * @see https://tailwindcss.com/docs/scroll-margin
44600
+ */
44601
+ "scroll-mx": [{ "scroll-mx": scaleUnambiguousSpacing() }],
44602
+ /**
44603
+ * Scroll Margin Block
44604
+ * @see https://tailwindcss.com/docs/scroll-margin
44605
+ */
44606
+ "scroll-my": [{ "scroll-my": scaleUnambiguousSpacing() }],
44607
+ /**
44608
+ * Scroll Margin Inline Start
44609
+ * @see https://tailwindcss.com/docs/scroll-margin
44610
+ */
44611
+ "scroll-ms": [{ "scroll-ms": scaleUnambiguousSpacing() }],
44612
+ /**
44613
+ * Scroll Margin Inline End
44614
+ * @see https://tailwindcss.com/docs/scroll-margin
44615
+ */
44616
+ "scroll-me": [{ "scroll-me": scaleUnambiguousSpacing() }],
44617
+ /**
44618
+ * Scroll Margin Block Start
44619
+ * @see https://tailwindcss.com/docs/scroll-margin
44620
+ */
44621
+ "scroll-mbs": [{ "scroll-mbs": scaleUnambiguousSpacing() }],
44622
+ /**
44623
+ * Scroll Margin Block End
44624
+ * @see https://tailwindcss.com/docs/scroll-margin
44625
+ */
44626
+ "scroll-mbe": [{ "scroll-mbe": scaleUnambiguousSpacing() }],
44627
+ /**
44628
+ * Scroll Margin Top
44629
+ * @see https://tailwindcss.com/docs/scroll-margin
44630
+ */
44631
+ "scroll-mt": [{ "scroll-mt": scaleUnambiguousSpacing() }],
44632
+ /**
44633
+ * Scroll Margin Right
44634
+ * @see https://tailwindcss.com/docs/scroll-margin
44635
+ */
44636
+ "scroll-mr": [{ "scroll-mr": scaleUnambiguousSpacing() }],
44637
+ /**
44638
+ * Scroll Margin Bottom
44639
+ * @see https://tailwindcss.com/docs/scroll-margin
44640
+ */
44641
+ "scroll-mb": [{ "scroll-mb": scaleUnambiguousSpacing() }],
44642
+ /**
44643
+ * Scroll Margin Left
44644
+ * @see https://tailwindcss.com/docs/scroll-margin
44645
+ */
44646
+ "scroll-ml": [{ "scroll-ml": scaleUnambiguousSpacing() }],
44647
+ /**
44648
+ * Scroll Padding
44649
+ * @see https://tailwindcss.com/docs/scroll-padding
44650
+ */
44651
+ "scroll-p": [{ "scroll-p": scaleUnambiguousSpacing() }],
44652
+ /**
44653
+ * Scroll Padding Inline
44654
+ * @see https://tailwindcss.com/docs/scroll-padding
44655
+ */
44656
+ "scroll-px": [{ "scroll-px": scaleUnambiguousSpacing() }],
44657
+ /**
44658
+ * Scroll Padding Block
44659
+ * @see https://tailwindcss.com/docs/scroll-padding
44660
+ */
44661
+ "scroll-py": [{ "scroll-py": scaleUnambiguousSpacing() }],
44662
+ /**
44663
+ * Scroll Padding Inline Start
44664
+ * @see https://tailwindcss.com/docs/scroll-padding
44665
+ */
44666
+ "scroll-ps": [{ "scroll-ps": scaleUnambiguousSpacing() }],
44667
+ /**
44668
+ * Scroll Padding Inline End
44669
+ * @see https://tailwindcss.com/docs/scroll-padding
44670
+ */
44671
+ "scroll-pe": [{ "scroll-pe": scaleUnambiguousSpacing() }],
44672
+ /**
44673
+ * Scroll Padding Block Start
44674
+ * @see https://tailwindcss.com/docs/scroll-padding
44675
+ */
44676
+ "scroll-pbs": [{ "scroll-pbs": scaleUnambiguousSpacing() }],
44677
+ /**
44678
+ * Scroll Padding Block End
44679
+ * @see https://tailwindcss.com/docs/scroll-padding
44680
+ */
44681
+ "scroll-pbe": [{ "scroll-pbe": scaleUnambiguousSpacing() }],
44682
+ /**
44683
+ * Scroll Padding Top
44684
+ * @see https://tailwindcss.com/docs/scroll-padding
44685
+ */
44686
+ "scroll-pt": [{ "scroll-pt": scaleUnambiguousSpacing() }],
44687
+ /**
44688
+ * Scroll Padding Right
44689
+ * @see https://tailwindcss.com/docs/scroll-padding
44690
+ */
44691
+ "scroll-pr": [{ "scroll-pr": scaleUnambiguousSpacing() }],
44692
+ /**
44693
+ * Scroll Padding Bottom
44694
+ * @see https://tailwindcss.com/docs/scroll-padding
44695
+ */
44696
+ "scroll-pb": [{ "scroll-pb": scaleUnambiguousSpacing() }],
44697
+ /**
44698
+ * Scroll Padding Left
44699
+ * @see https://tailwindcss.com/docs/scroll-padding
44700
+ */
44701
+ "scroll-pl": [{ "scroll-pl": scaleUnambiguousSpacing() }],
44702
+ /**
44703
+ * Scroll Snap Align
44704
+ * @see https://tailwindcss.com/docs/scroll-snap-align
44705
+ */
44706
+ "snap-align": [{ snap: [
44707
+ "start",
44708
+ "end",
44709
+ "center",
44710
+ "align-none"
44711
+ ] }],
44712
+ /**
44713
+ * Scroll Snap Stop
44714
+ * @see https://tailwindcss.com/docs/scroll-snap-stop
44715
+ */
44716
+ "snap-stop": [{ snap: ["normal", "always"] }],
44717
+ /**
44718
+ * Scroll Snap Type
44719
+ * @see https://tailwindcss.com/docs/scroll-snap-type
44720
+ */
44721
+ "snap-type": [{ snap: [
44722
+ "none",
44723
+ "x",
44724
+ "y",
44725
+ "both"
44726
+ ] }],
44727
+ /**
44728
+ * Scroll Snap Type Strictness
44729
+ * @see https://tailwindcss.com/docs/scroll-snap-type
44730
+ */
44731
+ "snap-strictness": [{ snap: ["mandatory", "proximity"] }],
44732
+ /**
44733
+ * Touch Action
44734
+ * @see https://tailwindcss.com/docs/touch-action
44735
+ */
44736
+ touch: [{ touch: [
44737
+ "auto",
44738
+ "none",
44739
+ "manipulation"
44740
+ ] }],
44741
+ /**
44742
+ * Touch Action X
44743
+ * @see https://tailwindcss.com/docs/touch-action
44744
+ */
44745
+ "touch-x": [{ "touch-pan": [
44746
+ "x",
44747
+ "left",
44748
+ "right"
44749
+ ] }],
44750
+ /**
44751
+ * Touch Action Y
44752
+ * @see https://tailwindcss.com/docs/touch-action
44753
+ */
44754
+ "touch-y": [{ "touch-pan": [
44755
+ "y",
44756
+ "up",
44757
+ "down"
44758
+ ] }],
44759
+ /**
44760
+ * Touch Action Pinch Zoom
44761
+ * @see https://tailwindcss.com/docs/touch-action
44762
+ */
44763
+ "touch-pz": ["touch-pinch-zoom"],
44764
+ /**
44765
+ * User Select
44766
+ * @see https://tailwindcss.com/docs/user-select
44767
+ */
44768
+ select: [{ select: [
44769
+ "none",
44770
+ "text",
44771
+ "all",
44772
+ "auto"
44773
+ ] }],
44774
+ /**
44775
+ * Will Change
44776
+ * @see https://tailwindcss.com/docs/will-change
44777
+ */
44778
+ "will-change": [{ "will-change": [
44779
+ "auto",
44780
+ "scroll",
44781
+ "contents",
44782
+ "transform",
44783
+ isArbitraryVariable,
44784
+ isArbitraryValue
44785
+ ] }],
44786
+ /**
44787
+ * Fill
44788
+ * @see https://tailwindcss.com/docs/fill
44789
+ */
44790
+ fill: [{ fill: ["none", ...scaleColor()] }],
44791
+ /**
44792
+ * Stroke Width
44793
+ * @see https://tailwindcss.com/docs/stroke-width
44794
+ */
44795
+ "stroke-w": [{ stroke: [
44796
+ isNumber,
44797
+ isArbitraryVariableLength,
44798
+ isArbitraryLength,
44799
+ isArbitraryNumber
44800
+ ] }],
44801
+ /**
44802
+ * Stroke
44803
+ * @see https://tailwindcss.com/docs/stroke
44804
+ */
44805
+ stroke: [{ stroke: ["none", ...scaleColor()] }],
44806
+ /**
44807
+ * Forced Color Adjust
44808
+ * @see https://tailwindcss.com/docs/forced-color-adjust
44809
+ */
44810
+ "forced-color-adjust": [{ "forced-color-adjust": ["auto", "none"] }]
44811
+ },
44812
+ conflictingClassGroups: {
44813
+ "container-named": ["container-type"],
44814
+ overflow: ["overflow-x", "overflow-y"],
44815
+ overscroll: ["overscroll-x", "overscroll-y"],
44816
+ inset: [
44817
+ "inset-x",
44818
+ "inset-y",
44819
+ "inset-bs",
44820
+ "inset-be",
44821
+ "start",
44822
+ "end",
44823
+ "top",
44824
+ "right",
44825
+ "bottom",
44826
+ "left"
44827
+ ],
44828
+ "inset-x": ["right", "left"],
44829
+ "inset-y": ["top", "bottom"],
44830
+ flex: [
44831
+ "basis",
44832
+ "grow",
44833
+ "shrink"
44834
+ ],
44835
+ gap: ["gap-x", "gap-y"],
44836
+ p: [
44837
+ "px",
44838
+ "py",
44839
+ "ps",
44840
+ "pe",
44841
+ "pbs",
44842
+ "pbe",
44843
+ "pt",
44844
+ "pr",
44845
+ "pb",
44846
+ "pl"
44847
+ ],
44848
+ px: ["pr", "pl"],
44849
+ py: ["pt", "pb"],
44850
+ m: [
44851
+ "mx",
44852
+ "my",
44853
+ "ms",
44854
+ "me",
44855
+ "mbs",
44856
+ "mbe",
44857
+ "mt",
44858
+ "mr",
44859
+ "mb",
44860
+ "ml"
44861
+ ],
44862
+ mx: ["mr", "ml"],
44863
+ my: ["mt", "mb"],
44864
+ size: ["w", "h"],
44865
+ "font-size": ["leading"],
44866
+ "fvn-normal": [
44867
+ "fvn-ordinal",
44868
+ "fvn-slashed-zero",
44869
+ "fvn-figure",
44870
+ "fvn-spacing",
44871
+ "fvn-fraction"
44872
+ ],
44873
+ "fvn-ordinal": ["fvn-normal"],
44874
+ "fvn-slashed-zero": ["fvn-normal"],
44875
+ "fvn-figure": ["fvn-normal"],
44876
+ "fvn-spacing": ["fvn-normal"],
44877
+ "fvn-fraction": ["fvn-normal"],
44878
+ "line-clamp": ["display", "overflow"],
44879
+ rounded: [
44880
+ "rounded-s",
44881
+ "rounded-e",
44882
+ "rounded-t",
44883
+ "rounded-r",
44884
+ "rounded-b",
44885
+ "rounded-l",
44886
+ "rounded-ss",
44887
+ "rounded-se",
44888
+ "rounded-ee",
44889
+ "rounded-es",
44890
+ "rounded-tl",
44891
+ "rounded-tr",
44892
+ "rounded-br",
44893
+ "rounded-bl"
44894
+ ],
44895
+ "rounded-s": ["rounded-ss", "rounded-es"],
44896
+ "rounded-e": ["rounded-se", "rounded-ee"],
44897
+ "rounded-t": ["rounded-tl", "rounded-tr"],
44898
+ "rounded-r": ["rounded-tr", "rounded-br"],
44899
+ "rounded-b": ["rounded-br", "rounded-bl"],
44900
+ "rounded-l": ["rounded-tl", "rounded-bl"],
44901
+ "border-spacing": ["border-spacing-x", "border-spacing-y"],
44902
+ "border-w": [
44903
+ "border-w-x",
44904
+ "border-w-y",
44905
+ "border-w-s",
44906
+ "border-w-e",
44907
+ "border-w-bs",
44908
+ "border-w-be",
44909
+ "border-w-t",
44910
+ "border-w-r",
44911
+ "border-w-b",
44912
+ "border-w-l"
44913
+ ],
44914
+ "border-w-x": ["border-w-r", "border-w-l"],
44915
+ "border-w-y": ["border-w-t", "border-w-b"],
44916
+ "border-color": [
44917
+ "border-color-x",
44918
+ "border-color-y",
44919
+ "border-color-s",
44920
+ "border-color-e",
44921
+ "border-color-bs",
44922
+ "border-color-be",
44923
+ "border-color-t",
44924
+ "border-color-r",
44925
+ "border-color-b",
44926
+ "border-color-l"
44927
+ ],
44928
+ "border-color-x": ["border-color-r", "border-color-l"],
44929
+ "border-color-y": ["border-color-t", "border-color-b"],
44930
+ translate: [
44931
+ "translate-x",
44932
+ "translate-y",
44933
+ "translate-none"
44934
+ ],
44935
+ "translate-none": [
44936
+ "translate",
44937
+ "translate-x",
44938
+ "translate-y",
44939
+ "translate-z"
44940
+ ],
44941
+ "scroll-m": [
44942
+ "scroll-mx",
44943
+ "scroll-my",
44944
+ "scroll-ms",
44945
+ "scroll-me",
44946
+ "scroll-mbs",
44947
+ "scroll-mbe",
44948
+ "scroll-mt",
44949
+ "scroll-mr",
44950
+ "scroll-mb",
44951
+ "scroll-ml"
44952
+ ],
44953
+ "scroll-mx": ["scroll-mr", "scroll-ml"],
44954
+ "scroll-my": ["scroll-mt", "scroll-mb"],
44955
+ "scroll-p": [
44956
+ "scroll-px",
44957
+ "scroll-py",
44958
+ "scroll-ps",
44959
+ "scroll-pe",
44960
+ "scroll-pbs",
44961
+ "scroll-pbe",
44962
+ "scroll-pt",
44963
+ "scroll-pr",
44964
+ "scroll-pb",
44965
+ "scroll-pl"
44966
+ ],
44967
+ "scroll-px": ["scroll-pr", "scroll-pl"],
44968
+ "scroll-py": ["scroll-pt", "scroll-pb"],
44969
+ touch: [
44970
+ "touch-x",
44971
+ "touch-y",
44972
+ "touch-pz"
44973
+ ],
44974
+ "touch-x": ["touch"],
44975
+ "touch-y": ["touch"],
44976
+ "touch-pz": ["touch"]
44977
+ },
44978
+ conflictingClassGroupModifiers: { "font-size": ["leading"] },
44979
+ postfixLookupClassGroups: ["container-type"],
44980
+ orderSensitiveModifiers: [
44981
+ "*",
44982
+ "**",
44983
+ "after",
44984
+ "backdrop",
44985
+ "before",
44986
+ "details-content",
44987
+ "file",
44988
+ "first-letter",
44989
+ "first-line",
44990
+ "marker",
44991
+ "placeholder",
44992
+ "selection"
44993
+ ]
44994
+ };
44995
+ };
44996
+ const twMerge = /*#__PURE__*/ createTailwindMerge(getDefaultConfig);
44997
+
44998
+ //#endregion
44999
+ //#region ../ui-kit/src/lib/cn.ts
45000
+ /** shadcn 约定的类名合并:后写的 Tailwind 类覆盖先写的同族类。 */
45001
+ function cn(...inputs) {
45002
+ return twMerge(clsx(inputs));
45003
+ }
45004
+
41595
45005
  //#endregion
41596
45006
  //#region ../ui-kit/src/components/Badge.tsx
41597
45007
  const toneClasses = {
@@ -61561,6 +64971,272 @@ function defaultUrlTransform(value) {
61561
64971
  return "";
61562
64972
  }
61563
64973
 
64974
+ //#endregion
64975
+ //#region ../ui-kit/src/markdown/image.tsx
64976
+ /** `<img>` 里的 data URL 不会执行脚本,SVG 同理——放行的前提就是这个上下文 */
64977
+ const DATA_IMAGE = /^data:image\/[a-z0-9.+-]+[;,]/i;
64978
+ /**
64979
+ * 仓内图片引用。模型输出不了 base64,所以正文里贴附件图只能靠短引用,
64980
+ * 由宿主注入的解析器换成可显示的 URL。与投放通道的 `data-webskill-image` 同一套引用形态。
64981
+ */
64982
+ const IMAGE_REF = /^(upload|artifact):/i;
64983
+ /**
64984
+ * react-markdown 的默认 `urlTransform` 只放行 `https?|ircs?|mailto|xmpp`,
64985
+ * 于是 `![](data:image/png;base64,…)` 与 `![](upload:xxx)` 的 src 都被剥成空串。
64986
+ *
64987
+ * 这里**只对 `<img src>` 补放行**:`<a href="data:image/svg+xml,…">` 点开是导航,
64988
+ * 那个上下文里 SVG 的脚本会执行,所以 href 仍走默认策略。
64989
+ */
64990
+ const markdownUrlTransform = (url, key, node) => {
64991
+ if (key === "src" && node.tagName === "img" && (DATA_IMAGE.test(url) || IMAGE_REF.test(url))) return url;
64992
+ return defaultUrlTransform(url);
64993
+ };
64994
+ const ResolverContext = createContext(void 0);
64995
+ /**
64996
+ * 正文里的图片。外链、data URL、同源相对路径直接显示;`upload:` / `artifact:` 引用
64997
+ * 走宿主注入的解析器。
64998
+ *
64999
+ * `referrerPolicy="no-referrer"`:外链图会向第三方发请求,不必把当前会话的 URL 一起送出去。
65000
+ * 失败时退回 `alt` 文本而不是留破图——alt 由内容方给,天然随内容语言,不需要另配文案。
65001
+ */
65002
+ function MarkdownImage({ node: _node, className, src, alt, ...rest }) {
65003
+ const resolve = useContext(ResolverContext);
65004
+ const [failed, setFailed] = useState(false);
65005
+ const [resolved, setResolved] = useState();
65006
+ const isRef = typeof src === "string" && IMAGE_REF.test(src);
65007
+ useEffect(() => {
65008
+ if (!isRef || typeof src !== "string") return;
65009
+ if (resolve === void 0) {
65010
+ setFailed(true);
65011
+ return;
65012
+ }
65013
+ let cancelled = false;
65014
+ let created;
65015
+ setFailed(false);
65016
+ setResolved(void 0);
65017
+ resolve(src).then((url) => {
65018
+ if (url === void 0) {
65019
+ if (!cancelled) setFailed(true);
65020
+ return;
65021
+ }
65022
+ created = url;
65023
+ if (cancelled) {
65024
+ if (url.startsWith("blob:")) URL.revokeObjectURL(url);
65025
+ return;
65026
+ }
65027
+ setResolved(url);
65028
+ }).catch(() => {
65029
+ if (!cancelled) setFailed(true);
65030
+ });
65031
+ return () => {
65032
+ cancelled = true;
65033
+ if (created?.startsWith("blob:")) URL.revokeObjectURL(created);
65034
+ };
65035
+ }, [
65036
+ isRef,
65037
+ resolve,
65038
+ src
65039
+ ]);
65040
+ const effective = isRef ? resolved : src;
65041
+ const text = typeof alt === "string" ? alt : "";
65042
+ if (failed || effective === void 0 || effective === "") {
65043
+ if (isRef && !failed) return null;
65044
+ return /* @__PURE__ */ jsxs("span", {
65045
+ className: "my-2 inline-flex items-center gap-1.5 rounded-md bg-subtle px-2 py-1 text-xs text-muted",
65046
+ children: [/* @__PURE__ */ jsx(import_lucide_react.ImageOff, {
65047
+ className: "size-3.5 shrink-0",
65048
+ "aria-hidden": true
65049
+ }), text === "" ? null : /* @__PURE__ */ jsx("span", { children: text })]
65050
+ });
65051
+ }
65052
+ return /* @__PURE__ */ jsx("img", {
65053
+ src: effective,
65054
+ alt: text,
65055
+ loading: "lazy",
65056
+ decoding: "async",
65057
+ referrerPolicy: "no-referrer",
65058
+ onError: () => setFailed(true),
65059
+ className: cn("my-2 max-h-96 max-w-full rounded-card border border-border object-contain", className),
65060
+ ...rest
65061
+ });
65062
+ }
65063
+
65064
+ //#endregion
65065
+ //#region ../ui-kit/src/theme/useDarkAncestor.ts
65066
+ /**
65067
+ * 声明了主题的祖先:`data-theme` 由 ThemeScope 挂(亮暗都挂),`.dark` 是宿主页面惯用的暗色类名。
65068
+ * 两者一起选,`closest` 才会停在**最近**的那一层,而不是越过亮色实例去命中外层的暗色宿主。
65069
+ */
65070
+ const THEME_ANCESTOR = "[data-theme], .dark";
65071
+ function readDark(node) {
65072
+ const scope = node.closest(THEME_ANCESTOR);
65073
+ if (!scope) return false;
65074
+ const declared = scope.getAttribute("data-theme");
65075
+ return declared === null ? true : declared === "dark";
65076
+ }
65077
+ /**
65078
+ * 判定挂载点**最近的**主题祖先是否处于暗色(0.6.0 FR-20.4)。
65079
+ *
65080
+ * 不用 `document.querySelector('.dark')`:那是全局查询,宿主页面是暗色时,
65081
+ * 嵌在暗色宿主里的亮色 SDK 实例也会被判成暗色(反之亦然)。
65082
+ *
65083
+ * 返回 ref 回调而不是接受 ref 对象:ref 对象的赋值不触发渲染,拿不到「已挂载」这个时机。
65084
+ *
65085
+ * 首次判定在 ref 回调里**同步**完成,不等 effect:消费方(如按主题分叉的 markdown
65086
+ * 高亮器)可能在首帧就固化选择,晚一帧就会永久停在亮色(设计 15-01 §1.2 假设 H-c)。
65087
+ */
65088
+ function useDarkAncestor() {
65089
+ const scoped = useThemeValue();
65090
+ const [node, setNode] = useState(null);
65091
+ const [probed, setProbed] = useState(false);
65092
+ const attach = useCallback((next) => {
65093
+ setNode(next);
65094
+ if (next) setProbed(readDark(next));
65095
+ }, []);
65096
+ useEffect(() => {
65097
+ if (!node || scoped !== void 0) return;
65098
+ const update = () => setProbed(readDark(node));
65099
+ update();
65100
+ const observer = new MutationObserver(update);
65101
+ observer.observe(document.documentElement, {
65102
+ attributes: true,
65103
+ attributeFilter: ["class", "data-theme"],
65104
+ subtree: true
65105
+ });
65106
+ return () => observer.disconnect();
65107
+ }, [node, scoped]);
65108
+ return [scoped !== void 0 ? scoped === "dark" : probed, attach];
65109
+ }
65110
+
65111
+ //#endregion
65112
+ //#region ../ui-kit/src/markdown/mermaid.tsx
65113
+ /** 代码围栏的语言标签;两个渲染入口共用这一份判定 */
65114
+ const MERMAID_LANGUAGE = "mermaid";
65115
+ /**
65116
+ * 一条消息里常有多张图,共用同一个模块 promise,避免每个挂载点各发一次动态 import。
65117
+ * mermaid 是可选 peer:没装时这个 promise 一直是 rejected,各挂载点一律退回代码块。
65118
+ */
65119
+ let mermaidModule;
65120
+ const loadMermaid = () => mermaidModule ??= import("./mermaid.core-DMtwGCHy.js");
65121
+ /** mermaid 主题变量 → 本仓语义 token。配色一律从这里取,不写死色值 */
65122
+ const MERMAID_COLOR_TOKENS = {
65123
+ background: "--color-canvas",
65124
+ primaryColor: "--color-subtle",
65125
+ primaryTextColor: "--color-ink",
65126
+ primaryBorderColor: "--color-border",
65127
+ secondaryColor: "--color-surface",
65128
+ tertiaryColor: "--color-card",
65129
+ lineColor: "--color-muted",
65130
+ textColor: "--color-ink"
65131
+ };
65132
+ /**
65133
+ * token 的值可能是 `oklch()` / `color-mix()`,而 mermaid 的调色靠 khroma,只认 rgb 一族。
65134
+ * 画进 1×1 画布再读像素,是唯一不依赖具体色彩空间的归一化方式。
65135
+ */
65136
+ function readThemeColors(node) {
65137
+ if (typeof document === "undefined") return void 0;
65138
+ const styles = getComputedStyle(node);
65139
+ const raw = Object.entries(MERMAID_COLOR_TOKENS).map(([variable, token]) => [variable, styles.getPropertyValue(token).trim()]).filter(([, value]) => value !== "");
65140
+ if (raw.length === 0) return void 0;
65141
+ const canvas = document.createElement("canvas");
65142
+ canvas.width = 1;
65143
+ canvas.height = 1;
65144
+ const ctx = canvas.getContext("2d");
65145
+ if (!ctx) return void 0;
65146
+ const out = {};
65147
+ for (const [variable, value] of raw) {
65148
+ ctx.clearRect(0, 0, 1, 1);
65149
+ ctx.fillStyle = value;
65150
+ ctx.fillRect(0, 0, 1, 1);
65151
+ const [r, g, b, a] = ctx.getImageData(0, 0, 1, 1).data;
65152
+ out[variable] = `rgba(${r ?? 0}, ${g ?? 0}, ${b ?? 0}, ${(a ?? 255) / 255})`;
65153
+ }
65154
+ return out;
65155
+ }
65156
+ /**
65157
+ * mermaid 的配置是**全局**的(不像 echarts 是实例级),所以每次渲染前都整份重设:
65158
+ * 这样亮暗两个 ThemeScope 同页时,各自渲染各自那一次的配置仍然是对的。
65159
+ */
65160
+ function buildConfig(dark, node) {
65161
+ const themeVariables = node ? readThemeColors(node) : void 0;
65162
+ return {
65163
+ startOnLoad: false,
65164
+ securityLevel: "strict",
65165
+ htmlLabels: false,
65166
+ suppressErrorRendering: true,
65167
+ theme: dark ? "dark" : "default",
65168
+ ...themeVariables ? { themeVariables } : {}
65169
+ };
65170
+ }
65171
+ /**
65172
+ * `click X href "…"` 即便在 strict 档也只是被 sanitize-url 过一遍,链接本身照样渲染。
65173
+ * 模型产出的图不该带跳转,所以插进 DOM 之前先把 href 摘干净。
65174
+ */
65175
+ function stripDiagramLinks(svg) {
65176
+ if (typeof DOMParser === "undefined" || !svg.includes("<a")) return svg;
65177
+ const doc = new DOMParser().parseFromString(svg, "text/html");
65178
+ const anchors = doc.querySelectorAll("a");
65179
+ if (anchors.length === 0) return svg;
65180
+ for (const anchor of anchors) {
65181
+ anchor.removeAttribute("href");
65182
+ anchor.removeAttribute("xlink:href");
65183
+ anchor.removeAttribute("target");
65184
+ }
65185
+ return doc.body.innerHTML;
65186
+ }
65187
+ /**
65188
+ * 代码围栏里的 mermaid 图。两个 markdown 渲染入口共用本组件,
65189
+ * 差别只在 `fallback` 由各自的代码块呈现提供。
65190
+ *
65191
+ * 三种情况一律退回 `fallback`:宿主没装 mermaid、语法不合法、渲染抛错。
65192
+ * 不加「渲染失败」之类的提示——降级物就是图的源码,用户看得见那是什么
65193
+ * (与 `MarkdownImage` 退回 alt 同理)。
65194
+ */
65195
+ function MermaidDiagram({ code, fallback, className }) {
65196
+ const [dark, attachTheme] = useDarkAncestor();
65197
+ const [svg, setSvg] = useState(void 0);
65198
+ const nodeRef = useRef(null);
65199
+ const seqRef = useRef(0);
65200
+ const idBase = `webskill-mermaid-${useId().replace(/[^a-zA-Z0-9_-]/g, "")}`;
65201
+ const attach = useCallback((node) => {
65202
+ nodeRef.current = node;
65203
+ attachTheme(node);
65204
+ }, [attachTheme]);
65205
+ useEffect(() => {
65206
+ let cancelled = false;
65207
+ (async () => {
65208
+ try {
65209
+ const mermaid = (await loadMermaid()).default;
65210
+ if (cancelled) return;
65211
+ mermaid.initialize(buildConfig(dark, nodeRef.current));
65212
+ if (!await mermaid.parse(code, { suppressErrors: true })) return;
65213
+ if (cancelled) return;
65214
+ const { svg: rendered } = await mermaid.render(`${idBase}-${++seqRef.current}`, code);
65215
+ if (!cancelled) setSvg(stripDiagramLinks(rendered));
65216
+ } catch {}
65217
+ })();
65218
+ return () => {
65219
+ cancelled = true;
65220
+ };
65221
+ }, [
65222
+ code,
65223
+ dark,
65224
+ idBase
65225
+ ]);
65226
+ if (svg === void 0) return /* @__PURE__ */ jsx("div", {
65227
+ ref: attach,
65228
+ className: "contents",
65229
+ children: fallback
65230
+ });
65231
+ return /* @__PURE__ */ jsx("div", {
65232
+ ref: attach,
65233
+ "data-webskill-mermaid": "",
65234
+ "data-testid": "mermaid-diagram",
65235
+ className: cn("my-3 flex justify-center overflow-x-auto rounded-card border border-border bg-card p-3", className),
65236
+ dangerouslySetInnerHTML: { __html: svg }
65237
+ });
65238
+ }
65239
+
61564
65240
  //#endregion
61565
65241
  //#region ../../node_modules/.pnpm/@babel+runtime@7.29.7/node_modules/@babel/runtime/helpers/interopRequireDefault.js
61566
65242
  var require_interopRequireDefault = /* @__PURE__ */ __commonJSMin(((exports, module) => {
@@ -120357,53 +124033,6 @@ var typescript_default = typescript;
120357
124033
  init_yaml();
120358
124034
  var yaml_default = yaml;
120359
124035
 
120360
- //#endregion
120361
- //#region ../ui-kit/src/theme/useDarkAncestor.ts
120362
- /**
120363
- * 声明了主题的祖先:`data-theme` 由 ThemeScope 挂(亮暗都挂),`.dark` 是宿主页面惯用的暗色类名。
120364
- * 两者一起选,`closest` 才会停在**最近**的那一层,而不是越过亮色实例去命中外层的暗色宿主。
120365
- */
120366
- const THEME_ANCESTOR = "[data-theme], .dark";
120367
- function readDark(node) {
120368
- const scope = node.closest(THEME_ANCESTOR);
120369
- if (!scope) return false;
120370
- const declared = scope.getAttribute("data-theme");
120371
- return declared === null ? true : declared === "dark";
120372
- }
120373
- /**
120374
- * 判定挂载点**最近的**主题祖先是否处于暗色(0.6.0 FR-20.4)。
120375
- *
120376
- * 不用 `document.querySelector('.dark')`:那是全局查询,宿主页面是暗色时,
120377
- * 嵌在暗色宿主里的亮色 SDK 实例也会被判成暗色(反之亦然)。
120378
- *
120379
- * 返回 ref 回调而不是接受 ref 对象:ref 对象的赋值不触发渲染,拿不到「已挂载」这个时机。
120380
- *
120381
- * 首次判定在 ref 回调里**同步**完成,不等 effect:消费方(如按主题分叉的 markdown
120382
- * 高亮器)可能在首帧就固化选择,晚一帧就会永久停在亮色(设计 15-01 §1.2 假设 H-c)。
120383
- */
120384
- function useDarkAncestor() {
120385
- const scoped = useThemeValue();
120386
- const [node, setNode] = useState(null);
120387
- const [probed, setProbed] = useState(false);
120388
- const attach = useCallback((next) => {
120389
- setNode(next);
120390
- if (next) setProbed(readDark(next));
120391
- }, []);
120392
- useEffect(() => {
120393
- if (!node || scoped !== void 0) return;
120394
- const update = () => setProbed(readDark(node));
120395
- update();
120396
- const observer = new MutationObserver(update);
120397
- observer.observe(document.documentElement, {
120398
- attributes: true,
120399
- attributeFilter: ["class", "data-theme"],
120400
- subtree: true
120401
- });
120402
- return () => observer.disconnect();
120403
- }, [node, scoped]);
120404
- return [scoped !== void 0 ? scoped === "dark" : probed, attach];
120405
- }
120406
-
120407
124036
  //#endregion
120408
124037
  //#region ../ui-kit/src/markdown/prism.ts
120409
124038
  var import_cjs = require_cjs();
@@ -121041,7 +124670,16 @@ const CODE_TOKEN_VARS = Object.fromEntries(Object.keys(PRISM_THEME.light).filter
121041
124670
  //#region ../ui-kit/src/markdown/Markdown.tsx
121042
124671
  function CodeBlock({ node: _node, className, children, ...rest }) {
121043
124672
  const [dark, themeRef] = useDarkAncestor();
121044
- const language = resolveLanguage(/language-(\w+)/.exec(className ?? "")?.[1]);
124673
+ const match = /language-(\w+)/.exec(className ?? "");
124674
+ const language = resolveLanguage(match?.[1]);
124675
+ if (match?.[1] === "mermaid") return /* @__PURE__ */ jsx(MermaidDiagram, {
124676
+ code: String(children).replace(/\n$/, ""),
124677
+ fallback: /* @__PURE__ */ jsx("code", {
124678
+ className: "rounded-md bg-subtle px-1.5 py-0.5 font-mono text-ink",
124679
+ ...rest,
124680
+ children
124681
+ })
124682
+ });
121045
124683
  if (language) return /* @__PURE__ */ jsxs("div", {
121046
124684
  ref: themeRef,
121047
124685
  className: "my-3 overflow-hidden rounded-card border border-border bg-card",
@@ -121068,35 +124706,42 @@ function CodeBlock({ node: _node, className, children, ...rest }) {
121068
124706
  children
121069
124707
  });
121070
124708
  }
124709
+ /**
124710
+ * 模块级常量,**不可内联进 JSX**:react-markdown 按 `components` 的引用决定是否重建子树,
124711
+ * 每次渲染换新对象会让图片组件卸载重挂,于是流式输出期间同一张图被反复解析。
124712
+ */
124713
+ const MARKDOWN_COMPONENTS = {
124714
+ code: CodeBlock,
124715
+ img: MarkdownImage,
124716
+ p: ({ node: _node, ...props }) => /* @__PURE__ */ jsx("p", {
124717
+ className: "my-2",
124718
+ ...props
124719
+ }),
124720
+ ul: ({ node: _node, ...props }) => /* @__PURE__ */ jsx("ul", {
124721
+ className: "my-2 list-disc space-y-1 pl-5",
124722
+ ...props
124723
+ }),
124724
+ ol: ({ node: _node, ...props }) => /* @__PURE__ */ jsx("ol", {
124725
+ className: "my-2 list-decimal space-y-1 pl-5",
124726
+ ...props
124727
+ }),
124728
+ a: ({ node: _node, ...props }) => /* @__PURE__ */ jsx("a", {
124729
+ className: "font-medium text-ink underline underline-offset-4 hover:text-muted",
124730
+ target: "_blank",
124731
+ rel: "noreferrer",
124732
+ ...props
124733
+ }),
124734
+ pre: ({ node: _node, ...props }) => /* @__PURE__ */ jsx("pre", {
124735
+ className: "my-0",
124736
+ ...props
124737
+ })
124738
+ };
121071
124739
  function Markdown({ children, className = "" }) {
121072
124740
  return /* @__PURE__ */ jsx("div", {
121073
124741
  className: `text-sm leading-6 text-ink ${className}`,
121074
124742
  children: /* @__PURE__ */ jsx(Markdown$1, {
121075
- components: {
121076
- code: CodeBlock,
121077
- p: ({ node: _node, ...props }) => /* @__PURE__ */ jsx("p", {
121078
- className: "my-2",
121079
- ...props
121080
- }),
121081
- ul: ({ node: _node, ...props }) => /* @__PURE__ */ jsx("ul", {
121082
- className: "my-2 list-disc space-y-1 pl-5",
121083
- ...props
121084
- }),
121085
- ol: ({ node: _node, ...props }) => /* @__PURE__ */ jsx("ol", {
121086
- className: "my-2 list-decimal space-y-1 pl-5",
121087
- ...props
121088
- }),
121089
- a: ({ node: _node, ...props }) => /* @__PURE__ */ jsx("a", {
121090
- className: "font-medium text-ink underline underline-offset-4 hover:text-muted",
121091
- target: "_blank",
121092
- rel: "noreferrer",
121093
- ...props
121094
- }),
121095
- pre: ({ node: _node, ...props }) => /* @__PURE__ */ jsx("pre", {
121096
- className: "my-0",
121097
- ...props
121098
- })
121099
- },
124743
+ urlTransform: markdownUrlTransform,
124744
+ components: MARKDOWN_COMPONENTS,
121100
124745
  children
121101
124746
  })
121102
124747
  });
@@ -127908,10 +131553,10 @@ const RATIO_CLASS = {
127908
131553
  };
127909
131554
  function SpecImage({ props }) {
127910
131555
  const ratio = str(props, "ratio", "auto");
127911
- return /* @__PURE__ */ jsx("img", {
131556
+ return /* @__PURE__ */ jsx(MarkdownImage, {
127912
131557
  src: str(props, "src"),
127913
131558
  alt: str(props, "alt"),
127914
- className: `w-full rounded-md object-cover ${RATIO_CLASS[ratio] ?? ""}`
131559
+ className: `my-0 max-h-none w-full rounded-md border-0 object-cover ${RATIO_CLASS[ratio] ?? ""}`
127915
131560
  });
127916
131561
  }
127917
131562
  function SpecQuote({ props }) {
@@ -131244,7 +134889,14 @@ async function probeJsonRenderAvailability() {
131244
134889
  var SpecInteractionChannel = class {
131245
134890
  /** 宿主注入的界面文案(本地化);未设时用 FormModel 的英文默认值 */
131246
134891
  labelsFor = () => ({});
131247
- #current;
134892
+ /**
134893
+ * 待决交互队列,队头即 `current`(0.23.0 分册 19 FR-19.6)。
134894
+ *
134895
+ * 原本是单槽,新请求到来时把旧请求主动取消。并发子 agent 下那一句
134896
+ * 「正常路径 runtime 串行」不再成立,而主动取消比悬挂还糟:
134897
+ * 子 agent 会收到一个看似正常的 `cancelled: true`,然后把「用户拒绝了」写进结论。
134898
+ */
134899
+ #queue = [];
131248
134900
  #listeners = /* @__PURE__ */ new Set();
131249
134901
  #attached = 0;
131250
134902
  #failure;
@@ -131254,7 +134906,7 @@ var SpecInteractionChannel = class {
131254
134906
  return () => this.#listeners.delete(listener);
131255
134907
  };
131256
134908
  get current() {
131257
- return this.#current?.session;
134909
+ return this.#queue[0]?.session;
131258
134910
  }
131259
134911
  get isAttached() {
131260
134912
  return this.#attached > 0;
@@ -131270,26 +134922,22 @@ var SpecInteractionChannel = class {
131270
134922
  this.#attached = Math.max(0, this.#attached - 1);
131271
134923
  }
131272
134924
  request(input) {
131273
- if (this.#current) this.#settle({
131274
- id: this.#current.session.request.id,
131275
- cancelled: true
131276
- });
131277
134925
  return new Promise((resolve, reject) => {
131278
134926
  const session = {
131279
134927
  request: input,
131280
134928
  spec: interactionToUiSpec(input, this.labelsFor(input))
131281
134929
  };
131282
- this.#current = {
134930
+ this.#queue.push({
131283
134931
  session,
131284
134932
  resolve,
131285
134933
  reject
131286
- };
134934
+ });
131287
134935
  this.#emit();
131288
134936
  });
131289
134937
  }
131290
134938
  /** runtime 交互超时/取消:以 cancelled resolve 挂起的 request(防悬挂 + 残留) */
131291
134939
  cancel(id) {
131292
- if (this.#current?.session.request.id === id) this.#settle({
134940
+ if (this.#queue.some((entry) => entry.session.request.id === id)) this.#settle({
131293
134941
  id,
131294
134942
  cancelled: true
131295
134943
  });
@@ -131300,14 +134948,14 @@ var SpecInteractionChannel = class {
131300
134948
  * 本通道只提供入口:裸用本通道的宿主不调就维持原来的 cancelled 语义。
131301
134949
  */
131302
134950
  decline(id) {
131303
- if (this.#current?.session.request.id === id) this.#settle({
134951
+ if (this.#queue.some((entry) => entry.session.request.id === id)) this.#settle({
131304
134952
  id,
131305
134953
  value: false
131306
134954
  });
131307
134955
  }
131308
134956
  /** react 层动作回传:submit 归形提交值,其余意图(cancel)按取消收尾 */
131309
134957
  handleAction(event) {
131310
- const pending = this.#current;
134958
+ const pending = this.#queue[0];
131311
134959
  if (!pending) return;
131312
134960
  const { request } = pending.session;
131313
134961
  if (event.intent !== "submit") {
@@ -131326,14 +134974,16 @@ var SpecInteractionChannel = class {
131326
134974
  /** react 层初始化失败:挂起请求 reject 并记录原因(桥读取后降级 native) */
131327
134975
  fail(message) {
131328
134976
  this.#failure = message;
131329
- const pending = this.#current;
131330
- this.#current = void 0;
134977
+ const pendings = this.#queue;
134978
+ this.#queue = [];
131331
134979
  this.#emit();
131332
- pending?.reject(new Error(message));
134980
+ const error = new Error(message);
134981
+ for (const pending of pendings) pending.reject(error);
131333
134982
  }
131334
134983
  #settle(response) {
131335
- const pending = this.#current;
131336
- this.#current = void 0;
134984
+ const index = this.#queue.findIndex((entry) => entry.session.request.id === response.id);
134985
+ if (index < 0) return;
134986
+ const [pending] = this.#queue.splice(index, 1);
131337
134987
  this.#emit();
131338
134988
  pending?.resolve(response);
131339
134989
  }
@@ -131353,7 +135003,7 @@ function OpenUiSpecSurface({ spec, surfaceId, actions, onAction }) {
131353
135003
  const [unavailable, setUnavailable] = useState(false);
131354
135004
  useEffect(() => {
131355
135005
  let cancelled = false;
131356
- import("./openUiLibrary-b0i7F_oZ.js").then((loaded) => {
135006
+ import("./openUiLibrary-B7j3rLrm.js").then((loaded) => {
131357
135007
  if (!cancelled) setModule(loaded);
131358
135008
  }).catch(() => {
131359
135009
  if (!cancelled) setUnavailable(true);