@page-speed/lightbox 0.1.3 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -633,8 +633,8 @@ var require_pdf = __commonJS({
633
633
  exports2.FeatureTest = FeatureTest;
634
634
  const hexNumbers = [...Array(256).keys()].map((n) => n.toString(16).padStart(2, "0"));
635
635
  class Util {
636
- static makeHexColor(r, g, b) {
637
- return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;
636
+ static makeHexColor(r2, g, b) {
637
+ return `#${hexNumbers[r2]}${hexNumbers[g]}${hexNumbers[b]}`;
638
638
  }
639
639
  static scaleMinMax(transform, minMax) {
640
640
  let temp;
@@ -694,11 +694,11 @@ var require_pdf = __commonJS({
694
694
  const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;
695
695
  return [xt, yt];
696
696
  }
697
- static getAxialAlignedBoundingBox(r, m) {
698
- const p1 = this.applyTransform(r, m);
699
- const p2 = this.applyTransform(r.slice(2, 4), m);
700
- const p3 = this.applyTransform([r[0], r[3]], m);
701
- const p4 = this.applyTransform([r[2], r[1]], m);
697
+ static getAxialAlignedBoundingBox(r2, m) {
698
+ const p1 = this.applyTransform(r2, m);
699
+ const p2 = this.applyTransform(r2.slice(2, 4), m);
700
+ const p3 = this.applyTransform([r2[0], r2[3]], m);
701
+ const p4 = this.applyTransform([r2[2], r2[1]], m);
702
702
  return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];
703
703
  }
704
704
  static inverseTransform(m) {
@@ -718,16 +718,16 @@ var require_pdf = __commonJS({
718
718
  return [Math.sqrt(sx), Math.sqrt(sy)];
719
719
  }
720
720
  static normalizeRect(rect) {
721
- const r = rect.slice(0);
721
+ const r2 = rect.slice(0);
722
722
  if (rect[0] > rect[2]) {
723
- r[0] = rect[2];
724
- r[2] = rect[0];
723
+ r2[0] = rect[2];
724
+ r2[2] = rect[0];
725
725
  }
726
726
  if (rect[1] > rect[3]) {
727
- r[1] = rect[3];
728
- r[3] = rect[1];
727
+ r2[1] = rect[3];
728
+ r2[3] = rect[1];
729
729
  }
730
- return r;
730
+ return r2;
731
731
  }
732
732
  static intersect(rect1, rect2) {
733
733
  const xLow = Math.max(Math.min(rect1[0], rect1[2]), Math.min(rect2[0], rect2[2]));
@@ -7912,13 +7912,13 @@ var require_pdf = __commonJS({
7912
7912
  this.current.fillColor = this.getColorN_Pattern(arguments);
7913
7913
  this.current.patternFill = true;
7914
7914
  }
7915
- setStrokeRGBColor(r, g, b) {
7916
- const color = _util2.Util.makeHexColor(r, g, b);
7915
+ setStrokeRGBColor(r2, g, b) {
7916
+ const color = _util2.Util.makeHexColor(r2, g, b);
7917
7917
  this.ctx.strokeStyle = color;
7918
7918
  this.current.strokeColor = color;
7919
7919
  }
7920
- setFillRGBColor(r, g, b) {
7921
- const color = _util2.Util.makeHexColor(r, g, b);
7920
+ setFillRGBColor(r2, g, b) {
7921
+ const color = _util2.Util.makeHexColor(r2, g, b);
7922
7922
  this.ctx.fillStyle = color;
7923
7923
  this.current.fillColor = color;
7924
7924
  this.current.patternFill = false;
@@ -11926,14 +11926,14 @@ var require_pdf = __commonJS({
11926
11926
  setStrokeAlpha(strokeAlpha) {
11927
11927
  this.current.strokeAlpha = strokeAlpha;
11928
11928
  }
11929
- setStrokeRGBColor(r, g, b) {
11930
- this.current.strokeColor = _util2.Util.makeHexColor(r, g, b);
11929
+ setStrokeRGBColor(r2, g, b) {
11930
+ this.current.strokeColor = _util2.Util.makeHexColor(r2, g, b);
11931
11931
  }
11932
11932
  setFillAlpha(fillAlpha) {
11933
11933
  this.current.fillAlpha = fillAlpha;
11934
11934
  }
11935
- setFillRGBColor(r, g, b) {
11936
- this.current.fillColor = _util2.Util.makeHexColor(r, g, b);
11935
+ setFillRGBColor(r2, g, b) {
11936
+ this.current.fillColor = _util2.Util.makeHexColor(r2, g, b);
11937
11937
  this.current.tspan = this.svgFactory.createElement("svg:tspan");
11938
11938
  this.current.xcoords = [];
11939
11939
  this.current.ycoords = [];
@@ -16246,8 +16246,8 @@ var require_pdf = __commonJS({
16246
16246
  const G = makeColorComp(g);
16247
16247
  return `#${G}${G}${G}`;
16248
16248
  }
16249
- static RGB_G([r, g, b]) {
16250
- return ["G", 0.3 * r + 0.59 * g + 0.11 * b];
16249
+ static RGB_G([r2, g, b]) {
16250
+ return ["G", 0.3 * r2 + 0.59 * g + 0.11 * b];
16251
16251
  }
16252
16252
  static RGB_rgb(color) {
16253
16253
  return color.map(scaleAndClamp);
@@ -16271,8 +16271,8 @@ var require_pdf = __commonJS({
16271
16271
  const rgb = this.CMYK_RGB(components).slice(1);
16272
16272
  return this.RGB_HTML(rgb);
16273
16273
  }
16274
- static RGB_CMYK([r, g, b]) {
16275
- const c = 1 - r;
16274
+ static RGB_CMYK([r2, g, b]) {
16275
+ const c = 1 - r2;
16276
16276
  const m = 1 - g;
16277
16277
  const y = 1 - b;
16278
16278
  const k = Math.min(c, m, y);
@@ -18065,7 +18065,7 @@ var require_pdf = __commonJS({
18065
18065
  }
18066
18066
  });
18067
18067
 
18068
- // node_modules/.pnpm/@page-speed+pdf-viewer@0.1.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@page-speed/pdf-viewer/dist/index.js
18068
+ // node_modules/.pnpm/@page-speed+pdf-viewer@0.1.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@page-speed/pdf-viewer/dist/index.js
18069
18069
  var dist_exports = {};
18070
18070
  __export(dist_exports, {
18071
18071
  PDFCanvas: () => PDFCanvas,
@@ -18086,7 +18086,7 @@ __export(dist_exports, {
18086
18086
  useSearch: () => useSearch,
18087
18087
  useZoom: () => useZoom
18088
18088
  });
18089
- function usePDFDocument(url, onError) {
18089
+ function usePDFDocument(url, onError, withCredentials = false) {
18090
18090
  const [document2, setDocument] = (0, import_react9.useState)(null);
18091
18091
  const [loading, setLoading] = (0, import_react9.useState)(true);
18092
18092
  const [error, setError] = (0, import_react9.useState)(null);
@@ -18106,7 +18106,7 @@ function usePDFDocument(url, onError) {
18106
18106
  }
18107
18107
  const loadingTask = pdfjsLib.getDocument({
18108
18108
  url,
18109
- withCredentials: true,
18109
+ withCredentials,
18110
18110
  rangeChunkSize: 65536
18111
18111
  // For linearized PDFs
18112
18112
  });
@@ -18138,7 +18138,7 @@ function usePDFDocument(url, onError) {
18138
18138
  }
18139
18139
  };
18140
18140
  loadPDF();
18141
- }, [url, onError]);
18141
+ }, [url, onError, withCredentials]);
18142
18142
  return { document: document2, pdfDoc, loading, error };
18143
18143
  }
18144
18144
  function usePageState({
@@ -18528,9 +18528,10 @@ function PDFViewer({
18528
18528
  enablePrint = true,
18529
18529
  enableFullscreen = true,
18530
18530
  initialPage = 1,
18531
- initialZoom = "auto"
18531
+ initialZoom = "auto",
18532
+ withCredentials = false
18532
18533
  } = config;
18533
- const { document: document2, pdfDoc, loading, error } = usePDFDocument(url, onError);
18534
+ const { document: document2, pdfDoc, loading, error } = usePDFDocument(url, onError, withCredentials);
18534
18535
  const pageState = usePageState({
18535
18536
  totalPages: document2?.numPages || 0,
18536
18537
  initialPage
@@ -18669,7 +18670,7 @@ function createProgressiveFetchHandler(onProgress) {
18669
18670
  }
18670
18671
  var import_react8, import_react9, import_react10, import_react11, import_react12, import_react13, import_react14, import_jsx_runtime5, import_jsx_runtime6, import_react15, import_jsx_runtime7, import_jsx_runtime8, DEFAULT_SCALE, CACHE_SIZE, MIN_ZOOM, MAX_ZOOM, ZOOM_STEP, PDFViewer_default, linearizedPDFConfig;
18671
18672
  var init_dist = __esm({
18672
- "node_modules/.pnpm/@page-speed+pdf-viewer@0.1.1_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@page-speed/pdf-viewer/dist/index.js"() {
18673
+ "node_modules/.pnpm/@page-speed+pdf-viewer@0.1.3_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@page-speed/pdf-viewer/dist/index.js"() {
18673
18674
  "use client";
18674
18675
  import_react8 = require("react");
18675
18676
  import_react9 = require("react");
@@ -18821,48 +18822,3041 @@ function useResponsiveness() {
18821
18822
  };
18822
18823
  }
18823
18824
 
18824
- // src/styles/Lightbox.module.css
18825
- var Lightbox_default = {
18826
- lightboxPortal: "Lightbox_lightboxPortal",
18827
- overlay: "Lightbox_overlay",
18828
- horizontalLayoutRoot: "Lightbox_horizontalLayoutRoot",
18829
- horizontalLayoutContainer: "Lightbox_horizontalLayoutContainer",
18830
- mainContent: "Lightbox_mainContent",
18831
- toolbar: "Lightbox_toolbar",
18832
- media: "Lightbox_media",
18833
- chrome: "Lightbox_chrome",
18834
- chromeSection: "Lightbox_chromeSection",
18835
- navButton: "Lightbox_navButton",
18836
- closeButton: "Lightbox_closeButton",
18837
- counter: "Lightbox_counter",
18838
- captionContainer: "Lightbox_captionContainer",
18839
- captionTitle: "Lightbox_captionTitle",
18840
- captionText: "Lightbox_captionText",
18841
- pdfContainer: "Lightbox_pdfContainer",
18842
- pdfFallback: "Lightbox_pdfFallback",
18843
- verticalSplitLayoutRoot: "Lightbox_verticalSplitLayoutRoot",
18844
- verticalSplitLayoutContainer: "Lightbox_verticalSplitLayoutContainer",
18845
- verticalSplitContent: "Lightbox_verticalSplitContent",
18846
- verticalSplitSidebar: "Lightbox_verticalSplitSidebar",
18847
- customSlideLayoutRoot: "Lightbox_customSlideLayoutRoot",
18848
- customSlideLayoutContainer: "Lightbox_customSlideLayoutContainer",
18849
- customSlideContent: "Lightbox_customSlideContent",
18850
- customSlideChrome: "Lightbox_customSlideChrome",
18851
- fullscreenLayoutRoot: "Lightbox_fullscreenLayoutRoot",
18852
- fullscreenLayoutContainer: "Lightbox_fullscreenLayoutContainer",
18853
- fullscreenContent: "Lightbox_fullscreenContent",
18854
- fullscreenChrome: "Lightbox_fullscreenChrome",
18855
- inlineLayoutRoot: "Lightbox_inlineLayoutRoot",
18856
- inlineLayoutContainer: "Lightbox_inlineLayoutContainer",
18857
- inlineContent: "Lightbox_inlineContent",
18858
- inlineToolbar: "Lightbox_inlineToolbar"
18825
+ // node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs
18826
+ function r(e) {
18827
+ var t, f, n = "";
18828
+ if ("string" == typeof e || "number" == typeof e) n += e;
18829
+ else if ("object" == typeof e) if (Array.isArray(e)) {
18830
+ var o = e.length;
18831
+ for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
18832
+ } else for (f in e) e[f] && (n && (n += " "), n += f);
18833
+ return n;
18834
+ }
18835
+ function clsx() {
18836
+ for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
18837
+ return n;
18838
+ }
18839
+
18840
+ // node_modules/.pnpm/tailwind-merge@3.4.0/node_modules/tailwind-merge/dist/bundle-mjs.mjs
18841
+ var concatArrays = (array1, array2) => {
18842
+ const combinedArray = new Array(array1.length + array2.length);
18843
+ for (let i = 0; i < array1.length; i++) {
18844
+ combinedArray[i] = array1[i];
18845
+ }
18846
+ for (let i = 0; i < array2.length; i++) {
18847
+ combinedArray[array1.length + i] = array2[i];
18848
+ }
18849
+ return combinedArray;
18850
+ };
18851
+ var createClassValidatorObject = (classGroupId, validator) => ({
18852
+ classGroupId,
18853
+ validator
18854
+ });
18855
+ var createClassPartObject = (nextPart = /* @__PURE__ */ new Map(), validators = null, classGroupId) => ({
18856
+ nextPart,
18857
+ validators,
18858
+ classGroupId
18859
+ });
18860
+ var CLASS_PART_SEPARATOR = "-";
18861
+ var EMPTY_CONFLICTS = [];
18862
+ var ARBITRARY_PROPERTY_PREFIX = "arbitrary..";
18863
+ var createClassGroupUtils = (config) => {
18864
+ const classMap = createClassMap(config);
18865
+ const {
18866
+ conflictingClassGroups,
18867
+ conflictingClassGroupModifiers
18868
+ } = config;
18869
+ const getClassGroupId = (className) => {
18870
+ if (className.startsWith("[") && className.endsWith("]")) {
18871
+ return getGroupIdForArbitraryProperty(className);
18872
+ }
18873
+ const classParts = className.split(CLASS_PART_SEPARATOR);
18874
+ const startIndex = classParts[0] === "" && classParts.length > 1 ? 1 : 0;
18875
+ return getGroupRecursive(classParts, startIndex, classMap);
18876
+ };
18877
+ const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {
18878
+ if (hasPostfixModifier) {
18879
+ const modifierConflicts = conflictingClassGroupModifiers[classGroupId];
18880
+ const baseConflicts = conflictingClassGroups[classGroupId];
18881
+ if (modifierConflicts) {
18882
+ if (baseConflicts) {
18883
+ return concatArrays(baseConflicts, modifierConflicts);
18884
+ }
18885
+ return modifierConflicts;
18886
+ }
18887
+ return baseConflicts || EMPTY_CONFLICTS;
18888
+ }
18889
+ return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;
18890
+ };
18891
+ return {
18892
+ getClassGroupId,
18893
+ getConflictingClassGroupIds
18894
+ };
18895
+ };
18896
+ var getGroupRecursive = (classParts, startIndex, classPartObject) => {
18897
+ const classPathsLength = classParts.length - startIndex;
18898
+ if (classPathsLength === 0) {
18899
+ return classPartObject.classGroupId;
18900
+ }
18901
+ const currentClassPart = classParts[startIndex];
18902
+ const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);
18903
+ if (nextClassPartObject) {
18904
+ const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);
18905
+ if (result) return result;
18906
+ }
18907
+ const validators = classPartObject.validators;
18908
+ if (validators === null) {
18909
+ return void 0;
18910
+ }
18911
+ const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);
18912
+ const validatorsLength = validators.length;
18913
+ for (let i = 0; i < validatorsLength; i++) {
18914
+ const validatorObj = validators[i];
18915
+ if (validatorObj.validator(classRest)) {
18916
+ return validatorObj.classGroupId;
18917
+ }
18918
+ }
18919
+ return void 0;
18920
+ };
18921
+ var getGroupIdForArbitraryProperty = (className) => className.slice(1, -1).indexOf(":") === -1 ? void 0 : (() => {
18922
+ const content = className.slice(1, -1);
18923
+ const colonIndex = content.indexOf(":");
18924
+ const property = content.slice(0, colonIndex);
18925
+ return property ? ARBITRARY_PROPERTY_PREFIX + property : void 0;
18926
+ })();
18927
+ var createClassMap = (config) => {
18928
+ const {
18929
+ theme,
18930
+ classGroups
18931
+ } = config;
18932
+ return processClassGroups(classGroups, theme);
18933
+ };
18934
+ var processClassGroups = (classGroups, theme) => {
18935
+ const classMap = createClassPartObject();
18936
+ for (const classGroupId in classGroups) {
18937
+ const group = classGroups[classGroupId];
18938
+ processClassesRecursively(group, classMap, classGroupId, theme);
18939
+ }
18940
+ return classMap;
18941
+ };
18942
+ var processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {
18943
+ const len = classGroup.length;
18944
+ for (let i = 0; i < len; i++) {
18945
+ const classDefinition = classGroup[i];
18946
+ processClassDefinition(classDefinition, classPartObject, classGroupId, theme);
18947
+ }
18948
+ };
18949
+ var processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {
18950
+ if (typeof classDefinition === "string") {
18951
+ processStringDefinition(classDefinition, classPartObject, classGroupId);
18952
+ return;
18953
+ }
18954
+ if (typeof classDefinition === "function") {
18955
+ processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);
18956
+ return;
18957
+ }
18958
+ processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);
18959
+ };
18960
+ var processStringDefinition = (classDefinition, classPartObject, classGroupId) => {
18961
+ const classPartObjectToEdit = classDefinition === "" ? classPartObject : getPart(classPartObject, classDefinition);
18962
+ classPartObjectToEdit.classGroupId = classGroupId;
18963
+ };
18964
+ var processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {
18965
+ if (isThemeGetter(classDefinition)) {
18966
+ processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);
18967
+ return;
18968
+ }
18969
+ if (classPartObject.validators === null) {
18970
+ classPartObject.validators = [];
18971
+ }
18972
+ classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));
18973
+ };
18974
+ var processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {
18975
+ const entries = Object.entries(classDefinition);
18976
+ const len = entries.length;
18977
+ for (let i = 0; i < len; i++) {
18978
+ const [key, value] = entries[i];
18979
+ processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);
18980
+ }
18981
+ };
18982
+ var getPart = (classPartObject, path) => {
18983
+ let current = classPartObject;
18984
+ const parts = path.split(CLASS_PART_SEPARATOR);
18985
+ const len = parts.length;
18986
+ for (let i = 0; i < len; i++) {
18987
+ const part = parts[i];
18988
+ let next = current.nextPart.get(part);
18989
+ if (!next) {
18990
+ next = createClassPartObject();
18991
+ current.nextPart.set(part, next);
18992
+ }
18993
+ current = next;
18994
+ }
18995
+ return current;
18996
+ };
18997
+ var isThemeGetter = (func) => "isThemeGetter" in func && func.isThemeGetter === true;
18998
+ var createLruCache = (maxCacheSize) => {
18999
+ if (maxCacheSize < 1) {
19000
+ return {
19001
+ get: () => void 0,
19002
+ set: () => {
19003
+ }
19004
+ };
19005
+ }
19006
+ let cacheSize = 0;
19007
+ let cache = /* @__PURE__ */ Object.create(null);
19008
+ let previousCache = /* @__PURE__ */ Object.create(null);
19009
+ const update = (key, value) => {
19010
+ cache[key] = value;
19011
+ cacheSize++;
19012
+ if (cacheSize > maxCacheSize) {
19013
+ cacheSize = 0;
19014
+ previousCache = cache;
19015
+ cache = /* @__PURE__ */ Object.create(null);
19016
+ }
19017
+ };
19018
+ return {
19019
+ get(key) {
19020
+ let value = cache[key];
19021
+ if (value !== void 0) {
19022
+ return value;
19023
+ }
19024
+ if ((value = previousCache[key]) !== void 0) {
19025
+ update(key, value);
19026
+ return value;
19027
+ }
19028
+ },
19029
+ set(key, value) {
19030
+ if (key in cache) {
19031
+ cache[key] = value;
19032
+ } else {
19033
+ update(key, value);
19034
+ }
19035
+ }
19036
+ };
19037
+ };
19038
+ var IMPORTANT_MODIFIER = "!";
19039
+ var MODIFIER_SEPARATOR = ":";
19040
+ var EMPTY_MODIFIERS = [];
19041
+ var createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({
19042
+ modifiers,
19043
+ hasImportantModifier,
19044
+ baseClassName,
19045
+ maybePostfixModifierPosition,
19046
+ isExternal
19047
+ });
19048
+ var createParseClassName = (config) => {
19049
+ const {
19050
+ prefix,
19051
+ experimentalParseClassName
19052
+ } = config;
19053
+ let parseClassName = (className) => {
19054
+ const modifiers = [];
19055
+ let bracketDepth = 0;
19056
+ let parenDepth = 0;
19057
+ let modifierStart = 0;
19058
+ let postfixModifierPosition;
19059
+ const len = className.length;
19060
+ for (let index = 0; index < len; index++) {
19061
+ const currentCharacter = className[index];
19062
+ if (bracketDepth === 0 && parenDepth === 0) {
19063
+ if (currentCharacter === MODIFIER_SEPARATOR) {
19064
+ modifiers.push(className.slice(modifierStart, index));
19065
+ modifierStart = index + 1;
19066
+ continue;
19067
+ }
19068
+ if (currentCharacter === "/") {
19069
+ postfixModifierPosition = index;
19070
+ continue;
19071
+ }
19072
+ }
19073
+ if (currentCharacter === "[") bracketDepth++;
19074
+ else if (currentCharacter === "]") bracketDepth--;
19075
+ else if (currentCharacter === "(") parenDepth++;
19076
+ else if (currentCharacter === ")") parenDepth--;
19077
+ }
19078
+ const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);
19079
+ let baseClassName = baseClassNameWithImportantModifier;
19080
+ let hasImportantModifier = false;
19081
+ if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {
19082
+ baseClassName = baseClassNameWithImportantModifier.slice(0, -1);
19083
+ hasImportantModifier = true;
19084
+ } else if (
19085
+ /**
19086
+ * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.
19087
+ * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864
19088
+ */
19089
+ baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)
19090
+ ) {
19091
+ baseClassName = baseClassNameWithImportantModifier.slice(1);
19092
+ hasImportantModifier = true;
19093
+ }
19094
+ const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : void 0;
19095
+ return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);
19096
+ };
19097
+ if (prefix) {
19098
+ const fullPrefix = prefix + MODIFIER_SEPARATOR;
19099
+ const parseClassNameOriginal = parseClassName;
19100
+ parseClassName = (className) => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, void 0, true);
19101
+ }
19102
+ if (experimentalParseClassName) {
19103
+ const parseClassNameOriginal = parseClassName;
19104
+ parseClassName = (className) => experimentalParseClassName({
19105
+ className,
19106
+ parseClassName: parseClassNameOriginal
19107
+ });
19108
+ }
19109
+ return parseClassName;
19110
+ };
19111
+ var createSortModifiers = (config) => {
19112
+ const modifierWeights = /* @__PURE__ */ new Map();
19113
+ config.orderSensitiveModifiers.forEach((mod, index) => {
19114
+ modifierWeights.set(mod, 1e6 + index);
19115
+ });
19116
+ return (modifiers) => {
19117
+ const result = [];
19118
+ let currentSegment = [];
19119
+ for (let i = 0; i < modifiers.length; i++) {
19120
+ const modifier = modifiers[i];
19121
+ const isArbitrary = modifier[0] === "[";
19122
+ const isOrderSensitive = modifierWeights.has(modifier);
19123
+ if (isArbitrary || isOrderSensitive) {
19124
+ if (currentSegment.length > 0) {
19125
+ currentSegment.sort();
19126
+ result.push(...currentSegment);
19127
+ currentSegment = [];
19128
+ }
19129
+ result.push(modifier);
19130
+ } else {
19131
+ currentSegment.push(modifier);
19132
+ }
19133
+ }
19134
+ if (currentSegment.length > 0) {
19135
+ currentSegment.sort();
19136
+ result.push(...currentSegment);
19137
+ }
19138
+ return result;
19139
+ };
19140
+ };
19141
+ var createConfigUtils = (config) => ({
19142
+ cache: createLruCache(config.cacheSize),
19143
+ parseClassName: createParseClassName(config),
19144
+ sortModifiers: createSortModifiers(config),
19145
+ ...createClassGroupUtils(config)
19146
+ });
19147
+ var SPLIT_CLASSES_REGEX = /\s+/;
19148
+ var mergeClassList = (classList, configUtils) => {
19149
+ const {
19150
+ parseClassName,
19151
+ getClassGroupId,
19152
+ getConflictingClassGroupIds,
19153
+ sortModifiers
19154
+ } = configUtils;
19155
+ const classGroupsInConflict = [];
19156
+ const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);
19157
+ let result = "";
19158
+ for (let index = classNames.length - 1; index >= 0; index -= 1) {
19159
+ const originalClassName = classNames[index];
19160
+ const {
19161
+ isExternal,
19162
+ modifiers,
19163
+ hasImportantModifier,
19164
+ baseClassName,
19165
+ maybePostfixModifierPosition
19166
+ } = parseClassName(originalClassName);
19167
+ if (isExternal) {
19168
+ result = originalClassName + (result.length > 0 ? " " + result : result);
19169
+ continue;
19170
+ }
19171
+ let hasPostfixModifier = !!maybePostfixModifierPosition;
19172
+ let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);
19173
+ if (!classGroupId) {
19174
+ if (!hasPostfixModifier) {
19175
+ result = originalClassName + (result.length > 0 ? " " + result : result);
19176
+ continue;
19177
+ }
19178
+ classGroupId = getClassGroupId(baseClassName);
19179
+ if (!classGroupId) {
19180
+ result = originalClassName + (result.length > 0 ? " " + result : result);
19181
+ continue;
19182
+ }
19183
+ hasPostfixModifier = false;
19184
+ }
19185
+ const variantModifier = modifiers.length === 0 ? "" : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(":");
19186
+ const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;
19187
+ const classId = modifierId + classGroupId;
19188
+ if (classGroupsInConflict.indexOf(classId) > -1) {
19189
+ continue;
19190
+ }
19191
+ classGroupsInConflict.push(classId);
19192
+ const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);
19193
+ for (let i = 0; i < conflictGroups.length; ++i) {
19194
+ const group = conflictGroups[i];
19195
+ classGroupsInConflict.push(modifierId + group);
19196
+ }
19197
+ result = originalClassName + (result.length > 0 ? " " + result : result);
19198
+ }
19199
+ return result;
19200
+ };
19201
+ var twJoin = (...classLists) => {
19202
+ let index = 0;
19203
+ let argument;
19204
+ let resolvedValue;
19205
+ let string = "";
19206
+ while (index < classLists.length) {
19207
+ if (argument = classLists[index++]) {
19208
+ if (resolvedValue = toValue(argument)) {
19209
+ string && (string += " ");
19210
+ string += resolvedValue;
19211
+ }
19212
+ }
19213
+ }
19214
+ return string;
19215
+ };
19216
+ var toValue = (mix) => {
19217
+ if (typeof mix === "string") {
19218
+ return mix;
19219
+ }
19220
+ let resolvedValue;
19221
+ let string = "";
19222
+ for (let k = 0; k < mix.length; k++) {
19223
+ if (mix[k]) {
19224
+ if (resolvedValue = toValue(mix[k])) {
19225
+ string && (string += " ");
19226
+ string += resolvedValue;
19227
+ }
19228
+ }
19229
+ }
19230
+ return string;
19231
+ };
19232
+ var createTailwindMerge = (createConfigFirst, ...createConfigRest) => {
19233
+ let configUtils;
19234
+ let cacheGet2;
19235
+ let cacheSet2;
19236
+ let functionToCall;
19237
+ const initTailwindMerge = (classList) => {
19238
+ const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());
19239
+ configUtils = createConfigUtils(config);
19240
+ cacheGet2 = configUtils.cache.get;
19241
+ cacheSet2 = configUtils.cache.set;
19242
+ functionToCall = tailwindMerge;
19243
+ return tailwindMerge(classList);
19244
+ };
19245
+ const tailwindMerge = (classList) => {
19246
+ const cachedResult = cacheGet2(classList);
19247
+ if (cachedResult) {
19248
+ return cachedResult;
19249
+ }
19250
+ const result = mergeClassList(classList, configUtils);
19251
+ cacheSet2(classList, result);
19252
+ return result;
19253
+ };
19254
+ functionToCall = initTailwindMerge;
19255
+ return (...args) => functionToCall(twJoin(...args));
19256
+ };
19257
+ var fallbackThemeArr = [];
19258
+ var fromTheme = (key) => {
19259
+ const themeGetter = (theme) => theme[key] || fallbackThemeArr;
19260
+ themeGetter.isThemeGetter = true;
19261
+ return themeGetter;
19262
+ };
19263
+ var arbitraryValueRegex = /^\[(?:(\w[\w-]*):)?(.+)\]$/i;
19264
+ var arbitraryVariableRegex = /^\((?:(\w[\w-]*):)?(.+)\)$/i;
19265
+ var fractionRegex = /^\d+\/\d+$/;
19266
+ var tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/;
19267
+ 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$/;
19268
+ var colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/;
19269
+ var shadowRegex = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/;
19270
+ var imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;
19271
+ var isFraction = (value) => fractionRegex.test(value);
19272
+ var isNumber = (value) => !!value && !Number.isNaN(Number(value));
19273
+ var isInteger = (value) => !!value && Number.isInteger(Number(value));
19274
+ var isPercent = (value) => value.endsWith("%") && isNumber(value.slice(0, -1));
19275
+ var isTshirtSize = (value) => tshirtUnitRegex.test(value);
19276
+ var isAny = () => true;
19277
+ var isLengthOnly = (value) => (
19278
+ // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.
19279
+ // For example, `hsl(0 0% 0%)` would be classified as a length without this check.
19280
+ // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.
19281
+ lengthUnitRegex.test(value) && !colorFunctionRegex.test(value)
19282
+ );
19283
+ var isNever = () => false;
19284
+ var isShadow = (value) => shadowRegex.test(value);
19285
+ var isImage = (value) => imageRegex.test(value);
19286
+ var isAnyNonArbitrary = (value) => !isArbitraryValue(value) && !isArbitraryVariable(value);
19287
+ var isArbitrarySize = (value) => getIsArbitraryValue(value, isLabelSize, isNever);
19288
+ var isArbitraryValue = (value) => arbitraryValueRegex.test(value);
19289
+ var isArbitraryLength = (value) => getIsArbitraryValue(value, isLabelLength, isLengthOnly);
19290
+ var isArbitraryNumber = (value) => getIsArbitraryValue(value, isLabelNumber, isNumber);
19291
+ var isArbitraryPosition = (value) => getIsArbitraryValue(value, isLabelPosition, isNever);
19292
+ var isArbitraryImage = (value) => getIsArbitraryValue(value, isLabelImage, isImage);
19293
+ var isArbitraryShadow = (value) => getIsArbitraryValue(value, isLabelShadow, isShadow);
19294
+ var isArbitraryVariable = (value) => arbitraryVariableRegex.test(value);
19295
+ var isArbitraryVariableLength = (value) => getIsArbitraryVariable(value, isLabelLength);
19296
+ var isArbitraryVariableFamilyName = (value) => getIsArbitraryVariable(value, isLabelFamilyName);
19297
+ var isArbitraryVariablePosition = (value) => getIsArbitraryVariable(value, isLabelPosition);
19298
+ var isArbitraryVariableSize = (value) => getIsArbitraryVariable(value, isLabelSize);
19299
+ var isArbitraryVariableImage = (value) => getIsArbitraryVariable(value, isLabelImage);
19300
+ var isArbitraryVariableShadow = (value) => getIsArbitraryVariable(value, isLabelShadow, true);
19301
+ var getIsArbitraryValue = (value, testLabel, testValue) => {
19302
+ const result = arbitraryValueRegex.exec(value);
19303
+ if (result) {
19304
+ if (result[1]) {
19305
+ return testLabel(result[1]);
19306
+ }
19307
+ return testValue(result[2]);
19308
+ }
19309
+ return false;
19310
+ };
19311
+ var getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {
19312
+ const result = arbitraryVariableRegex.exec(value);
19313
+ if (result) {
19314
+ if (result[1]) {
19315
+ return testLabel(result[1]);
19316
+ }
19317
+ return shouldMatchNoLabel;
19318
+ }
19319
+ return false;
18859
19320
  };
19321
+ var isLabelPosition = (label) => label === "position" || label === "percentage";
19322
+ var isLabelImage = (label) => label === "image" || label === "url";
19323
+ var isLabelSize = (label) => label === "length" || label === "size" || label === "bg-size";
19324
+ var isLabelLength = (label) => label === "length";
19325
+ var isLabelNumber = (label) => label === "number";
19326
+ var isLabelFamilyName = (label) => label === "family-name";
19327
+ var isLabelShadow = (label) => label === "shadow";
19328
+ var getDefaultConfig = () => {
19329
+ const themeColor = fromTheme("color");
19330
+ const themeFont = fromTheme("font");
19331
+ const themeText = fromTheme("text");
19332
+ const themeFontWeight = fromTheme("font-weight");
19333
+ const themeTracking = fromTheme("tracking");
19334
+ const themeLeading = fromTheme("leading");
19335
+ const themeBreakpoint = fromTheme("breakpoint");
19336
+ const themeContainer = fromTheme("container");
19337
+ const themeSpacing = fromTheme("spacing");
19338
+ const themeRadius = fromTheme("radius");
19339
+ const themeShadow = fromTheme("shadow");
19340
+ const themeInsetShadow = fromTheme("inset-shadow");
19341
+ const themeTextShadow = fromTheme("text-shadow");
19342
+ const themeDropShadow = fromTheme("drop-shadow");
19343
+ const themeBlur = fromTheme("blur");
19344
+ const themePerspective = fromTheme("perspective");
19345
+ const themeAspect = fromTheme("aspect");
19346
+ const themeEase = fromTheme("ease");
19347
+ const themeAnimate = fromTheme("animate");
19348
+ const scaleBreak = () => ["auto", "avoid", "all", "avoid-page", "page", "left", "right", "column"];
19349
+ const scalePosition = () => [
19350
+ "center",
19351
+ "top",
19352
+ "bottom",
19353
+ "left",
19354
+ "right",
19355
+ "top-left",
19356
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
19357
+ "left-top",
19358
+ "top-right",
19359
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
19360
+ "right-top",
19361
+ "bottom-right",
19362
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
19363
+ "right-bottom",
19364
+ "bottom-left",
19365
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
19366
+ "left-bottom"
19367
+ ];
19368
+ const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];
19369
+ const scaleOverflow = () => ["auto", "hidden", "clip", "visible", "scroll"];
19370
+ const scaleOverscroll = () => ["auto", "contain", "none"];
19371
+ const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];
19372
+ const scaleInset = () => [isFraction, "full", "auto", ...scaleUnambiguousSpacing()];
19373
+ const scaleGridTemplateColsRows = () => [isInteger, "none", "subgrid", isArbitraryVariable, isArbitraryValue];
19374
+ const scaleGridColRowStartAndEnd = () => ["auto", {
19375
+ span: ["full", isInteger, isArbitraryVariable, isArbitraryValue]
19376
+ }, isInteger, isArbitraryVariable, isArbitraryValue];
19377
+ const scaleGridColRowStartOrEnd = () => [isInteger, "auto", isArbitraryVariable, isArbitraryValue];
19378
+ const scaleGridAutoColsRows = () => ["auto", "min", "max", "fr", isArbitraryVariable, isArbitraryValue];
19379
+ const scaleAlignPrimaryAxis = () => ["start", "end", "center", "between", "around", "evenly", "stretch", "baseline", "center-safe", "end-safe"];
19380
+ const scaleAlignSecondaryAxis = () => ["start", "end", "center", "stretch", "center-safe", "end-safe"];
19381
+ const scaleMargin = () => ["auto", ...scaleUnambiguousSpacing()];
19382
+ const scaleSizing = () => [isFraction, "auto", "full", "dvw", "dvh", "lvw", "lvh", "svw", "svh", "min", "max", "fit", ...scaleUnambiguousSpacing()];
19383
+ const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];
19384
+ const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {
19385
+ position: [isArbitraryVariable, isArbitraryValue]
19386
+ }];
19387
+ const scaleBgRepeat = () => ["no-repeat", {
19388
+ repeat: ["", "x", "y", "space", "round"]
19389
+ }];
19390
+ const scaleBgSize = () => ["auto", "cover", "contain", isArbitraryVariableSize, isArbitrarySize, {
19391
+ size: [isArbitraryVariable, isArbitraryValue]
19392
+ }];
19393
+ const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];
19394
+ const scaleRadius = () => [
19395
+ // Deprecated since Tailwind CSS v4.0.0
19396
+ "",
19397
+ "none",
19398
+ "full",
19399
+ themeRadius,
19400
+ isArbitraryVariable,
19401
+ isArbitraryValue
19402
+ ];
19403
+ const scaleBorderWidth = () => ["", isNumber, isArbitraryVariableLength, isArbitraryLength];
19404
+ const scaleLineStyle = () => ["solid", "dashed", "dotted", "double"];
19405
+ const scaleBlendMode = () => ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"];
19406
+ const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];
19407
+ const scaleBlur = () => [
19408
+ // Deprecated since Tailwind CSS v4.0.0
19409
+ "",
19410
+ "none",
19411
+ themeBlur,
19412
+ isArbitraryVariable,
19413
+ isArbitraryValue
19414
+ ];
19415
+ const scaleRotate = () => ["none", isNumber, isArbitraryVariable, isArbitraryValue];
19416
+ const scaleScale = () => ["none", isNumber, isArbitraryVariable, isArbitraryValue];
19417
+ const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];
19418
+ const scaleTranslate = () => [isFraction, "full", ...scaleUnambiguousSpacing()];
19419
+ return {
19420
+ cacheSize: 500,
19421
+ theme: {
19422
+ animate: ["spin", "ping", "pulse", "bounce"],
19423
+ aspect: ["video"],
19424
+ blur: [isTshirtSize],
19425
+ breakpoint: [isTshirtSize],
19426
+ color: [isAny],
19427
+ container: [isTshirtSize],
19428
+ "drop-shadow": [isTshirtSize],
19429
+ ease: ["in", "out", "in-out"],
19430
+ font: [isAnyNonArbitrary],
19431
+ "font-weight": ["thin", "extralight", "light", "normal", "medium", "semibold", "bold", "extrabold", "black"],
19432
+ "inset-shadow": [isTshirtSize],
19433
+ leading: ["none", "tight", "snug", "normal", "relaxed", "loose"],
19434
+ perspective: ["dramatic", "near", "normal", "midrange", "distant", "none"],
19435
+ radius: [isTshirtSize],
19436
+ shadow: [isTshirtSize],
19437
+ spacing: ["px", isNumber],
19438
+ text: [isTshirtSize],
19439
+ "text-shadow": [isTshirtSize],
19440
+ tracking: ["tighter", "tight", "normal", "wide", "wider", "widest"]
19441
+ },
19442
+ classGroups: {
19443
+ // --------------
19444
+ // --- Layout ---
19445
+ // --------------
19446
+ /**
19447
+ * Aspect Ratio
19448
+ * @see https://tailwindcss.com/docs/aspect-ratio
19449
+ */
19450
+ aspect: [{
19451
+ aspect: ["auto", "square", isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]
19452
+ }],
19453
+ /**
19454
+ * Container
19455
+ * @see https://tailwindcss.com/docs/container
19456
+ * @deprecated since Tailwind CSS v4.0.0
19457
+ */
19458
+ container: ["container"],
19459
+ /**
19460
+ * Columns
19461
+ * @see https://tailwindcss.com/docs/columns
19462
+ */
19463
+ columns: [{
19464
+ columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]
19465
+ }],
19466
+ /**
19467
+ * Break After
19468
+ * @see https://tailwindcss.com/docs/break-after
19469
+ */
19470
+ "break-after": [{
19471
+ "break-after": scaleBreak()
19472
+ }],
19473
+ /**
19474
+ * Break Before
19475
+ * @see https://tailwindcss.com/docs/break-before
19476
+ */
19477
+ "break-before": [{
19478
+ "break-before": scaleBreak()
19479
+ }],
19480
+ /**
19481
+ * Break Inside
19482
+ * @see https://tailwindcss.com/docs/break-inside
19483
+ */
19484
+ "break-inside": [{
19485
+ "break-inside": ["auto", "avoid", "avoid-page", "avoid-column"]
19486
+ }],
19487
+ /**
19488
+ * Box Decoration Break
19489
+ * @see https://tailwindcss.com/docs/box-decoration-break
19490
+ */
19491
+ "box-decoration": [{
19492
+ "box-decoration": ["slice", "clone"]
19493
+ }],
19494
+ /**
19495
+ * Box Sizing
19496
+ * @see https://tailwindcss.com/docs/box-sizing
19497
+ */
19498
+ box: [{
19499
+ box: ["border", "content"]
19500
+ }],
19501
+ /**
19502
+ * Display
19503
+ * @see https://tailwindcss.com/docs/display
19504
+ */
19505
+ 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"],
19506
+ /**
19507
+ * Screen Reader Only
19508
+ * @see https://tailwindcss.com/docs/display#screen-reader-only
19509
+ */
19510
+ sr: ["sr-only", "not-sr-only"],
19511
+ /**
19512
+ * Floats
19513
+ * @see https://tailwindcss.com/docs/float
19514
+ */
19515
+ float: [{
19516
+ float: ["right", "left", "none", "start", "end"]
19517
+ }],
19518
+ /**
19519
+ * Clear
19520
+ * @see https://tailwindcss.com/docs/clear
19521
+ */
19522
+ clear: [{
19523
+ clear: ["left", "right", "both", "none", "start", "end"]
19524
+ }],
19525
+ /**
19526
+ * Isolation
19527
+ * @see https://tailwindcss.com/docs/isolation
19528
+ */
19529
+ isolation: ["isolate", "isolation-auto"],
19530
+ /**
19531
+ * Object Fit
19532
+ * @see https://tailwindcss.com/docs/object-fit
19533
+ */
19534
+ "object-fit": [{
19535
+ object: ["contain", "cover", "fill", "none", "scale-down"]
19536
+ }],
19537
+ /**
19538
+ * Object Position
19539
+ * @see https://tailwindcss.com/docs/object-position
19540
+ */
19541
+ "object-position": [{
19542
+ object: scalePositionWithArbitrary()
19543
+ }],
19544
+ /**
19545
+ * Overflow
19546
+ * @see https://tailwindcss.com/docs/overflow
19547
+ */
19548
+ overflow: [{
19549
+ overflow: scaleOverflow()
19550
+ }],
19551
+ /**
19552
+ * Overflow X
19553
+ * @see https://tailwindcss.com/docs/overflow
19554
+ */
19555
+ "overflow-x": [{
19556
+ "overflow-x": scaleOverflow()
19557
+ }],
19558
+ /**
19559
+ * Overflow Y
19560
+ * @see https://tailwindcss.com/docs/overflow
19561
+ */
19562
+ "overflow-y": [{
19563
+ "overflow-y": scaleOverflow()
19564
+ }],
19565
+ /**
19566
+ * Overscroll Behavior
19567
+ * @see https://tailwindcss.com/docs/overscroll-behavior
19568
+ */
19569
+ overscroll: [{
19570
+ overscroll: scaleOverscroll()
19571
+ }],
19572
+ /**
19573
+ * Overscroll Behavior X
19574
+ * @see https://tailwindcss.com/docs/overscroll-behavior
19575
+ */
19576
+ "overscroll-x": [{
19577
+ "overscroll-x": scaleOverscroll()
19578
+ }],
19579
+ /**
19580
+ * Overscroll Behavior Y
19581
+ * @see https://tailwindcss.com/docs/overscroll-behavior
19582
+ */
19583
+ "overscroll-y": [{
19584
+ "overscroll-y": scaleOverscroll()
19585
+ }],
19586
+ /**
19587
+ * Position
19588
+ * @see https://tailwindcss.com/docs/position
19589
+ */
19590
+ position: ["static", "fixed", "absolute", "relative", "sticky"],
19591
+ /**
19592
+ * Top / Right / Bottom / Left
19593
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
19594
+ */
19595
+ inset: [{
19596
+ inset: scaleInset()
19597
+ }],
19598
+ /**
19599
+ * Right / Left
19600
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
19601
+ */
19602
+ "inset-x": [{
19603
+ "inset-x": scaleInset()
19604
+ }],
19605
+ /**
19606
+ * Top / Bottom
19607
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
19608
+ */
19609
+ "inset-y": [{
19610
+ "inset-y": scaleInset()
19611
+ }],
19612
+ /**
19613
+ * Start
19614
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
19615
+ */
19616
+ start: [{
19617
+ start: scaleInset()
19618
+ }],
19619
+ /**
19620
+ * End
19621
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
19622
+ */
19623
+ end: [{
19624
+ end: scaleInset()
19625
+ }],
19626
+ /**
19627
+ * Top
19628
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
19629
+ */
19630
+ top: [{
19631
+ top: scaleInset()
19632
+ }],
19633
+ /**
19634
+ * Right
19635
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
19636
+ */
19637
+ right: [{
19638
+ right: scaleInset()
19639
+ }],
19640
+ /**
19641
+ * Bottom
19642
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
19643
+ */
19644
+ bottom: [{
19645
+ bottom: scaleInset()
19646
+ }],
19647
+ /**
19648
+ * Left
19649
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
19650
+ */
19651
+ left: [{
19652
+ left: scaleInset()
19653
+ }],
19654
+ /**
19655
+ * Visibility
19656
+ * @see https://tailwindcss.com/docs/visibility
19657
+ */
19658
+ visibility: ["visible", "invisible", "collapse"],
19659
+ /**
19660
+ * Z-Index
19661
+ * @see https://tailwindcss.com/docs/z-index
19662
+ */
19663
+ z: [{
19664
+ z: [isInteger, "auto", isArbitraryVariable, isArbitraryValue]
19665
+ }],
19666
+ // ------------------------
19667
+ // --- Flexbox and Grid ---
19668
+ // ------------------------
19669
+ /**
19670
+ * Flex Basis
19671
+ * @see https://tailwindcss.com/docs/flex-basis
19672
+ */
19673
+ basis: [{
19674
+ basis: [isFraction, "full", "auto", themeContainer, ...scaleUnambiguousSpacing()]
19675
+ }],
19676
+ /**
19677
+ * Flex Direction
19678
+ * @see https://tailwindcss.com/docs/flex-direction
19679
+ */
19680
+ "flex-direction": [{
19681
+ flex: ["row", "row-reverse", "col", "col-reverse"]
19682
+ }],
19683
+ /**
19684
+ * Flex Wrap
19685
+ * @see https://tailwindcss.com/docs/flex-wrap
19686
+ */
19687
+ "flex-wrap": [{
19688
+ flex: ["nowrap", "wrap", "wrap-reverse"]
19689
+ }],
19690
+ /**
19691
+ * Flex
19692
+ * @see https://tailwindcss.com/docs/flex
19693
+ */
19694
+ flex: [{
19695
+ flex: [isNumber, isFraction, "auto", "initial", "none", isArbitraryValue]
19696
+ }],
19697
+ /**
19698
+ * Flex Grow
19699
+ * @see https://tailwindcss.com/docs/flex-grow
19700
+ */
19701
+ grow: [{
19702
+ grow: ["", isNumber, isArbitraryVariable, isArbitraryValue]
19703
+ }],
19704
+ /**
19705
+ * Flex Shrink
19706
+ * @see https://tailwindcss.com/docs/flex-shrink
19707
+ */
19708
+ shrink: [{
19709
+ shrink: ["", isNumber, isArbitraryVariable, isArbitraryValue]
19710
+ }],
19711
+ /**
19712
+ * Order
19713
+ * @see https://tailwindcss.com/docs/order
19714
+ */
19715
+ order: [{
19716
+ order: [isInteger, "first", "last", "none", isArbitraryVariable, isArbitraryValue]
19717
+ }],
19718
+ /**
19719
+ * Grid Template Columns
19720
+ * @see https://tailwindcss.com/docs/grid-template-columns
19721
+ */
19722
+ "grid-cols": [{
19723
+ "grid-cols": scaleGridTemplateColsRows()
19724
+ }],
19725
+ /**
19726
+ * Grid Column Start / End
19727
+ * @see https://tailwindcss.com/docs/grid-column
19728
+ */
19729
+ "col-start-end": [{
19730
+ col: scaleGridColRowStartAndEnd()
19731
+ }],
19732
+ /**
19733
+ * Grid Column Start
19734
+ * @see https://tailwindcss.com/docs/grid-column
19735
+ */
19736
+ "col-start": [{
19737
+ "col-start": scaleGridColRowStartOrEnd()
19738
+ }],
19739
+ /**
19740
+ * Grid Column End
19741
+ * @see https://tailwindcss.com/docs/grid-column
19742
+ */
19743
+ "col-end": [{
19744
+ "col-end": scaleGridColRowStartOrEnd()
19745
+ }],
19746
+ /**
19747
+ * Grid Template Rows
19748
+ * @see https://tailwindcss.com/docs/grid-template-rows
19749
+ */
19750
+ "grid-rows": [{
19751
+ "grid-rows": scaleGridTemplateColsRows()
19752
+ }],
19753
+ /**
19754
+ * Grid Row Start / End
19755
+ * @see https://tailwindcss.com/docs/grid-row
19756
+ */
19757
+ "row-start-end": [{
19758
+ row: scaleGridColRowStartAndEnd()
19759
+ }],
19760
+ /**
19761
+ * Grid Row Start
19762
+ * @see https://tailwindcss.com/docs/grid-row
19763
+ */
19764
+ "row-start": [{
19765
+ "row-start": scaleGridColRowStartOrEnd()
19766
+ }],
19767
+ /**
19768
+ * Grid Row End
19769
+ * @see https://tailwindcss.com/docs/grid-row
19770
+ */
19771
+ "row-end": [{
19772
+ "row-end": scaleGridColRowStartOrEnd()
19773
+ }],
19774
+ /**
19775
+ * Grid Auto Flow
19776
+ * @see https://tailwindcss.com/docs/grid-auto-flow
19777
+ */
19778
+ "grid-flow": [{
19779
+ "grid-flow": ["row", "col", "dense", "row-dense", "col-dense"]
19780
+ }],
19781
+ /**
19782
+ * Grid Auto Columns
19783
+ * @see https://tailwindcss.com/docs/grid-auto-columns
19784
+ */
19785
+ "auto-cols": [{
19786
+ "auto-cols": scaleGridAutoColsRows()
19787
+ }],
19788
+ /**
19789
+ * Grid Auto Rows
19790
+ * @see https://tailwindcss.com/docs/grid-auto-rows
19791
+ */
19792
+ "auto-rows": [{
19793
+ "auto-rows": scaleGridAutoColsRows()
19794
+ }],
19795
+ /**
19796
+ * Gap
19797
+ * @see https://tailwindcss.com/docs/gap
19798
+ */
19799
+ gap: [{
19800
+ gap: scaleUnambiguousSpacing()
19801
+ }],
19802
+ /**
19803
+ * Gap X
19804
+ * @see https://tailwindcss.com/docs/gap
19805
+ */
19806
+ "gap-x": [{
19807
+ "gap-x": scaleUnambiguousSpacing()
19808
+ }],
19809
+ /**
19810
+ * Gap Y
19811
+ * @see https://tailwindcss.com/docs/gap
19812
+ */
19813
+ "gap-y": [{
19814
+ "gap-y": scaleUnambiguousSpacing()
19815
+ }],
19816
+ /**
19817
+ * Justify Content
19818
+ * @see https://tailwindcss.com/docs/justify-content
19819
+ */
19820
+ "justify-content": [{
19821
+ justify: [...scaleAlignPrimaryAxis(), "normal"]
19822
+ }],
19823
+ /**
19824
+ * Justify Items
19825
+ * @see https://tailwindcss.com/docs/justify-items
19826
+ */
19827
+ "justify-items": [{
19828
+ "justify-items": [...scaleAlignSecondaryAxis(), "normal"]
19829
+ }],
19830
+ /**
19831
+ * Justify Self
19832
+ * @see https://tailwindcss.com/docs/justify-self
19833
+ */
19834
+ "justify-self": [{
19835
+ "justify-self": ["auto", ...scaleAlignSecondaryAxis()]
19836
+ }],
19837
+ /**
19838
+ * Align Content
19839
+ * @see https://tailwindcss.com/docs/align-content
19840
+ */
19841
+ "align-content": [{
19842
+ content: ["normal", ...scaleAlignPrimaryAxis()]
19843
+ }],
19844
+ /**
19845
+ * Align Items
19846
+ * @see https://tailwindcss.com/docs/align-items
19847
+ */
19848
+ "align-items": [{
19849
+ items: [...scaleAlignSecondaryAxis(), {
19850
+ baseline: ["", "last"]
19851
+ }]
19852
+ }],
19853
+ /**
19854
+ * Align Self
19855
+ * @see https://tailwindcss.com/docs/align-self
19856
+ */
19857
+ "align-self": [{
19858
+ self: ["auto", ...scaleAlignSecondaryAxis(), {
19859
+ baseline: ["", "last"]
19860
+ }]
19861
+ }],
19862
+ /**
19863
+ * Place Content
19864
+ * @see https://tailwindcss.com/docs/place-content
19865
+ */
19866
+ "place-content": [{
19867
+ "place-content": scaleAlignPrimaryAxis()
19868
+ }],
19869
+ /**
19870
+ * Place Items
19871
+ * @see https://tailwindcss.com/docs/place-items
19872
+ */
19873
+ "place-items": [{
19874
+ "place-items": [...scaleAlignSecondaryAxis(), "baseline"]
19875
+ }],
19876
+ /**
19877
+ * Place Self
19878
+ * @see https://tailwindcss.com/docs/place-self
19879
+ */
19880
+ "place-self": [{
19881
+ "place-self": ["auto", ...scaleAlignSecondaryAxis()]
19882
+ }],
19883
+ // Spacing
19884
+ /**
19885
+ * Padding
19886
+ * @see https://tailwindcss.com/docs/padding
19887
+ */
19888
+ p: [{
19889
+ p: scaleUnambiguousSpacing()
19890
+ }],
19891
+ /**
19892
+ * Padding X
19893
+ * @see https://tailwindcss.com/docs/padding
19894
+ */
19895
+ px: [{
19896
+ px: scaleUnambiguousSpacing()
19897
+ }],
19898
+ /**
19899
+ * Padding Y
19900
+ * @see https://tailwindcss.com/docs/padding
19901
+ */
19902
+ py: [{
19903
+ py: scaleUnambiguousSpacing()
19904
+ }],
19905
+ /**
19906
+ * Padding Start
19907
+ * @see https://tailwindcss.com/docs/padding
19908
+ */
19909
+ ps: [{
19910
+ ps: scaleUnambiguousSpacing()
19911
+ }],
19912
+ /**
19913
+ * Padding End
19914
+ * @see https://tailwindcss.com/docs/padding
19915
+ */
19916
+ pe: [{
19917
+ pe: scaleUnambiguousSpacing()
19918
+ }],
19919
+ /**
19920
+ * Padding Top
19921
+ * @see https://tailwindcss.com/docs/padding
19922
+ */
19923
+ pt: [{
19924
+ pt: scaleUnambiguousSpacing()
19925
+ }],
19926
+ /**
19927
+ * Padding Right
19928
+ * @see https://tailwindcss.com/docs/padding
19929
+ */
19930
+ pr: [{
19931
+ pr: scaleUnambiguousSpacing()
19932
+ }],
19933
+ /**
19934
+ * Padding Bottom
19935
+ * @see https://tailwindcss.com/docs/padding
19936
+ */
19937
+ pb: [{
19938
+ pb: scaleUnambiguousSpacing()
19939
+ }],
19940
+ /**
19941
+ * Padding Left
19942
+ * @see https://tailwindcss.com/docs/padding
19943
+ */
19944
+ pl: [{
19945
+ pl: scaleUnambiguousSpacing()
19946
+ }],
19947
+ /**
19948
+ * Margin
19949
+ * @see https://tailwindcss.com/docs/margin
19950
+ */
19951
+ m: [{
19952
+ m: scaleMargin()
19953
+ }],
19954
+ /**
19955
+ * Margin X
19956
+ * @see https://tailwindcss.com/docs/margin
19957
+ */
19958
+ mx: [{
19959
+ mx: scaleMargin()
19960
+ }],
19961
+ /**
19962
+ * Margin Y
19963
+ * @see https://tailwindcss.com/docs/margin
19964
+ */
19965
+ my: [{
19966
+ my: scaleMargin()
19967
+ }],
19968
+ /**
19969
+ * Margin Start
19970
+ * @see https://tailwindcss.com/docs/margin
19971
+ */
19972
+ ms: [{
19973
+ ms: scaleMargin()
19974
+ }],
19975
+ /**
19976
+ * Margin End
19977
+ * @see https://tailwindcss.com/docs/margin
19978
+ */
19979
+ me: [{
19980
+ me: scaleMargin()
19981
+ }],
19982
+ /**
19983
+ * Margin Top
19984
+ * @see https://tailwindcss.com/docs/margin
19985
+ */
19986
+ mt: [{
19987
+ mt: scaleMargin()
19988
+ }],
19989
+ /**
19990
+ * Margin Right
19991
+ * @see https://tailwindcss.com/docs/margin
19992
+ */
19993
+ mr: [{
19994
+ mr: scaleMargin()
19995
+ }],
19996
+ /**
19997
+ * Margin Bottom
19998
+ * @see https://tailwindcss.com/docs/margin
19999
+ */
20000
+ mb: [{
20001
+ mb: scaleMargin()
20002
+ }],
20003
+ /**
20004
+ * Margin Left
20005
+ * @see https://tailwindcss.com/docs/margin
20006
+ */
20007
+ ml: [{
20008
+ ml: scaleMargin()
20009
+ }],
20010
+ /**
20011
+ * Space Between X
20012
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
20013
+ */
20014
+ "space-x": [{
20015
+ "space-x": scaleUnambiguousSpacing()
20016
+ }],
20017
+ /**
20018
+ * Space Between X Reverse
20019
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
20020
+ */
20021
+ "space-x-reverse": ["space-x-reverse"],
20022
+ /**
20023
+ * Space Between Y
20024
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
20025
+ */
20026
+ "space-y": [{
20027
+ "space-y": scaleUnambiguousSpacing()
20028
+ }],
20029
+ /**
20030
+ * Space Between Y Reverse
20031
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
20032
+ */
20033
+ "space-y-reverse": ["space-y-reverse"],
20034
+ // --------------
20035
+ // --- Sizing ---
20036
+ // --------------
20037
+ /**
20038
+ * Size
20039
+ * @see https://tailwindcss.com/docs/width#setting-both-width-and-height
20040
+ */
20041
+ size: [{
20042
+ size: scaleSizing()
20043
+ }],
20044
+ /**
20045
+ * Width
20046
+ * @see https://tailwindcss.com/docs/width
20047
+ */
20048
+ w: [{
20049
+ w: [themeContainer, "screen", ...scaleSizing()]
20050
+ }],
20051
+ /**
20052
+ * Min-Width
20053
+ * @see https://tailwindcss.com/docs/min-width
20054
+ */
20055
+ "min-w": [{
20056
+ "min-w": [
20057
+ themeContainer,
20058
+ "screen",
20059
+ /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
20060
+ "none",
20061
+ ...scaleSizing()
20062
+ ]
20063
+ }],
20064
+ /**
20065
+ * Max-Width
20066
+ * @see https://tailwindcss.com/docs/max-width
20067
+ */
20068
+ "max-w": [{
20069
+ "max-w": [
20070
+ themeContainer,
20071
+ "screen",
20072
+ "none",
20073
+ /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
20074
+ "prose",
20075
+ /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
20076
+ {
20077
+ screen: [themeBreakpoint]
20078
+ },
20079
+ ...scaleSizing()
20080
+ ]
20081
+ }],
20082
+ /**
20083
+ * Height
20084
+ * @see https://tailwindcss.com/docs/height
20085
+ */
20086
+ h: [{
20087
+ h: ["screen", "lh", ...scaleSizing()]
20088
+ }],
20089
+ /**
20090
+ * Min-Height
20091
+ * @see https://tailwindcss.com/docs/min-height
20092
+ */
20093
+ "min-h": [{
20094
+ "min-h": ["screen", "lh", "none", ...scaleSizing()]
20095
+ }],
20096
+ /**
20097
+ * Max-Height
20098
+ * @see https://tailwindcss.com/docs/max-height
20099
+ */
20100
+ "max-h": [{
20101
+ "max-h": ["screen", "lh", ...scaleSizing()]
20102
+ }],
20103
+ // ------------------
20104
+ // --- Typography ---
20105
+ // ------------------
20106
+ /**
20107
+ * Font Size
20108
+ * @see https://tailwindcss.com/docs/font-size
20109
+ */
20110
+ "font-size": [{
20111
+ text: ["base", themeText, isArbitraryVariableLength, isArbitraryLength]
20112
+ }],
20113
+ /**
20114
+ * Font Smoothing
20115
+ * @see https://tailwindcss.com/docs/font-smoothing
20116
+ */
20117
+ "font-smoothing": ["antialiased", "subpixel-antialiased"],
20118
+ /**
20119
+ * Font Style
20120
+ * @see https://tailwindcss.com/docs/font-style
20121
+ */
20122
+ "font-style": ["italic", "not-italic"],
20123
+ /**
20124
+ * Font Weight
20125
+ * @see https://tailwindcss.com/docs/font-weight
20126
+ */
20127
+ "font-weight": [{
20128
+ font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]
20129
+ }],
20130
+ /**
20131
+ * Font Stretch
20132
+ * @see https://tailwindcss.com/docs/font-stretch
20133
+ */
20134
+ "font-stretch": [{
20135
+ "font-stretch": ["ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "normal", "semi-expanded", "expanded", "extra-expanded", "ultra-expanded", isPercent, isArbitraryValue]
20136
+ }],
20137
+ /**
20138
+ * Font Family
20139
+ * @see https://tailwindcss.com/docs/font-family
20140
+ */
20141
+ "font-family": [{
20142
+ font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]
20143
+ }],
20144
+ /**
20145
+ * Font Variant Numeric
20146
+ * @see https://tailwindcss.com/docs/font-variant-numeric
20147
+ */
20148
+ "fvn-normal": ["normal-nums"],
20149
+ /**
20150
+ * Font Variant Numeric
20151
+ * @see https://tailwindcss.com/docs/font-variant-numeric
20152
+ */
20153
+ "fvn-ordinal": ["ordinal"],
20154
+ /**
20155
+ * Font Variant Numeric
20156
+ * @see https://tailwindcss.com/docs/font-variant-numeric
20157
+ */
20158
+ "fvn-slashed-zero": ["slashed-zero"],
20159
+ /**
20160
+ * Font Variant Numeric
20161
+ * @see https://tailwindcss.com/docs/font-variant-numeric
20162
+ */
20163
+ "fvn-figure": ["lining-nums", "oldstyle-nums"],
20164
+ /**
20165
+ * Font Variant Numeric
20166
+ * @see https://tailwindcss.com/docs/font-variant-numeric
20167
+ */
20168
+ "fvn-spacing": ["proportional-nums", "tabular-nums"],
20169
+ /**
20170
+ * Font Variant Numeric
20171
+ * @see https://tailwindcss.com/docs/font-variant-numeric
20172
+ */
20173
+ "fvn-fraction": ["diagonal-fractions", "stacked-fractions"],
20174
+ /**
20175
+ * Letter Spacing
20176
+ * @see https://tailwindcss.com/docs/letter-spacing
20177
+ */
20178
+ tracking: [{
20179
+ tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]
20180
+ }],
20181
+ /**
20182
+ * Line Clamp
20183
+ * @see https://tailwindcss.com/docs/line-clamp
20184
+ */
20185
+ "line-clamp": [{
20186
+ "line-clamp": [isNumber, "none", isArbitraryVariable, isArbitraryNumber]
20187
+ }],
20188
+ /**
20189
+ * Line Height
20190
+ * @see https://tailwindcss.com/docs/line-height
20191
+ */
20192
+ leading: [{
20193
+ leading: [
20194
+ /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
20195
+ themeLeading,
20196
+ ...scaleUnambiguousSpacing()
20197
+ ]
20198
+ }],
20199
+ /**
20200
+ * List Style Image
20201
+ * @see https://tailwindcss.com/docs/list-style-image
20202
+ */
20203
+ "list-image": [{
20204
+ "list-image": ["none", isArbitraryVariable, isArbitraryValue]
20205
+ }],
20206
+ /**
20207
+ * List Style Position
20208
+ * @see https://tailwindcss.com/docs/list-style-position
20209
+ */
20210
+ "list-style-position": [{
20211
+ list: ["inside", "outside"]
20212
+ }],
20213
+ /**
20214
+ * List Style Type
20215
+ * @see https://tailwindcss.com/docs/list-style-type
20216
+ */
20217
+ "list-style-type": [{
20218
+ list: ["disc", "decimal", "none", isArbitraryVariable, isArbitraryValue]
20219
+ }],
20220
+ /**
20221
+ * Text Alignment
20222
+ * @see https://tailwindcss.com/docs/text-align
20223
+ */
20224
+ "text-alignment": [{
20225
+ text: ["left", "center", "right", "justify", "start", "end"]
20226
+ }],
20227
+ /**
20228
+ * Placeholder Color
20229
+ * @deprecated since Tailwind CSS v3.0.0
20230
+ * @see https://v3.tailwindcss.com/docs/placeholder-color
20231
+ */
20232
+ "placeholder-color": [{
20233
+ placeholder: scaleColor()
20234
+ }],
20235
+ /**
20236
+ * Text Color
20237
+ * @see https://tailwindcss.com/docs/text-color
20238
+ */
20239
+ "text-color": [{
20240
+ text: scaleColor()
20241
+ }],
20242
+ /**
20243
+ * Text Decoration
20244
+ * @see https://tailwindcss.com/docs/text-decoration
20245
+ */
20246
+ "text-decoration": ["underline", "overline", "line-through", "no-underline"],
20247
+ /**
20248
+ * Text Decoration Style
20249
+ * @see https://tailwindcss.com/docs/text-decoration-style
20250
+ */
20251
+ "text-decoration-style": [{
20252
+ decoration: [...scaleLineStyle(), "wavy"]
20253
+ }],
20254
+ /**
20255
+ * Text Decoration Thickness
20256
+ * @see https://tailwindcss.com/docs/text-decoration-thickness
20257
+ */
20258
+ "text-decoration-thickness": [{
20259
+ decoration: [isNumber, "from-font", "auto", isArbitraryVariable, isArbitraryLength]
20260
+ }],
20261
+ /**
20262
+ * Text Decoration Color
20263
+ * @see https://tailwindcss.com/docs/text-decoration-color
20264
+ */
20265
+ "text-decoration-color": [{
20266
+ decoration: scaleColor()
20267
+ }],
20268
+ /**
20269
+ * Text Underline Offset
20270
+ * @see https://tailwindcss.com/docs/text-underline-offset
20271
+ */
20272
+ "underline-offset": [{
20273
+ "underline-offset": [isNumber, "auto", isArbitraryVariable, isArbitraryValue]
20274
+ }],
20275
+ /**
20276
+ * Text Transform
20277
+ * @see https://tailwindcss.com/docs/text-transform
20278
+ */
20279
+ "text-transform": ["uppercase", "lowercase", "capitalize", "normal-case"],
20280
+ /**
20281
+ * Text Overflow
20282
+ * @see https://tailwindcss.com/docs/text-overflow
20283
+ */
20284
+ "text-overflow": ["truncate", "text-ellipsis", "text-clip"],
20285
+ /**
20286
+ * Text Wrap
20287
+ * @see https://tailwindcss.com/docs/text-wrap
20288
+ */
20289
+ "text-wrap": [{
20290
+ text: ["wrap", "nowrap", "balance", "pretty"]
20291
+ }],
20292
+ /**
20293
+ * Text Indent
20294
+ * @see https://tailwindcss.com/docs/text-indent
20295
+ */
20296
+ indent: [{
20297
+ indent: scaleUnambiguousSpacing()
20298
+ }],
20299
+ /**
20300
+ * Vertical Alignment
20301
+ * @see https://tailwindcss.com/docs/vertical-align
20302
+ */
20303
+ "vertical-align": [{
20304
+ align: ["baseline", "top", "middle", "bottom", "text-top", "text-bottom", "sub", "super", isArbitraryVariable, isArbitraryValue]
20305
+ }],
20306
+ /**
20307
+ * Whitespace
20308
+ * @see https://tailwindcss.com/docs/whitespace
20309
+ */
20310
+ whitespace: [{
20311
+ whitespace: ["normal", "nowrap", "pre", "pre-line", "pre-wrap", "break-spaces"]
20312
+ }],
20313
+ /**
20314
+ * Word Break
20315
+ * @see https://tailwindcss.com/docs/word-break
20316
+ */
20317
+ break: [{
20318
+ break: ["normal", "words", "all", "keep"]
20319
+ }],
20320
+ /**
20321
+ * Overflow Wrap
20322
+ * @see https://tailwindcss.com/docs/overflow-wrap
20323
+ */
20324
+ wrap: [{
20325
+ wrap: ["break-word", "anywhere", "normal"]
20326
+ }],
20327
+ /**
20328
+ * Hyphens
20329
+ * @see https://tailwindcss.com/docs/hyphens
20330
+ */
20331
+ hyphens: [{
20332
+ hyphens: ["none", "manual", "auto"]
20333
+ }],
20334
+ /**
20335
+ * Content
20336
+ * @see https://tailwindcss.com/docs/content
20337
+ */
20338
+ content: [{
20339
+ content: ["none", isArbitraryVariable, isArbitraryValue]
20340
+ }],
20341
+ // -------------------
20342
+ // --- Backgrounds ---
20343
+ // -------------------
20344
+ /**
20345
+ * Background Attachment
20346
+ * @see https://tailwindcss.com/docs/background-attachment
20347
+ */
20348
+ "bg-attachment": [{
20349
+ bg: ["fixed", "local", "scroll"]
20350
+ }],
20351
+ /**
20352
+ * Background Clip
20353
+ * @see https://tailwindcss.com/docs/background-clip
20354
+ */
20355
+ "bg-clip": [{
20356
+ "bg-clip": ["border", "padding", "content", "text"]
20357
+ }],
20358
+ /**
20359
+ * Background Origin
20360
+ * @see https://tailwindcss.com/docs/background-origin
20361
+ */
20362
+ "bg-origin": [{
20363
+ "bg-origin": ["border", "padding", "content"]
20364
+ }],
20365
+ /**
20366
+ * Background Position
20367
+ * @see https://tailwindcss.com/docs/background-position
20368
+ */
20369
+ "bg-position": [{
20370
+ bg: scaleBgPosition()
20371
+ }],
20372
+ /**
20373
+ * Background Repeat
20374
+ * @see https://tailwindcss.com/docs/background-repeat
20375
+ */
20376
+ "bg-repeat": [{
20377
+ bg: scaleBgRepeat()
20378
+ }],
20379
+ /**
20380
+ * Background Size
20381
+ * @see https://tailwindcss.com/docs/background-size
20382
+ */
20383
+ "bg-size": [{
20384
+ bg: scaleBgSize()
20385
+ }],
20386
+ /**
20387
+ * Background Image
20388
+ * @see https://tailwindcss.com/docs/background-image
20389
+ */
20390
+ "bg-image": [{
20391
+ bg: ["none", {
20392
+ linear: [{
20393
+ to: ["t", "tr", "r", "br", "b", "bl", "l", "tl"]
20394
+ }, isInteger, isArbitraryVariable, isArbitraryValue],
20395
+ radial: ["", isArbitraryVariable, isArbitraryValue],
20396
+ conic: [isInteger, isArbitraryVariable, isArbitraryValue]
20397
+ }, isArbitraryVariableImage, isArbitraryImage]
20398
+ }],
20399
+ /**
20400
+ * Background Color
20401
+ * @see https://tailwindcss.com/docs/background-color
20402
+ */
20403
+ "bg-color": [{
20404
+ bg: scaleColor()
20405
+ }],
20406
+ /**
20407
+ * Gradient Color Stops From Position
20408
+ * @see https://tailwindcss.com/docs/gradient-color-stops
20409
+ */
20410
+ "gradient-from-pos": [{
20411
+ from: scaleGradientStopPosition()
20412
+ }],
20413
+ /**
20414
+ * Gradient Color Stops Via Position
20415
+ * @see https://tailwindcss.com/docs/gradient-color-stops
20416
+ */
20417
+ "gradient-via-pos": [{
20418
+ via: scaleGradientStopPosition()
20419
+ }],
20420
+ /**
20421
+ * Gradient Color Stops To Position
20422
+ * @see https://tailwindcss.com/docs/gradient-color-stops
20423
+ */
20424
+ "gradient-to-pos": [{
20425
+ to: scaleGradientStopPosition()
20426
+ }],
20427
+ /**
20428
+ * Gradient Color Stops From
20429
+ * @see https://tailwindcss.com/docs/gradient-color-stops
20430
+ */
20431
+ "gradient-from": [{
20432
+ from: scaleColor()
20433
+ }],
20434
+ /**
20435
+ * Gradient Color Stops Via
20436
+ * @see https://tailwindcss.com/docs/gradient-color-stops
20437
+ */
20438
+ "gradient-via": [{
20439
+ via: scaleColor()
20440
+ }],
20441
+ /**
20442
+ * Gradient Color Stops To
20443
+ * @see https://tailwindcss.com/docs/gradient-color-stops
20444
+ */
20445
+ "gradient-to": [{
20446
+ to: scaleColor()
20447
+ }],
20448
+ // ---------------
20449
+ // --- Borders ---
20450
+ // ---------------
20451
+ /**
20452
+ * Border Radius
20453
+ * @see https://tailwindcss.com/docs/border-radius
20454
+ */
20455
+ rounded: [{
20456
+ rounded: scaleRadius()
20457
+ }],
20458
+ /**
20459
+ * Border Radius Start
20460
+ * @see https://tailwindcss.com/docs/border-radius
20461
+ */
20462
+ "rounded-s": [{
20463
+ "rounded-s": scaleRadius()
20464
+ }],
20465
+ /**
20466
+ * Border Radius End
20467
+ * @see https://tailwindcss.com/docs/border-radius
20468
+ */
20469
+ "rounded-e": [{
20470
+ "rounded-e": scaleRadius()
20471
+ }],
20472
+ /**
20473
+ * Border Radius Top
20474
+ * @see https://tailwindcss.com/docs/border-radius
20475
+ */
20476
+ "rounded-t": [{
20477
+ "rounded-t": scaleRadius()
20478
+ }],
20479
+ /**
20480
+ * Border Radius Right
20481
+ * @see https://tailwindcss.com/docs/border-radius
20482
+ */
20483
+ "rounded-r": [{
20484
+ "rounded-r": scaleRadius()
20485
+ }],
20486
+ /**
20487
+ * Border Radius Bottom
20488
+ * @see https://tailwindcss.com/docs/border-radius
20489
+ */
20490
+ "rounded-b": [{
20491
+ "rounded-b": scaleRadius()
20492
+ }],
20493
+ /**
20494
+ * Border Radius Left
20495
+ * @see https://tailwindcss.com/docs/border-radius
20496
+ */
20497
+ "rounded-l": [{
20498
+ "rounded-l": scaleRadius()
20499
+ }],
20500
+ /**
20501
+ * Border Radius Start Start
20502
+ * @see https://tailwindcss.com/docs/border-radius
20503
+ */
20504
+ "rounded-ss": [{
20505
+ "rounded-ss": scaleRadius()
20506
+ }],
20507
+ /**
20508
+ * Border Radius Start End
20509
+ * @see https://tailwindcss.com/docs/border-radius
20510
+ */
20511
+ "rounded-se": [{
20512
+ "rounded-se": scaleRadius()
20513
+ }],
20514
+ /**
20515
+ * Border Radius End End
20516
+ * @see https://tailwindcss.com/docs/border-radius
20517
+ */
20518
+ "rounded-ee": [{
20519
+ "rounded-ee": scaleRadius()
20520
+ }],
20521
+ /**
20522
+ * Border Radius End Start
20523
+ * @see https://tailwindcss.com/docs/border-radius
20524
+ */
20525
+ "rounded-es": [{
20526
+ "rounded-es": scaleRadius()
20527
+ }],
20528
+ /**
20529
+ * Border Radius Top Left
20530
+ * @see https://tailwindcss.com/docs/border-radius
20531
+ */
20532
+ "rounded-tl": [{
20533
+ "rounded-tl": scaleRadius()
20534
+ }],
20535
+ /**
20536
+ * Border Radius Top Right
20537
+ * @see https://tailwindcss.com/docs/border-radius
20538
+ */
20539
+ "rounded-tr": [{
20540
+ "rounded-tr": scaleRadius()
20541
+ }],
20542
+ /**
20543
+ * Border Radius Bottom Right
20544
+ * @see https://tailwindcss.com/docs/border-radius
20545
+ */
20546
+ "rounded-br": [{
20547
+ "rounded-br": scaleRadius()
20548
+ }],
20549
+ /**
20550
+ * Border Radius Bottom Left
20551
+ * @see https://tailwindcss.com/docs/border-radius
20552
+ */
20553
+ "rounded-bl": [{
20554
+ "rounded-bl": scaleRadius()
20555
+ }],
20556
+ /**
20557
+ * Border Width
20558
+ * @see https://tailwindcss.com/docs/border-width
20559
+ */
20560
+ "border-w": [{
20561
+ border: scaleBorderWidth()
20562
+ }],
20563
+ /**
20564
+ * Border Width X
20565
+ * @see https://tailwindcss.com/docs/border-width
20566
+ */
20567
+ "border-w-x": [{
20568
+ "border-x": scaleBorderWidth()
20569
+ }],
20570
+ /**
20571
+ * Border Width Y
20572
+ * @see https://tailwindcss.com/docs/border-width
20573
+ */
20574
+ "border-w-y": [{
20575
+ "border-y": scaleBorderWidth()
20576
+ }],
20577
+ /**
20578
+ * Border Width Start
20579
+ * @see https://tailwindcss.com/docs/border-width
20580
+ */
20581
+ "border-w-s": [{
20582
+ "border-s": scaleBorderWidth()
20583
+ }],
20584
+ /**
20585
+ * Border Width End
20586
+ * @see https://tailwindcss.com/docs/border-width
20587
+ */
20588
+ "border-w-e": [{
20589
+ "border-e": scaleBorderWidth()
20590
+ }],
20591
+ /**
20592
+ * Border Width Top
20593
+ * @see https://tailwindcss.com/docs/border-width
20594
+ */
20595
+ "border-w-t": [{
20596
+ "border-t": scaleBorderWidth()
20597
+ }],
20598
+ /**
20599
+ * Border Width Right
20600
+ * @see https://tailwindcss.com/docs/border-width
20601
+ */
20602
+ "border-w-r": [{
20603
+ "border-r": scaleBorderWidth()
20604
+ }],
20605
+ /**
20606
+ * Border Width Bottom
20607
+ * @see https://tailwindcss.com/docs/border-width
20608
+ */
20609
+ "border-w-b": [{
20610
+ "border-b": scaleBorderWidth()
20611
+ }],
20612
+ /**
20613
+ * Border Width Left
20614
+ * @see https://tailwindcss.com/docs/border-width
20615
+ */
20616
+ "border-w-l": [{
20617
+ "border-l": scaleBorderWidth()
20618
+ }],
20619
+ /**
20620
+ * Divide Width X
20621
+ * @see https://tailwindcss.com/docs/border-width#between-children
20622
+ */
20623
+ "divide-x": [{
20624
+ "divide-x": scaleBorderWidth()
20625
+ }],
20626
+ /**
20627
+ * Divide Width X Reverse
20628
+ * @see https://tailwindcss.com/docs/border-width#between-children
20629
+ */
20630
+ "divide-x-reverse": ["divide-x-reverse"],
20631
+ /**
20632
+ * Divide Width Y
20633
+ * @see https://tailwindcss.com/docs/border-width#between-children
20634
+ */
20635
+ "divide-y": [{
20636
+ "divide-y": scaleBorderWidth()
20637
+ }],
20638
+ /**
20639
+ * Divide Width Y Reverse
20640
+ * @see https://tailwindcss.com/docs/border-width#between-children
20641
+ */
20642
+ "divide-y-reverse": ["divide-y-reverse"],
20643
+ /**
20644
+ * Border Style
20645
+ * @see https://tailwindcss.com/docs/border-style
20646
+ */
20647
+ "border-style": [{
20648
+ border: [...scaleLineStyle(), "hidden", "none"]
20649
+ }],
20650
+ /**
20651
+ * Divide Style
20652
+ * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style
20653
+ */
20654
+ "divide-style": [{
20655
+ divide: [...scaleLineStyle(), "hidden", "none"]
20656
+ }],
20657
+ /**
20658
+ * Border Color
20659
+ * @see https://tailwindcss.com/docs/border-color
20660
+ */
20661
+ "border-color": [{
20662
+ border: scaleColor()
20663
+ }],
20664
+ /**
20665
+ * Border Color X
20666
+ * @see https://tailwindcss.com/docs/border-color
20667
+ */
20668
+ "border-color-x": [{
20669
+ "border-x": scaleColor()
20670
+ }],
20671
+ /**
20672
+ * Border Color Y
20673
+ * @see https://tailwindcss.com/docs/border-color
20674
+ */
20675
+ "border-color-y": [{
20676
+ "border-y": scaleColor()
20677
+ }],
20678
+ /**
20679
+ * Border Color S
20680
+ * @see https://tailwindcss.com/docs/border-color
20681
+ */
20682
+ "border-color-s": [{
20683
+ "border-s": scaleColor()
20684
+ }],
20685
+ /**
20686
+ * Border Color E
20687
+ * @see https://tailwindcss.com/docs/border-color
20688
+ */
20689
+ "border-color-e": [{
20690
+ "border-e": scaleColor()
20691
+ }],
20692
+ /**
20693
+ * Border Color Top
20694
+ * @see https://tailwindcss.com/docs/border-color
20695
+ */
20696
+ "border-color-t": [{
20697
+ "border-t": scaleColor()
20698
+ }],
20699
+ /**
20700
+ * Border Color Right
20701
+ * @see https://tailwindcss.com/docs/border-color
20702
+ */
20703
+ "border-color-r": [{
20704
+ "border-r": scaleColor()
20705
+ }],
20706
+ /**
20707
+ * Border Color Bottom
20708
+ * @see https://tailwindcss.com/docs/border-color
20709
+ */
20710
+ "border-color-b": [{
20711
+ "border-b": scaleColor()
20712
+ }],
20713
+ /**
20714
+ * Border Color Left
20715
+ * @see https://tailwindcss.com/docs/border-color
20716
+ */
20717
+ "border-color-l": [{
20718
+ "border-l": scaleColor()
20719
+ }],
20720
+ /**
20721
+ * Divide Color
20722
+ * @see https://tailwindcss.com/docs/divide-color
20723
+ */
20724
+ "divide-color": [{
20725
+ divide: scaleColor()
20726
+ }],
20727
+ /**
20728
+ * Outline Style
20729
+ * @see https://tailwindcss.com/docs/outline-style
20730
+ */
20731
+ "outline-style": [{
20732
+ outline: [...scaleLineStyle(), "none", "hidden"]
20733
+ }],
20734
+ /**
20735
+ * Outline Offset
20736
+ * @see https://tailwindcss.com/docs/outline-offset
20737
+ */
20738
+ "outline-offset": [{
20739
+ "outline-offset": [isNumber, isArbitraryVariable, isArbitraryValue]
20740
+ }],
20741
+ /**
20742
+ * Outline Width
20743
+ * @see https://tailwindcss.com/docs/outline-width
20744
+ */
20745
+ "outline-w": [{
20746
+ outline: ["", isNumber, isArbitraryVariableLength, isArbitraryLength]
20747
+ }],
20748
+ /**
20749
+ * Outline Color
20750
+ * @see https://tailwindcss.com/docs/outline-color
20751
+ */
20752
+ "outline-color": [{
20753
+ outline: scaleColor()
20754
+ }],
20755
+ // ---------------
20756
+ // --- Effects ---
20757
+ // ---------------
20758
+ /**
20759
+ * Box Shadow
20760
+ * @see https://tailwindcss.com/docs/box-shadow
20761
+ */
20762
+ shadow: [{
20763
+ shadow: [
20764
+ // Deprecated since Tailwind CSS v4.0.0
20765
+ "",
20766
+ "none",
20767
+ themeShadow,
20768
+ isArbitraryVariableShadow,
20769
+ isArbitraryShadow
20770
+ ]
20771
+ }],
20772
+ /**
20773
+ * Box Shadow Color
20774
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color
20775
+ */
20776
+ "shadow-color": [{
20777
+ shadow: scaleColor()
20778
+ }],
20779
+ /**
20780
+ * Inset Box Shadow
20781
+ * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow
20782
+ */
20783
+ "inset-shadow": [{
20784
+ "inset-shadow": ["none", themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]
20785
+ }],
20786
+ /**
20787
+ * Inset Box Shadow Color
20788
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color
20789
+ */
20790
+ "inset-shadow-color": [{
20791
+ "inset-shadow": scaleColor()
20792
+ }],
20793
+ /**
20794
+ * Ring Width
20795
+ * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring
20796
+ */
20797
+ "ring-w": [{
20798
+ ring: scaleBorderWidth()
20799
+ }],
20800
+ /**
20801
+ * Ring Width Inset
20802
+ * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings
20803
+ * @deprecated since Tailwind CSS v4.0.0
20804
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
20805
+ */
20806
+ "ring-w-inset": ["ring-inset"],
20807
+ /**
20808
+ * Ring Color
20809
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color
20810
+ */
20811
+ "ring-color": [{
20812
+ ring: scaleColor()
20813
+ }],
20814
+ /**
20815
+ * Ring Offset Width
20816
+ * @see https://v3.tailwindcss.com/docs/ring-offset-width
20817
+ * @deprecated since Tailwind CSS v4.0.0
20818
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
20819
+ */
20820
+ "ring-offset-w": [{
20821
+ "ring-offset": [isNumber, isArbitraryLength]
20822
+ }],
20823
+ /**
20824
+ * Ring Offset Color
20825
+ * @see https://v3.tailwindcss.com/docs/ring-offset-color
20826
+ * @deprecated since Tailwind CSS v4.0.0
20827
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
20828
+ */
20829
+ "ring-offset-color": [{
20830
+ "ring-offset": scaleColor()
20831
+ }],
20832
+ /**
20833
+ * Inset Ring Width
20834
+ * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring
20835
+ */
20836
+ "inset-ring-w": [{
20837
+ "inset-ring": scaleBorderWidth()
20838
+ }],
20839
+ /**
20840
+ * Inset Ring Color
20841
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color
20842
+ */
20843
+ "inset-ring-color": [{
20844
+ "inset-ring": scaleColor()
20845
+ }],
20846
+ /**
20847
+ * Text Shadow
20848
+ * @see https://tailwindcss.com/docs/text-shadow
20849
+ */
20850
+ "text-shadow": [{
20851
+ "text-shadow": ["none", themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]
20852
+ }],
20853
+ /**
20854
+ * Text Shadow Color
20855
+ * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color
20856
+ */
20857
+ "text-shadow-color": [{
20858
+ "text-shadow": scaleColor()
20859
+ }],
20860
+ /**
20861
+ * Opacity
20862
+ * @see https://tailwindcss.com/docs/opacity
20863
+ */
20864
+ opacity: [{
20865
+ opacity: [isNumber, isArbitraryVariable, isArbitraryValue]
20866
+ }],
20867
+ /**
20868
+ * Mix Blend Mode
20869
+ * @see https://tailwindcss.com/docs/mix-blend-mode
20870
+ */
20871
+ "mix-blend": [{
20872
+ "mix-blend": [...scaleBlendMode(), "plus-darker", "plus-lighter"]
20873
+ }],
20874
+ /**
20875
+ * Background Blend Mode
20876
+ * @see https://tailwindcss.com/docs/background-blend-mode
20877
+ */
20878
+ "bg-blend": [{
20879
+ "bg-blend": scaleBlendMode()
20880
+ }],
20881
+ /**
20882
+ * Mask Clip
20883
+ * @see https://tailwindcss.com/docs/mask-clip
20884
+ */
20885
+ "mask-clip": [{
20886
+ "mask-clip": ["border", "padding", "content", "fill", "stroke", "view"]
20887
+ }, "mask-no-clip"],
20888
+ /**
20889
+ * Mask Composite
20890
+ * @see https://tailwindcss.com/docs/mask-composite
20891
+ */
20892
+ "mask-composite": [{
20893
+ mask: ["add", "subtract", "intersect", "exclude"]
20894
+ }],
20895
+ /**
20896
+ * Mask Image
20897
+ * @see https://tailwindcss.com/docs/mask-image
20898
+ */
20899
+ "mask-image-linear-pos": [{
20900
+ "mask-linear": [isNumber]
20901
+ }],
20902
+ "mask-image-linear-from-pos": [{
20903
+ "mask-linear-from": scaleMaskImagePosition()
20904
+ }],
20905
+ "mask-image-linear-to-pos": [{
20906
+ "mask-linear-to": scaleMaskImagePosition()
20907
+ }],
20908
+ "mask-image-linear-from-color": [{
20909
+ "mask-linear-from": scaleColor()
20910
+ }],
20911
+ "mask-image-linear-to-color": [{
20912
+ "mask-linear-to": scaleColor()
20913
+ }],
20914
+ "mask-image-t-from-pos": [{
20915
+ "mask-t-from": scaleMaskImagePosition()
20916
+ }],
20917
+ "mask-image-t-to-pos": [{
20918
+ "mask-t-to": scaleMaskImagePosition()
20919
+ }],
20920
+ "mask-image-t-from-color": [{
20921
+ "mask-t-from": scaleColor()
20922
+ }],
20923
+ "mask-image-t-to-color": [{
20924
+ "mask-t-to": scaleColor()
20925
+ }],
20926
+ "mask-image-r-from-pos": [{
20927
+ "mask-r-from": scaleMaskImagePosition()
20928
+ }],
20929
+ "mask-image-r-to-pos": [{
20930
+ "mask-r-to": scaleMaskImagePosition()
20931
+ }],
20932
+ "mask-image-r-from-color": [{
20933
+ "mask-r-from": scaleColor()
20934
+ }],
20935
+ "mask-image-r-to-color": [{
20936
+ "mask-r-to": scaleColor()
20937
+ }],
20938
+ "mask-image-b-from-pos": [{
20939
+ "mask-b-from": scaleMaskImagePosition()
20940
+ }],
20941
+ "mask-image-b-to-pos": [{
20942
+ "mask-b-to": scaleMaskImagePosition()
20943
+ }],
20944
+ "mask-image-b-from-color": [{
20945
+ "mask-b-from": scaleColor()
20946
+ }],
20947
+ "mask-image-b-to-color": [{
20948
+ "mask-b-to": scaleColor()
20949
+ }],
20950
+ "mask-image-l-from-pos": [{
20951
+ "mask-l-from": scaleMaskImagePosition()
20952
+ }],
20953
+ "mask-image-l-to-pos": [{
20954
+ "mask-l-to": scaleMaskImagePosition()
20955
+ }],
20956
+ "mask-image-l-from-color": [{
20957
+ "mask-l-from": scaleColor()
20958
+ }],
20959
+ "mask-image-l-to-color": [{
20960
+ "mask-l-to": scaleColor()
20961
+ }],
20962
+ "mask-image-x-from-pos": [{
20963
+ "mask-x-from": scaleMaskImagePosition()
20964
+ }],
20965
+ "mask-image-x-to-pos": [{
20966
+ "mask-x-to": scaleMaskImagePosition()
20967
+ }],
20968
+ "mask-image-x-from-color": [{
20969
+ "mask-x-from": scaleColor()
20970
+ }],
20971
+ "mask-image-x-to-color": [{
20972
+ "mask-x-to": scaleColor()
20973
+ }],
20974
+ "mask-image-y-from-pos": [{
20975
+ "mask-y-from": scaleMaskImagePosition()
20976
+ }],
20977
+ "mask-image-y-to-pos": [{
20978
+ "mask-y-to": scaleMaskImagePosition()
20979
+ }],
20980
+ "mask-image-y-from-color": [{
20981
+ "mask-y-from": scaleColor()
20982
+ }],
20983
+ "mask-image-y-to-color": [{
20984
+ "mask-y-to": scaleColor()
20985
+ }],
20986
+ "mask-image-radial": [{
20987
+ "mask-radial": [isArbitraryVariable, isArbitraryValue]
20988
+ }],
20989
+ "mask-image-radial-from-pos": [{
20990
+ "mask-radial-from": scaleMaskImagePosition()
20991
+ }],
20992
+ "mask-image-radial-to-pos": [{
20993
+ "mask-radial-to": scaleMaskImagePosition()
20994
+ }],
20995
+ "mask-image-radial-from-color": [{
20996
+ "mask-radial-from": scaleColor()
20997
+ }],
20998
+ "mask-image-radial-to-color": [{
20999
+ "mask-radial-to": scaleColor()
21000
+ }],
21001
+ "mask-image-radial-shape": [{
21002
+ "mask-radial": ["circle", "ellipse"]
21003
+ }],
21004
+ "mask-image-radial-size": [{
21005
+ "mask-radial": [{
21006
+ closest: ["side", "corner"],
21007
+ farthest: ["side", "corner"]
21008
+ }]
21009
+ }],
21010
+ "mask-image-radial-pos": [{
21011
+ "mask-radial-at": scalePosition()
21012
+ }],
21013
+ "mask-image-conic-pos": [{
21014
+ "mask-conic": [isNumber]
21015
+ }],
21016
+ "mask-image-conic-from-pos": [{
21017
+ "mask-conic-from": scaleMaskImagePosition()
21018
+ }],
21019
+ "mask-image-conic-to-pos": [{
21020
+ "mask-conic-to": scaleMaskImagePosition()
21021
+ }],
21022
+ "mask-image-conic-from-color": [{
21023
+ "mask-conic-from": scaleColor()
21024
+ }],
21025
+ "mask-image-conic-to-color": [{
21026
+ "mask-conic-to": scaleColor()
21027
+ }],
21028
+ /**
21029
+ * Mask Mode
21030
+ * @see https://tailwindcss.com/docs/mask-mode
21031
+ */
21032
+ "mask-mode": [{
21033
+ mask: ["alpha", "luminance", "match"]
21034
+ }],
21035
+ /**
21036
+ * Mask Origin
21037
+ * @see https://tailwindcss.com/docs/mask-origin
21038
+ */
21039
+ "mask-origin": [{
21040
+ "mask-origin": ["border", "padding", "content", "fill", "stroke", "view"]
21041
+ }],
21042
+ /**
21043
+ * Mask Position
21044
+ * @see https://tailwindcss.com/docs/mask-position
21045
+ */
21046
+ "mask-position": [{
21047
+ mask: scaleBgPosition()
21048
+ }],
21049
+ /**
21050
+ * Mask Repeat
21051
+ * @see https://tailwindcss.com/docs/mask-repeat
21052
+ */
21053
+ "mask-repeat": [{
21054
+ mask: scaleBgRepeat()
21055
+ }],
21056
+ /**
21057
+ * Mask Size
21058
+ * @see https://tailwindcss.com/docs/mask-size
21059
+ */
21060
+ "mask-size": [{
21061
+ mask: scaleBgSize()
21062
+ }],
21063
+ /**
21064
+ * Mask Type
21065
+ * @see https://tailwindcss.com/docs/mask-type
21066
+ */
21067
+ "mask-type": [{
21068
+ "mask-type": ["alpha", "luminance"]
21069
+ }],
21070
+ /**
21071
+ * Mask Image
21072
+ * @see https://tailwindcss.com/docs/mask-image
21073
+ */
21074
+ "mask-image": [{
21075
+ mask: ["none", isArbitraryVariable, isArbitraryValue]
21076
+ }],
21077
+ // ---------------
21078
+ // --- Filters ---
21079
+ // ---------------
21080
+ /**
21081
+ * Filter
21082
+ * @see https://tailwindcss.com/docs/filter
21083
+ */
21084
+ filter: [{
21085
+ filter: [
21086
+ // Deprecated since Tailwind CSS v3.0.0
21087
+ "",
21088
+ "none",
21089
+ isArbitraryVariable,
21090
+ isArbitraryValue
21091
+ ]
21092
+ }],
21093
+ /**
21094
+ * Blur
21095
+ * @see https://tailwindcss.com/docs/blur
21096
+ */
21097
+ blur: [{
21098
+ blur: scaleBlur()
21099
+ }],
21100
+ /**
21101
+ * Brightness
21102
+ * @see https://tailwindcss.com/docs/brightness
21103
+ */
21104
+ brightness: [{
21105
+ brightness: [isNumber, isArbitraryVariable, isArbitraryValue]
21106
+ }],
21107
+ /**
21108
+ * Contrast
21109
+ * @see https://tailwindcss.com/docs/contrast
21110
+ */
21111
+ contrast: [{
21112
+ contrast: [isNumber, isArbitraryVariable, isArbitraryValue]
21113
+ }],
21114
+ /**
21115
+ * Drop Shadow
21116
+ * @see https://tailwindcss.com/docs/drop-shadow
21117
+ */
21118
+ "drop-shadow": [{
21119
+ "drop-shadow": [
21120
+ // Deprecated since Tailwind CSS v4.0.0
21121
+ "",
21122
+ "none",
21123
+ themeDropShadow,
21124
+ isArbitraryVariableShadow,
21125
+ isArbitraryShadow
21126
+ ]
21127
+ }],
21128
+ /**
21129
+ * Drop Shadow Color
21130
+ * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color
21131
+ */
21132
+ "drop-shadow-color": [{
21133
+ "drop-shadow": scaleColor()
21134
+ }],
21135
+ /**
21136
+ * Grayscale
21137
+ * @see https://tailwindcss.com/docs/grayscale
21138
+ */
21139
+ grayscale: [{
21140
+ grayscale: ["", isNumber, isArbitraryVariable, isArbitraryValue]
21141
+ }],
21142
+ /**
21143
+ * Hue Rotate
21144
+ * @see https://tailwindcss.com/docs/hue-rotate
21145
+ */
21146
+ "hue-rotate": [{
21147
+ "hue-rotate": [isNumber, isArbitraryVariable, isArbitraryValue]
21148
+ }],
21149
+ /**
21150
+ * Invert
21151
+ * @see https://tailwindcss.com/docs/invert
21152
+ */
21153
+ invert: [{
21154
+ invert: ["", isNumber, isArbitraryVariable, isArbitraryValue]
21155
+ }],
21156
+ /**
21157
+ * Saturate
21158
+ * @see https://tailwindcss.com/docs/saturate
21159
+ */
21160
+ saturate: [{
21161
+ saturate: [isNumber, isArbitraryVariable, isArbitraryValue]
21162
+ }],
21163
+ /**
21164
+ * Sepia
21165
+ * @see https://tailwindcss.com/docs/sepia
21166
+ */
21167
+ sepia: [{
21168
+ sepia: ["", isNumber, isArbitraryVariable, isArbitraryValue]
21169
+ }],
21170
+ /**
21171
+ * Backdrop Filter
21172
+ * @see https://tailwindcss.com/docs/backdrop-filter
21173
+ */
21174
+ "backdrop-filter": [{
21175
+ "backdrop-filter": [
21176
+ // Deprecated since Tailwind CSS v3.0.0
21177
+ "",
21178
+ "none",
21179
+ isArbitraryVariable,
21180
+ isArbitraryValue
21181
+ ]
21182
+ }],
21183
+ /**
21184
+ * Backdrop Blur
21185
+ * @see https://tailwindcss.com/docs/backdrop-blur
21186
+ */
21187
+ "backdrop-blur": [{
21188
+ "backdrop-blur": scaleBlur()
21189
+ }],
21190
+ /**
21191
+ * Backdrop Brightness
21192
+ * @see https://tailwindcss.com/docs/backdrop-brightness
21193
+ */
21194
+ "backdrop-brightness": [{
21195
+ "backdrop-brightness": [isNumber, isArbitraryVariable, isArbitraryValue]
21196
+ }],
21197
+ /**
21198
+ * Backdrop Contrast
21199
+ * @see https://tailwindcss.com/docs/backdrop-contrast
21200
+ */
21201
+ "backdrop-contrast": [{
21202
+ "backdrop-contrast": [isNumber, isArbitraryVariable, isArbitraryValue]
21203
+ }],
21204
+ /**
21205
+ * Backdrop Grayscale
21206
+ * @see https://tailwindcss.com/docs/backdrop-grayscale
21207
+ */
21208
+ "backdrop-grayscale": [{
21209
+ "backdrop-grayscale": ["", isNumber, isArbitraryVariable, isArbitraryValue]
21210
+ }],
21211
+ /**
21212
+ * Backdrop Hue Rotate
21213
+ * @see https://tailwindcss.com/docs/backdrop-hue-rotate
21214
+ */
21215
+ "backdrop-hue-rotate": [{
21216
+ "backdrop-hue-rotate": [isNumber, isArbitraryVariable, isArbitraryValue]
21217
+ }],
21218
+ /**
21219
+ * Backdrop Invert
21220
+ * @see https://tailwindcss.com/docs/backdrop-invert
21221
+ */
21222
+ "backdrop-invert": [{
21223
+ "backdrop-invert": ["", isNumber, isArbitraryVariable, isArbitraryValue]
21224
+ }],
21225
+ /**
21226
+ * Backdrop Opacity
21227
+ * @see https://tailwindcss.com/docs/backdrop-opacity
21228
+ */
21229
+ "backdrop-opacity": [{
21230
+ "backdrop-opacity": [isNumber, isArbitraryVariable, isArbitraryValue]
21231
+ }],
21232
+ /**
21233
+ * Backdrop Saturate
21234
+ * @see https://tailwindcss.com/docs/backdrop-saturate
21235
+ */
21236
+ "backdrop-saturate": [{
21237
+ "backdrop-saturate": [isNumber, isArbitraryVariable, isArbitraryValue]
21238
+ }],
21239
+ /**
21240
+ * Backdrop Sepia
21241
+ * @see https://tailwindcss.com/docs/backdrop-sepia
21242
+ */
21243
+ "backdrop-sepia": [{
21244
+ "backdrop-sepia": ["", isNumber, isArbitraryVariable, isArbitraryValue]
21245
+ }],
21246
+ // --------------
21247
+ // --- Tables ---
21248
+ // --------------
21249
+ /**
21250
+ * Border Collapse
21251
+ * @see https://tailwindcss.com/docs/border-collapse
21252
+ */
21253
+ "border-collapse": [{
21254
+ border: ["collapse", "separate"]
21255
+ }],
21256
+ /**
21257
+ * Border Spacing
21258
+ * @see https://tailwindcss.com/docs/border-spacing
21259
+ */
21260
+ "border-spacing": [{
21261
+ "border-spacing": scaleUnambiguousSpacing()
21262
+ }],
21263
+ /**
21264
+ * Border Spacing X
21265
+ * @see https://tailwindcss.com/docs/border-spacing
21266
+ */
21267
+ "border-spacing-x": [{
21268
+ "border-spacing-x": scaleUnambiguousSpacing()
21269
+ }],
21270
+ /**
21271
+ * Border Spacing Y
21272
+ * @see https://tailwindcss.com/docs/border-spacing
21273
+ */
21274
+ "border-spacing-y": [{
21275
+ "border-spacing-y": scaleUnambiguousSpacing()
21276
+ }],
21277
+ /**
21278
+ * Table Layout
21279
+ * @see https://tailwindcss.com/docs/table-layout
21280
+ */
21281
+ "table-layout": [{
21282
+ table: ["auto", "fixed"]
21283
+ }],
21284
+ /**
21285
+ * Caption Side
21286
+ * @see https://tailwindcss.com/docs/caption-side
21287
+ */
21288
+ caption: [{
21289
+ caption: ["top", "bottom"]
21290
+ }],
21291
+ // ---------------------------------
21292
+ // --- Transitions and Animation ---
21293
+ // ---------------------------------
21294
+ /**
21295
+ * Transition Property
21296
+ * @see https://tailwindcss.com/docs/transition-property
21297
+ */
21298
+ transition: [{
21299
+ transition: ["", "all", "colors", "opacity", "shadow", "transform", "none", isArbitraryVariable, isArbitraryValue]
21300
+ }],
21301
+ /**
21302
+ * Transition Behavior
21303
+ * @see https://tailwindcss.com/docs/transition-behavior
21304
+ */
21305
+ "transition-behavior": [{
21306
+ transition: ["normal", "discrete"]
21307
+ }],
21308
+ /**
21309
+ * Transition Duration
21310
+ * @see https://tailwindcss.com/docs/transition-duration
21311
+ */
21312
+ duration: [{
21313
+ duration: [isNumber, "initial", isArbitraryVariable, isArbitraryValue]
21314
+ }],
21315
+ /**
21316
+ * Transition Timing Function
21317
+ * @see https://tailwindcss.com/docs/transition-timing-function
21318
+ */
21319
+ ease: [{
21320
+ ease: ["linear", "initial", themeEase, isArbitraryVariable, isArbitraryValue]
21321
+ }],
21322
+ /**
21323
+ * Transition Delay
21324
+ * @see https://tailwindcss.com/docs/transition-delay
21325
+ */
21326
+ delay: [{
21327
+ delay: [isNumber, isArbitraryVariable, isArbitraryValue]
21328
+ }],
21329
+ /**
21330
+ * Animation
21331
+ * @see https://tailwindcss.com/docs/animation
21332
+ */
21333
+ animate: [{
21334
+ animate: ["none", themeAnimate, isArbitraryVariable, isArbitraryValue]
21335
+ }],
21336
+ // ------------------
21337
+ // --- Transforms ---
21338
+ // ------------------
21339
+ /**
21340
+ * Backface Visibility
21341
+ * @see https://tailwindcss.com/docs/backface-visibility
21342
+ */
21343
+ backface: [{
21344
+ backface: ["hidden", "visible"]
21345
+ }],
21346
+ /**
21347
+ * Perspective
21348
+ * @see https://tailwindcss.com/docs/perspective
21349
+ */
21350
+ perspective: [{
21351
+ perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]
21352
+ }],
21353
+ /**
21354
+ * Perspective Origin
21355
+ * @see https://tailwindcss.com/docs/perspective-origin
21356
+ */
21357
+ "perspective-origin": [{
21358
+ "perspective-origin": scalePositionWithArbitrary()
21359
+ }],
21360
+ /**
21361
+ * Rotate
21362
+ * @see https://tailwindcss.com/docs/rotate
21363
+ */
21364
+ rotate: [{
21365
+ rotate: scaleRotate()
21366
+ }],
21367
+ /**
21368
+ * Rotate X
21369
+ * @see https://tailwindcss.com/docs/rotate
21370
+ */
21371
+ "rotate-x": [{
21372
+ "rotate-x": scaleRotate()
21373
+ }],
21374
+ /**
21375
+ * Rotate Y
21376
+ * @see https://tailwindcss.com/docs/rotate
21377
+ */
21378
+ "rotate-y": [{
21379
+ "rotate-y": scaleRotate()
21380
+ }],
21381
+ /**
21382
+ * Rotate Z
21383
+ * @see https://tailwindcss.com/docs/rotate
21384
+ */
21385
+ "rotate-z": [{
21386
+ "rotate-z": scaleRotate()
21387
+ }],
21388
+ /**
21389
+ * Scale
21390
+ * @see https://tailwindcss.com/docs/scale
21391
+ */
21392
+ scale: [{
21393
+ scale: scaleScale()
21394
+ }],
21395
+ /**
21396
+ * Scale X
21397
+ * @see https://tailwindcss.com/docs/scale
21398
+ */
21399
+ "scale-x": [{
21400
+ "scale-x": scaleScale()
21401
+ }],
21402
+ /**
21403
+ * Scale Y
21404
+ * @see https://tailwindcss.com/docs/scale
21405
+ */
21406
+ "scale-y": [{
21407
+ "scale-y": scaleScale()
21408
+ }],
21409
+ /**
21410
+ * Scale Z
21411
+ * @see https://tailwindcss.com/docs/scale
21412
+ */
21413
+ "scale-z": [{
21414
+ "scale-z": scaleScale()
21415
+ }],
21416
+ /**
21417
+ * Scale 3D
21418
+ * @see https://tailwindcss.com/docs/scale
21419
+ */
21420
+ "scale-3d": ["scale-3d"],
21421
+ /**
21422
+ * Skew
21423
+ * @see https://tailwindcss.com/docs/skew
21424
+ */
21425
+ skew: [{
21426
+ skew: scaleSkew()
21427
+ }],
21428
+ /**
21429
+ * Skew X
21430
+ * @see https://tailwindcss.com/docs/skew
21431
+ */
21432
+ "skew-x": [{
21433
+ "skew-x": scaleSkew()
21434
+ }],
21435
+ /**
21436
+ * Skew Y
21437
+ * @see https://tailwindcss.com/docs/skew
21438
+ */
21439
+ "skew-y": [{
21440
+ "skew-y": scaleSkew()
21441
+ }],
21442
+ /**
21443
+ * Transform
21444
+ * @see https://tailwindcss.com/docs/transform
21445
+ */
21446
+ transform: [{
21447
+ transform: [isArbitraryVariable, isArbitraryValue, "", "none", "gpu", "cpu"]
21448
+ }],
21449
+ /**
21450
+ * Transform Origin
21451
+ * @see https://tailwindcss.com/docs/transform-origin
21452
+ */
21453
+ "transform-origin": [{
21454
+ origin: scalePositionWithArbitrary()
21455
+ }],
21456
+ /**
21457
+ * Transform Style
21458
+ * @see https://tailwindcss.com/docs/transform-style
21459
+ */
21460
+ "transform-style": [{
21461
+ transform: ["3d", "flat"]
21462
+ }],
21463
+ /**
21464
+ * Translate
21465
+ * @see https://tailwindcss.com/docs/translate
21466
+ */
21467
+ translate: [{
21468
+ translate: scaleTranslate()
21469
+ }],
21470
+ /**
21471
+ * Translate X
21472
+ * @see https://tailwindcss.com/docs/translate
21473
+ */
21474
+ "translate-x": [{
21475
+ "translate-x": scaleTranslate()
21476
+ }],
21477
+ /**
21478
+ * Translate Y
21479
+ * @see https://tailwindcss.com/docs/translate
21480
+ */
21481
+ "translate-y": [{
21482
+ "translate-y": scaleTranslate()
21483
+ }],
21484
+ /**
21485
+ * Translate Z
21486
+ * @see https://tailwindcss.com/docs/translate
21487
+ */
21488
+ "translate-z": [{
21489
+ "translate-z": scaleTranslate()
21490
+ }],
21491
+ /**
21492
+ * Translate None
21493
+ * @see https://tailwindcss.com/docs/translate
21494
+ */
21495
+ "translate-none": ["translate-none"],
21496
+ // ---------------------
21497
+ // --- Interactivity ---
21498
+ // ---------------------
21499
+ /**
21500
+ * Accent Color
21501
+ * @see https://tailwindcss.com/docs/accent-color
21502
+ */
21503
+ accent: [{
21504
+ accent: scaleColor()
21505
+ }],
21506
+ /**
21507
+ * Appearance
21508
+ * @see https://tailwindcss.com/docs/appearance
21509
+ */
21510
+ appearance: [{
21511
+ appearance: ["none", "auto"]
21512
+ }],
21513
+ /**
21514
+ * Caret Color
21515
+ * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities
21516
+ */
21517
+ "caret-color": [{
21518
+ caret: scaleColor()
21519
+ }],
21520
+ /**
21521
+ * Color Scheme
21522
+ * @see https://tailwindcss.com/docs/color-scheme
21523
+ */
21524
+ "color-scheme": [{
21525
+ scheme: ["normal", "dark", "light", "light-dark", "only-dark", "only-light"]
21526
+ }],
21527
+ /**
21528
+ * Cursor
21529
+ * @see https://tailwindcss.com/docs/cursor
21530
+ */
21531
+ cursor: [{
21532
+ cursor: ["auto", "default", "pointer", "wait", "text", "move", "help", "not-allowed", "none", "context-menu", "progress", "cell", "crosshair", "vertical-text", "alias", "copy", "no-drop", "grab", "grabbing", "all-scroll", "col-resize", "row-resize", "n-resize", "e-resize", "s-resize", "w-resize", "ne-resize", "nw-resize", "se-resize", "sw-resize", "ew-resize", "ns-resize", "nesw-resize", "nwse-resize", "zoom-in", "zoom-out", isArbitraryVariable, isArbitraryValue]
21533
+ }],
21534
+ /**
21535
+ * Field Sizing
21536
+ * @see https://tailwindcss.com/docs/field-sizing
21537
+ */
21538
+ "field-sizing": [{
21539
+ "field-sizing": ["fixed", "content"]
21540
+ }],
21541
+ /**
21542
+ * Pointer Events
21543
+ * @see https://tailwindcss.com/docs/pointer-events
21544
+ */
21545
+ "pointer-events": [{
21546
+ "pointer-events": ["auto", "none"]
21547
+ }],
21548
+ /**
21549
+ * Resize
21550
+ * @see https://tailwindcss.com/docs/resize
21551
+ */
21552
+ resize: [{
21553
+ resize: ["none", "", "y", "x"]
21554
+ }],
21555
+ /**
21556
+ * Scroll Behavior
21557
+ * @see https://tailwindcss.com/docs/scroll-behavior
21558
+ */
21559
+ "scroll-behavior": [{
21560
+ scroll: ["auto", "smooth"]
21561
+ }],
21562
+ /**
21563
+ * Scroll Margin
21564
+ * @see https://tailwindcss.com/docs/scroll-margin
21565
+ */
21566
+ "scroll-m": [{
21567
+ "scroll-m": scaleUnambiguousSpacing()
21568
+ }],
21569
+ /**
21570
+ * Scroll Margin X
21571
+ * @see https://tailwindcss.com/docs/scroll-margin
21572
+ */
21573
+ "scroll-mx": [{
21574
+ "scroll-mx": scaleUnambiguousSpacing()
21575
+ }],
21576
+ /**
21577
+ * Scroll Margin Y
21578
+ * @see https://tailwindcss.com/docs/scroll-margin
21579
+ */
21580
+ "scroll-my": [{
21581
+ "scroll-my": scaleUnambiguousSpacing()
21582
+ }],
21583
+ /**
21584
+ * Scroll Margin Start
21585
+ * @see https://tailwindcss.com/docs/scroll-margin
21586
+ */
21587
+ "scroll-ms": [{
21588
+ "scroll-ms": scaleUnambiguousSpacing()
21589
+ }],
21590
+ /**
21591
+ * Scroll Margin End
21592
+ * @see https://tailwindcss.com/docs/scroll-margin
21593
+ */
21594
+ "scroll-me": [{
21595
+ "scroll-me": scaleUnambiguousSpacing()
21596
+ }],
21597
+ /**
21598
+ * Scroll Margin Top
21599
+ * @see https://tailwindcss.com/docs/scroll-margin
21600
+ */
21601
+ "scroll-mt": [{
21602
+ "scroll-mt": scaleUnambiguousSpacing()
21603
+ }],
21604
+ /**
21605
+ * Scroll Margin Right
21606
+ * @see https://tailwindcss.com/docs/scroll-margin
21607
+ */
21608
+ "scroll-mr": [{
21609
+ "scroll-mr": scaleUnambiguousSpacing()
21610
+ }],
21611
+ /**
21612
+ * Scroll Margin Bottom
21613
+ * @see https://tailwindcss.com/docs/scroll-margin
21614
+ */
21615
+ "scroll-mb": [{
21616
+ "scroll-mb": scaleUnambiguousSpacing()
21617
+ }],
21618
+ /**
21619
+ * Scroll Margin Left
21620
+ * @see https://tailwindcss.com/docs/scroll-margin
21621
+ */
21622
+ "scroll-ml": [{
21623
+ "scroll-ml": scaleUnambiguousSpacing()
21624
+ }],
21625
+ /**
21626
+ * Scroll Padding
21627
+ * @see https://tailwindcss.com/docs/scroll-padding
21628
+ */
21629
+ "scroll-p": [{
21630
+ "scroll-p": scaleUnambiguousSpacing()
21631
+ }],
21632
+ /**
21633
+ * Scroll Padding X
21634
+ * @see https://tailwindcss.com/docs/scroll-padding
21635
+ */
21636
+ "scroll-px": [{
21637
+ "scroll-px": scaleUnambiguousSpacing()
21638
+ }],
21639
+ /**
21640
+ * Scroll Padding Y
21641
+ * @see https://tailwindcss.com/docs/scroll-padding
21642
+ */
21643
+ "scroll-py": [{
21644
+ "scroll-py": scaleUnambiguousSpacing()
21645
+ }],
21646
+ /**
21647
+ * Scroll Padding Start
21648
+ * @see https://tailwindcss.com/docs/scroll-padding
21649
+ */
21650
+ "scroll-ps": [{
21651
+ "scroll-ps": scaleUnambiguousSpacing()
21652
+ }],
21653
+ /**
21654
+ * Scroll Padding End
21655
+ * @see https://tailwindcss.com/docs/scroll-padding
21656
+ */
21657
+ "scroll-pe": [{
21658
+ "scroll-pe": scaleUnambiguousSpacing()
21659
+ }],
21660
+ /**
21661
+ * Scroll Padding Top
21662
+ * @see https://tailwindcss.com/docs/scroll-padding
21663
+ */
21664
+ "scroll-pt": [{
21665
+ "scroll-pt": scaleUnambiguousSpacing()
21666
+ }],
21667
+ /**
21668
+ * Scroll Padding Right
21669
+ * @see https://tailwindcss.com/docs/scroll-padding
21670
+ */
21671
+ "scroll-pr": [{
21672
+ "scroll-pr": scaleUnambiguousSpacing()
21673
+ }],
21674
+ /**
21675
+ * Scroll Padding Bottom
21676
+ * @see https://tailwindcss.com/docs/scroll-padding
21677
+ */
21678
+ "scroll-pb": [{
21679
+ "scroll-pb": scaleUnambiguousSpacing()
21680
+ }],
21681
+ /**
21682
+ * Scroll Padding Left
21683
+ * @see https://tailwindcss.com/docs/scroll-padding
21684
+ */
21685
+ "scroll-pl": [{
21686
+ "scroll-pl": scaleUnambiguousSpacing()
21687
+ }],
21688
+ /**
21689
+ * Scroll Snap Align
21690
+ * @see https://tailwindcss.com/docs/scroll-snap-align
21691
+ */
21692
+ "snap-align": [{
21693
+ snap: ["start", "end", "center", "align-none"]
21694
+ }],
21695
+ /**
21696
+ * Scroll Snap Stop
21697
+ * @see https://tailwindcss.com/docs/scroll-snap-stop
21698
+ */
21699
+ "snap-stop": [{
21700
+ snap: ["normal", "always"]
21701
+ }],
21702
+ /**
21703
+ * Scroll Snap Type
21704
+ * @see https://tailwindcss.com/docs/scroll-snap-type
21705
+ */
21706
+ "snap-type": [{
21707
+ snap: ["none", "x", "y", "both"]
21708
+ }],
21709
+ /**
21710
+ * Scroll Snap Type Strictness
21711
+ * @see https://tailwindcss.com/docs/scroll-snap-type
21712
+ */
21713
+ "snap-strictness": [{
21714
+ snap: ["mandatory", "proximity"]
21715
+ }],
21716
+ /**
21717
+ * Touch Action
21718
+ * @see https://tailwindcss.com/docs/touch-action
21719
+ */
21720
+ touch: [{
21721
+ touch: ["auto", "none", "manipulation"]
21722
+ }],
21723
+ /**
21724
+ * Touch Action X
21725
+ * @see https://tailwindcss.com/docs/touch-action
21726
+ */
21727
+ "touch-x": [{
21728
+ "touch-pan": ["x", "left", "right"]
21729
+ }],
21730
+ /**
21731
+ * Touch Action Y
21732
+ * @see https://tailwindcss.com/docs/touch-action
21733
+ */
21734
+ "touch-y": [{
21735
+ "touch-pan": ["y", "up", "down"]
21736
+ }],
21737
+ /**
21738
+ * Touch Action Pinch Zoom
21739
+ * @see https://tailwindcss.com/docs/touch-action
21740
+ */
21741
+ "touch-pz": ["touch-pinch-zoom"],
21742
+ /**
21743
+ * User Select
21744
+ * @see https://tailwindcss.com/docs/user-select
21745
+ */
21746
+ select: [{
21747
+ select: ["none", "text", "all", "auto"]
21748
+ }],
21749
+ /**
21750
+ * Will Change
21751
+ * @see https://tailwindcss.com/docs/will-change
21752
+ */
21753
+ "will-change": [{
21754
+ "will-change": ["auto", "scroll", "contents", "transform", isArbitraryVariable, isArbitraryValue]
21755
+ }],
21756
+ // -----------
21757
+ // --- SVG ---
21758
+ // -----------
21759
+ /**
21760
+ * Fill
21761
+ * @see https://tailwindcss.com/docs/fill
21762
+ */
21763
+ fill: [{
21764
+ fill: ["none", ...scaleColor()]
21765
+ }],
21766
+ /**
21767
+ * Stroke Width
21768
+ * @see https://tailwindcss.com/docs/stroke-width
21769
+ */
21770
+ "stroke-w": [{
21771
+ stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]
21772
+ }],
21773
+ /**
21774
+ * Stroke
21775
+ * @see https://tailwindcss.com/docs/stroke
21776
+ */
21777
+ stroke: [{
21778
+ stroke: ["none", ...scaleColor()]
21779
+ }],
21780
+ // ---------------------
21781
+ // --- Accessibility ---
21782
+ // ---------------------
21783
+ /**
21784
+ * Forced Color Adjust
21785
+ * @see https://tailwindcss.com/docs/forced-color-adjust
21786
+ */
21787
+ "forced-color-adjust": [{
21788
+ "forced-color-adjust": ["auto", "none"]
21789
+ }]
21790
+ },
21791
+ conflictingClassGroups: {
21792
+ overflow: ["overflow-x", "overflow-y"],
21793
+ overscroll: ["overscroll-x", "overscroll-y"],
21794
+ inset: ["inset-x", "inset-y", "start", "end", "top", "right", "bottom", "left"],
21795
+ "inset-x": ["right", "left"],
21796
+ "inset-y": ["top", "bottom"],
21797
+ flex: ["basis", "grow", "shrink"],
21798
+ gap: ["gap-x", "gap-y"],
21799
+ p: ["px", "py", "ps", "pe", "pt", "pr", "pb", "pl"],
21800
+ px: ["pr", "pl"],
21801
+ py: ["pt", "pb"],
21802
+ m: ["mx", "my", "ms", "me", "mt", "mr", "mb", "ml"],
21803
+ mx: ["mr", "ml"],
21804
+ my: ["mt", "mb"],
21805
+ size: ["w", "h"],
21806
+ "font-size": ["leading"],
21807
+ "fvn-normal": ["fvn-ordinal", "fvn-slashed-zero", "fvn-figure", "fvn-spacing", "fvn-fraction"],
21808
+ "fvn-ordinal": ["fvn-normal"],
21809
+ "fvn-slashed-zero": ["fvn-normal"],
21810
+ "fvn-figure": ["fvn-normal"],
21811
+ "fvn-spacing": ["fvn-normal"],
21812
+ "fvn-fraction": ["fvn-normal"],
21813
+ "line-clamp": ["display", "overflow"],
21814
+ 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"],
21815
+ "rounded-s": ["rounded-ss", "rounded-es"],
21816
+ "rounded-e": ["rounded-se", "rounded-ee"],
21817
+ "rounded-t": ["rounded-tl", "rounded-tr"],
21818
+ "rounded-r": ["rounded-tr", "rounded-br"],
21819
+ "rounded-b": ["rounded-br", "rounded-bl"],
21820
+ "rounded-l": ["rounded-tl", "rounded-bl"],
21821
+ "border-spacing": ["border-spacing-x", "border-spacing-y"],
21822
+ "border-w": ["border-w-x", "border-w-y", "border-w-s", "border-w-e", "border-w-t", "border-w-r", "border-w-b", "border-w-l"],
21823
+ "border-w-x": ["border-w-r", "border-w-l"],
21824
+ "border-w-y": ["border-w-t", "border-w-b"],
21825
+ "border-color": ["border-color-x", "border-color-y", "border-color-s", "border-color-e", "border-color-t", "border-color-r", "border-color-b", "border-color-l"],
21826
+ "border-color-x": ["border-color-r", "border-color-l"],
21827
+ "border-color-y": ["border-color-t", "border-color-b"],
21828
+ translate: ["translate-x", "translate-y", "translate-none"],
21829
+ "translate-none": ["translate", "translate-x", "translate-y", "translate-z"],
21830
+ "scroll-m": ["scroll-mx", "scroll-my", "scroll-ms", "scroll-me", "scroll-mt", "scroll-mr", "scroll-mb", "scroll-ml"],
21831
+ "scroll-mx": ["scroll-mr", "scroll-ml"],
21832
+ "scroll-my": ["scroll-mt", "scroll-mb"],
21833
+ "scroll-p": ["scroll-px", "scroll-py", "scroll-ps", "scroll-pe", "scroll-pt", "scroll-pr", "scroll-pb", "scroll-pl"],
21834
+ "scroll-px": ["scroll-pr", "scroll-pl"],
21835
+ "scroll-py": ["scroll-pt", "scroll-pb"],
21836
+ touch: ["touch-x", "touch-y", "touch-pz"],
21837
+ "touch-x": ["touch"],
21838
+ "touch-y": ["touch"],
21839
+ "touch-pz": ["touch"]
21840
+ },
21841
+ conflictingClassGroupModifiers: {
21842
+ "font-size": ["leading"]
21843
+ },
21844
+ orderSensitiveModifiers: ["*", "**", "after", "backdrop", "before", "details-content", "file", "first-letter", "first-line", "marker", "placeholder", "selection"]
21845
+ };
21846
+ };
21847
+ var twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
21848
+
21849
+ // src/lib/utils.ts
21850
+ function cn(...inputs) {
21851
+ return twMerge(clsx(inputs));
21852
+ }
18860
21853
 
18861
21854
  // src/components/LightboxOverlay.tsx
18862
21855
  var import_jsx_runtime = require("react/jsx-runtime");
18863
21856
  function LightboxOverlay({
18864
21857
  onClose,
18865
- closeOnBackdropClick = true
21858
+ closeOnBackdropClick = true,
21859
+ className
18866
21860
  }) {
18867
21861
  const handleClick = (event) => {
18868
21862
  if (!closeOnBackdropClick) return;
@@ -18872,7 +21866,12 @@ function LightboxOverlay({
18872
21866
  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
18873
21867
  "div",
18874
21868
  {
18875
- className: Lightbox_default.overlay,
21869
+ className: cn(
21870
+ "fixed inset-0 bg-black/90",
21871
+ "bg-[linear-gradient(to_right,rgba(255,255,255,0.03)_1px,transparent_1px),linear-gradient(to_bottom,rgba(255,255,255,0.03)_1px,transparent_1px)]",
21872
+ "bg-[size:24px_24px]",
21873
+ className
21874
+ ),
18876
21875
  "aria-hidden": "true",
18877
21876
  onClick: handleClick
18878
21877
  }
@@ -19486,13 +22485,13 @@ var LegacyImg = ({ mediaId, cdnHost, sizes, onImageData, loading, decoding, alt,
19486
22485
  return `${base}.${ext}`;
19487
22486
  }, [data, picture]);
19488
22487
  if (!hasMediaId) {
19489
- const r = { ...rest };
19490
- return (0, import_jsx_runtime2.jsx)("img", { ref: imgRef, src: directSrc, loading: loadingAttr, decoding: decodingAttr, alt: altAttr, title: titleAttr, width: r.width, height: r.height, ...r });
22488
+ const r2 = { ...rest };
22489
+ return (0, import_jsx_runtime2.jsx)("img", { ref: imgRef, src: directSrc, loading: loadingAttr, decoding: decodingAttr, alt: altAttr, title: titleAttr, width: r2.width, height: r2.height, ...r2 });
19491
22490
  }
19492
22491
  const placeholderSrc = buildPlaceholderImageUrl(mediaId, cdnHost);
19493
22492
  if (!data || !picture || !isInView) {
19494
- const r = { ...rest };
19495
- return (0, import_jsx_runtime2.jsx)("img", { ref: imgRef, src: placeholderSrc, loading: loadingAttr, decoding: decodingAttr, alt: altAttr, title: titleAttr, width: r.width ?? widthAttr, height: r.height ?? heightAttr, ...r });
22493
+ const r2 = { ...rest };
22494
+ return (0, import_jsx_runtime2.jsx)("img", { ref: imgRef, src: placeholderSrc, loading: loadingAttr, decoding: decodingAttr, alt: altAttr, title: titleAttr, width: r2.width ?? widthAttr, height: r2.height ?? heightAttr, ...r2 });
19496
22495
  }
19497
22496
  const sizesAttr = sizes ?? DEFAULT_SIZES;
19498
22497
  const { webp, avif, jpeg, toSrcSet, fallback } = picture;
@@ -19538,7 +22537,7 @@ function ImageRenderer({ item, optixFlowConfig }) {
19538
22537
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
19539
22538
  Img2,
19540
22539
  {
19541
- className: Lightbox_default.media,
22540
+ className: "max-w-full max-h-full w-auto h-auto object-contain",
19542
22541
  src: item.src,
19543
22542
  alt: item.alt || item.title || "",
19544
22543
  loading: "lazy",
@@ -19554,7 +22553,7 @@ function VideoRenderer({ item }) {
19554
22553
  return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
19555
22554
  "video",
19556
22555
  {
19557
- className: Lightbox_default.media,
22556
+ className: "max-w-full max-h-full w-auto h-auto object-contain rounded-lg",
19558
22557
  src: item.src,
19559
22558
  controls: true,
19560
22559
  playsInline: true
@@ -19576,10 +22575,10 @@ var LazyPDFViewer = import_react16.default.lazy(loadPDFViewer);
19576
22575
  var AnyPDFViewer = LazyPDFViewer;
19577
22576
  function PDFRenderer({ item }) {
19578
22577
  if (!item.src) return null;
19579
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: Lightbox_default.pdfContainer, children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
22578
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "w-full h-full flex items-center justify-center p-4", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
19580
22579
  import_react16.Suspense,
19581
22580
  {
19582
- fallback: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: Lightbox_default.pdfFallback, children: "Loading document..." }),
22581
+ fallback: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "flex items-center justify-center text-neutral-500 text-sm", children: "Loading document..." }),
19583
22582
  children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(AnyPDFViewer, { url: item.src })
19584
22583
  }
19585
22584
  ) });
@@ -19637,6 +22636,38 @@ var DEFAULT_CONTROLS = {
19637
22636
  function mergeControls(overrides) {
19638
22637
  return { ...DEFAULT_CONTROLS, ...overrides || {} };
19639
22638
  }
22639
+ var IconButton = ({
22640
+ onClick,
22641
+ disabled,
22642
+ ariaLabel,
22643
+ children,
22644
+ className
22645
+ }) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
22646
+ "button",
22647
+ {
22648
+ type: "button",
22649
+ onClick,
22650
+ disabled,
22651
+ "aria-label": ariaLabel,
22652
+ className: cn(
22653
+ "flex items-center justify-center",
22654
+ "w-10 h-10 rounded-full",
22655
+ "bg-neutral-800/80 hover:bg-neutral-700/90",
22656
+ "text-white/90 hover:text-white",
22657
+ "transition-colors duration-200",
22658
+ "disabled:opacity-40 disabled:cursor-not-allowed",
22659
+ "focus:outline-none focus:ring-2 focus:ring-white/30",
22660
+ className
22661
+ ),
22662
+ children
22663
+ }
22664
+ );
22665
+ var ArrowLeftIcon = () => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("path", { d: "M19 12H5M12 19l-7-7 7-7" }) });
22666
+ var ArrowRightIcon = () => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("path", { d: "M5 12h14M12 5l7 7-7 7" }) });
22667
+ var CloseIcon = () => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("path", { d: "M18 6L6 18M6 6l12 12" }) });
22668
+ var FullscreenIcon = () => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("path", { d: "M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3" }) });
22669
+ var DownloadIcon = () => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3" }) });
22670
+ var ShareIcon = () => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("svg", { xmlns: "http://www.w3.org/2000/svg", width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("path", { d: "M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8M16 6l-4-4-4 4M12 2v13" }) });
19640
22671
  function LightboxChrome({
19641
22672
  currentIndex,
19642
22673
  totalItems,
@@ -19646,54 +22677,70 @@ function LightboxChrome({
19646
22677
  controls,
19647
22678
  onNext,
19648
22679
  onPrev,
19649
- onClose
22680
+ onClose,
22681
+ className,
22682
+ variant = "floating"
19650
22683
  }) {
19651
22684
  const resolved = mergeControls(controls);
19652
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: Lightbox_default.chrome, children: [
19653
- resolved.navigation && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: Lightbox_default.chromeSection, children: [
19654
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
19655
- "button",
19656
- {
19657
- type: "button",
19658
- className: Lightbox_default.navButton,
19659
- onClick: onPrev,
19660
- disabled: !canPrev,
19661
- "aria-label": "Previous item",
19662
- children: "\u2039"
19663
- }
19664
- ),
19665
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
19666
- "button",
19667
- {
19668
- type: "button",
19669
- className: Lightbox_default.navButton,
19670
- onClick: onNext,
19671
- disabled: !canNext,
19672
- "aria-label": "Next item",
19673
- children: "\u203A"
19674
- }
19675
- )
22685
+ if (variant === "toolbar") {
22686
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: cn(
22687
+ "flex items-center justify-between",
22688
+ "px-3 py-2",
22689
+ "bg-black/50 text-white",
22690
+ "border-t border-white/10",
22691
+ className
22692
+ ), children: [
22693
+ resolved.navigation && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "flex items-center gap-2", children: [
22694
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(IconButton, { onClick: onPrev, disabled: !canPrev, ariaLabel: "Previous item", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ArrowLeftIcon, {}) }),
22695
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(IconButton, { onClick: onNext, disabled: !canNext, ariaLabel: "Next item", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ArrowRightIcon, {}) })
22696
+ ] }),
22697
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "flex flex-col", children: resolved.captions && currentItem && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
22698
+ currentItem.title && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "text-sm font-semibold", children: currentItem.title }),
22699
+ currentItem.caption && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "text-xs text-white/70", children: currentItem.caption })
22700
+ ] }) }),
22701
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "flex items-center gap-2", children: [
22702
+ resolved.counter && totalItems > 0 && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("span", { className: "text-xs text-white/70", children: [
22703
+ currentIndex + 1,
22704
+ " / ",
22705
+ totalItems
22706
+ ] }),
22707
+ resolved.closeButton && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(IconButton, { onClick: onClose, ariaLabel: "Close lightbox", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(CloseIcon, {}) })
22708
+ ] })
22709
+ ] });
22710
+ }
22711
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
22712
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: cn(
22713
+ "fixed top-4 right-4 z-50",
22714
+ "flex items-center gap-2",
22715
+ className
22716
+ ), children: [
22717
+ resolved.share && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(IconButton, { ariaLabel: "Share", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ShareIcon, {}) }),
22718
+ resolved.fullscreen && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(IconButton, { ariaLabel: "Fullscreen", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(FullscreenIcon, {}) }),
22719
+ resolved.download && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(IconButton, { ariaLabel: "Download", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DownloadIcon, {}) }),
22720
+ resolved.closeButton && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(IconButton, { onClick: onClose, ariaLabel: "Close lightbox", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(CloseIcon, {}) })
22721
+ ] }),
22722
+ resolved.navigation && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "fixed bottom-6 right-6 z-50 flex items-center gap-3", children: [
22723
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(IconButton, { onClick: onPrev, disabled: !canPrev, ariaLabel: "Previous item", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ArrowLeftIcon, {}) }),
22724
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(IconButton, { onClick: onNext, disabled: !canNext, ariaLabel: "Next item", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ArrowRightIcon, {}) })
19676
22725
  ] }),
