@page-speed/lightbox 0.1.2 → 0.1.4

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