@almadar/ui 2.20.0 → 2.20.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/LICENSE +72 -21
  2. package/dist/avl/index.cjs +1437 -1328
  3. package/dist/avl/index.d.cts +51 -47
  4. package/dist/avl/index.js +1408 -1299
  5. package/dist/components/atoms/avl/Avl3DLabel.d.ts +23 -0
  6. package/dist/components/atoms/avl/Avl3DTooltip.d.ts +25 -0
  7. package/dist/components/atoms/avl/index.d.ts +2 -0
  8. package/dist/components/index.cjs +3 -1
  9. package/dist/components/index.js +3 -1
  10. package/dist/components/molecules/avl/Avl3DCrossWire.d.ts +22 -0
  11. package/dist/components/molecules/avl/Avl3DEntityCore.d.ts +26 -0
  12. package/dist/components/molecules/avl/Avl3DExprTree.d.ts +21 -0
  13. package/dist/components/molecules/avl/Avl3DOrbitalNode.d.ts +29 -0
  14. package/dist/components/molecules/avl/Avl3DStateNode.d.ts +34 -0
  15. package/dist/components/molecules/avl/Avl3DTransitionArc.d.ts +38 -0
  16. package/dist/components/molecules/avl/index.d.ts +6 -0
  17. package/dist/components/organisms/avl/Avl3DApplicationScene.d.ts +19 -0
  18. package/dist/components/organisms/avl/Avl3DEffects.d.ts +18 -0
  19. package/dist/components/organisms/avl/Avl3DOrbitalScene.d.ts +23 -0
  20. package/dist/components/organisms/avl/Avl3DTraitScene.d.ts +19 -0
  21. package/dist/components/organisms/avl/Avl3DTransitionScene.d.ts +17 -0
  22. package/dist/components/organisms/avl/Avl3DViewer.d.ts +40 -0
  23. package/dist/components/organisms/avl/AvlOrbitalScene.d.ts +4 -0
  24. package/dist/components/organisms/avl/avl-3d-context.d.ts +32 -0
  25. package/dist/components/organisms/avl/avl-3d-layout.d.ts +116 -0
  26. package/dist/components/organisms/avl/avl-zoom-state.d.ts +3 -0
  27. package/dist/components/organisms/game/three/index.cjs +2549 -120
  28. package/dist/components/organisms/game/three/index.d.ts +8 -0
  29. package/dist/components/organisms/game/three/index.js +2419 -5
  30. package/dist/illustrations/index.cjs +2880 -109
  31. package/dist/illustrations/index.js +2879 -108
  32. package/dist/providers/OrbitalProvider.d.ts +4 -2
  33. package/dist/providers/index.cjs +263 -284
  34. package/dist/providers/index.js +189 -210
  35. package/dist/runtime/OrbPreview.d.ts +9 -6
  36. package/dist/runtime/ServerBridge.d.ts +23 -0
  37. package/dist/runtime/enrichFromResponse.d.ts +21 -0
  38. package/dist/runtime/index.cjs +31754 -2587
  39. package/dist/runtime/index.d.ts +2 -0
  40. package/dist/runtime/index.js +31735 -2571
  41. package/package.json +5 -2
@@ -1,5 +1,8 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
- import React24 from 'react';
2
+ import React26, { createContext, useCallback, useContext } from 'react';
3
+ import '@react-three/drei';
4
+ import '@react-three/fiber';
5
+ import 'three';
3
6
 