19677
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: Lightbox_default.chromeSection, children: resolved.captions && currentItem && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: Lightbox_default.captionContainer, children: [
19678
- currentItem.title && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: Lightbox_default.captionTitle, children: currentItem.title }),
19679
- currentItem.caption && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: Lightbox_default.captionText, children: currentItem.caption })
19680
- ] }) }),
19681
- /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: Lightbox_default.chromeSection, children: [
19682
- resolved.counter && totalItems > 0 && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("span", { className: Lightbox_default.counter, children: [
22726
+ resolved.captions && currentItem && (currentItem.title || currentItem.caption) && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: cn(
22727
+ "fixed bottom-6 left-6 z-50",
22728
+ "max-w-md p-4",
22729
+ "bg-white rounded-xl shadow-lg",
22730
+ "text-neutral-900"
22731
+ ), children: [
22732
+ currentItem.title && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "text-base font-semibold leading-tight", children: currentItem.title }),
22733
+ currentItem.caption && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "mt-1 text-sm text-neutral-600 leading-relaxed", children: currentItem.caption }),
22734
+ resolved.counter && totalItems > 1 && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "mt-2 text-xs text-neutral-400", children: [
19683
22735
  currentIndex + 1,
19684
- " / ",
22736
+ " of ",
19685
22737
  totalItems
19686
- ] }),
19687
- resolved.closeButton && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
19688
- "button",
19689
- {
19690
- type: "button",
19691
- className: Lightbox_default.closeButton,
19692
- onClick: onClose,
19693
- "aria-label": "Close lightbox",
19694
- children: "\xD7"
19695
- }
19696
- )
22738
+ ] })
22739
+ ] }),
22740
+ resolved.counter && totalItems > 1 && !(resolved.captions && currentItem && (currentItem.title || currentItem.caption)) && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "fixed bottom-6 left-6 z-50 px-3 py-1.5 bg-black/70 rounded-full text-white text-sm", children: [
22741
+ currentIndex + 1,
22742
+ " / ",
22743
+ totalItems
19697
22744
  ] })
19698
22745
  ] });
19699
22746
  }
@@ -19713,19 +22760,33 @@ function HorizontalLayout({
19713
22760
  height,
19714
22761
  ...style
19715
22762
  };
19716
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: Lightbox_default.horizontalLayoutRoot, style: containerStyle, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
22763
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
19717
22764
  "div",
19718
22765
  {
19719
- className: [
19720
- Lightbox_default.horizontalLayoutContainer,
19721
- className || ""
19722
- ].join(" ").trim(),
19723
- children: [
19724
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: Lightbox_default.mainContent, children: content }),
19725
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: Lightbox_default.toolbar, children: chrome })
19726
- ]
22766
+ className: "fixed inset-0 z-50 flex items-center justify-center p-4 md:p-8",
22767
+ style: containerStyle,
22768
+ children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
22769
+ "div",
22770
+ {
22771
+ className: cn(
22772
+ "relative flex flex-col",
22773
+ "w-full max-w-6xl max-h-full",
22774
+ "overflow-hidden",
22775
+ className
22776
+ ),
22777
+ children: [
22778
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: cn(
22779
+ "relative flex-1 min-h-0",
22780
+ "flex items-center justify-center",
22781
+ "overflow-hidden rounded-xl",
22782
+ "bg-white shadow-2xl"
22783
+ ), children: content }),
22784
+ chrome
22785
+ ]
22786
+ }
22787
+ )
19727
22788
  }