4
7
  function buildForkPaths(x, y, branches, scale) {
5
8
  const inLength = 30 * scale;
@@ -126,7 +129,7 @@ var SvgFlow = ({
126
129
  opacity = 1,
127
130
  className
128
131
  }) => {
129
- const markerId = React24.useMemo(() => {
132
+ const markerId = React26.useMemo(() => {
130
133
  flowIdCounter += 1;
131
134
  return `almadar-flow-arrow-${flowIdCounter}`;
132
135
  }, []);
@@ -518,7 +521,7 @@ SvgMorph.displayName = "SvgMorph";
518
521
  var SvgNode = ({
519
522
  x,
520
523
  y,
521
- r = 6,
524
+ r: r2 = 6,
522
525
  variant = "filled",
523
526
  color = "var(--color-primary)",
524
527
  opacity = 1,
@@ -531,7 +534,7 @@ var SvgNode = ({
531
534
  {
532
535
  cx: x,
533
536
  cy: y,
534
- r: r * 2,
537
+ r: r2 * 2,
535
538
  fill: "none",
536
539
  stroke: color,
537
540
  strokeWidth: 1,
@@ -544,7 +547,7 @@ var SvgNode = ({
544
547
  {
545
548
  cx: x,
546
549
  cy: y,
547
- r,
550
+ r: r2,
548
551
  fill: variant === "stroked" ? "none" : color,
549
552
  stroke: variant === "stroked" ? color : "none",
550
553
  strokeWidth: variant === "stroked" ? 2 : 0
@@ -554,7 +557,7 @@ var SvgNode = ({
554
557
  "text",
555
558
  {
556
559
  x,
557
- y: y + r + 14,
560
+ y: y + r2 + 14,
558
561
  textAnchor: "middle",
559
562
  fill: color,
560
563
  fontSize: 11,
@@ -619,7 +622,7 @@ var ringIdCounter = 0;
619
622
  var SvgRing = ({
620
623
  cx,
621
624
  cy,
622
- r = 40,
625
+ r: r2 = 40,
623
626
  variant = "solid",
624
627
  color = "var(--color-primary)",
625
628
  strokeWidth = 1.5,
@@ -627,7 +630,7 @@ var SvgRing = ({
627
630
  className,
628
631
  label
629
632
  }) => {
630
- const gradientId = React24.useMemo(() => {
633
+ const gradientId = React26.useMemo(() => {
631
634
  ringIdCounter += 1;
632
635
  return `almadar-ring-glow-${ringIdCounter}`;
633
636
  }, []);
@@ -637,14 +640,14 @@ var SvgRing = ({
637
640
  /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: color, stopOpacity: 0.15 }),
638
641
  /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: color, stopOpacity: 0 })
639
642
  ] }) }),
640
- /* @__PURE__ */ jsx("circle", { cx, cy, r, fill: `url(#${gradientId})` })
643
+ /* @__PURE__ */ jsx("circle", { cx, cy, r: r2, fill: `url(#${gradientId})` })
641
644
  ] }),
642
645
  /* @__PURE__ */ jsx(
643
646
  "circle",
644
647
  {
645
648
  cx,
646
649
  cy,
647
- r,
650
+ r: r2,
648
651
  fill: "none",
649
652
  stroke: color,
650
653
  strokeWidth,
@@ -655,7 +658,7 @@ var SvgRing = ({
655
658
  "text",
656
659
  {
657
660
  x: cx,
658
- y: cy - r - 6,
661
+ y: cy - r2 - 6,
659
662
  textAnchor: "middle",
660
663
  fill: color,
661
664
  fontSize: 11,
@@ -787,7 +790,7 @@ var AIGenerates = ({
787
790
  color = "var(--color-primary)",
788
791
  animated = false
789
792
  }) => {
790
- const ids = React24.useMemo(() => {
793
+ const ids = React26.useMemo(() => {
791
794
  aiGeneratesId += 1;
792
795
  const base = `ag-${aiGeneratesId}`;
793
796
  return {
@@ -908,16 +911,16 @@ var AIGenerates = ({
908
911
  };
909
912
  AIGenerates.displayName = "AIGenerates";
910
913
  var closedCircuitId = 0;
911
- function pentagonPoint(cx, cy, r, index) {
914
+ function pentagonPoint(cx, cy, r2, index) {
912
915
  const angle = Math.PI * 2 * index / 5 - Math.PI / 2;
913
- return [cx + r * Math.cos(angle), cy + r * Math.sin(angle)];
916
+ return [cx + r2 * Math.cos(angle), cy + r2 * Math.sin(angle)];
914
917
  }
915
918
  var ClosedCircuit = ({
916
919
  className,
917
920
  color = "var(--color-primary)",
918
921
  animated = false
919
922
  }) => {
920
- const ids = React24.useMemo(() => {
923
+ const ids = React26.useMemo(() => {
921
924
  closedCircuitId += 1;
922
925
  const base = `cc-${closedCircuitId}`;
923
926
  return {
@@ -929,8 +932,8 @@ var ClosedCircuit = ({
929
932
  }, []);
930
933
  const cx = 300;
931
934
  const cy = 200;
932
- const r = 130;
933
- const points = Array.from({ length: 5 }, (_, i) => pentagonPoint(cx, cy, r, i));
935
+ const r2 = 130;
936
+ const points = Array.from({ length: 5 }, (_, i) => pentagonPoint(cx, cy, r2, i));
934
937
  const gx = points[1][0];
935
938
  const gy = points[1][1];
936
939
  const ds = 10;
@@ -979,7 +982,7 @@ var ClosedCircuit = ({
979
982
  }
980
983
  ` }),
981
984
  /* @__PURE__ */ jsx("circle", { cx, cy, r: 50, fill: "none", stroke: color, strokeWidth: 0.5, opacity: 0.06 }),
982
- /* @__PURE__ */ jsx("circle", { cx, cy, r: r + 20, fill: "none", stroke: color, strokeWidth: 0.3, opacity: 0.04 }),
985
+ /* @__PURE__ */ jsx("circle", { cx, cy, r: r2 + 20, fill: "none", stroke: color, strokeWidth: 0.3, opacity: 0.04 }),
983
986
  points.map((pt, i) => {
984
987
  const next = points[(i + 1) % 5];
985
988
  const mx = (pt[0] + next[0]) / 2 + (cy - (pt[1] + next[1]) / 2) * 0.15;
@@ -1063,7 +1066,7 @@ var CommunityOwnership = ({
1063
1066
  color = "var(--color-primary)",
1064
1067
  animated = false
1065
1068
  }) => {
1066
- const ids = React24.useMemo(() => {
1069
+ const ids = React26.useMemo(() => {
1067
1070
  communityOwnershipId += 1;
1068
1071
  const base = `co-${communityOwnershipId}`;
1069
1072
  return { unitGlow: `${base}-ug` };
@@ -1148,7 +1151,7 @@ var CompileAnywhere = ({
1148
1151
  color = "var(--color-primary)",
1149
1152
  animated = false
1150
1153
  }) => {
1151
- const ids = React24.useMemo(() => {
1154
+ const ids = React26.useMemo(() => {
1152
1155
  compileAnywhereId += 1;
1153
1156
  const base = `ca-${compileAnywhereId}`;
1154
1157
  return {
@@ -1278,7 +1281,7 @@ var ComposableModels = ({
1278
1281
  color = "var(--color-primary)",
1279
1282
  animated = false
1280
1283
  }) => {
1281
- const ids = React24.useMemo(() => {
1284
+ const ids = React26.useMemo(() => {
1282
1285
  composableModelsId += 1;
1283
1286
  const base = `cm-${composableModelsId}`;
1284
1287
  return {
@@ -1425,7 +1428,7 @@ var DescribeProveDeploy = ({
1425
1428
  color = "var(--color-primary)",
1426
1429
  animated = false
1427
1430
  }) => {
1428
- const ids = React24.useMemo(() => {
1431
+ const ids = React26.useMemo(() => {
1429
1432
  describeProveDeployId += 1;
1430
1433
  const base = `dpd-${describeProveDeployId}`;
1431
1434
  return {
@@ -1593,7 +1596,7 @@ var DomainGrid = ({
1593
1596
  color = "var(--color-primary)",
1594
1597
  animated = false
1595
1598
  }) => {
1596
- const ids = React24.useMemo(() => {
1599
+ const ids = React26.useMemo(() => {
1597
1600
  domainGridId += 1;
1598
1601
  const base = `dg-${domainGridId}`;
1599
1602
  return { clusterGlow: `${base}-cg` };
@@ -1696,7 +1699,7 @@ var EventBus = ({
1696
1699
  color = "var(--color-primary)",
1697
1700
  animated = false
1698
1701
  }) => {
1699
- const ids = React24.useMemo(() => {
1702
+ const ids = React26.useMemo(() => {
1700
1703
  eventBusId += 1;
1701
1704
  const base = `eb-${eventBusId}`;
1702
1705
  return {
@@ -1757,12 +1760,12 @@ var EventBus = ({
1757
1760
  `conn-${i}`
1758
1761
  )),
1759
1762
  /* @__PURE__ */ jsx("circle", { cx: CX, cy: CY, r: 40, fill: `url(#${ids.pulseGlow})` }),
1760
- [30, 50, 75].map((r, i) => /* @__PURE__ */ jsx(
1763
+ [30, 50, 75].map((r2, i) => /* @__PURE__ */ jsx(
1761
1764
  "circle",
1762
1765
  {
1763
1766
  cx: CX,
1764
1767
  cy: CY,
1765
- r,
1768
+ r: r2,
1766
1769
  fill: "none",
1767
1770
  stroke: color,
1768
1771
  strokeWidth: 1.2,
@@ -1808,7 +1811,7 @@ var OrbitalUnit = ({
1808
1811
  color = "var(--color-primary)",
1809
1812
  animated = false
1810
1813
  }) => {
1811
- const ids = React24.useMemo(() => {
1814
+ const ids = React26.useMemo(() => {
1812
1815
  orbitalUnitId += 1;
1813
1816
  const base = `ou-${orbitalUnitId}`;
1814
1817
  return {
@@ -1974,7 +1977,7 @@ var PlanVerifyRemember = ({
1974
1977
  color = "var(--color-primary)",
1975
1978
  animated = false
1976
1979
  }) => {
1977
- const ids = React24.useMemo(() => {
1980
+ const ids = React26.useMemo(() => {
1978
1981
  planVerifyRememberId += 1;
1979
1982
  const base = `pvr-${planVerifyRememberId}`;
1980
1983
  return {
@@ -2123,7 +2126,7 @@ var ProveCorrect = ({
2123
2126
  color = "var(--color-primary)",
2124
2127
  animated = false
2125
2128
  }) => {
2126
- const ids = React24.useMemo(() => {
2129
+ const ids = React26.useMemo(() => {
2127
2130
  proveCorrectId += 1;
2128
2131
  const base = `pc-${proveCorrectId}`;
2129
2132
  return {
@@ -2243,7 +2246,7 @@ var ServiceLayers = ({
2243
2246
  color = "var(--color-primary)",
2244
2247
  animated = false
2245
2248
  }) => {
2246
- const ids = React24.useMemo(() => {
2249
+ const ids = React26.useMemo(() => {
2247
2250
  serviceLayersId += 1;
2248
2251
  const base = `sly-${serviceLayersId}`;
2249
2252
  return {
@@ -2395,7 +2398,7 @@ var SharedReality = ({
2395
2398
  color = "var(--color-primary)",
2396
2399
  animated = false
2397
2400
  }) => {
2398
- const ids = React24.useMemo(() => {
2401
+ const ids = React26.useMemo(() => {
2399
2402
  sharedRealityId += 1;
2400
2403
  const base = `sr-${sharedRealityId}`;
2401
2404
  return { grad: `${base}-grad`, unitGlow: `${base}-ug` };
@@ -2497,7 +2500,7 @@ var StandardLibrary = ({
2497
2500
  color = "var(--color-primary)",
2498
2501
  animated = false
2499
2502
  }) => {
2500
- const ids = React24.useMemo(() => {
2503
+ const ids = React26.useMemo(() => {
2501
2504
  standardLibraryId += 1;
2502
2505
  const base = `sl-${standardLibraryId}`;
2503
2506
  return { glow: `${base}-glow`, groupGlow: `${base}-gg` };
@@ -2565,9 +2568,9 @@ var StandardLibrary = ({
2565
2568
  /* @__PURE__ */ jsx("circle", { cx: group.x, cy: group.y, r: 24, fill: "none", stroke: color, strokeWidth: 0.7, opacity: 0.15 }),
2566
2569
  Array.from({ length: group.dots }, (_, di) => {
2567
2570
  const angle = di / group.dots * Math.PI * 2 - Math.PI / 2;
2568
- const r = di === 0 ? 0 : spread * 0.55;
2569
- const dx = di === 0 ? group.x : group.x + Math.cos(angle) * r;
2570
- const dy = di === 0 ? group.y : group.y + Math.sin(angle) * r;
2571
+ const r2 = di === 0 ? 0 : spread * 0.55;
2572
+ const dx = di === 0 ? group.x : group.x + Math.cos(angle) * r2;
2573
+ const dy = di === 0 ? group.y : group.y + Math.sin(angle) * r2;
2571
2574
  return /* @__PURE__ */ jsx(
2572
2575
  "circle",
2573
2576
  {
@@ -2606,7 +2609,7 @@ var StateMachine = ({
2606
2609
  color = "var(--color-primary)",
2607
2610
  animated = false
2608
2611
  }) => {
2609
- const ids = React24.useMemo(() => {
2612
+ const ids = React26.useMemo(() => {
2610
2613
  stateMachineId += 1;
2611
2614
  const base = `sm-${stateMachineId}`;
2612
2615
  return {
@@ -2784,7 +2787,7 @@ var WorldModel = ({
2784
2787
  color = "var(--color-primary)",
2785
2788
  animated = false
2786
2789
  }) => {
2787
- const ids = React24.useMemo(() => {
2790
+ const ids = React26.useMemo(() => {
2788
2791
  worldModelId += 1;
2789
2792
  const base = `wm-${worldModelId}`;
2790
2793
  return {
@@ -2946,7 +2949,7 @@ var AVL_OPERATOR_COLORS = {
2946
2949
  var AvlOrbital = ({
2947
2950
  cx = 0,
2948
2951
  cy = 0,
2949
- r = 80,
2952
+ r: r2 = 80,
2950
2953
  label,
2951
2954
  color = "var(--color-primary)",
2952
2955
  opacity = 1,
@@ -2958,7 +2961,7 @@ var AvlOrbital = ({
2958
2961
  {
2959
2962
  cx,
2960
2963
  cy,
2961
- r,
2964
+ r: r2,
2962
2965
  fill: "none",
2963
2966
  stroke: color,
2964
2967
  strokeWidth: 2
@@ -2969,7 +2972,7 @@ var AvlOrbital = ({
2969
2972
  {
2970
2973
  cx,
2971
2974
  cy,
2972
- r,
2975
+ r: r2,
2973
2976
  fill: color,
2974
2977
  opacity: 0.03
2975
2978
  }
@@ -2978,7 +2981,7 @@ var AvlOrbital = ({
2978
2981
  "text",
2979
2982
  {
2980
2983
  x: cx,
2981
- y: cy - r - 8,
2984
+ y: cy - r2 - 8,
2982
2985
  textAnchor: "middle",
2983
2986
  fill: color,
2984
2987
  fontSize: 11,
@@ -3005,7 +3008,7 @@ function persistenceStroke(kind) {
3005
3008
  var AvlEntity = ({
3006
3009
  x = 0,
3007
3010
  y = 0,
3008
- r = 18,
3011
+ r: r2 = 18,
3009
3012
  fieldCount = 0,
3010
3013
  persistence = "persistent",
3011
3014
  label,
@@ -3016,8 +3019,8 @@ var AvlEntity = ({
3016
3019
  const strokeProps = persistenceStroke(persistence);
3017
3020
  const facets = Array.from({ length: fieldCount }, (_, i) => {
3018
3021
  const angle = Math.PI * 2 * i / fieldCount - Math.PI / 2;
3019
- const innerR = r + 2;
3020
- const outerR = r + 10;
3022
+ const innerR = r2 + 2;
3023
+ const outerR = r2 + 10;
3021
3024
  return {
3022
3025
  x1: x + innerR * Math.cos(angle),
3023
3026
  y1: y + innerR * Math.sin(angle),
@@ -3026,13 +3029,13 @@ var AvlEntity = ({
3026
3029
  };
3027
3030
  });
3028
3031
  return /* @__PURE__ */ jsxs("g", { className, opacity, children: [
3029
- /* @__PURE__ */ jsx("circle", { cx: x, cy: y, r, fill: color, opacity: 0.15 }),
3032
+ /* @__PURE__ */ jsx("circle", { cx: x, cy: y, r: r2, fill: color, opacity: 0.15 }),
3030
3033
  /* @__PURE__ */ jsx(
3031
3034
  "circle",
3032
3035
  {
3033
3036
  cx: x,
3034
3037
  cy: y,
3035
- r,
3038
+ r: r2,
3036
3039
  fill: "none",
3037
3040
  stroke: color,
3038
3041
  strokeWidth: strokeProps.strokeWidth,
@@ -3044,7 +3047,7 @@ var AvlEntity = ({
3044
3047
  {
3045
3048
  cx: x,
3046
3049
  cy: y,
3047
- r: r - 4,
3050
+ r: r2 - 4,
3048
3051
  fill: "none",
3049
3052
  stroke: color,
3050
3053
  strokeWidth: 1.5
@@ -3067,7 +3070,7 @@ var AvlEntity = ({
3067
3070
  "text",
3068
3071
  {
3069
3072
  x,
3070
- y: y + r + (fieldCount > 0 ? 18 : 14),
3073
+ y: y + r2 + (fieldCount > 0 ? 18 : 14),
3071
3074
  textAnchor: "middle",
3072
3075
  fill: color,
3073
3076
  fontSize: 10,
@@ -3295,7 +3298,7 @@ var AvlTransition = ({
3295
3298
  opacity = 1,
3296
3299
  className
3297
3300
  }) => {
3298
- const ids = React24.useMemo(() => {
3301
+ const ids = React26.useMemo(() => {
3299
3302
  avlTransitionId += 1;
3300
3303
  return { arrow: `avl-tr-${avlTransitionId}-arrow` };
3301
3304
  }, []);
@@ -3969,23 +3972,2772 @@ var AvlBindingRef = ({
3969
3972
  };
3970
3973
  AvlBindingRef.displayName = "AvlBindingRef";
3971
3974
 
3975
+ // node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
3976
+ function r(e) {
3977
+ var t, f, n = "";
3978
+ if ("string" == typeof e || "number" == typeof e) n += e;
3979
+ else if ("object" == typeof e) if (Array.isArray(e)) {
3980
+ var o = e.length;
3981
+ for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
3982
+ } else for (f in e) e[f] && (n && (n += " "), n += f);
3983
+ return n;
3984
+ }
3985
+ function clsx() {
3986
+ for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
3987
+ return n;
3988
+ }
3989
+
3990
+ // node_modules/.pnpm/tailwind-merge@2.6.1/node_modules/tailwind-merge/dist/bundle-mjs.mjs
3991
+ var CLASS_PART_SEPARATOR = "-";
3992
+ var createClassGroupUtils = (config) => {
3993
+ const classMap = createClassMap(config);
3994
+ const {
3995
+ conflictingClassGroups,
3996
+ conflictingClassGroupModifiers
3997
+ } = config;
3998
+ const getClassGroupId = (className) => {
3999
+ const classParts = className.split(CLASS_PART_SEPARATOR);
4000
+ if (classParts[0] === "" && classParts.length !== 1) {
4001
+ classParts.shift();
4002
+ }
4003
+ return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);
4004
+ };
4005
+ const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {
4006
+ const conflicts = conflictingClassGroups[classGroupId] || [];
4007
+ if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {
4008
+ return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];
4009
+ }
4010
+ return conflicts;
4011
+ };
4012
+ return {
4013
+ getClassGroupId,
4014
+ getConflictingClassGroupIds
4015
+ };
4016
+ };
4017
+ var getGroupRecursive = (classParts, classPartObject) => {
4018
+ if (classParts.length === 0) {
4019
+ return classPartObject.classGroupId;
4020
+ }
4021
+ const currentClassPart = classParts[0];
4022
+ const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);
4023
+ const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : void 0;
4024
+ if (classGroupFromNextClassPart) {
4025
+ return classGroupFromNextClassPart;
4026
+ }
4027
+ if (classPartObject.validators.length === 0) {
4028
+ return void 0;
4029
+ }
4030
+ const classRest = classParts.join(CLASS_PART_SEPARATOR);
4031
+ return classPartObject.validators.find(({
4032
+ validator
4033
+ }) => validator(classRest))?.classGroupId;
4034
+ };
4035
+ var arbitraryPropertyRegex = /^\[(.+)\]$/;
4036
+ var getGroupIdForArbitraryProperty = (className) => {
4037
+ if (arbitraryPropertyRegex.test(className)) {
4038
+ const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];
4039
+ const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(":"));
4040
+ if (property) {
4041
+ return "arbitrary.." + property;
4042
+ }
4043
+ }
4044
+ };
4045
+ var createClassMap = (config) => {
4046
+ const {
4047
+ theme,
4048
+ prefix
4049
+ } = config;
4050
+ const classMap = {
4051
+ nextPart: /* @__PURE__ */ new Map(),
4052
+ validators: []
4053
+ };
4054
+ const prefixedClassGroupEntries = getPrefixedClassGroupEntries(Object.entries(config.classGroups), prefix);
4055
+ prefixedClassGroupEntries.forEach(([classGroupId, classGroup]) => {
4056
+ processClassesRecursively(classGroup, classMap, classGroupId, theme);
4057
+ });
4058
+ return classMap;
4059
+ };
4060
+ var processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {
4061
+ classGroup.forEach((classDefinition) => {
4062
+ if (typeof classDefinition === "string") {
4063
+ const classPartObjectToEdit = classDefinition === "" ? classPartObject : getPart(classPartObject, classDefinition);
4064
+ classPartObjectToEdit.classGroupId = classGroupId;
4065
+ return;
4066
+ }
4067
+ if (typeof classDefinition === "function") {
4068
+ if (isThemeGetter(classDefinition)) {
4069
+ processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);
4070
+ return;
4071
+ }
4072
+ classPartObject.validators.push({
4073
+ validator: classDefinition,
4074
+ classGroupId
4075
+ });
4076
+ return;
4077
+ }
4078
+ Object.entries(classDefinition).forEach(([key, classGroup2]) => {
4079
+ processClassesRecursively(classGroup2, getPart(classPartObject, key), classGroupId, theme);
4080
+ });
4081
+ });
4082
+ };
4083
+ var getPart = (classPartObject, path) => {
4084
+ let currentClassPartObject = classPartObject;
4085
+ path.split(CLASS_PART_SEPARATOR).forEach((pathPart) => {
4086
+ if (!currentClassPartObject.nextPart.has(pathPart)) {
4087
+ currentClassPartObject.nextPart.set(pathPart, {
4088
+ nextPart: /* @__PURE__ */ new Map(),
4089
+ validators: []
4090
+ });
4091
+ }
4092
+ currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);
4093
+ });
4094
+ return currentClassPartObject;
4095
+ };
4096
+ var isThemeGetter = (func) => func.isThemeGetter;
4097
+ var getPrefixedClassGroupEntries = (classGroupEntries, prefix) => {
4098
+ if (!prefix) {
4099
+ return classGroupEntries;
4100
+ }
4101
+ return classGroupEntries.map(([classGroupId, classGroup]) => {
4102
+ const prefixedClassGroup = classGroup.map((classDefinition) => {
4103
+ if (typeof classDefinition === "string") {
4104
+ return prefix + classDefinition;
4105
+ }
4106
+ if (typeof classDefinition === "object") {
4107
+ return Object.fromEntries(Object.entries(classDefinition).map(([key, value]) => [prefix + key, value]));
4108
+ }
4109
+ return classDefinition;
4110
+ });
4111
+ return [classGroupId, prefixedClassGroup];
4112
+ });
4113
+ };
4114
+ var createLruCache = (maxCacheSize) => {
4115
+ if (maxCacheSize < 1) {
4116
+ return {
4117
+ get: () => void 0,
4118
+ set: () => {
4119
+ }
4120
+ };
4121
+ }
4122
+ let cacheSize = 0;
4123
+ let cache = /* @__PURE__ */ new Map();
4124
+ let previousCache = /* @__PURE__ */ new Map();
4125
+ const update = (key, value) => {
4126
+ cache.set(key, value);
4127
+ cacheSize++;
4128
+ if (cacheSize > maxCacheSize) {
4129
+ cacheSize = 0;
4130
+ previousCache = cache;
4131
+ cache = /* @__PURE__ */ new Map();
4132
+ }
4133
+ };
4134
+ return {
4135
+ get(key) {
4136
+ let value = cache.get(key);
4137
+ if (value !== void 0) {
4138
+ return value;
4139
+ }
4140
+ if ((value = previousCache.get(key)) !== void 0) {
4141
+ update(key, value);
4142
+ return value;
4143
+ }
4144
+ },
4145
+ set(key, value) {
4146
+ if (cache.has(key)) {
4147
+ cache.set(key, value);
4148
+ } else {
4149
+ update(key, value);
4150
+ }
4151
+ }
4152
+ };
4153
+ };
4154
+ var IMPORTANT_MODIFIER = "!";
4155
+ var createParseClassName = (config) => {
4156
+ const {
4157
+ separator,
4158
+ experimentalParseClassName
4159
+ } = config;
4160
+ const isSeparatorSingleCharacter = separator.length === 1;
4161
+ const firstSeparatorCharacter = separator[0];
4162
+ const separatorLength = separator.length;
4163
+ const parseClassName = (className) => {
4164
+ const modifiers = [];
4165
+ let bracketDepth = 0;
4166
+ let modifierStart = 0;
4167
+ let postfixModifierPosition;
4168
+ for (let index = 0; index < className.length; index++) {
4169
+ let currentCharacter = className[index];
4170
+ if (bracketDepth === 0) {
4171
+ if (currentCharacter === firstSeparatorCharacter && (isSeparatorSingleCharacter || className.slice(index, index + separatorLength) === separator)) {
4172
+ modifiers.push(className.slice(modifierStart, index));
4173
+ modifierStart = index + separatorLength;
4174
+ continue;
4175
+ }
4176
+ if (currentCharacter === "/") {
4177
+ postfixModifierPosition = index;
4178
+ continue;
4179
+ }
4180
+ }
4181
+ if (currentCharacter === "[") {
4182
+ bracketDepth++;
4183
+ } else if (currentCharacter === "]") {
4184
+ bracketDepth--;
4185
+ }
4186
+ }
4187
+ const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);
4188
+ const hasImportantModifier = baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER);
4189
+ const baseClassName = hasImportantModifier ? baseClassNameWithImportantModifier.substring(1) : baseClassNameWithImportantModifier;
4190
+ const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : void 0;
4191
+ return {
4192
+ modifiers,
4193
+ hasImportantModifier,
4194
+ baseClassName,
4195
+ maybePostfixModifierPosition
4196
+ };
4197
+ };
4198
+ if (experimentalParseClassName) {
4199
+ return (className) => experimentalParseClassName({
4200
+ className,
4201
+ parseClassName
4202
+ });
4203
+ }
4204
+ return parseClassName;
4205
+ };
4206
+ var sortModifiers = (modifiers) => {
4207
+ if (modifiers.length <= 1) {
4208
+ return modifiers;
4209
+ }
4210
+ const sortedModifiers = [];
4211
+ let unsortedModifiers = [];
4212
+ modifiers.forEach((modifier) => {
4213
+ const isArbitraryVariant = modifier[0] === "[";
4214
+ if (isArbitraryVariant) {
4215
+ sortedModifiers.push(...unsortedModifiers.sort(), modifier);
4216
+ unsortedModifiers = [];
4217
+ } else {
4218
+ unsortedModifiers.push(modifier);
4219
+ }
4220
+ });
4221
+ sortedModifiers.push(...unsortedModifiers.sort());
4222
+ return sortedModifiers;
4223
+ };
4224
+ var createConfigUtils = (config) => ({
4225
+ cache: createLruCache(config.cacheSize),
4226
+ parseClassName: createParseClassName(config),
4227
+ ...createClassGroupUtils(config)
4228
+ });
4229
+ var SPLIT_CLASSES_REGEX = /\s+/;
4230
+ var mergeClassList = (classList, configUtils) => {
4231
+ const {
4232
+ parseClassName,
4233
+ getClassGroupId,
4234
+ getConflictingClassGroupIds
4235
+ } = configUtils;
4236
+ const classGroupsInConflict = [];
4237
+ const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);
4238
+ let result = "";
4239
+ for (let index = classNames.length - 1; index >= 0; index -= 1) {
4240
+ const originalClassName = classNames[index];
4241
+ const {
4242
+ modifiers,
4243
+ hasImportantModifier,
4244
+ baseClassName,
4245
+ maybePostfixModifierPosition
4246
+ } = parseClassName(originalClassName);
4247
+ let hasPostfixModifier = Boolean(maybePostfixModifierPosition);
4248
+ let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);
4249
+ if (!classGroupId) {
4250
+ if (!hasPostfixModifier) {
4251
+ result = originalClassName + (result.length > 0 ? " " + result : result);
4252
+ continue;
4253
+ }
4254
+ classGroupId = getClassGroupId(baseClassName);
4255
+ if (!classGroupId) {
4256
+ result = originalClassName + (result.length > 0 ? " " + result : result);
4257
+ continue;
4258
+ }
4259
+ hasPostfixModifier = false;
4260
+ }
4261
+ const variantModifier = sortModifiers(modifiers).join(":");
4262
+ const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;
4263
+ const classId = modifierId + classGroupId;
4264
+ if (classGroupsInConflict.includes(classId)) {
4265
+ continue;
4266
+ }
4267
+ classGroupsInConflict.push(classId);
4268
+ const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);
4269
+ for (let i = 0; i < conflictGroups.length; ++i) {
4270
+ const group = conflictGroups[i];
4271
+ classGroupsInConflict.push(modifierId + group);
4272
+ }
4273
+ result = originalClassName + (result.length > 0 ? " " + result : result);
4274
+ }
4275
+ return result;
4276
+ };
4277
+ function twJoin() {
4278
+ let index = 0;
4279
+ let argument;
4280
+ let resolvedValue;
4281
+ let string = "";
4282
+ while (index < arguments.length) {
4283
+ if (argument = arguments[index++]) {
4284
+ if (resolvedValue = toValue(argument)) {
4285
+ string && (string += " ");
4286
+ string += resolvedValue;
4287
+ }
4288
+ }
4289
+ }
4290
+ return string;
4291
+ }
4292
+ var toValue = (mix) => {
4293
+ if (typeof mix === "string") {
4294
+ return mix;
4295
+ }
4296
+ let resolvedValue;
4297
+ let string = "";
4298
+ for (let k = 0; k < mix.length; k++) {
4299
+ if (mix[k]) {
4300
+ if (resolvedValue = toValue(mix[k])) {
4301
+ string && (string += " ");
4302
+ string += resolvedValue;
4303
+ }
4304
+ }
4305
+ }
4306
+ return string;
4307
+ };
4308
+ function createTailwindMerge(createConfigFirst, ...createConfigRest) {
4309
+ let configUtils;
4310
+ let cacheGet;
4311
+ let cacheSet;
4312
+ let functionToCall = initTailwindMerge;
4313
+ function initTailwindMerge(classList) {
4314
+ const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());
4315
+ configUtils = createConfigUtils(config);
4316
+ cacheGet = configUtils.cache.get;
4317
+ cacheSet = configUtils.cache.set;
4318
+ functionToCall = tailwindMerge;
4319
+ return tailwindMerge(classList);
4320
+ }
4321
+ function tailwindMerge(classList) {
4322
+ const cachedResult = cacheGet(classList);
4323
+ if (cachedResult) {
4324
+ return cachedResult;
4325
+ }
4326
+ const result = mergeClassList(classList, configUtils);
4327
+ cacheSet(classList, result);
4328
+ return result;
4329
+ }
4330
+ return function callTailwindMerge() {
4331
+ return functionToCall(twJoin.apply(null, arguments));
4332
+ };
4333
+ }
4334
+ var fromTheme = (key) => {
4335
+ const themeGetter = (theme) => theme[key] || [];
4336
+ themeGetter.isThemeGetter = true;
4337
+ return themeGetter;
4338
+ };
4339
+ var arbitraryValueRegex = /^\[(?:([a-z-]+):)?(.+)\]$/i;
4340
+ var fractionRegex = /^\d+\/\d+$/;
4341
+ var stringLengths = /* @__PURE__ */ new Set(["px", "full", "screen"]);
4342
+ var tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/;
4343
+ var lengthUnitRegex = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/;
4344
+ var colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/;
4345
+ var shadowRegex = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/;
4346
+ var imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;
4347
+ var isLength = (value) => isNumber(value) || stringLengths.has(value) || fractionRegex.test(value);
4348
+ var isArbitraryLength = (value) => getIsArbitraryValue(value, "length", isLengthOnly);
4349
+ var isNumber = (value) => Boolean(value) && !Number.isNaN(Number(value));
4350
+ var isArbitraryNumber = (value) => getIsArbitraryValue(value, "number", isNumber);
4351
+ var isInteger = (value) => Boolean(value) && Number.isInteger(Number(value));
4352
+ var isPercent = (value) => value.endsWith("%") && isNumber(value.slice(0, -1));
4353
+ var isArbitraryValue = (value) => arbitraryValueRegex.test(value);
4354
+ var isTshirtSize = (value) => tshirtUnitRegex.test(value);
4355
+ var sizeLabels = /* @__PURE__ */ new Set(["length", "size", "percentage"]);
4356
+ var isArbitrarySize = (value) => getIsArbitraryValue(value, sizeLabels, isNever);
4357
+ var isArbitraryPosition = (value) => getIsArbitraryValue(value, "position", isNever);
4358
+ var imageLabels = /* @__PURE__ */ new Set(["image", "url"]);
4359
+ var isArbitraryImage = (value) => getIsArbitraryValue(value, imageLabels, isImage);
4360
+ var isArbitraryShadow = (value) => getIsArbitraryValue(value, "", isShadow);
4361
+ var isAny = () => true;
4362
+ var getIsArbitraryValue = (value, label, testValue) => {
4363
+ const result = arbitraryValueRegex.exec(value);
4364
+ if (result) {
4365
+ if (result[1]) {
4366
+ return typeof label === "string" ? result[1] === label : label.has(result[1]);
4367
+ }
4368
+ return testValue(result[2]);
4369
+ }
4370
+ return false;
4371
+ };
4372
+ var isLengthOnly = (value) => (
4373
+ // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.
4374
+ // For example, `hsl(0 0% 0%)` would be classified as a length without this check.
4375
+ // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.
4376
+ lengthUnitRegex.test(value) && !colorFunctionRegex.test(value)
4377
+ );
4378
+ var isNever = () => false;
4379
+ var isShadow = (value) => shadowRegex.test(value);
4380
+ var isImage = (value) => imageRegex.test(value);
4381
+ var getDefaultConfig = () => {
4382
+ const colors = fromTheme("colors");
4383
+ const spacing = fromTheme("spacing");
4384
+ const blur = fromTheme("blur");
4385
+ const brightness = fromTheme("brightness");
4386
+ const borderColor = fromTheme("borderColor");
4387
+ const borderRadius = fromTheme("borderRadius");
4388
+ const borderSpacing = fromTheme("borderSpacing");
4389
+ const borderWidth = fromTheme("borderWidth");
4390
+ const contrast = fromTheme("contrast");
4391
+ const grayscale = fromTheme("grayscale");
4392
+ const hueRotate = fromTheme("hueRotate");
4393
+ const invert = fromTheme("invert");
4394
+ const gap = fromTheme("gap");
4395
+ const gradientColorStops = fromTheme("gradientColorStops");
4396
+ const gradientColorStopPositions = fromTheme("gradientColorStopPositions");
4397
+ const inset = fromTheme("inset");
4398
+ const margin = fromTheme("margin");
4399
+ const opacity = fromTheme("opacity");
4400
+ const padding = fromTheme("padding");
4401
+ const saturate = fromTheme("saturate");
4402
+ const scale = fromTheme("scale");
4403
+ const sepia = fromTheme("sepia");
4404
+ const skew = fromTheme("skew");
4405
+ const space = fromTheme("space");
4406
+ const translate = fromTheme("translate");
4407
+ const getOverscroll = () => ["auto", "contain", "none"];
4408
+ const getOverflow = () => ["auto", "hidden", "clip", "visible", "scroll"];
4409
+ const getSpacingWithAutoAndArbitrary = () => ["auto", isArbitraryValue, spacing];
4410
+ const getSpacingWithArbitrary = () => [isArbitraryValue, spacing];
4411
+ const getLengthWithEmptyAndArbitrary = () => ["", isLength, isArbitraryLength];
4412
+ const getNumberWithAutoAndArbitrary = () => ["auto", isNumber, isArbitraryValue];
4413
+ const getPositions = () => ["bottom", "center", "left", "left-bottom", "left-top", "right", "right-bottom", "right-top", "top"];
4414
+ const getLineStyles = () => ["solid", "dashed", "dotted", "double", "none"];
4415
+ const getBlendModes = () => ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"];
4416
+ const getAlign = () => ["start", "end", "center", "between", "around", "evenly", "stretch"];
4417
+ const getZeroAndEmpty = () => ["", "0", isArbitraryValue];
4418
+ const getBreaks = () => ["auto", "avoid", "all", "avoid-page", "page", "left", "right", "column"];
4419
+ const getNumberAndArbitrary = () => [isNumber, isArbitraryValue];
4420
+ return {
4421
+ cacheSize: 500,
4422
+ separator: ":",
4423
+ theme: {
4424
+ colors: [isAny],
4425
+ spacing: [isLength, isArbitraryLength],
4426
+ blur: ["none", "", isTshirtSize, isArbitraryValue],
4427
+ brightness: getNumberAndArbitrary(),
4428
+ borderColor: [colors],
4429
+ borderRadius: ["none", "", "full", isTshirtSize, isArbitraryValue],
4430
+ borderSpacing: getSpacingWithArbitrary(),
4431
+ borderWidth: getLengthWithEmptyAndArbitrary(),
4432
+ contrast: getNumberAndArbitrary(),
4433
+ grayscale: getZeroAndEmpty(),
4434
+ hueRotate: getNumberAndArbitrary(),
4435
+ invert: getZeroAndEmpty(),
4436
+ gap: getSpacingWithArbitrary(),
4437
+ gradientColorStops: [colors],
4438
+ gradientColorStopPositions: [isPercent, isArbitraryLength],
4439
+ inset: getSpacingWithAutoAndArbitrary(),
4440
+ margin: getSpacingWithAutoAndArbitrary(),
4441
+ opacity: getNumberAndArbitrary(),
4442
+ padding: getSpacingWithArbitrary(),
4443
+ saturate: getNumberAndArbitrary(),
4444
+ scale: getNumberAndArbitrary(),
4445
+ sepia: getZeroAndEmpty(),
4446
+ skew: getNumberAndArbitrary(),
4447
+ space: getSpacingWithArbitrary(),
4448
+ translate: getSpacingWithArbitrary()
4449
+ },
4450
+ classGroups: {
4451
+ // Layout
4452
+ /**
4453
+ * Aspect Ratio
4454
+ * @see https://tailwindcss.com/docs/aspect-ratio
4455
+ */
4456
+ aspect: [{
4457
+ aspect: ["auto", "square", "video", isArbitraryValue]
4458
+ }],
4459
+ /**
4460
+ * Container
4461
+ * @see https://tailwindcss.com/docs/container
4462
+ */
4463
+ container: ["container"],
4464
+ /**
4465
+ * Columns
4466
+ * @see https://tailwindcss.com/docs/columns
4467
+ */
4468
+ columns: [{
4469
+ columns: [isTshirtSize]
4470
+ }],
4471
+ /**
4472
+ * Break After
4473
+ * @see https://tailwindcss.com/docs/break-after
4474
+ */
4475
+ "break-after": [{
4476
+ "break-after": getBreaks()
4477
+ }],
4478
+ /**
4479
+ * Break Before
4480
+ * @see https://tailwindcss.com/docs/break-before
4481
+ */
4482
+ "break-before": [{
4483
+ "break-before": getBreaks()
4484
+ }],
4485
+ /**
4486
+ * Break Inside
4487
+ * @see https://tailwindcss.com/docs/break-inside
4488
+ */
4489
+ "break-inside": [{
4490
+ "break-inside": ["auto", "avoid", "avoid-page", "avoid-column"]
4491
+ }],
4492
+ /**
4493
+ * Box Decoration Break
4494
+ * @see https://tailwindcss.com/docs/box-decoration-break
4495
+ */
4496
+ "box-decoration": [{
4497
+ "box-decoration": ["slice", "clone"]
4498
+ }],
4499
+ /**
4500
+ * Box Sizing
4501
+ * @see https://tailwindcss.com/docs/box-sizing
4502
+ */
4503
+ box: [{
4504
+ box: ["border", "content"]
4505
+ }],
4506
+ /**
4507
+ * Display
4508
+ * @see https://tailwindcss.com/docs/display
4509
+ */
4510
+ display: ["block", "inline-block", "inline", "flex", "inline-flex", "table", "inline-table", "table-caption", "table-cell", "table-column", "table-column-group", "table-footer-group", "table-header-group", "table-row-group", "table-row", "flow-root", "grid", "inline-grid", "contents", "list-item", "hidden"],
4511
+ /**
4512
+ * Floats
4513
+ * @see https://tailwindcss.com/docs/float
4514
+ */
4515
+ float: [{
4516
+ float: ["right", "left", "none", "start", "end"]
4517
+ }],
4518
+ /**
4519
+ * Clear
4520
+ * @see https://tailwindcss.com/docs/clear
4521
+ */
4522
+ clear: [{
4523
+ clear: ["left", "right", "both", "none", "start", "end"]
4524
+ }],
4525
+ /**
4526
+ * Isolation
4527
+ * @see https://tailwindcss.com/docs/isolation
4528
+ */
4529
+ isolation: ["isolate", "isolation-auto"],
4530
+ /**
4531
+ * Object Fit
4532
+ * @see https://tailwindcss.com/docs/object-fit
4533
+ */
4534
+ "object-fit": [{
4535
+ object: ["contain", "cover", "fill", "none", "scale-down"]
4536
+ }],
4537
+ /**
4538
+ * Object Position
4539
+ * @see https://tailwindcss.com/docs/object-position
4540
+ */
4541
+ "object-position": [{
4542
+ object: [...getPositions(), isArbitraryValue]
4543
+ }],
4544
+ /**
4545
+ * Overflow
4546
+ * @see https://tailwindcss.com/docs/overflow
4547
+ */
4548
+ overflow: [{
4549
+ overflow: getOverflow()
4550
+ }],
4551
+ /**
4552
+ * Overflow X
4553
+ * @see https://tailwindcss.com/docs/overflow
4554
+ */
4555
+ "overflow-x": [{
4556
+ "overflow-x": getOverflow()
4557
+ }],
4558
+ /**
4559
+ * Overflow Y
4560
+ * @see https://tailwindcss.com/docs/overflow
4561
+ */
4562
+ "overflow-y": [{
4563
+ "overflow-y": getOverflow()
4564
+ }],
4565
+ /**
4566
+ * Overscroll Behavior
4567
+ * @see https://tailwindcss.com/docs/overscroll-behavior
4568
+ */
4569
+ overscroll: [{
4570
+ overscroll: getOverscroll()
4571
+ }],
4572
+ /**
4573
+ * Overscroll Behavior X
4574
+ * @see https://tailwindcss.com/docs/overscroll-behavior
4575
+ */
4576
+ "overscroll-x": [{
4577
+ "overscroll-x": getOverscroll()
4578
+ }],
4579
+ /**
4580
+ * Overscroll Behavior Y
4581
+ * @see https://tailwindcss.com/docs/overscroll-behavior
4582
+ */
4583
+ "overscroll-y": [{
4584
+ "overscroll-y": getOverscroll()
4585
+ }],
4586
+ /**
4587
+ * Position
4588
+ * @see https://tailwindcss.com/docs/position
4589
+ */
4590
+ position: ["static", "fixed", "absolute", "relative", "sticky"],
4591
+ /**
4592
+ * Top / Right / Bottom / Left
4593
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
4594
+ */
4595
+ inset: [{
4596
+ inset: [inset]
4597
+ }],
4598
+ /**
4599
+ * Right / Left
4600
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
4601
+ */
4602
+ "inset-x": [{
4603
+ "inset-x": [inset]
4604
+ }],
4605
+ /**
4606
+ * Top / Bottom
4607
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
4608
+ */
4609
+ "inset-y": [{
4610
+ "inset-y": [inset]
4611
+ }],
4612
+ /**
4613
+ * Start
4614
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
4615
+ */
4616
+ start: [{
4617
+ start: [inset]
4618
+ }],
4619
+ /**
4620
+ * End
4621
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
4622
+ */
4623
+ end: [{
4624
+ end: [inset]
4625
+ }],
4626
+ /**
4627
+ * Top
4628
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
4629
+ */
4630
+ top: [{
4631
+ top: [inset]
4632
+ }],
4633
+ /**
4634
+ * Right
4635
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
4636
+ */
4637
+ right: [{
4638
+ right: [inset]
4639
+ }],
4640
+ /**
4641
+ * Bottom
4642
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
4643
+ */
4644
+ bottom: [{
4645
+ bottom: [inset]
4646
+ }],
4647
+ /**
4648
+ * Left
4649
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
4650
+ */
4651
+ left: [{
4652
+ left: [inset]
4653
+ }],
4654
+ /**
4655
+ * Visibility
4656
+ * @see https://tailwindcss.com/docs/visibility
4657
+ */
4658
+ visibility: ["visible", "invisible", "collapse"],
4659
+ /**
4660
+ * Z-Index
4661
+ * @see https://tailwindcss.com/docs/z-index
4662
+ */
4663
+ z: [{
4664
+ z: ["auto", isInteger, isArbitraryValue]
4665
+ }],
4666
+ // Flexbox and Grid
4667
+ /**
4668
+ * Flex Basis
4669
+ * @see https://tailwindcss.com/docs/flex-basis
4670
+ */
4671
+ basis: [{
4672
+ basis: getSpacingWithAutoAndArbitrary()
4673
+ }],
4674
+ /**
4675
+ * Flex Direction
4676
+ * @see https://tailwindcss.com/docs/flex-direction
4677
+ */
4678
+ "flex-direction": [{
4679
+ flex: ["row", "row-reverse", "col", "col-reverse"]
4680
+ }],
4681
+ /**
4682
+ * Flex Wrap
4683
+ * @see https://tailwindcss.com/docs/flex-wrap
4684
+ */
4685
+ "flex-wrap": [{
4686
+ flex: ["wrap", "wrap-reverse", "nowrap"]
4687
+ }],
4688
+ /**
4689
+ * Flex
4690
+ * @see https://tailwindcss.com/docs/flex
4691
+ */
4692
+ flex: [{
4693
+ flex: ["1", "auto", "initial", "none", isArbitraryValue]
4694
+ }],
4695
+ /**
4696
+ * Flex Grow
4697
+ * @see https://tailwindcss.com/docs/flex-grow
4698
+ */
4699
+ grow: [{
4700
+ grow: getZeroAndEmpty()
4701
+ }],
4702
+ /**
4703
+ * Flex Shrink
4704
+ * @see https://tailwindcss.com/docs/flex-shrink
4705
+ */
4706
+ shrink: [{
4707
+ shrink: getZeroAndEmpty()
4708
+ }],
4709
+ /**
4710
+ * Order
4711
+ * @see https://tailwindcss.com/docs/order
4712
+ */
4713
+ order: [{
4714
+ order: ["first", "last", "none", isInteger, isArbitraryValue]
4715
+ }],
4716
+ /**
4717
+ * Grid Template Columns
4718
+ * @see https://tailwindcss.com/docs/grid-template-columns
4719
+ */
4720
+ "grid-cols": [{
4721
+ "grid-cols": [isAny]
4722
+ }],
4723
+ /**
4724
+ * Grid Column Start / End
4725
+ * @see https://tailwindcss.com/docs/grid-column
4726
+ */
4727
+ "col-start-end": [{
4728
+ col: ["auto", {
4729
+ span: ["full", isInteger, isArbitraryValue]
4730
+ }, isArbitraryValue]
4731
+ }],
4732
+ /**
4733
+ * Grid Column Start
4734
+ * @see https://tailwindcss.com/docs/grid-column
4735
+ */
4736
+ "col-start": [{
4737
+ "col-start": getNumberWithAutoAndArbitrary()
4738
+ }],
4739
+ /**
4740
+ * Grid Column End
4741
+ * @see https://tailwindcss.com/docs/grid-column
4742
+ */
4743
+ "col-end": [{
4744
+ "col-end": getNumberWithAutoAndArbitrary()
4745
+ }],
4746
+ /**
4747
+ * Grid Template Rows
4748
+ * @see https://tailwindcss.com/docs/grid-template-rows
4749
+ */
4750
+ "grid-rows": [{
4751
+ "grid-rows": [isAny]
4752
+ }],
4753
+ /**
4754
+ * Grid Row Start / End
4755
+ * @see https://tailwindcss.com/docs/grid-row
4756
+ */
4757
+ "row-start-end": [{
4758
+ row: ["auto", {
4759
+ span: [isInteger, isArbitraryValue]
4760
+ }, isArbitraryValue]
4761
+ }],
4762
+ /**
4763
+ * Grid Row Start
4764
+ * @see https://tailwindcss.com/docs/grid-row
4765
+ */
4766
+ "row-start": [{
4767
+ "row-start": getNumberWithAutoAndArbitrary()
4768
+ }],
4769
+ /**
4770
+ * Grid Row End
4771
+ * @see https://tailwindcss.com/docs/grid-row
4772
+ */
4773
+ "row-end": [{
4774
+ "row-end": getNumberWithAutoAndArbitrary()
4775
+ }],
4776
+ /**
4777
+ * Grid Auto Flow
4778
+ * @see https://tailwindcss.com/docs/grid-auto-flow
4779
+ */
4780
+ "grid-flow": [{
4781
+ "grid-flow": ["row", "col", "dense", "row-dense", "col-dense"]
4782
+ }],
4783
+ /**
4784
+ * Grid Auto Columns
4785
+ * @see https://tailwindcss.com/docs/grid-auto-columns
4786
+ */
4787
+ "auto-cols": [{
4788
+ "auto-cols": ["auto", "min", "max", "fr", isArbitraryValue]
4789
+ }],
4790
+ /**
4791
+ * Grid Auto Rows
4792
+ * @see https://tailwindcss.com/docs/grid-auto-rows
4793
+ */
4794
+ "auto-rows": [{
4795
+ "auto-rows": ["auto", "min", "max", "fr", isArbitraryValue]
4796
+ }],
4797
+ /**
4798
+ * Gap
4799
+ * @see https://tailwindcss.com/docs/gap
4800
+ */
4801
+ gap: [{
4802
+ gap: [gap]
4803
+ }],
4804
+ /**
4805
+ * Gap X
4806
+ * @see https://tailwindcss.com/docs/gap
4807
+ */
4808
+ "gap-x": [{
4809
+ "gap-x": [gap]
4810
+ }],
4811
+ /**
4812
+ * Gap Y
4813
+ * @see https://tailwindcss.com/docs/gap
4814
+ */
4815
+ "gap-y": [{
4816
+ "gap-y": [gap]
4817
+ }],
4818
+ /**
4819
+ * Justify Content
4820
+ * @see https://tailwindcss.com/docs/justify-content
4821
+ */
4822
+ "justify-content": [{
4823
+ justify: ["normal", ...getAlign()]
4824
+ }],
4825
+ /**
4826
+ * Justify Items
4827
+ * @see https://tailwindcss.com/docs/justify-items
4828
+ */
4829
+ "justify-items": [{
4830
+ "justify-items": ["start", "end", "center", "stretch"]
4831
+ }],
4832
+ /**
4833
+ * Justify Self
4834
+ * @see https://tailwindcss.com/docs/justify-self
4835
+ */
4836
+ "justify-self": [{
4837
+ "justify-self": ["auto", "start", "end", "center", "stretch"]
4838
+ }],
4839
+ /**
4840
+ * Align Content
4841
+ * @see https://tailwindcss.com/docs/align-content
4842
+ */
4843
+ "align-content": [{
4844
+ content: ["normal", ...getAlign(), "baseline"]
4845
+ }],
4846
+ /**
4847
+ * Align Items
4848
+ * @see https://tailwindcss.com/docs/align-items
4849
+ */
4850
+ "align-items": [{
4851
+ items: ["start", "end", "center", "baseline", "stretch"]
4852
+ }],
4853
+ /**
4854
+ * Align Self
4855
+ * @see https://tailwindcss.com/docs/align-self
4856
+ */
4857
+ "align-self": [{
4858
+ self: ["auto", "start", "end", "center", "stretch", "baseline"]
4859
+ }],
4860
+ /**
4861
+ * Place Content
4862
+ * @see https://tailwindcss.com/docs/place-content
4863
+ */
4864
+ "place-content": [{
4865
+ "place-content": [...getAlign(), "baseline"]
4866
+ }],
4867
+ /**
4868
+ * Place Items
4869
+ * @see https://tailwindcss.com/docs/place-items
4870
+ */
4871
+ "place-items": [{
4872
+ "place-items": ["start", "end", "center", "baseline", "stretch"]
4873
+ }],
4874
+ /**
4875
+ * Place Self
4876
+ * @see https://tailwindcss.com/docs/place-self
4877
+ */
4878
+ "place-self": [{
4879
+ "place-self": ["auto", "start", "end", "center", "stretch"]
4880
+ }],
4881
+ // Spacing
4882
+ /**
4883
+ * Padding
4884
+ * @see https://tailwindcss.com/docs/padding
4885
+ */
4886
+ p: [{
4887
+ p: [padding]
4888
+ }],
4889
+ /**
4890
+ * Padding X
4891
+ * @see https://tailwindcss.com/docs/padding
4892
+ */
4893
+ px: [{
4894
+ px: [padding]
4895
+ }],
4896
+ /**
4897
+ * Padding Y
4898
+ * @see https://tailwindcss.com/docs/padding
4899
+ */
4900
+ py: [{
4901
+ py: [padding]
4902
+ }],
4903
+ /**
4904
+ * Padding Start
4905
+ * @see https://tailwindcss.com/docs/padding
4906
+ */
4907
+ ps: [{
4908
+ ps: [padding]
4909
+ }],
4910
+ /**
4911
+ * Padding End
4912
+ * @see https://tailwindcss.com/docs/padding
4913
+ */
4914
+ pe: [{
4915
+ pe: [padding]
4916
+ }],
4917
+ /**
4918
+ * Padding Top
4919
+ * @see https://tailwindcss.com/docs/padding
4920
+ */
4921
+ pt: [{
4922
+ pt: [padding]
4923
+ }],
4924
+ /**
4925
+ * Padding Right
4926
+ * @see https://tailwindcss.com/docs/padding
4927
+ */
4928
+ pr: [{
4929
+ pr: [padding]
4930
+ }],
4931
+ /**
4932
+ * Padding Bottom
4933
+ * @see https://tailwindcss.com/docs/padding
4934
+ */
4935
+ pb: [{
4936
+ pb: [padding]
4937
+ }],
4938
+ /**
4939
+ * Padding Left
4940
+ * @see https://tailwindcss.com/docs/padding
4941
+ */
4942
+ pl: [{
4943
+ pl: [padding]
4944
+ }],
4945
+ /**
4946
+ * Margin
4947
+ * @see https://tailwindcss.com/docs/margin
4948
+ */
4949
+ m: [{
4950
+ m: [margin]
4951
+ }],
4952
+ /**
4953
+ * Margin X
4954
+ * @see https://tailwindcss.com/docs/margin
4955
+ */
4956
+ mx: [{
4957
+ mx: [margin]
4958
+ }],
4959
+ /**
4960
+ * Margin Y
4961
+ * @see https://tailwindcss.com/docs/margin
4962
+ */
4963
+ my: [{
4964
+ my: [margin]
4965
+ }],
4966
+ /**
4967
+ * Margin Start
4968
+ * @see https://tailwindcss.com/docs/margin
4969
+ */
4970
+ ms: [{
4971
+ ms: [margin]
4972
+ }],
4973
+ /**
4974
+ * Margin End
4975
+ * @see https://tailwindcss.com/docs/margin
4976
+ */
4977
+ me: [{
4978
+ me: [margin]
4979
+ }],
4980
+ /**
4981
+ * Margin Top
4982
+ * @see https://tailwindcss.com/docs/margin
4983
+ */
4984
+ mt: [{
4985
+ mt: [margin]
4986
+ }],
4987
+ /**
4988
+ * Margin Right
4989
+ * @see https://tailwindcss.com/docs/margin
4990
+ */
4991
+ mr: [{
4992
+ mr: [margin]
4993
+ }],
4994
+ /**
4995
+ * Margin Bottom
4996
+ * @see https://tailwindcss.com/docs/margin
4997
+ */
4998
+ mb: [{
4999
+ mb: [margin]
5000
+ }],
5001
+ /**
5002
+ * Margin Left
5003
+ * @see https://tailwindcss.com/docs/margin
5004
+ */
5005
+ ml: [{
5006
+ ml: [margin]
5007
+ }],
5008
+ /**
5009
+ * Space Between X
5010
+ * @see https://tailwindcss.com/docs/space
5011
+ */
5012
+ "space-x": [{
5013
+ "space-x": [space]
5014
+ }],
5015
+ /**
5016
+ * Space Between X Reverse
5017
+ * @see https://tailwindcss.com/docs/space
5018
+ */
5019
+ "space-x-reverse": ["space-x-reverse"],
5020
+ /**
5021
+ * Space Between Y
5022
+ * @see https://tailwindcss.com/docs/space
5023
+ */
5024
+ "space-y": [{
5025
+ "space-y": [space]
5026
+ }],
5027
+ /**
5028
+ * Space Between Y Reverse
5029
+ * @see https://tailwindcss.com/docs/space
5030
+ */
5031
+ "space-y-reverse": ["space-y-reverse"],
5032
+ // Sizing
5033
+ /**
5034
+ * Width
5035
+ * @see https://tailwindcss.com/docs/width
5036
+ */
5037
+ w: [{
5038
+ w: ["auto", "min", "max", "fit", "svw", "lvw", "dvw", isArbitraryValue, spacing]
5039
+ }],
5040
+ /**
5041
+ * Min-Width
5042
+ * @see https://tailwindcss.com/docs/min-width
5043
+ */
5044
+ "min-w": [{
5045
+ "min-w": [isArbitraryValue, spacing, "min", "max", "fit"]
5046
+ }],
5047
+ /**
5048
+ * Max-Width
5049
+ * @see https://tailwindcss.com/docs/max-width
5050
+ */
5051
+ "max-w": [{
5052
+ "max-w": [isArbitraryValue, spacing, "none", "full", "min", "max", "fit", "prose", {
5053
+ screen: [isTshirtSize]
5054
+ }, isTshirtSize]
5055
+ }],
5056
+ /**
5057
+ * Height
5058
+ * @see https://tailwindcss.com/docs/height
5059
+ */
5060
+ h: [{
5061
+ h: [isArbitraryValue, spacing, "auto", "min", "max", "fit", "svh", "lvh", "dvh"]
5062
+ }],
5063
+ /**
5064
+ * Min-Height
5065
+ * @see https://tailwindcss.com/docs/min-height
5066
+ */
5067
+ "min-h": [{
5068
+ "min-h": [isArbitraryValue, spacing, "min", "max", "fit", "svh", "lvh", "dvh"]
5069
+ }],
5070
+ /**
5071
+ * Max-Height
5072
+ * @see https://tailwindcss.com/docs/max-height
5073
+ */
5074
+ "max-h": [{
5075
+ "max-h": [isArbitraryValue, spacing, "min", "max", "fit", "svh", "lvh", "dvh"]
5076
+ }],
5077
+ /**
5078
+ * Size
5079
+ * @see https://tailwindcss.com/docs/size
5080
+ */
5081
+ size: [{
5082
+ size: [isArbitraryValue, spacing, "auto", "min", "max", "fit"]
5083
+ }],
5084
+ // Typography
5085
+ /**
5086
+ * Font Size
5087
+ * @see https://tailwindcss.com/docs/font-size
5088
+ */
5089
+ "font-size": [{
5090
+ text: ["base", isTshirtSize, isArbitraryLength]
5091
+ }],
5092
+ /**
5093
+ * Font Smoothing
5094
+ * @see https://tailwindcss.com/docs/font-smoothing
5095
+ */
5096
+ "font-smoothing": ["antialiased", "subpixel-antialiased"],
5097
+ /**
5098
+ * Font Style
5099
+ * @see https://tailwindcss.com/docs/font-style
5100
+ */
5101
+ "font-style": ["italic", "not-italic"],
5102
+ /**
5103
+ * Font Weight
5104
+ * @see https://tailwindcss.com/docs/font-weight
5105
+ */
5106
+ "font-weight": [{
5107
+ font: ["thin", "extralight", "light", "normal", "medium", "semibold", "bold", "extrabold", "black", isArbitraryNumber]
5108
+ }],
5109
+ /**
5110
+ * Font Family
5111
+ * @see https://tailwindcss.com/docs/font-family
5112
+ */
5113
+ "font-family": [{
5114
+ font: [isAny]
5115
+ }],
5116
+ /**
5117
+ * Font Variant Numeric
5118
+ * @see https://tailwindcss.com/docs/font-variant-numeric
5119
+ */
5120
+ "fvn-normal": ["normal-nums"],
5121
+ /**
5122
+ * Font Variant Numeric
5123
+ * @see https://tailwindcss.com/docs/font-variant-numeric
5124
+ */
5125
+ "fvn-ordinal": ["ordinal"],
5126
+ /**
5127
+ * Font Variant Numeric
5128
+ * @see https://tailwindcss.com/docs/font-variant-numeric
5129
+ */
5130
+ "fvn-slashed-zero": ["slashed-zero"],
5131
+ /**
5132
+ * Font Variant Numeric
5133
+ * @see https://tailwindcss.com/docs/font-variant-numeric
5134
+ */
5135
+ "fvn-figure": ["lining-nums", "oldstyle-nums"],
5136
+ /**
5137
+ * Font Variant Numeric
5138
+ * @see https://tailwindcss.com/docs/font-variant-numeric
5139
+ */
5140
+ "fvn-spacing": ["proportional-nums", "tabular-nums"],
5141
+ /**
5142
+ * Font Variant Numeric
5143
+ * @see https://tailwindcss.com/docs/font-variant-numeric
5144
+ */
5145
+ "fvn-fraction": ["diagonal-fractions", "stacked-fractions"],
5146
+ /**
5147
+ * Letter Spacing
5148
+ * @see https://tailwindcss.com/docs/letter-spacing
5149
+ */
5150
+ tracking: [{
5151
+ tracking: ["tighter", "tight", "normal", "wide", "wider", "widest", isArbitraryValue]
5152
+ }],
5153
+ /**
5154
+ * Line Clamp
5155
+ * @see https://tailwindcss.com/docs/line-clamp
5156
+ */
5157
+ "line-clamp": [{
5158
+ "line-clamp": ["none", isNumber, isArbitraryNumber]
5159
+ }],
5160
+ /**
5161
+ * Line Height
5162
+ * @see https://tailwindcss.com/docs/line-height
5163
+ */
5164
+ leading: [{
5165
+ leading: ["none", "tight", "snug", "normal", "relaxed", "loose", isLength, isArbitraryValue]
5166
+ }],
5167
+ /**
5168
+ * List Style Image
5169
+ * @see https://tailwindcss.com/docs/list-style-image
5170
+ */
5171
+ "list-image": [{
5172
+ "list-image": ["none", isArbitraryValue]
5173
+ }],
5174
+ /**
5175
+ * List Style Type
5176
+ * @see https://tailwindcss.com/docs/list-style-type
5177
+ */
5178
+ "list-style-type": [{
5179
+ list: ["none", "disc", "decimal", isArbitraryValue]
5180
+ }],
5181
+ /**
5182
+ * List Style Position
5183
+ * @see https://tailwindcss.com/docs/list-style-position
5184
+ */
5185
+ "list-style-position": [{
5186
+ list: ["inside", "outside"]
5187
+ }],
5188
+ /**
5189
+ * Placeholder Color
5190
+ * @deprecated since Tailwind CSS v3.0.0
5191
+ * @see https://tailwindcss.com/docs/placeholder-color
5192
+ */
5193
+ "placeholder-color": [{
5194
+ placeholder: [colors]
5195
+ }],
5196
+ /**
5197
+ * Placeholder Opacity
5198
+ * @see https://tailwindcss.com/docs/placeholder-opacity
5199
+ */
5200
+ "placeholder-opacity": [{
5201
+ "placeholder-opacity": [opacity]
5202
+ }],
5203
+ /**
5204
+ * Text Alignment
5205
+ * @see https://tailwindcss.com/docs/text-align
5206
+ */
5207
+ "text-alignment": [{
5208
+ text: ["left", "center", "right", "justify", "start", "end"]
5209
+ }],
5210
+ /**
5211
+ * Text Color
5212
+ * @see https://tailwindcss.com/docs/text-color
5213
+ */
5214
+ "text-color": [{
5215
+ text: [colors]
5216
+ }],
5217
+ /**
5218
+ * Text Opacity
5219
+ * @see https://tailwindcss.com/docs/text-opacity
5220
+ */
5221
+ "text-opacity": [{
5222
+ "text-opacity": [opacity]
5223
+ }],
5224
+ /**
5225
+ * Text Decoration
5226
+ * @see https://tailwindcss.com/docs/text-decoration
5227
+ */
5228
+ "text-decoration": ["underline", "overline", "line-through", "no-underline"],
5229
+ /**
5230
+ * Text Decoration Style
5231
+ * @see https://tailwindcss.com/docs/text-decoration-style
5232
+ */
5233
+ "text-decoration-style": [{
5234
+ decoration: [...getLineStyles(), "wavy"]
5235
+ }],
5236
+ /**
5237
+ * Text Decoration Thickness
5238
+ * @see https://tailwindcss.com/docs/text-decoration-thickness
5239
+ */
5240
+ "text-decoration-thickness": [{
5241
+ decoration: ["auto", "from-font", isLength, isArbitraryLength]
5242
+ }],
5243
+ /**
5244
+ * Text Underline Offset
5245
+ * @see https://tailwindcss.com/docs/text-underline-offset
5246
+ */
5247
+ "underline-offset": [{
5248
+ "underline-offset": ["auto", isLength, isArbitraryValue]
5249
+ }],
5250
+ /**
5251
+ * Text Decoration Color
5252
+ * @see https://tailwindcss.com/docs/text-decoration-color
5253
+ */
5254
+ "text-decoration-color": [{
5255
+ decoration: [colors]
5256
+ }],
5257
+ /**
5258
+ * Text Transform
5259
+ * @see https://tailwindcss.com/docs/text-transform
5260
+ */
5261
+ "text-transform": ["uppercase", "lowercase", "capitalize", "normal-case"],
5262
+ /**
5263
+ * Text Overflow
5264
+ * @see https://tailwindcss.com/docs/text-overflow
5265
+ */
5266
+ "text-overflow": ["truncate", "text-ellipsis", "text-clip"],
5267
+ /**
5268
+ * Text Wrap
5269
+ * @see https://tailwindcss.com/docs/text-wrap
5270
+ */
5271
+ "text-wrap": [{
5272
+ text: ["wrap", "nowrap", "balance", "pretty"]
5273
+ }],
5274
+ /**
5275
+ * Text Indent
5276
+ * @see https://tailwindcss.com/docs/text-indent
5277
+ */
5278
+ indent: [{
5279
+ indent: getSpacingWithArbitrary()
5280
+ }],
5281
+ /**
5282
+ * Vertical Alignment
5283
+ * @see https://tailwindcss.com/docs/vertical-align
5284
+ */
5285
+ "vertical-align": [{
5286
+ align: ["baseline", "top", "middle", "bottom", "text-top", "text-bottom", "sub", "super", isArbitraryValue]
5287
+ }],
5288
+ /**
5289
+ * Whitespace
5290
+ * @see https://tailwindcss.com/docs/whitespace
5291
+ */
5292
+ whitespace: [{
5293
+ whitespace: ["normal", "nowrap", "pre", "pre-line", "pre-wrap", "break-spaces"]
5294
+ }],
5295
+ /**
5296
+ * Word Break
5297
+ * @see https://tailwindcss.com/docs/word-break
5298
+ */
5299
+ break: [{
5300
+ break: ["normal", "words", "all", "keep"]
5301
+ }],
5302
+ /**
5303
+ * Hyphens
5304
+ * @see https://tailwindcss.com/docs/hyphens
5305
+ */
5306
+ hyphens: [{
5307
+ hyphens: ["none", "manual", "auto"]
5308
+ }],
5309
+ /**
5310
+ * Content
5311
+ * @see https://tailwindcss.com/docs/content
5312
+ */
5313
+ content: [{
5314
+ content: ["none", isArbitraryValue]
5315
+ }],
5316
+ // Backgrounds
5317
+ /**
5318
+ * Background Attachment
5319
+ * @see https://tailwindcss.com/docs/background-attachment
5320
+ */
5321
+ "bg-attachment": [{
5322
+ bg: ["fixed", "local", "scroll"]
5323
+ }],
5324
+ /**
5325
+ * Background Clip
5326
+ * @see https://tailwindcss.com/docs/background-clip
5327
+ */
5328
+ "bg-clip": [{
5329
+ "bg-clip": ["border", "padding", "content", "text"]
5330
+ }],
5331
+ /**
5332
+ * Background Opacity
5333
+ * @deprecated since Tailwind CSS v3.0.0
5334
+ * @see https://tailwindcss.com/docs/background-opacity
5335
+ */
5336
+ "bg-opacity": [{
5337
+ "bg-opacity": [opacity]
5338
+ }],
5339
+ /**
5340
+ * Background Origin
5341
+ * @see https://tailwindcss.com/docs/background-origin
5342
+ */
5343
+ "bg-origin": [{
5344
+ "bg-origin": ["border", "padding", "content"]
5345
+ }],
5346
+ /**
5347
+ * Background Position
5348
+ * @see https://tailwindcss.com/docs/background-position
5349
+ */
5350
+ "bg-position": [{
5351
+ bg: [...getPositions(), isArbitraryPosition]
5352
+ }],
5353
+ /**
5354
+ * Background Repeat
5355
+ * @see https://tailwindcss.com/docs/background-repeat
5356
+ */
5357
+ "bg-repeat": [{
5358
+ bg: ["no-repeat", {
5359
+ repeat: ["", "x", "y", "round", "space"]
5360
+ }]
5361
+ }],
5362
+ /**
5363
+ * Background Size
5364
+ * @see https://tailwindcss.com/docs/background-size
5365
+ */
5366
+ "bg-size": [{
5367
+ bg: ["auto", "cover", "contain", isArbitrarySize]
5368
+ }],
5369
+ /**
5370
+ * Background Image
5371
+ * @see https://tailwindcss.com/docs/background-image
5372
+ */
5373
+ "bg-image": [{
5374
+ bg: ["none", {
5375
+ "gradient-to": ["t", "tr", "r", "br", "b", "bl", "l", "tl"]
5376
+ }, isArbitraryImage]
5377
+ }],
5378
+ /**
5379
+ * Background Color
5380
+ * @see https://tailwindcss.com/docs/background-color
5381
+ */
5382
+ "bg-color": [{
5383
+ bg: [colors]
5384
+ }],
5385
+ /**
5386
+ * Gradient Color Stops From Position
5387
+ * @see https://tailwindcss.com/docs/gradient-color-stops
5388
+ */
5389
+ "gradient-from-pos": [{
5390
+ from: [gradientColorStopPositions]
5391
+ }],
5392
+ /**
5393
+ * Gradient Color Stops Via Position
5394
+ * @see https://tailwindcss.com/docs/gradient-color-stops
5395
+ */
5396
+ "gradient-via-pos": [{
5397
+ via: [gradientColorStopPositions]
5398
+ }],
5399
+ /**
5400
+ * Gradient Color Stops To Position
5401
+ * @see https://tailwindcss.com/docs/gradient-color-stops
5402
+ */
5403
+ "gradient-to-pos": [{
5404
+ to: [gradientColorStopPositions]
5405
+ }],
5406
+ /**
5407
+ * Gradient Color Stops From
5408
+ * @see https://tailwindcss.com/docs/gradient-color-stops
5409
+ */
5410
+ "gradient-from": [{
5411
+ from: [gradientColorStops]
5412
+ }],
5413
+ /**
5414
+ * Gradient Color Stops Via
5415
+ * @see https://tailwindcss.com/docs/gradient-color-stops
5416
+ */
5417
+ "gradient-via": [{
5418
+ via: [gradientColorStops]
5419
+ }],
5420
+ /**
5421
+ * Gradient Color Stops To
5422
+ * @see https://tailwindcss.com/docs/gradient-color-stops
5423
+ */
5424
+ "gradient-to": [{
5425
+ to: [gradientColorStops]
5426
+ }],
5427
+ // Borders
5428
+ /**
5429
+ * Border Radius
5430
+ * @see https://tailwindcss.com/docs/border-radius
5431
+ */
5432
+ rounded: [{
5433
+ rounded: [borderRadius]
5434
+ }],
5435
+ /**
5436
+ * Border Radius Start
5437
+ * @see https://tailwindcss.com/docs/border-radius
5438
+ */
5439
+ "rounded-s": [{
5440
+ "rounded-s": [borderRadius]
5441
+ }],
5442
+ /**
5443
+ * Border Radius End
5444
+ * @see https://tailwindcss.com/docs/border-radius
5445
+ */
5446
+ "rounded-e": [{
5447
+ "rounded-e": [borderRadius]
5448
+ }],
5449
+ /**
5450
+ * Border Radius Top
5451
+ * @see https://tailwindcss.com/docs/border-radius
5452
+ */
5453
+ "rounded-t": [{
5454
+ "rounded-t": [borderRadius]
5455
+ }],
5456
+ /**
5457
+ * Border Radius Right
5458
+ * @see https://tailwindcss.com/docs/border-radius
5459
+ */
5460
+ "rounded-r": [{
5461
+ "rounded-r": [borderRadius]
5462
+ }],
5463
+ /**
5464
+ * Border Radius Bottom
5465
+ * @see https://tailwindcss.com/docs/border-radius
5466
+ */
5467
+ "rounded-b": [{
5468
+ "rounded-b": [borderRadius]
5469
+ }],
5470
+ /**
5471
+ * Border Radius Left
5472
+ * @see https://tailwindcss.com/docs/border-radius
5473
+ */
5474
+ "rounded-l": [{
5475
+ "rounded-l": [borderRadius]
5476
+ }],
5477
+ /**
5478
+ * Border Radius Start Start
5479
+ * @see https://tailwindcss.com/docs/border-radius
5480
+ */
5481
+ "rounded-ss": [{
5482
+ "rounded-ss": [borderRadius]
5483
+ }],
5484
+ /**
5485
+ * Border Radius Start End
5486
+ * @see https://tailwindcss.com/docs/border-radius
5487
+ */
5488
+ "rounded-se": [{
5489
+ "rounded-se": [borderRadius]
5490
+ }],
5491
+ /**
5492
+ * Border Radius End End
5493
+ * @see https://tailwindcss.com/docs/border-radius
5494
+ */
5495
+ "rounded-ee": [{
5496
+ "rounded-ee": [borderRadius]
5497
+ }],
5498
+ /**
5499
+ * Border Radius End Start
5500
+ * @see https://tailwindcss.com/docs/border-radius
5501
+ */
5502
+ "rounded-es": [{
5503
+ "rounded-es": [borderRadius]
5504
+ }],
5505
+ /**
5506
+ * Border Radius Top Left
5507
+ * @see https://tailwindcss.com/docs/border-radius
5508
+ */
5509
+ "rounded-tl": [{
5510
+ "rounded-tl": [borderRadius]
5511
+ }],
5512
+ /**
5513
+ * Border Radius Top Right
5514
+ * @see https://tailwindcss.com/docs/border-radius
5515
+ */
5516
+ "rounded-tr": [{
5517
+ "rounded-tr": [borderRadius]
5518
+ }],
5519
+ /**
5520
+ * Border Radius Bottom Right
5521
+ * @see https://tailwindcss.com/docs/border-radius
5522
+ */
5523
+ "rounded-br": [{
5524
+ "rounded-br": [borderRadius]
5525
+ }],
5526
+ /**
5527
+ * Border Radius Bottom Left
5528
+ * @see https://tailwindcss.com/docs/border-radius
5529
+ */
5530
+ "rounded-bl": [{
5531
+ "rounded-bl": [borderRadius]
5532
+ }],
5533
+ /**
5534
+ * Border Width
5535
+ * @see https://tailwindcss.com/docs/border-width
5536
+ */
5537
+ "border-w": [{
5538
+ border: [borderWidth]
5539
+ }],
5540
+ /**
5541
+ * Border Width X
5542
+ * @see https://tailwindcss.com/docs/border-width
5543
+ */
5544
+ "border-w-x": [{
5545
+ "border-x": [borderWidth]
5546
+ }],
5547
+ /**
5548
+ * Border Width Y
5549
+ * @see https://tailwindcss.com/docs/border-width
5550
+ */
5551
+ "border-w-y": [{
5552
+ "border-y": [borderWidth]
5553
+ }],
5554
+ /**
5555
+ * Border Width Start
5556
+ * @see https://tailwindcss.com/docs/border-width
5557
+ */
5558
+ "border-w-s": [{
5559
+ "border-s": [borderWidth]
5560
+ }],
5561
+ /**
5562
+ * Border Width End
5563
+ * @see https://tailwindcss.com/docs/border-width
5564
+ */
5565
+ "border-w-e": [{
5566
+ "border-e": [borderWidth]
5567
+ }],
5568
+ /**
5569
+ * Border Width Top
5570
+ * @see https://tailwindcss.com/docs/border-width
5571
+ */
5572
+ "border-w-t": [{
5573
+ "border-t": [borderWidth]
5574
+ }],
5575
+ /**
5576
+ * Border Width Right
5577
+ * @see https://tailwindcss.com/docs/border-width
5578
+ */
5579
+ "border-w-r": [{
5580
+ "border-r": [borderWidth]
5581
+ }],
5582
+ /**
5583
+ * Border Width Bottom
5584
+ * @see https://tailwindcss.com/docs/border-width
5585
+ */
5586
+ "border-w-b": [{
5587
+ "border-b": [borderWidth]
5588
+ }],
5589
+ /**
5590
+ * Border Width Left
5591
+ * @see https://tailwindcss.com/docs/border-width
5592
+ */
5593
+ "border-w-l": [{
5594
+ "border-l": [borderWidth]
5595
+ }],
5596
+ /**
5597
+ * Border Opacity
5598
+ * @see https://tailwindcss.com/docs/border-opacity
5599
+ */
5600
+ "border-opacity": [{
5601
+ "border-opacity": [opacity]
5602
+ }],
5603
+ /**
5604
+ * Border Style
5605
+ * @see https://tailwindcss.com/docs/border-style
5606
+ */
5607
+ "border-style": [{
5608
+ border: [...getLineStyles(), "hidden"]
5609
+ }],
5610
+ /**
5611
+ * Divide Width X
5612
+ * @see https://tailwindcss.com/docs/divide-width
5613
+ */
5614
+ "divide-x": [{
5615
+ "divide-x": [borderWidth]
5616
+ }],
5617
+ /**
5618
+ * Divide Width X Reverse
5619
+ * @see https://tailwindcss.com/docs/divide-width
5620
+ */
5621
+ "divide-x-reverse": ["divide-x-reverse"],
5622
+ /**
5623
+ * Divide Width Y
5624
+ * @see https://tailwindcss.com/docs/divide-width
5625
+ */
5626
+ "divide-y": [{
5627
+ "divide-y": [borderWidth]
5628
+ }],
5629
+ /**
5630
+ * Divide Width Y Reverse
5631
+ * @see https://tailwindcss.com/docs/divide-width
5632
+ */
5633
+ "divide-y-reverse": ["divide-y-reverse"],
5634
+ /**
5635
+ * Divide Opacity
5636
+ * @see https://tailwindcss.com/docs/divide-opacity
5637
+ */
5638
+ "divide-opacity": [{
5639
+ "divide-opacity": [opacity]
5640
+ }],
5641
+ /**
5642
+ * Divide Style
5643
+ * @see https://tailwindcss.com/docs/divide-style
5644
+ */
5645
+ "divide-style": [{
5646
+ divide: getLineStyles()
5647
+ }],
5648
+ /**
5649
+ * Border Color
5650
+ * @see https://tailwindcss.com/docs/border-color
5651
+ */
5652
+ "border-color": [{
5653
+ border: [borderColor]
5654
+ }],
5655
+ /**
5656
+ * Border Color X
5657
+ * @see https://tailwindcss.com/docs/border-color
5658
+ */
5659
+ "border-color-x": [{
5660
+ "border-x": [borderColor]
5661
+ }],
5662
+ /**
5663
+ * Border Color Y
5664
+ * @see https://tailwindcss.com/docs/border-color
5665
+ */
5666
+ "border-color-y": [{
5667
+ "border-y": [borderColor]
5668
+ }],
5669
+ /**
5670
+ * Border Color S
5671
+ * @see https://tailwindcss.com/docs/border-color
5672
+ */
5673
+ "border-color-s": [{
5674
+ "border-s": [borderColor]
5675
+ }],
5676
+ /**
5677
+ * Border Color E
5678
+ * @see https://tailwindcss.com/docs/border-color
5679
+ */
5680
+ "border-color-e": [{
5681
+ "border-e": [borderColor]
5682
+ }],
5683
+ /**
5684
+ * Border Color Top
5685
+ * @see https://tailwindcss.com/docs/border-color
5686
+ */
5687
+ "border-color-t": [{
5688
+ "border-t": [borderColor]
5689
+ }],
5690
+ /**
5691
+ * Border Color Right
5692
+ * @see https://tailwindcss.com/docs/border-color
5693
+ */
5694
+ "border-color-r": [{
5695
+ "border-r": [borderColor]
5696
+ }],
5697
+ /**
5698
+ * Border Color Bottom
5699
+ * @see https://tailwindcss.com/docs/border-color
5700
+ */
5701
+ "border-color-b": [{
5702
+ "border-b": [borderColor]
5703
+ }],
5704
+ /**
5705
+ * Border Color Left
5706
+ * @see https://tailwindcss.com/docs/border-color
5707
+ */
5708
+ "border-color-l": [{
5709
+ "border-l": [borderColor]
5710
+ }],
5711
+ /**
5712
+ * Divide Color
5713
+ * @see https://tailwindcss.com/docs/divide-color
5714
+ */
5715
+ "divide-color": [{
5716
+ divide: [borderColor]
5717
+ }],
5718
+ /**
5719
+ * Outline Style
5720
+ * @see https://tailwindcss.com/docs/outline-style
5721
+ */
5722
+ "outline-style": [{
5723
+ outline: ["", ...getLineStyles()]
5724
+ }],
5725
+ /**
5726
+ * Outline Offset
5727
+ * @see https://tailwindcss.com/docs/outline-offset
5728
+ */
5729
+ "outline-offset": [{
5730
+ "outline-offset": [isLength, isArbitraryValue]
5731
+ }],
5732
+ /**
5733
+ * Outline Width
5734
+ * @see https://tailwindcss.com/docs/outline-width
5735
+ */
5736
+ "outline-w": [{
5737
+ outline: [isLength, isArbitraryLength]
5738
+ }],
5739
+ /**
5740
+ * Outline Color
5741
+ * @see https://tailwindcss.com/docs/outline-color
5742
+ */
5743
+ "outline-color": [{
5744
+ outline: [colors]
5745
+ }],
5746
+ /**
5747
+ * Ring Width
5748
+ * @see https://tailwindcss.com/docs/ring-width
5749
+ */
5750
+ "ring-w": [{
5751
+ ring: getLengthWithEmptyAndArbitrary()
5752
+ }],
5753
+ /**
5754
+ * Ring Width Inset
5755
+ * @see https://tailwindcss.com/docs/ring-width
5756
+ */
5757
+ "ring-w-inset": ["ring-inset"],
5758
+ /**
5759
+ * Ring Color
5760
+ * @see https://tailwindcss.com/docs/ring-color
5761
+ */
5762
+ "ring-color": [{
5763
+ ring: [colors]
5764
+ }],
5765
+ /**
5766
+ * Ring Opacity
5767
+ * @see https://tailwindcss.com/docs/ring-opacity
5768
+ */
5769
+ "ring-opacity": [{
5770
+ "ring-opacity": [opacity]
5771
+ }],
5772
+ /**
5773
+ * Ring Offset Width
5774
+ * @see https://tailwindcss.com/docs/ring-offset-width
5775
+ */
5776
+ "ring-offset-w": [{
5777
+ "ring-offset": [isLength, isArbitraryLength]
5778
+ }],
5779
+ /**
5780
+ * Ring Offset Color
5781
+ * @see https://tailwindcss.com/docs/ring-offset-color
5782
+ */
5783
+ "ring-offset-color": [{
5784
+ "ring-offset": [colors]
5785
+ }],
5786
+ // Effects
5787
+ /**
5788
+ * Box Shadow
5789
+ * @see https://tailwindcss.com/docs/box-shadow
5790
+ */
5791
+ shadow: [{
5792
+ shadow: ["", "inner", "none", isTshirtSize, isArbitraryShadow]
5793
+ }],
5794
+ /**
5795
+ * Box Shadow Color
5796
+ * @see https://tailwindcss.com/docs/box-shadow-color
5797
+ */
5798
+ "shadow-color": [{
5799
+ shadow: [isAny]
5800
+ }],
5801
+ /**
5802
+ * Opacity
5803
+ * @see https://tailwindcss.com/docs/opacity
5804
+ */
5805
+ opacity: [{
5806
+ opacity: [opacity]
5807
+ }],
5808
+ /**
5809
+ * Mix Blend Mode
5810
+ * @see https://tailwindcss.com/docs/mix-blend-mode
5811
+ */
5812
+ "mix-blend": [{
5813
+ "mix-blend": [...getBlendModes(), "plus-lighter", "plus-darker"]
5814
+ }],
5815
+ /**
5816
+ * Background Blend Mode
5817
+ * @see https://tailwindcss.com/docs/background-blend-mode
5818
+ */
5819
+ "bg-blend": [{
5820
+ "bg-blend": getBlendModes()
5821
+ }],
5822
+ // Filters
5823
+ /**
5824
+ * Filter
5825
+ * @deprecated since Tailwind CSS v3.0.0
5826
+ * @see https://tailwindcss.com/docs/filter
5827
+ */
5828
+ filter: [{
5829
+ filter: ["", "none"]
5830
+ }],
5831
+ /**
5832
+ * Blur
5833
+ * @see https://tailwindcss.com/docs/blur
5834
+ */
5835
+ blur: [{
5836
+ blur: [blur]
5837
+ }],
5838
+ /**
5839
+ * Brightness
5840
+ * @see https://tailwindcss.com/docs/brightness
5841
+ */
5842
+ brightness: [{
5843
+ brightness: [brightness]
5844
+ }],
5845
+ /**
5846
+ * Contrast
5847
+ * @see https://tailwindcss.com/docs/contrast
5848
+ */
5849
+ contrast: [{
5850
+ contrast: [contrast]
5851
+ }],
5852
+ /**
5853
+ * Drop Shadow
5854
+ * @see https://tailwindcss.com/docs/drop-shadow
5855
+ */
5856
+ "drop-shadow": [{
5857
+ "drop-shadow": ["", "none", isTshirtSize, isArbitraryValue]
5858
+ }],
5859
+ /**
5860
+ * Grayscale
5861
+ * @see https://tailwindcss.com/docs/grayscale
5862
+ */
5863
+ grayscale: [{
5864
+ grayscale: [grayscale]
5865
+ }],
5866
+ /**
5867
+ * Hue Rotate
5868
+ * @see https://tailwindcss.com/docs/hue-rotate
5869
+ */
5870
+ "hue-rotate": [{
5871
+ "hue-rotate": [hueRotate]
5872
+ }],
5873
+ /**
5874
+ * Invert
5875
+ * @see https://tailwindcss.com/docs/invert
5876
+ */
5877
+ invert: [{
5878
+ invert: [invert]
5879
+ }],
5880
+ /**
5881
+ * Saturate
5882
+ * @see https://tailwindcss.com/docs/saturate
5883
+ */
5884
+ saturate: [{
5885
+ saturate: [saturate]
5886
+ }],
5887
+ /**
5888
+ * Sepia
5889
+ * @see https://tailwindcss.com/docs/sepia
5890
+ */
5891
+ sepia: [{
5892
+ sepia: [sepia]
5893
+ }],
5894
+ /**
5895
+ * Backdrop Filter
5896
+ * @deprecated since Tailwind CSS v3.0.0
5897
+ * @see https://tailwindcss.com/docs/backdrop-filter
5898
+ */
5899
+ "backdrop-filter": [{
5900
+ "backdrop-filter": ["", "none"]
5901
+ }],
5902
+ /**
5903
+ * Backdrop Blur
5904
+ * @see https://tailwindcss.com/docs/backdrop-blur
5905
+ */
5906
+ "backdrop-blur": [{
5907
+ "backdrop-blur": [blur]
5908
+ }],
5909
+ /**
5910
+ * Backdrop Brightness
5911
+ * @see https://tailwindcss.com/docs/backdrop-brightness
5912
+ */
5913
+ "backdrop-brightness": [{
5914
+ "backdrop-brightness": [brightness]
5915
+ }],
5916
+ /**
5917
+ * Backdrop Contrast
5918
+ * @see https://tailwindcss.com/docs/backdrop-contrast
5919
+ */
5920
+ "backdrop-contrast": [{
5921
+ "backdrop-contrast": [contrast]
5922
+ }],
5923
+ /**
5924
+ * Backdrop Grayscale
5925
+ * @see https://tailwindcss.com/docs/backdrop-grayscale
5926
+ */
5927
+ "backdrop-grayscale": [{
5928
+ "backdrop-grayscale": [grayscale]
5929
+ }],
5930
+ /**
5931
+ * Backdrop Hue Rotate
5932
+ * @see https://tailwindcss.com/docs/backdrop-hue-rotate
5933
+ */
5934
+ "backdrop-hue-rotate": [{
5935
+ "backdrop-hue-rotate": [hueRotate]
5936
+ }],
5937
+ /**
5938
+ * Backdrop Invert
5939
+ * @see https://tailwindcss.com/docs/backdrop-invert
5940
+ */
5941
+ "backdrop-invert": [{
5942
+ "backdrop-invert": [invert]
5943
+ }],
5944
+ /**
5945
+ * Backdrop Opacity
5946
+ * @see https://tailwindcss.com/docs/backdrop-opacity
5947
+ */
5948
+ "backdrop-opacity": [{
5949
+ "backdrop-opacity": [opacity]
5950
+ }],
5951
+ /**
5952
+ * Backdrop Saturate
5953
+ * @see https://tailwindcss.com/docs/backdrop-saturate
5954
+ */
5955
+ "backdrop-saturate": [{
5956
+ "backdrop-saturate": [saturate]
5957
+ }],
5958
+ /**
5959
+ * Backdrop Sepia
5960
+ * @see https://tailwindcss.com/docs/backdrop-sepia
5961
+ */
5962
+ "backdrop-sepia": [{
5963
+ "backdrop-sepia": [sepia]
5964
+ }],
5965
+ // Tables
5966
+ /**
5967
+ * Border Collapse
5968
+ * @see https://tailwindcss.com/docs/border-collapse
5969
+ */
5970
+ "border-collapse": [{
5971
+ border: ["collapse", "separate"]
5972
+ }],
5973
+ /**
5974
+ * Border Spacing
5975
+ * @see https://tailwindcss.com/docs/border-spacing
5976
+ */
5977
+ "border-spacing": [{
5978
+ "border-spacing": [borderSpacing]
5979
+ }],
5980
+ /**
5981
+ * Border Spacing X
5982
+ * @see https://tailwindcss.com/docs/border-spacing
5983
+ */
5984
+ "border-spacing-x": [{
5985
+ "border-spacing-x": [borderSpacing]
5986
+ }],
5987
+ /**
5988
+ * Border Spacing Y
5989
+ * @see https://tailwindcss.com/docs/border-spacing
5990
+ */
5991
+ "border-spacing-y": [{
5992
+ "border-spacing-y": [borderSpacing]
5993
+ }],
5994
+ /**
5995
+ * Table Layout
5996
+ * @see https://tailwindcss.com/docs/table-layout
5997
+ */
5998
+ "table-layout": [{
5999
+ table: ["auto", "fixed"]
6000
+ }],
6001
+ /**
6002
+ * Caption Side
6003
+ * @see https://tailwindcss.com/docs/caption-side
6004
+ */
6005
+ caption: [{
6006
+ caption: ["top", "bottom"]
6007
+ }],
6008
+ // Transitions and Animation
6009
+ /**
6010
+ * Tranisition Property
6011
+ * @see https://tailwindcss.com/docs/transition-property
6012
+ */
6013
+ transition: [{
6014
+ transition: ["none", "all", "", "colors", "opacity", "shadow", "transform", isArbitraryValue]
6015
+ }],
6016
+ /**
6017
+ * Transition Duration
6018
+ * @see https://tailwindcss.com/docs/transition-duration
6019
+ */
6020
+ duration: [{
6021
+ duration: getNumberAndArbitrary()
6022
+ }],
6023
+ /**
6024
+ * Transition Timing Function
6025
+ * @see https://tailwindcss.com/docs/transition-timing-function
6026
+ */
6027
+ ease: [{
6028
+ ease: ["linear", "in", "out", "in-out", isArbitraryValue]
6029
+ }],
6030
+ /**
6031
+ * Transition Delay
6032
+ * @see https://tailwindcss.com/docs/transition-delay
6033
+ */
6034
+ delay: [{
6035
+ delay: getNumberAndArbitrary()
6036
+ }],
6037
+ /**
6038
+ * Animation
6039
+ * @see https://tailwindcss.com/docs/animation
6040
+ */
6041
+ animate: [{
6042
+ animate: ["none", "spin", "ping", "pulse", "bounce", isArbitraryValue]
6043
+ }],
6044
+ // Transforms
6045
+ /**
6046
+ * Transform
6047
+ * @see https://tailwindcss.com/docs/transform
6048
+ */
6049
+ transform: [{
6050
+ transform: ["", "gpu", "none"]
6051
+ }],
6052
+ /**
6053
+ * Scale
6054
+ * @see https://tailwindcss.com/docs/scale
6055
+ */
6056
+ scale: [{
6057
+ scale: [scale]
6058
+ }],
6059
+ /**
6060
+ * Scale X
6061
+ * @see https://tailwindcss.com/docs/scale
6062
+ */
6063
+ "scale-x": [{
6064
+ "scale-x": [scale]
6065
+ }],
6066
+ /**
6067
+ * Scale Y
6068
+ * @see https://tailwindcss.com/docs/scale
6069
+ */
6070
+ "scale-y": [{
6071
+ "scale-y": [scale]
6072
+ }],
6073
+ /**
6074
+ * Rotate
6075
+ * @see https://tailwindcss.com/docs/rotate
6076
+ */
6077
+ rotate: [{
6078
+ rotate: [isInteger, isArbitraryValue]
6079
+ }],
6080
+ /**
6081
+ * Translate X
6082
+ * @see https://tailwindcss.com/docs/translate
6083
+ */
6084
+ "translate-x": [{
6085
+ "translate-x": [translate]
6086
+ }],
6087
+ /**
6088
+ * Translate Y
6089
+ * @see https://tailwindcss.com/docs/translate
6090
+ */
6091
+ "translate-y": [{
6092
+ "translate-y": [translate]
6093
+ }],
6094
+ /**
6095
+ * Skew X
6096
+ * @see https://tailwindcss.com/docs/skew
6097
+ */
6098
+ "skew-x": [{
6099
+ "skew-x": [skew]
6100
+ }],
6101
+ /**
6102
+ * Skew Y
6103
+ * @see https://tailwindcss.com/docs/skew
6104
+ */
6105
+ "skew-y": [{
6106
+ "skew-y": [skew]
6107
+ }],
6108
+ /**
6109
+ * Transform Origin
6110
+ * @see https://tailwindcss.com/docs/transform-origin
6111
+ */
6112
+ "transform-origin": [{
6113
+ origin: ["center", "top", "top-right", "right", "bottom-right", "bottom", "bottom-left", "left", "top-left", isArbitraryValue]
6114
+ }],
6115
+ // Interactivity
6116
+ /**
6117
+ * Accent Color
6118
+ * @see https://tailwindcss.com/docs/accent-color
6119
+ */
6120
+ accent: [{
6121
+ accent: ["auto", colors]
6122
+ }],
6123
+ /**
6124
+ * Appearance
6125
+ * @see https://tailwindcss.com/docs/appearance
6126
+ */
6127
+ appearance: [{
6128
+ appearance: ["none", "auto"]
6129
+ }],
6130
+ /**
6131
+ * Cursor
6132
+ * @see https://tailwindcss.com/docs/cursor
6133
+ */
6134
+ cursor: [{
6135
+ cursor: ["auto", "default", "pointer", "wait", "text", "move", "help", "not-allowed", "none", "context-menu", "progress", "cell", "crosshair", "vertical-text", "alias", "copy", "no-drop", "grab", "grabbing", "all-scroll", "col-resize", "row-resize", "n-resize", "e-resize", "s-resize", "w-resize", "ne-resize", "nw-resize", "se-resize", "sw-resize", "ew-resize", "ns-resize", "nesw-resize", "nwse-resize", "zoom-in", "zoom-out", isArbitraryValue]
6136
+ }],
6137
+ /**
6138
+ * Caret Color
6139
+ * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities
6140
+ */
6141
+ "caret-color": [{
6142
+ caret: [colors]
6143
+ }],
6144
+ /**
6145
+ * Pointer Events
6146
+ * @see https://tailwindcss.com/docs/pointer-events
6147
+ */
6148
+ "pointer-events": [{
6149
+ "pointer-events": ["none", "auto"]
6150
+ }],
6151
+ /**
6152
+ * Resize
6153
+ * @see https://tailwindcss.com/docs/resize
6154
+ */
6155
+ resize: [{
6156
+ resize: ["none", "y", "x", ""]
6157
+ }],
6158
+ /**
6159
+ * Scroll Behavior
6160
+ * @see https://tailwindcss.com/docs/scroll-behavior
6161
+ */
6162
+ "scroll-behavior": [{
6163
+ scroll: ["auto", "smooth"]
6164
+ }],
6165
+ /**
6166
+ * Scroll Margin
6167
+ * @see https://tailwindcss.com/docs/scroll-margin
6168
+ */
6169
+ "scroll-m": [{
6170
+ "scroll-m": getSpacingWithArbitrary()
6171
+ }],
6172
+ /**
6173
+ * Scroll Margin X
6174
+ * @see https://tailwindcss.com/docs/scroll-margin
6175
+ */
6176
+ "scroll-mx": [{
6177
+ "scroll-mx": getSpacingWithArbitrary()
6178
+ }],
6179
+ /**
6180
+ * Scroll Margin Y
6181
+ * @see https://tailwindcss.com/docs/scroll-margin
6182
+ */
6183
+ "scroll-my": [{
6184
+ "scroll-my": getSpacingWithArbitrary()
6185
+ }],
6186
+ /**
6187
+ * Scroll Margin Start
6188
+ * @see https://tailwindcss.com/docs/scroll-margin
6189
+ */
6190
+ "scroll-ms": [{
6191
+ "scroll-ms": getSpacingWithArbitrary()
6192
+ }],
6193
+ /**
6194
+ * Scroll Margin End
6195
+ * @see https://tailwindcss.com/docs/scroll-margin
6196
+ */
6197
+ "scroll-me": [{
6198
+ "scroll-me": getSpacingWithArbitrary()
6199
+ }],
6200
+ /**
6201
+ * Scroll Margin Top
6202
+ * @see https://tailwindcss.com/docs/scroll-margin
6203
+ */
6204
+ "scroll-mt": [{
6205
+ "scroll-mt": getSpacingWithArbitrary()
6206
+ }],
6207
+ /**
6208
+ * Scroll Margin Right
6209
+ * @see https://tailwindcss.com/docs/scroll-margin
6210
+ */
6211
+ "scroll-mr": [{
6212
+ "scroll-mr": getSpacingWithArbitrary()
6213
+ }],
6214
+ /**
6215
+ * Scroll Margin Bottom
6216
+ * @see https://tailwindcss.com/docs/scroll-margin
6217
+ */
6218
+ "scroll-mb": [{
6219
+ "scroll-mb": getSpacingWithArbitrary()
6220
+ }],
6221
+ /**
6222
+ * Scroll Margin Left
6223
+ * @see https://tailwindcss.com/docs/scroll-margin
6224
+ */
6225
+ "scroll-ml": [{
6226
+ "scroll-ml": getSpacingWithArbitrary()
6227
+ }],
6228
+ /**
6229
+ * Scroll Padding
6230
+ * @see https://tailwindcss.com/docs/scroll-padding
6231
+ */
6232
+ "scroll-p": [{
6233
+ "scroll-p": getSpacingWithArbitrary()
6234
+ }],
6235
+ /**
6236
+ * Scroll Padding X
6237
+ * @see https://tailwindcss.com/docs/scroll-padding
6238
+ */
6239
+ "scroll-px": [{
6240
+ "scroll-px": getSpacingWithArbitrary()
6241
+ }],
6242
+ /**
6243
+ * Scroll Padding Y
6244
+ * @see https://tailwindcss.com/docs/scroll-padding
6245
+ */
6246
+ "scroll-py": [{
6247
+ "scroll-py": getSpacingWithArbitrary()
6248
+ }],
6249
+ /**
6250
+ * Scroll Padding Start
6251
+ * @see https://tailwindcss.com/docs/scroll-padding
6252
+ */
6253
+ "scroll-ps": [{
6254
+ "scroll-ps": getSpacingWithArbitrary()
6255
+ }],
6256
+ /**
6257
+ * Scroll Padding End
6258
+ * @see https://tailwindcss.com/docs/scroll-padding
6259
+ */
6260
+ "scroll-pe": [{
6261
+ "scroll-pe": getSpacingWithArbitrary()
6262
+ }],
6263
+ /**
6264
+ * Scroll Padding Top
6265
+ * @see https://tailwindcss.com/docs/scroll-padding
6266
+ */
6267
+ "scroll-pt": [{
6268
+ "scroll-pt": getSpacingWithArbitrary()
6269
+ }],
6270
+ /**
6271
+ * Scroll Padding Right
6272
+ * @see https://tailwindcss.com/docs/scroll-padding
6273
+ */
6274
+ "scroll-pr": [{
6275
+ "scroll-pr": getSpacingWithArbitrary()
6276
+ }],
6277
+ /**
6278
+ * Scroll Padding Bottom
6279
+ * @see https://tailwindcss.com/docs/scroll-padding
6280
+ */
6281
+ "scroll-pb": [{
6282
+ "scroll-pb": getSpacingWithArbitrary()
6283
+ }],
6284
+ /**
6285
+ * Scroll Padding Left
6286
+ * @see https://tailwindcss.com/docs/scroll-padding
6287
+ */
6288
+ "scroll-pl": [{
6289
+ "scroll-pl": getSpacingWithArbitrary()
6290
+ }],
6291
+ /**
6292
+ * Scroll Snap Align
6293
+ * @see https://tailwindcss.com/docs/scroll-snap-align
6294
+ */
6295
+ "snap-align": [{
6296
+ snap: ["start", "end", "center", "align-none"]
6297
+ }],
6298
+ /**
6299
+ * Scroll Snap Stop
6300
+ * @see https://tailwindcss.com/docs/scroll-snap-stop
6301
+ */
6302
+ "snap-stop": [{
6303
+ snap: ["normal", "always"]
6304
+ }],
6305
+ /**
6306
+ * Scroll Snap Type
6307
+ * @see https://tailwindcss.com/docs/scroll-snap-type
6308
+ */
6309
+ "snap-type": [{
6310
+ snap: ["none", "x", "y", "both"]
6311
+ }],
6312
+ /**
6313
+ * Scroll Snap Type Strictness
6314
+ * @see https://tailwindcss.com/docs/scroll-snap-type
6315
+ */
6316
+ "snap-strictness": [{
6317
+ snap: ["mandatory", "proximity"]
6318
+ }],
6319
+ /**
6320
+ * Touch Action
6321
+ * @see https://tailwindcss.com/docs/touch-action
6322
+ */
6323
+ touch: [{
6324
+ touch: ["auto", "none", "manipulation"]
6325
+ }],
6326
+ /**
6327
+ * Touch Action X
6328
+ * @see https://tailwindcss.com/docs/touch-action
6329
+ */
6330
+ "touch-x": [{
6331
+ "touch-pan": ["x", "left", "right"]
6332
+ }],
6333
+ /**
6334
+ * Touch Action Y
6335
+ * @see https://tailwindcss.com/docs/touch-action
6336
+ */
6337
+ "touch-y": [{
6338
+ "touch-pan": ["y", "up", "down"]
6339
+ }],
6340
+ /**
6341
+ * Touch Action Pinch Zoom
6342
+ * @see https://tailwindcss.com/docs/touch-action
6343
+ */
6344
+ "touch-pz": ["touch-pinch-zoom"],
6345
+ /**
6346
+ * User Select
6347
+ * @see https://tailwindcss.com/docs/user-select
6348
+ */
6349
+ select: [{
6350
+ select: ["none", "text", "all", "auto"]
6351
+ }],
6352
+ /**
6353
+ * Will Change
6354
+ * @see https://tailwindcss.com/docs/will-change
6355
+ */
6356
+ "will-change": [{
6357
+ "will-change": ["auto", "scroll", "contents", "transform", isArbitraryValue]
6358
+ }],
6359
+ // SVG
6360
+ /**
6361
+ * Fill
6362
+ * @see https://tailwindcss.com/docs/fill
6363
+ */
6364
+ fill: [{
6365
+ fill: [colors, "none"]
6366
+ }],
6367
+ /**
6368
+ * Stroke Width
6369
+ * @see https://tailwindcss.com/docs/stroke-width
6370
+ */
6371
+ "stroke-w": [{
6372
+ stroke: [isLength, isArbitraryLength, isArbitraryNumber]
6373
+ }],
6374
+ /**
6375
+ * Stroke
6376
+ * @see https://tailwindcss.com/docs/stroke
6377
+ */
6378
+ stroke: [{
6379
+ stroke: [colors, "none"]
6380
+ }],
6381
+ // Accessibility
6382
+ /**
6383
+ * Screen Readers
6384
+ * @see https://tailwindcss.com/docs/screen-readers
6385
+ */
6386
+ sr: ["sr-only", "not-sr-only"],
6387
+ /**
6388
+ * Forced Color Adjust
6389
+ * @see https://tailwindcss.com/docs/forced-color-adjust
6390
+ */
6391
+ "forced-color-adjust": [{
6392
+ "forced-color-adjust": ["auto", "none"]
6393
+ }]
6394
+ },
6395
+ conflictingClassGroups: {
6396
+ overflow: ["overflow-x", "overflow-y"],
6397
+ overscroll: ["overscroll-x", "overscroll-y"],
6398
+ inset: ["inset-x", "inset-y", "start", "end", "top", "right", "bottom", "left"],
6399
+ "inset-x": ["right", "left"],
6400
+ "inset-y": ["top", "bottom"],
6401
+ flex: ["basis", "grow", "shrink"],
6402
+ gap: ["gap-x", "gap-y"],
6403
+ p: ["px", "py", "ps", "pe", "pt", "pr", "pb", "pl"],
6404
+ px: ["pr", "pl"],
6405
+ py: ["pt", "pb"],
6406
+ m: ["mx", "my", "ms", "me", "mt", "mr", "mb", "ml"],
6407
+ mx: ["mr", "ml"],
6408
+ my: ["mt", "mb"],
6409
+ size: ["w", "h"],
6410
+ "font-size": ["leading"],
6411
+ "fvn-normal": ["fvn-ordinal", "fvn-slashed-zero", "fvn-figure", "fvn-spacing", "fvn-fraction"],
6412
+ "fvn-ordinal": ["fvn-normal"],
6413
+ "fvn-slashed-zero": ["fvn-normal"],
6414
+ "fvn-figure": ["fvn-normal"],
6415
+ "fvn-spacing": ["fvn-normal"],
6416
+ "fvn-fraction": ["fvn-normal"],
6417
+ "line-clamp": ["display", "overflow"],
6418
+ rounded: ["rounded-s", "rounded-e", "rounded-t", "rounded-r", "rounded-b", "rounded-l", "rounded-ss", "rounded-se", "rounded-ee", "rounded-es", "rounded-tl", "rounded-tr", "rounded-br", "rounded-bl"],
6419
+ "rounded-s": ["rounded-ss", "rounded-es"],
6420
+ "rounded-e": ["rounded-se", "rounded-ee"],
6421
+ "rounded-t": ["rounded-tl", "rounded-tr"],
6422
+ "rounded-r": ["rounded-tr", "rounded-br"],
6423
+ "rounded-b": ["rounded-br", "rounded-bl"],
6424
+ "rounded-l": ["rounded-tl", "rounded-bl"],
6425
+ "border-spacing": ["border-spacing-x", "border-spacing-y"],
6426
+ "border-w": ["border-w-s", "border-w-e", "border-w-t", "border-w-r", "border-w-b", "border-w-l"],
6427
+ "border-w-x": ["border-w-r", "border-w-l"],
6428
+ "border-w-y": ["border-w-t", "border-w-b"],
6429
+ "border-color": ["border-color-s", "border-color-e", "border-color-t", "border-color-r", "border-color-b", "border-color-l"],
6430
+ "border-color-x": ["border-color-r", "border-color-l"],
6431
+ "border-color-y": ["border-color-t", "border-color-b"],
6432
+ "scroll-m": ["scroll-mx", "scroll-my", "scroll-ms", "scroll-me", "scroll-mt", "scroll-mr", "scroll-mb", "scroll-ml"],
6433
+ "scroll-mx": ["scroll-mr", "scroll-ml"],
6434
+ "scroll-my": ["scroll-mt", "scroll-mb"],
6435
+ "scroll-p": ["scroll-px", "scroll-py", "scroll-ps", "scroll-pe", "scroll-pt", "scroll-pr", "scroll-pb", "scroll-pl"],
6436
+ "scroll-px": ["scroll-pr", "scroll-pl"],
6437
+ "scroll-py": ["scroll-pt", "scroll-pb"],
6438
+ touch: ["touch-x", "touch-y", "touch-pz"],
6439
+ "touch-x": ["touch"],
6440
+ "touch-y": ["touch"],
6441
+ "touch-pz": ["touch"]
6442
+ },
6443
+ conflictingClassGroupModifiers: {
6444
+ "font-size": ["leading"]
6445
+ }
6446
+ };
6447
+ };
6448
+ var twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
6449
+
6450
+ // lib/cn.ts
6451
+ function cn(...inputs) {
6452
+ return twMerge(clsx(inputs));
6453
+ }
6454
+ var EventBusContext = createContext(null);
6455
+
6456
+ // hooks/useEventBus.ts
6457
+ function getGlobalEventBus() {
6458
+ if (typeof window !== "undefined") {
6459
+ return window.__kflowEventBus ?? null;
6460
+ }
6461
+ return null;
6462
+ }
6463
+ var fallbackListeners = /* @__PURE__ */ new Map();
6464
+ var fallbackAnyListeners = /* @__PURE__ */ new Set();
6465
+ var fallbackEventBus = {
6466
+ emit: (type, payload) => {
6467
+ const event = {
6468
+ type,
6469
+ payload,
6470
+ timestamp: Date.now()
6471
+ };
6472
+ const handlers = fallbackListeners.get(type);
6473
+ if (handlers) {
6474
+ handlers.forEach((handler) => {
6475
+ try {
6476
+ handler(event);
6477
+ } catch (error) {
6478
+ console.error(`[EventBus] Error in listener for '${type}':`, error);
6479
+ }
6480
+ });
6481
+ }
6482
+ fallbackAnyListeners.forEach((handler) => {
6483
+ try {
6484
+ handler(event);
6485
+ } catch (error) {
6486
+ console.error(`[EventBus] Error in onAny listener for '${type}':`, error);
6487
+ }
6488
+ });
6489
+ },
6490
+ on: (type, listener) => {
6491
+ if (!fallbackListeners.has(type)) {
6492
+ fallbackListeners.set(type, /* @__PURE__ */ new Set());
6493
+ }
6494
+ fallbackListeners.get(type).add(listener);
6495
+ return () => {
6496
+ const handlers = fallbackListeners.get(type);
6497
+ if (handlers) {
6498
+ handlers.delete(listener);
6499
+ if (handlers.size === 0) {
6500
+ fallbackListeners.delete(type);
6501
+ }
6502
+ }
6503
+ };
6504
+ },
6505
+ once: (type, listener) => {
6506
+ const wrappedListener = (event) => {
6507
+ fallbackListeners.get(type)?.delete(wrappedListener);
6508
+ listener(event);
6509
+ };
6510
+ return fallbackEventBus.on(type, wrappedListener);
6511
+ },
6512
+ hasListeners: (type) => {
6513
+ const handlers = fallbackListeners.get(type);
6514
+ return handlers !== void 0 && handlers.size > 0;
6515
+ },
6516
+ onAny: (listener) => {
6517
+ fallbackAnyListeners.add(listener);
6518
+ return () => {
6519
+ fallbackAnyListeners.delete(listener);
6520
+ };
6521
+ }
6522
+ };
6523
+ function useEventBus() {
6524
+ const context = useContext(EventBusContext);
6525
+ return context ?? getGlobalEventBus() ?? fallbackEventBus;
6526
+ }
6527
+ var paddingStyles = {
6528
+ none: "p-0",
6529
+ xs: "p-1",
6530
+ sm: "p-2",
6531
+ md: "p-4",
6532
+ lg: "p-6",
6533
+ xl: "p-8",
6534
+ "2xl": "p-12"
6535
+ };
6536
+ var paddingXStyles = {
6537
+ none: "px-0",
6538
+ xs: "px-1",
6539
+ sm: "px-2",
6540
+ md: "px-4",
6541
+ lg: "px-6",
6542
+ xl: "px-8",
6543
+ "2xl": "px-12"
6544
+ };
6545
+ var paddingYStyles = {
6546
+ none: "py-0",
6547
+ xs: "py-1",
6548
+ sm: "py-2",
6549
+ md: "py-4",
6550
+ lg: "py-6",
6551
+ xl: "py-8",
6552
+ "2xl": "py-12"
6553
+ };
6554
+ var marginStyles = {
6555
+ none: "m-0",
6556
+ xs: "m-1",
6557
+ sm: "m-2",
6558
+ md: "m-4",
6559
+ lg: "m-6",
6560
+ xl: "m-8",
6561
+ "2xl": "m-12",
6562
+ auto: "m-auto"
6563
+ };
6564
+ var marginXStyles = {
6565
+ none: "mx-0",
6566
+ xs: "mx-1",
6567
+ sm: "mx-2",
6568
+ md: "mx-4",
6569
+ lg: "mx-6",
6570
+ xl: "mx-8",
6571
+ "2xl": "mx-12",
6572
+ auto: "mx-auto"
6573
+ };
6574
+ var marginYStyles = {
6575
+ none: "my-0",
6576
+ xs: "my-1",
6577
+ sm: "my-2",
6578
+ md: "my-4",
6579
+ lg: "my-6",
6580
+ xl: "my-8",
6581
+ "2xl": "my-12",
6582
+ auto: "my-auto"
6583
+ };
6584
+ var bgStyles = {
6585
+ transparent: "bg-transparent",
6586
+ primary: "bg-[var(--color-primary)] text-[var(--color-primary-foreground)]",
6587
+ secondary: "bg-[var(--color-secondary)] text-[var(--color-secondary-foreground)]",
6588
+ muted: "bg-[var(--color-muted)] text-[var(--color-foreground)]",
6589
+ accent: "bg-[var(--color-accent)] text-[var(--color-accent-foreground)]",
6590
+ surface: "bg-[var(--color-card)]",
6591
+ overlay: "bg-[var(--color-card)]/80 backdrop-blur-sm"
6592
+ };
6593
+ var roundedStyles = {
6594
+ none: "rounded-none",
6595
+ sm: "rounded-[var(--radius-sm)]",
6596
+ md: "rounded-[var(--radius-md)]",
6597
+ lg: "rounded-[var(--radius-lg)]",
6598
+ xl: "rounded-[var(--radius-xl)]",
6599
+ "2xl": "rounded-[var(--radius-xl)]",
6600
+ full: "rounded-[var(--radius-full)]"
6601
+ };
6602
+ var shadowStyles = {
6603
+ none: "shadow-none",
6604
+ sm: "shadow-[var(--shadow-sm)]",
6605
+ md: "shadow-[var(--shadow-main)]",
6606
+ lg: "shadow-[var(--shadow-lg)]",
6607
+ xl: "shadow-[var(--shadow-lg)]"
6608
+ };
6609
+ var displayStyles = {
6610
+ block: "block",
6611
+ inline: "inline",
6612
+ "inline-block": "inline-block",
6613
+ flex: "flex",
6614
+ "inline-flex": "inline-flex",
6615
+ grid: "grid"
6616
+ };
6617
+ var overflowStyles2 = {
6618
+ auto: "overflow-auto",
6619
+ hidden: "overflow-hidden",
6620
+ visible: "overflow-visible",
6621
+ scroll: "overflow-scroll"
6622
+ };
6623
+ var positionStyles = {
6624
+ relative: "relative",
6625
+ absolute: "absolute",
6626
+ fixed: "fixed",
6627
+ sticky: "sticky"
6628
+ };
6629
+ var Box = React26.forwardRef(
6630
+ ({
6631
+ padding,
6632
+ paddingX,
6633
+ paddingY,
6634
+ margin,
6635
+ marginX,
6636
+ marginY,
6637
+ bg = "transparent",
6638
+ border = false,
6639
+ rounded = "none",
6640
+ shadow = "none",
6641
+ display,
6642
+ fullWidth = false,
6643
+ fullHeight = false,
6644
+ overflow,
6645
+ position,
6646
+ className,
6647
+ children,
6648
+ as: Component = "div",
6649
+ action,
6650
+ actionPayload,
6651
+ hoverEvent,
6652
+ onClick,
6653
+ onMouseEnter,
6654
+ onMouseLeave,
6655
+ ...rest
6656
+ }, ref) => {
6657
+ const eventBus = useEventBus();
6658
+ const handleClick = useCallback((e) => {
6659
+ if (action) {
6660
+ e.stopPropagation();
6661
+ eventBus.emit(`UI:${action}`, actionPayload ?? {});
6662
+ }
6663
+ onClick?.(e);
6664
+ }, [action, actionPayload, eventBus, onClick]);
6665
+ const handleMouseEnter = useCallback((e) => {
6666
+ if (hoverEvent) {
6667
+ eventBus.emit(`UI:${hoverEvent}`, { hovered: true });
6668
+ }
6669
+ onMouseEnter?.(e);
6670
+ }, [hoverEvent, eventBus, onMouseEnter]);
6671
+ const handleMouseLeave = useCallback((e) => {
6672
+ if (hoverEvent) {
6673
+ eventBus.emit(`UI:${hoverEvent}`, { hovered: false });
6674
+ }
6675
+ onMouseLeave?.(e);
6676
+ }, [hoverEvent, eventBus, onMouseLeave]);
6677
+ const isClickable = action || onClick;
6678
+ const Comp = Component;
6679
+ return /* @__PURE__ */ jsx(
6680
+ Comp,
6681
+ {
6682
+ ref,
6683
+ className: cn(
6684
+ // Padding
6685
+ padding && paddingStyles[padding],
6686
+ paddingX && paddingXStyles[paddingX],
6687
+ paddingY && paddingYStyles[paddingY],
6688
+ // Margin
6689
+ margin && marginStyles[margin],
6690
+ marginX && marginXStyles[marginX],
6691
+ marginY && marginYStyles[marginY],
6692
+ // Background
6693
+ bgStyles[bg],
6694
+ // Border - uses theme variables
6695
+ border && "border-[length:var(--border-width)] border-[var(--color-border)]",
6696
+ // Rounded
6697
+ roundedStyles[rounded],
6698
+ // Shadow
6699
+ shadowStyles[shadow],
6700
+ // Display
6701
+ display && displayStyles[display],
6702
+ // Dimensions
6703
+ fullWidth && "w-full",
6704
+ fullHeight && "h-full",
6705
+ // Overflow
6706
+ overflow && overflowStyles2[overflow],
6707
+ // Position
6708
+ position && positionStyles[position],
6709
+ // Cursor for clickable
6710
+ isClickable && "cursor-pointer",
6711
+ className
6712
+ ),
6713
+ onClick: isClickable ? handleClick : void 0,
6714
+ onMouseEnter: hoverEvent || onMouseEnter ? handleMouseEnter : void 0,
6715
+ onMouseLeave: hoverEvent || onMouseLeave ? handleMouseLeave : void 0,
6716
+ ...rest,
6717
+ children
6718
+ }
6719
+ );
6720
+ }
6721
+ );
6722
+ Box.displayName = "Box";
6723
+
3972
6724
  // components/molecules/avl/avl-layout.ts
3973
- function ringPositions(cx, cy, r, count, startAngle = -Math.PI / 2) {
6725
+ function ringPositions(cx, cy, r2, count, startAngle = -Math.PI / 2) {
3974
6726
  if (count === 0) return [];
3975
6727
  if (count === 1) {
3976
6728
  return [{ x: cx, y: cy, angle: 0 }];
3977
6729
  }
3978
6730
  if (count === 2) {
3979
6731
  return [
3980
- { x: cx - r * 0.7, y: cy, angle: Math.PI },
3981
- { x: cx + r * 0.7, y: cy, angle: 0 }
6732
+ { x: cx - r2 * 0.7, y: cy, angle: Math.PI },
6733
+ { x: cx + r2 * 0.7, y: cy, angle: 0 }
3982
6734
  ];
3983
6735
  }
3984
6736
  return Array.from({ length: count }, (_, i) => {
3985
6737
  const angle = startAngle + Math.PI * 2 * i / count;
3986
6738
  return {
3987
- x: cx + r * Math.cos(angle),
3988
- y: cy + r * Math.sin(angle),
6739
+ x: cx + r2 * Math.cos(angle),
6740
+ y: cy + r2 * Math.sin(angle),
3989
6741
  angle
3990
6742
  };
3991
6743
  });
@@ -3998,17 +6750,17 @@ var AvlStateMachine = ({
3998
6750
  color = "var(--color-primary)",
3999
6751
  animated = false
4000
6752
  }) => {
4001
- const ids = React24.useMemo(() => {
6753
+ const ids = React26.useMemo(() => {
4002
6754
  avlSmId += 1;
4003
6755
  const base = `avl-sm-${avlSmId}`;
4004
6756
  return { glow: `${base}-glow`, grad: `${base}-grad` };
4005
6757
  }, []);
4006
6758
  const cx = 300;
4007
6759
  const cy = 200;
4008
- const r = 150;
6760
+ const r2 = 150;
4009
6761
  const stateWidth = 90;
4010
6762
  const stateHeight = 36;
4011
- const positions = ringPositions(cx, cy, r, states.length);
6763
+ const positions = ringPositions(cx, cy, r2, states.length);
4012
6764
  const stateIndex = new Map(states.map((s, i) => [s.name, i]));
4013
6765
  const pairCount = /* @__PURE__ */ new Map();
4014
6766
  const pairSeen = /* @__PURE__ */ new Map();
@@ -4033,7 +6785,7 @@ var AvlStateMachine = ({
4033
6785
  animated && /* @__PURE__ */ jsx("style", { children: `
4034
6786
  @keyframes avl-sm-dash { from { stroke-dashoffset: 20; } to { stroke-dashoffset: 0; } }
4035
6787
  ` }),
4036
- /* @__PURE__ */ jsx("circle", { cx, cy, r: r + 30, fill: `url(#${ids.grad})` }),
6788
+ /* @__PURE__ */ jsx("circle", { cx, cy, r: r2 + 30, fill: `url(#${ids.grad})` }),
4037
6789
  transitions.map((tr, i) => {
4038
6790
  if (tr.from !== tr.to) return null;
4039
6791
  const idx = stateIndex.get(tr.from);
@@ -4193,7 +6945,7 @@ var AvlOrbitalUnit = ({
4193
6945
  color = "var(--color-primary)",
4194
6946
  animated = false
4195
6947
  }) => {
4196
- const ids = React24.useMemo(() => {
6948
+ const ids = React26.useMemo(() => {
4197
6949
  avlOuId += 1;
4198
6950
  const base = `avl-ou-${avlOuId}`;
4199
6951
  return { glow: `${base}-glow`, grad: `${base}-grad` };
@@ -4285,17 +7037,17 @@ var AvlClosedCircuit = ({
4285
7037
  color = "var(--color-primary)",
4286
7038
  animated = false
4287
7039
  }) => {
4288
- const ids = React24.useMemo(() => {
7040
+ const ids = React26.useMemo(() => {
4289
7041
  avlCcId += 1;
4290
7042
  const base = `avl-cc-${avlCcId}`;
4291
7043
  return { glow: `${base}-glow`, grad: `${base}-grad`, arrow: `${base}-arrow` };
4292
7044
  }, []);
4293
7045
  const cx = 300;
4294
7046
  const cy = 200;
4295
- const r = 120;
7047
+ const r2 = 120;
4296
7048
  const stateW = 80;
4297
7049
  const stateH = 32;
4298
- const positions = ringPositions(cx, cy, r, states.length);
7050
+ const positions = ringPositions(cx, cy, r2, states.length);
4299
7051
  const stateIndex = new Map(states.map((s, i) => [s.name, i]));
4300
7052
  return /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 600 400", xmlns: "http://www.w3.org/2000/svg", className, children: [
4301
7053
  /* @__PURE__ */ jsxs("defs", { children: [
@@ -4328,7 +7080,7 @@ var AvlClosedCircuit = ({
4328
7080
  animated && /* @__PURE__ */ jsx("style", { children: `
4329
7081
  @keyframes avl-cc-flow { from { stroke-dashoffset: 24; } to { stroke-dashoffset: 0; } }
4330
7082
  ` }),
4331
- /* @__PURE__ */ jsx("circle", { cx, cy, r: r + 30, fill: "none", stroke: color, strokeWidth: 0.3, opacity: 0.06 }),
7083
+ /* @__PURE__ */ jsx("circle", { cx, cy, r: r2 + 30, fill: "none", stroke: color, strokeWidth: 0.3, opacity: 0.06 }),
4332
7084
  /* @__PURE__ */ jsx("circle", { cx, cy, r: 50, fill: "none", stroke: color, strokeWidth: 0.5, opacity: 0.08 }),
4333
7085
  transitions.map((tr, i) => {
4334
7086
  const fromIdx = stateIndex.get(tr.from);
@@ -4438,7 +7190,7 @@ var AvlEmitListen = ({
4438
7190
  color = "var(--color-primary)",
4439
7191
  animated = false
4440
7192
  }) => {
4441
- const ids = React24.useMemo(() => {
7193
+ const ids = React26.useMemo(() => {
4442
7194
  avlElId += 1;
4443
7195
  const base = `avl-el-${avlElId}`;
4444
7196
  return { arrow: `${base}-arrow`, grad: `${base}-grad` };
@@ -4628,39 +7380,58 @@ var AvlSlotMap = ({
4628
7380
  children: "Page Layout"
4629
7381
  }
4630
7382
  ),
4631
- resolvedSlots.map((slot) => /* @__PURE__ */ jsxs("g", { children: [
4632
- /* @__PURE__ */ jsx(
4633
- "rect",
4634
- {
4635
- x: ox + slot.x,
4636
- y: oy + 24 + slot.y,
4637
- width: slot.width,
4638
- height: slot.height,
4639
- rx: 3,
4640
- ry: 3,
4641
- fill: color,
4642
- opacity: 0.08,
4643
- stroke: color,
4644
- strokeWidth: 1,
4645
- strokeDasharray: "4 2",
4646
- style: animated ? { animation: "avl-slot-pulse 2s ease-in-out infinite" } : void 0
4647
- }
4648
- ),
4649
- /* @__PURE__ */ jsx(
4650
- "text",
4651
- {
4652
- x: ox + slot.x + slot.width / 2,
4653
- y: oy + 24 + slot.y + slot.height / 2,
4654
- textAnchor: "middle",
4655
- dominantBaseline: "central",
4656
- fill: color,
4657
- fontSize: 9,
4658
- fontFamily: "inherit",
4659
- opacity: 0.6,
4660
- children: slot.name
4661
- }
4662
- )
4663
- ] }, slot.name))
7383
+ resolvedSlots.map((slot) => {
7384
+ const isOverlay = ["modal", "drawer", "toast"].includes(slot.name);
7385
+ return /* @__PURE__ */ jsxs("g", { children: [
7386
+ isOverlay && /* @__PURE__ */ jsx(
7387
+ "rect",
7388
+ {
7389
+ x: ox + slot.x + 3,
7390
+ y: oy + 24 + slot.y + 3,
7391
+ width: slot.width,
7392
+ height: slot.height,
7393
+ rx: 3,
7394
+ ry: 3,
7395
+ fill: "black",
7396
+ opacity: 0.06
7397
+ }
7398
+ ),
7399
+ /* @__PURE__ */ jsx(
7400
+ "rect",
7401
+ {
7402
+ x: ox + slot.x,
7403
+ y: oy + 24 + slot.y,
7404
+ width: slot.width,
7405
+ height: slot.height,
7406
+ rx: 3,
7407
+ ry: 3,
7408
+ fill: isOverlay ? "var(--color-surface, #fff)" : color,
7409
+ opacity: isOverlay ? 0.9 : 0.08,
7410
+ stroke: color,
7411
+ strokeWidth: isOverlay ? 1.5 : 1,
7412
+ strokeDasharray: isOverlay ? "6 3" : "4 2",
7413
+ style: animated ? { animation: "avl-slot-pulse 2s ease-in-out infinite" } : void 0
7414
+ }
7415
+ ),
7416
+ /* @__PURE__ */ jsxs(
7417
+ "text",
7418
+ {
7419
+ x: ox + slot.x + slot.width / 2,
7420
+ y: oy + 24 + slot.y + slot.height / 2,
7421
+ textAnchor: "middle",
7422
+ dominantBaseline: "central",
7423
+ fill: color,
7424
+ fontSize: 9,
7425
+ fontFamily: "inherit",
7426
+ opacity: 0.6,
7427
+ children: [
7428
+ slot.name,
7429
+ isOverlay ? " (overlay)" : ""
7430
+ ]
7431
+ }
7432
+ )
7433
+ ] }, slot.name);
7434
+ })
4664
7435
  ] });
4665
7436
  };
4666
7437
  AvlSlotMap.displayName = "AvlSlotMap";
@@ -4673,7 +7444,7 @@ function layoutTree(node, x, y, hSpacing, vSpacing) {
4673
7444
  const totalWidth = (children.length - 1) * hSpacing;
4674
7445
  const startX = x - totalWidth / 2;
4675
7446
  const layoutChildren = children.map(
4676
- (child, i) => layoutTree(child, startX + i * hSpacing, y + vSpacing, hSpacing * 0.65, vSpacing)
7447
+ (child, i) => layoutTree(child, startX + i * hSpacing, y + vSpacing, hSpacing * 0.75, vSpacing)
4677
7448
  );
4678
7449
  return { label: node.label, type: node.type, x, y, children: layoutChildren };
4679
7450
  }
@@ -4690,9 +7461,9 @@ function nodeColor(type, baseColor) {
4690
7461
  function renderNode(node, color, glowId) {
4691
7462
  const labelLen = node.label.length;
4692
7463
  const baseR = node.type === "operator" ? 20 : 16;
4693
- const r = Math.max(baseR, labelLen * 3.5 + 6);
7464
+ const r2 = Math.max(baseR, labelLen * 3.5 + 6);
4694
7465
  const nc = nodeColor(node.type, color);
4695
- return /* @__PURE__ */ jsxs(React24.Fragment, { children: [
7466
+ return /* @__PURE__ */ jsxs(React26.Fragment, { children: [
4696
7467
  node.children.map((child, i) => {
4697
7468
  const childR = Math.max(
4698
7469
  child.type === "operator" ? 20 : 16,
@@ -4702,7 +7473,7 @@ function renderNode(node, color, glowId) {
4702
7473
  "line",
4703
7474
  {
4704
7475
  x1: node.x,
4705
- y1: node.y + (node.type === "operator" ? r * 0.7 : r),
7476
+ y1: node.y + (node.type === "operator" ? r2 * 0.7 : r2),
4706
7477
  x2: child.x,
4707
7478
  y2: child.y - (child.type === "operator" ? childR * 0.7 : childR),
4708
7479
  stroke: color,
@@ -4715,10 +7486,10 @@ function renderNode(node, color, glowId) {
4715
7486
  node.type === "operator" ? /* @__PURE__ */ jsx(
4716
7487
  "rect",
4717
7488
  {
4718
- x: node.x - r,
4719
- y: node.y - r * 0.6,
4720
- width: r * 2,
4721
- height: r * 1.2,
7489
+ x: node.x - r2,
7490
+ y: node.y - r2 * 0.6,
7491
+ width: r2 * 2,
7492
+ height: r2 * 1.2,
4722
7493
  rx: 4,
4723
7494
  ry: 4,
4724
7495
  fill: color,
@@ -4726,7 +7497,7 @@ function renderNode(node, color, glowId) {
4726
7497
  stroke: nc,
4727
7498
  strokeWidth: 1.5
4728
7499
  }
4729
- ) : node.type === "binding" ? /* @__PURE__ */ jsx("circle", { cx: node.x, cy: node.y, r, fill: "none", stroke: nc, strokeWidth: 1.5, strokeDasharray: "3 2" }) : /* @__PURE__ */ jsx("circle", { cx: node.x, cy: node.y, r, fill: "none", stroke: nc, strokeWidth: 1, opacity: 0.5 }),
7500
+ ) : node.type === "binding" ? /* @__PURE__ */ jsx("circle", { cx: node.x, cy: node.y, r: r2, fill: "none", stroke: nc, strokeWidth: 1.5, strokeDasharray: "3 2" }) : /* @__PURE__ */ jsx("circle", { cx: node.x, cy: node.y, r: r2, fill: "none", stroke: nc, strokeWidth: 1, opacity: 0.5 }),
4730
7501
  /* @__PURE__ */ jsx(
4731
7502
  "text",
4732
7503
  {
@@ -4749,11 +7520,11 @@ var AvlExprTree = ({
4749
7520
  className,
4750
7521
  color = "var(--color-primary)"
4751
7522
  }) => {
4752
- const ids = React24.useMemo(() => {
7523
+ const ids = React26.useMemo(() => {
4753
7524
  avlEtId += 1;
4754
7525
  return { glow: `avl-et-${avlEtId}-glow` };
4755
7526
  }, []);
4756
- const layout = layoutTree(expression, 300, 70, 150, 85);
7527
+ const layout = layoutTree(expression, 300, 60, 200, 90);
4757
7528
  return /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 600 400", xmlns: "http://www.w3.org/2000/svg", className, children: [
4758
7529
  /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs("filter", { id: ids.glow, x: "-50%", y: "-50%", width: "200%", height: "200%", children: [
4759
7530
  /* @__PURE__ */ jsx("feGaussianBlur", { in: "SourceGraphic", stdDeviation: "2", result: "blur" }),