19728
- ) });
22789
+ );
19729
22790
  }
19730
22791
 
19731
22792
  // src/components/Layouts/VerticalSplitLayout.tsx
@@ -19733,6 +22794,7 @@ var import_jsx_runtime14 = require("react/jsx-runtime");
19733
22794
  function VerticalSplitLayout({
19734
22795
  content,
19735
22796
  chrome,
22797
+ sidebar,
19736
22798
  height,
19737
22799
  maxWidth,
19738
22800
  className,
@@ -19743,19 +22805,38 @@ function VerticalSplitLayout({
19743
22805
  height,
19744
22806
  ...style
19745
22807
  };
19746
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: Lightbox_default.verticalSplitLayoutRoot, style: containerStyle, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
22808
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
19747
22809
  "div",
19748
22810
  {
19749
- className: [
19750
- Lightbox_default.verticalSplitLayoutContainer,
19751
- className || ""
19752
- ].join(" ").trim(),
19753
- children: [
19754
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: Lightbox_default.verticalSplitContent, children: content }),
19755
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: Lightbox_default.verticalSplitSidebar, children: chrome })
19756
- ]
22811
+ className: "fixed inset-0 z-50 flex items-center justify-center p-4 md:p-8",
22812
+ style: containerStyle,
22813
+ children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
22814
+ "div",
22815
+ {
22816
+ className: cn(
22817
+ "relative flex flex-col md:flex-row",
22818
+ "w-full max-w-7xl max-h-full",
22819
+ "gap-4",
22820
+ className
22821
+ ),
22822
+ children: [
22823
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: cn(
22824
+ "relative flex-1 min-h-0 md:min-w-0",
22825
+ "flex items-center justify-center",
22826
+ "overflow-hidden rounded-xl",
22827
+ "bg-neutral-900"
22828
+ ), children: content }),
22829
+ sidebar && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: cn(
22830
+ "w-full md:w-80 lg:w-96",
22831
+ "flex flex-col gap-4",
22832
+ "overflow-y-auto"
22833
+ ), children: sidebar }),
22834
+ chrome
22835
+ ]
22836
+ }
22837
+ )
19757
22838
  }
19758
- ) });
22839
+ );
19759
22840
  }
19760
22841
 
19761
22842
  // src/components/Layouts/CustomSlideLayout.tsx
@@ -19773,19 +22854,32 @@ function CustomSlideLayout({
19773
22854
  height,
19774
22855
  ...style
19775
22856
  };
19776
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: Lightbox_default.customSlideLayoutRoot, style: containerStyle, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
22857
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
19777
22858
  "div",
19778
22859
  {
19779
- className: [
19780
- Lightbox_default.customSlideLayoutContainer,
19781
- className || ""
19782
- ].join(" ").trim(),
19783
- children: [
19784
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: Lightbox_default.customSlideContent, children: content }),
19785
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: Lightbox_default.customSlideChrome, children: chrome })
19786
- ]
22860
+ className: "fixed inset-0 z-50 flex items-center justify-center p-4 md:p-8 lg:p-12",
22861
+ style: containerStyle,
22862
+ children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
22863
+ "div",
22864
+ {
22865
+ className: cn(
22866
+ "relative flex flex-col items-center justify-center",
22867
+ "w-full max-w-5xl max-h-full",
22868
+ className
22869
+ ),
22870
+ children: [
22871
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: cn(
22872
+ "relative w-full",
22873
+ "flex items-center justify-center",
22874
+ "overflow-hidden rounded-2xl",
22875
+ "bg-white shadow-2xl"
22876
+ ), children: content }),
22877
+ chrome
22878
+ ]
22879
+ }
22880
+ )
19787
22881
  }
19788
- ) });
22882
+ );
19789
22883
  }
19790
22884
 
19791
22885
  // src/components/Layouts/FullscreenLayout.tsx
@@ -19796,19 +22890,27 @@ function FullscreenLayout({
19796
22890
  className,
19797
22891
  style
19798
22892
  }) {
19799
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: Lightbox_default.fullscreenLayoutRoot, style, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
22893
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
19800
22894
  "div",
19801
22895
  {
19802
- className: [
19803
- Lightbox_default.fullscreenLayoutContainer,
19804
- className || ""
19805
- ].join(" ").trim(),
19806
- children: [
19807
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: Lightbox_default.fullscreenContent, children: content }),
19808
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: Lightbox_default.fullscreenChrome, children: chrome })
19809
- ]
22896
+ className: "fixed inset-0 z-50 flex flex-col",
22897
+ style,
22898
+ children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
22899
+ "div",
22900
+ {
22901
+ className: cn(
22902
+ "relative flex-1 min-h-0",
22903
+ "flex items-center justify-center",
22904
+ className
22905
+ ),
22906
+ children: [
22907
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "w-full h-full flex items-center justify-center", children: content }),
22908
+ chrome
22909
+ ]
22910
+ }
22911
+ )
19810
22912
  }
19811
- ) });
22913
+ );
19812
22914
  }
19813
22915
 
19814
22916
  // src/components/Layouts/InlineLayout.tsx
@@ -19826,19 +22928,27 @@ function InlineLayout({
19826
22928
  height,
19827
22929
  ...style
19828
22930
  };
19829
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: Lightbox_default.inlineLayoutRoot, style: containerStyle, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
22931
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
19830
22932
  "div",
19831
22933
  {
19832
- className: [
19833
- Lightbox_default.inlineLayoutContainer,
19834
- className || ""
19835
- ].join(" ").trim(),
22934
+ className: cn(
22935
+ "relative w-full",
22936
+ "overflow-hidden rounded-xl",
22937
+ "bg-neutral-100",
22938
+ className
22939
+ ),
22940
+ style: containerStyle,
19836
22941
  children: [
19837
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: Lightbox_default.inlineContent, children: content }),
19838
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: Lightbox_default.inlineToolbar, children: chrome })
22942
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "relative w-full", children: content }),
22943
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: cn(
22944
+ "flex items-center justify-between",
22945
+ "px-3 py-2",
22946
+ "bg-neutral-900/90 text-white",
22947
+ "border-t border-white/10"
22948
+ ), children: chrome })
19839
22949
  ]
19840
22950
  }
19841
- ) });
22951
+ );
19842
22952
  }
19843
22953
 
19844
22954
  // src/components/Lightbox.tsx
@@ -19961,7 +23071,7 @@ function Lightbox(props) {
19961
23071
  layoutComponent = /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(HorizontalLayout, { ...layoutProps });
19962
23072
  break;
19963
23073
  }
19964
- const lightboxContent = /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: Lightbox_default.lightboxPortal, role: "dialog", "aria-modal": "true", children: [
23074
+ const lightboxContent = /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "fixed inset-0 z-50", role: "dialog", "aria-modal": "true", children: [
19965
23075
  /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
19966
23076
  LightboxOverlay,
19967
23077
  {