bianic-ui 2.10.0-alpha.1 → 2.10.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/index.js CHANGED
@@ -87,7 +87,9 @@ function IconBase(props) {
87
87
  }
88
88
 
89
89
  // THIS FILE IS AUTO GENERATED
90
- function TbCircleCheckFilled (props) {
90
+ function TbCircleFilled (props) {
91
+ return GenIcon({"tag":"svg","attr":{"viewBox":"0 0 24 24","fill":"currentColor"},"child":[{"tag":"path","attr":{"d":"M7 3.34a10 10 0 1 1 -4.995 8.984l-.005 -.324l.005 -.324a10 10 0 0 1 4.995 -8.336z"},"child":[]}]})(props);
92
+ }function TbCircleCheckFilled (props) {
91
93
  return GenIcon({"tag":"svg","attr":{"viewBox":"0 0 24 24","fill":"currentColor"},"child":[{"tag":"path","attr":{"d":"M17 3.34a10 10 0 1 1 -14.995 8.984l-.005 -.324l.005 -.324a10 10 0 0 1 14.995 -8.336zm-1.293 5.953a1 1 0 0 0 -1.32 -.083l-.094 .083l-3.293 3.292l-1.293 -1.292l-.094 -.083a1 1 0 0 0 -1.403 1.403l.083 .094l2 2l.094 .083a1 1 0 0 0 1.226 0l.094 -.083l4 -4l.083 -.094a1 1 0 0 0 -.083 -1.32z"},"child":[]}]})(props);
92
94
  }function TbZoom (props) {
93
95
  return GenIcon({"tag":"svg","attr":{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round"},"child":[{"tag":"path","attr":{"d":"M10 10m-7 0a7 7 0 1 0 14 0a7 7 0 1 0 -14 0"},"child":[]},{"tag":"path","attr":{"d":"M21 21l-6 -6"},"child":[]}]})(props);
@@ -485,7 +487,7 @@ var doubleIconSizeConfig = {
485
487
  tn: 'py-[4px] h-[22px] flex items-center justify-center gap-[3px]',
486
488
  };
487
489
  var shadow = 'shadow-[0px_6px_18px_1px_rgba(188,199,237,0.5)] disabled:shadow-none active:shadow-none';
488
- var variantConfig$2 = {
490
+ var variantConfig$3 = {
489
491
  default: "text-primary-black bg-bia-grey active:bg-bia-grey-dark-10 hover:bg-bia-grey-hover disabled:bg-bia-grey-disabled disabled:text-bia-grey-active focus-visible:outline focus-visible:outline-offset-0 focus-visible:outline-bia-blue-light-50 focus-visible:outline-[3px] focus-visible:rounded-md shadow-[0px_6px_18px_1px_#BCC7ED80] ".concat(shadow),
490
492
  primary: "text-primary-white bg-bia-blue active:bg-bia-blue-dark-10 hover:bg-bia-blue-hover disabled:bg-bia-blue-disabled disabled:text-bia-blue-light-90 focus-visible:outline focus-visible:outline-offset-0 focus-visible:outline-bia-blue-light-50 focus-visible:outline-[3px] focus-visible:rounded-md shadow-bia-blue-disabled ".concat(shadow),
491
493
  info: "text-primary-white bg-bia-teal active:bg-bia-teal-dark-10 hover:bg-bia-teal-hover disabled:bg-bia-teal-light-50 disabled:text-bia-teal-light-90 focus-visible:outline focus-visible:outline-offset-0 focus-visible:outline-bia-teal-light-50 focus-visible:outline-[3px] focus-visible:rounded-md shadow-bia-teal-disabled ".concat(shadow),
@@ -552,7 +554,7 @@ var Button = React.forwardRef(function (_a, ref) {
552
554
  : hasDoubleIcon
553
555
  ? "".concat(doubleIconSizeConfig[validatedSize], " ").concat(isVariantLink)
554
556
  : "".concat(iconOnlySizeConfig$1[validatedSize], " ").concat(isVariantLink, " ").concat(isVariantLink);
555
- var classString = "\n ".concat(variantConfig$2[validatedVariant], "\n ").concat(sizeClass, "\n ").concat(radiusConfig$1[validatedRadius][validatedSize], "\n ").concat(className, "\n ");
557
+ var classString = "\n ".concat(variantConfig$3[validatedVariant], "\n ").concat(sizeClass, "\n ").concat(radiusConfig$1[validatedRadius][validatedSize], "\n ").concat(className, "\n ");
556
558
  return (React.createElement("button", __assign({ ref: ref, type: "button", className: "bianic-button bianic-fgc-target flex items-center justify-center font-semibold ".concat(classString), disabled: disabled }, props),
557
559
  childrenElement(iconLeft || left),
558
560
  childrenElement(label),
@@ -673,7 +675,7 @@ Badge.defaultProps = {
673
675
  color: undefined,
674
676
  };
675
677
 
676
- var variantConfig$1 = {
678
+ var variantConfig$2 = {
677
679
  black: {
678
680
  bg: 'bg-primary-black',
679
681
  active: 'active:bg-bia-coolgrey-dark-30 active:rounded-sm',
@@ -709,11 +711,11 @@ var variantConfig$1 = {
709
711
  function Banner(_a) {
710
712
  var children = _a.children, _b = _a.closeable, closeable = _b === void 0 ? true : _b, _c = _a.variant, variant = _c === void 0 ? 'black' : _c, open = _a.open, onClose = _a.onClose;
711
713
  if (open) {
712
- return (React.createElement("div", { className: "w-full h-[42px] py-[22px] text-size-base font-semibold flex justify-center items-center text-white relative ".concat(variantConfig$1[variant].bg) },
714
+ return (React.createElement("div", { className: "w-full h-[42px] py-[22px] text-size-base font-semibold flex justify-center items-center text-white relative ".concat(variantConfig$2[variant].bg) },
713
715
  React.createElement("div", { className: "w-full flex justify-center items-center gap-[10px]" },
714
716
  React.createElement("div", { className: "font-semibold font-segoe text-[14px] leading-[21px]" }, children),
715
- React.createElement("div", { className: "flex items-center justify-center" }, closeable && (React.createElement("button", { className: "ml-auto text-xs outline-2 text-white absolute right-4 w-[18px] h-[18px] flex justify-center items-center ".concat(variantConfig$1[variant].focus), type: "button", onClick: function () { return onClose(false); } },
716
- React.createElement(TbX, { className: "text-[18px] ".concat(variantConfig$1[variant].hover, " ").concat(variantConfig$1[variant].active) })))))));
717
+ React.createElement("div", { className: "flex items-center justify-center" }, closeable && (React.createElement("button", { className: "ml-auto text-xs outline-2 text-white absolute right-4 w-[18px] h-[18px] flex justify-center items-center ".concat(variantConfig$2[variant].focus), type: "button", onClick: function () { return onClose(false); } },
718
+ React.createElement(TbX, { className: "text-[18px] ".concat(variantConfig$2[variant].hover, " ").concat(variantConfig$2[variant].active) })))))));
717
719
  }
718
720
  }
719
721
  Banner.defaultProps = {
@@ -1701,6 +1703,3308 @@ function Color() {
1701
1703
  }))));
1702
1704
  }
1703
1705
 
1706
+ function r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=" "),n+=f);}else for(f in e)e[f]&&(n&&(n+=" "),n+=f);return n}function clsx(){for(var e,t,f=0,n="",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}
1707
+
1708
+ /**
1709
+ * Concatenates two arrays faster than the array spread operator.
1710
+ */
1711
+ const concatArrays = (array1, array2) => {
1712
+ // Pre-allocate for better V8 optimization
1713
+ const combinedArray = new Array(array1.length + array2.length);
1714
+ for (let i = 0; i < array1.length; i++) {
1715
+ combinedArray[i] = array1[i];
1716
+ }
1717
+ for (let i = 0; i < array2.length; i++) {
1718
+ combinedArray[array1.length + i] = array2[i];
1719
+ }
1720
+ return combinedArray;
1721
+ };
1722
+
1723
+ // Factory function ensures consistent object shapes
1724
+ const createClassValidatorObject = (classGroupId, validator) => ({
1725
+ classGroupId,
1726
+ validator
1727
+ });
1728
+ // Factory ensures consistent ClassPartObject shape
1729
+ const createClassPartObject = (nextPart = new Map(), validators = null, classGroupId) => ({
1730
+ nextPart,
1731
+ validators,
1732
+ classGroupId
1733
+ });
1734
+ const CLASS_PART_SEPARATOR = '-';
1735
+ const EMPTY_CONFLICTS = [];
1736
+ // I use two dots here because one dot is used as prefix for class groups in plugins
1737
+ const ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';
1738
+ const createClassGroupUtils = config => {
1739
+ const classMap = createClassMap(config);
1740
+ const {
1741
+ conflictingClassGroups,
1742
+ conflictingClassGroupModifiers
1743
+ } = config;
1744
+ const getClassGroupId = className => {
1745
+ if (className.startsWith('[') && className.endsWith(']')) {
1746
+ return getGroupIdForArbitraryProperty(className);
1747
+ }
1748
+ const classParts = className.split(CLASS_PART_SEPARATOR);
1749
+ // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.
1750
+ const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0;
1751
+ return getGroupRecursive(classParts, startIndex, classMap);
1752
+ };
1753
+ const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {
1754
+ if (hasPostfixModifier) {
1755
+ const modifierConflicts = conflictingClassGroupModifiers[classGroupId];
1756
+ const baseConflicts = conflictingClassGroups[classGroupId];
1757
+ if (modifierConflicts) {
1758
+ if (baseConflicts) {
1759
+ // Merge base conflicts with modifier conflicts
1760
+ return concatArrays(baseConflicts, modifierConflicts);
1761
+ }
1762
+ // Only modifier conflicts
1763
+ return modifierConflicts;
1764
+ }
1765
+ // Fall back to without postfix if no modifier conflicts
1766
+ return baseConflicts || EMPTY_CONFLICTS;
1767
+ }
1768
+ return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;
1769
+ };
1770
+ return {
1771
+ getClassGroupId,
1772
+ getConflictingClassGroupIds
1773
+ };
1774
+ };
1775
+ const getGroupRecursive = (classParts, startIndex, classPartObject) => {
1776
+ const classPathsLength = classParts.length - startIndex;
1777
+ if (classPathsLength === 0) {
1778
+ return classPartObject.classGroupId;
1779
+ }
1780
+ const currentClassPart = classParts[startIndex];
1781
+ const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);
1782
+ if (nextClassPartObject) {
1783
+ const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);
1784
+ if (result) return result;
1785
+ }
1786
+ const validators = classPartObject.validators;
1787
+ if (validators === null) {
1788
+ return undefined;
1789
+ }
1790
+ // Build classRest string efficiently by joining from startIndex onwards
1791
+ const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);
1792
+ const validatorsLength = validators.length;
1793
+ for (let i = 0; i < validatorsLength; i++) {
1794
+ const validatorObj = validators[i];
1795
+ if (validatorObj.validator(classRest)) {
1796
+ return validatorObj.classGroupId;
1797
+ }
1798
+ }
1799
+ return undefined;
1800
+ };
1801
+ /**
1802
+ * Get the class group ID for an arbitrary property.
1803
+ *
1804
+ * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.
1805
+ */
1806
+ const getGroupIdForArbitraryProperty = className => className.slice(1, -1).indexOf(':') === -1 ? undefined : (() => {
1807
+ const content = className.slice(1, -1);
1808
+ const colonIndex = content.indexOf(':');
1809
+ const property = content.slice(0, colonIndex);
1810
+ return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;
1811
+ })();
1812
+ /**
1813
+ * Exported for testing only
1814
+ */
1815
+ const createClassMap = config => {
1816
+ const {
1817
+ theme,
1818
+ classGroups
1819
+ } = config;
1820
+ return processClassGroups(classGroups, theme);
1821
+ };
1822
+ // Split into separate functions to maintain monomorphic call sites
1823
+ const processClassGroups = (classGroups, theme) => {
1824
+ const classMap = createClassPartObject();
1825
+ for (const classGroupId in classGroups) {
1826
+ const group = classGroups[classGroupId];
1827
+ processClassesRecursively(group, classMap, classGroupId, theme);
1828
+ }
1829
+ return classMap;
1830
+ };
1831
+ const processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {
1832
+ const len = classGroup.length;
1833
+ for (let i = 0; i < len; i++) {
1834
+ const classDefinition = classGroup[i];
1835
+ processClassDefinition(classDefinition, classPartObject, classGroupId, theme);
1836
+ }
1837
+ };
1838
+ // Split into separate functions for each type to maintain monomorphic call sites
1839
+ const processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {
1840
+ if (typeof classDefinition === 'string') {
1841
+ processStringDefinition(classDefinition, classPartObject, classGroupId);
1842
+ return;
1843
+ }
1844
+ if (typeof classDefinition === 'function') {
1845
+ processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);
1846
+ return;
1847
+ }
1848
+ processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);
1849
+ };
1850
+ const processStringDefinition = (classDefinition, classPartObject, classGroupId) => {
1851
+ const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);
1852
+ classPartObjectToEdit.classGroupId = classGroupId;
1853
+ };
1854
+ const processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {
1855
+ if (isThemeGetter(classDefinition)) {
1856
+ processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);
1857
+ return;
1858
+ }
1859
+ if (classPartObject.validators === null) {
1860
+ classPartObject.validators = [];
1861
+ }
1862
+ classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));
1863
+ };
1864
+ const processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {
1865
+ const entries = Object.entries(classDefinition);
1866
+ const len = entries.length;
1867
+ for (let i = 0; i < len; i++) {
1868
+ const [key, value] = entries[i];
1869
+ processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);
1870
+ }
1871
+ };
1872
+ const getPart = (classPartObject, path) => {
1873
+ let current = classPartObject;
1874
+ const parts = path.split(CLASS_PART_SEPARATOR);
1875
+ const len = parts.length;
1876
+ for (let i = 0; i < len; i++) {
1877
+ const part = parts[i];
1878
+ let next = current.nextPart.get(part);
1879
+ if (!next) {
1880
+ next = createClassPartObject();
1881
+ current.nextPart.set(part, next);
1882
+ }
1883
+ current = next;
1884
+ }
1885
+ return current;
1886
+ };
1887
+ // Type guard maintains monomorphic check
1888
+ const isThemeGetter = func => 'isThemeGetter' in func && func.isThemeGetter === true;
1889
+
1890
+ // LRU cache implementation using plain objects for simplicity
1891
+ const createLruCache = maxCacheSize => {
1892
+ if (maxCacheSize < 1) {
1893
+ return {
1894
+ get: () => undefined,
1895
+ set: () => {}
1896
+ };
1897
+ }
1898
+ let cacheSize = 0;
1899
+ let cache = Object.create(null);
1900
+ let previousCache = Object.create(null);
1901
+ const update = (key, value) => {
1902
+ cache[key] = value;
1903
+ cacheSize++;
1904
+ if (cacheSize > maxCacheSize) {
1905
+ cacheSize = 0;
1906
+ previousCache = cache;
1907
+ cache = Object.create(null);
1908
+ }
1909
+ };
1910
+ return {
1911
+ get(key) {
1912
+ let value = cache[key];
1913
+ if (value !== undefined) {
1914
+ return value;
1915
+ }
1916
+ if ((value = previousCache[key]) !== undefined) {
1917
+ update(key, value);
1918
+ return value;
1919
+ }
1920
+ },
1921
+ set(key, value) {
1922
+ if (key in cache) {
1923
+ cache[key] = value;
1924
+ } else {
1925
+ update(key, value);
1926
+ }
1927
+ }
1928
+ };
1929
+ };
1930
+ const IMPORTANT_MODIFIER = '!';
1931
+ const MODIFIER_SEPARATOR = ':';
1932
+ const EMPTY_MODIFIERS = [];
1933
+ // Pre-allocated result object shape for consistency
1934
+ const createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({
1935
+ modifiers,
1936
+ hasImportantModifier,
1937
+ baseClassName,
1938
+ maybePostfixModifierPosition,
1939
+ isExternal
1940
+ });
1941
+ const createParseClassName = config => {
1942
+ const {
1943
+ prefix,
1944
+ experimentalParseClassName
1945
+ } = config;
1946
+ /**
1947
+ * Parse class name into parts.
1948
+ *
1949
+ * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS
1950
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js
1951
+ */
1952
+ let parseClassName = className => {
1953
+ // Use simple array with push for better performance
1954
+ const modifiers = [];
1955
+ let bracketDepth = 0;
1956
+ let parenDepth = 0;
1957
+ let modifierStart = 0;
1958
+ let postfixModifierPosition;
1959
+ const len = className.length;
1960
+ for (let index = 0; index < len; index++) {
1961
+ const currentCharacter = className[index];
1962
+ if (bracketDepth === 0 && parenDepth === 0) {
1963
+ if (currentCharacter === MODIFIER_SEPARATOR) {
1964
+ modifiers.push(className.slice(modifierStart, index));
1965
+ modifierStart = index + 1;
1966
+ continue;
1967
+ }
1968
+ if (currentCharacter === '/') {
1969
+ postfixModifierPosition = index;
1970
+ continue;
1971
+ }
1972
+ }
1973
+ if (currentCharacter === '[') bracketDepth++;else if (currentCharacter === ']') bracketDepth--;else if (currentCharacter === '(') parenDepth++;else if (currentCharacter === ')') parenDepth--;
1974
+ }
1975
+ const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);
1976
+ // Inline important modifier check
1977
+ let baseClassName = baseClassNameWithImportantModifier;
1978
+ let hasImportantModifier = false;
1979
+ if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {
1980
+ baseClassName = baseClassNameWithImportantModifier.slice(0, -1);
1981
+ hasImportantModifier = true;
1982
+ } else if (
1983
+ /**
1984
+ * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.
1985
+ * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864
1986
+ */
1987
+ baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {
1988
+ baseClassName = baseClassNameWithImportantModifier.slice(1);
1989
+ hasImportantModifier = true;
1990
+ }
1991
+ const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;
1992
+ return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);
1993
+ };
1994
+ if (prefix) {
1995
+ const fullPrefix = prefix + MODIFIER_SEPARATOR;
1996
+ const parseClassNameOriginal = parseClassName;
1997
+ parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true);
1998
+ }
1999
+ if (experimentalParseClassName) {
2000
+ const parseClassNameOriginal = parseClassName;
2001
+ parseClassName = className => experimentalParseClassName({
2002
+ className,
2003
+ parseClassName: parseClassNameOriginal
2004
+ });
2005
+ }
2006
+ return parseClassName;
2007
+ };
2008
+
2009
+ /**
2010
+ * Sorts modifiers according to following schema:
2011
+ * - Predefined modifiers are sorted alphabetically
2012
+ * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it
2013
+ */
2014
+ const createSortModifiers = config => {
2015
+ // Pre-compute weights for all known modifiers for O(1) comparison
2016
+ const modifierWeights = new Map();
2017
+ // Assign weights to sensitive modifiers (highest priority, but preserve order)
2018
+ config.orderSensitiveModifiers.forEach((mod, index) => {
2019
+ modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods
2020
+ });
2021
+ return modifiers => {
2022
+ const result = [];
2023
+ let currentSegment = [];
2024
+ // Process modifiers in one pass
2025
+ for (let i = 0; i < modifiers.length; i++) {
2026
+ const modifier = modifiers[i];
2027
+ // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)
2028
+ const isArbitrary = modifier[0] === '[';
2029
+ const isOrderSensitive = modifierWeights.has(modifier);
2030
+ if (isArbitrary || isOrderSensitive) {
2031
+ // Sort and flush current segment alphabetically
2032
+ if (currentSegment.length > 0) {
2033
+ currentSegment.sort();
2034
+ result.push(...currentSegment);
2035
+ currentSegment = [];
2036
+ }
2037
+ result.push(modifier);
2038
+ } else {
2039
+ // Regular modifier - add to current segment for batch sorting
2040
+ currentSegment.push(modifier);
2041
+ }
2042
+ }
2043
+ // Sort and add any remaining segment items
2044
+ if (currentSegment.length > 0) {
2045
+ currentSegment.sort();
2046
+ result.push(...currentSegment);
2047
+ }
2048
+ return result;
2049
+ };
2050
+ };
2051
+ const createConfigUtils = config => ({
2052
+ cache: createLruCache(config.cacheSize),
2053
+ parseClassName: createParseClassName(config),
2054
+ sortModifiers: createSortModifiers(config),
2055
+ postfixLookupClassGroupIds: createPostfixLookupClassGroupIds(config),
2056
+ ...createClassGroupUtils(config)
2057
+ });
2058
+ const createPostfixLookupClassGroupIds = config => {
2059
+ const lookup = Object.create(null);
2060
+ const classGroupIds = config.postfixLookupClassGroups;
2061
+ if (classGroupIds) {
2062
+ for (let i = 0; i < classGroupIds.length; i++) {
2063
+ lookup[classGroupIds[i]] = true;
2064
+ }
2065
+ }
2066
+ return lookup;
2067
+ };
2068
+ const SPLIT_CLASSES_REGEX = /\s+/;
2069
+ const mergeClassList = (classList, configUtils) => {
2070
+ const {
2071
+ parseClassName,
2072
+ getClassGroupId,
2073
+ getConflictingClassGroupIds,
2074
+ sortModifiers,
2075
+ postfixLookupClassGroupIds
2076
+ } = configUtils;
2077
+ /**
2078
+ * Set of classGroupIds in following format:
2079
+ * `{importantModifier}{variantModifiers}{classGroupId}`
2080
+ * @example 'float'
2081
+ * @example 'hover:focus:bg-color'
2082
+ * @example 'md:!pr'
2083
+ */
2084
+ const classGroupsInConflict = [];
2085
+ const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);
2086
+ let result = '';
2087
+ for (let index = classNames.length - 1; index >= 0; index -= 1) {
2088
+ const originalClassName = classNames[index];
2089
+ const {
2090
+ isExternal,
2091
+ modifiers,
2092
+ hasImportantModifier,
2093
+ baseClassName,
2094
+ maybePostfixModifierPosition
2095
+ } = parseClassName(originalClassName);
2096
+ if (isExternal) {
2097
+ result = originalClassName + (result.length > 0 ? ' ' + result : result);
2098
+ continue;
2099
+ }
2100
+ let hasPostfixModifier = !!maybePostfixModifierPosition;
2101
+ let classGroupId;
2102
+ if (hasPostfixModifier) {
2103
+ const baseClassNameWithoutPostfix = baseClassName.substring(0, maybePostfixModifierPosition);
2104
+ classGroupId = getClassGroupId(baseClassNameWithoutPostfix);
2105
+ const classGroupIdWithPostfix = classGroupId && postfixLookupClassGroupIds[classGroupId] ? getClassGroupId(baseClassName) : undefined;
2106
+ if (classGroupIdWithPostfix && classGroupIdWithPostfix !== classGroupId) {
2107
+ classGroupId = classGroupIdWithPostfix;
2108
+ hasPostfixModifier = false;
2109
+ }
2110
+ } else {
2111
+ classGroupId = getClassGroupId(baseClassName);
2112
+ }
2113
+ if (!classGroupId) {
2114
+ if (!hasPostfixModifier) {
2115
+ // Not a Tailwind class
2116
+ result = originalClassName + (result.length > 0 ? ' ' + result : result);
2117
+ continue;
2118
+ }
2119
+ classGroupId = getClassGroupId(baseClassName);
2120
+ if (!classGroupId) {
2121
+ // Not a Tailwind class
2122
+ result = originalClassName + (result.length > 0 ? ' ' + result : result);
2123
+ continue;
2124
+ }
2125
+ hasPostfixModifier = false;
2126
+ }
2127
+ // Fast path: skip sorting for empty or single modifier
2128
+ const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');
2129
+ const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;
2130
+ const classId = modifierId + classGroupId;
2131
+ if (classGroupsInConflict.indexOf(classId) > -1) {
2132
+ // Tailwind class omitted due to conflict
2133
+ continue;
2134
+ }
2135
+ classGroupsInConflict.push(classId);
2136
+ const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);
2137
+ for (let i = 0; i < conflictGroups.length; ++i) {
2138
+ const group = conflictGroups[i];
2139
+ classGroupsInConflict.push(modifierId + group);
2140
+ }
2141
+ // Tailwind class not in conflict
2142
+ result = originalClassName + (result.length > 0 ? ' ' + result : result);
2143
+ }
2144
+ return result;
2145
+ };
2146
+
2147
+ /**
2148
+ * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.
2149
+ *
2150
+ * Specifically:
2151
+ * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js
2152
+ * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts
2153
+ *
2154
+ * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
2155
+ */
2156
+ const twJoin = (...classLists) => {
2157
+ let index = 0;
2158
+ let argument;
2159
+ let resolvedValue;
2160
+ let string = '';
2161
+ while (index < classLists.length) {
2162
+ if (argument = classLists[index++]) {
2163
+ if (resolvedValue = toValue(argument)) {
2164
+ string && (string += ' ');
2165
+ string += resolvedValue;
2166
+ }
2167
+ }
2168
+ }
2169
+ return string;
2170
+ };
2171
+ const toValue = mix => {
2172
+ // Fast path for strings
2173
+ if (typeof mix === 'string') {
2174
+ return mix;
2175
+ }
2176
+ let resolvedValue;
2177
+ let string = '';
2178
+ for (let k = 0; k < mix.length; k++) {
2179
+ if (mix[k]) {
2180
+ if (resolvedValue = toValue(mix[k])) {
2181
+ string && (string += ' ');
2182
+ string += resolvedValue;
2183
+ }
2184
+ }
2185
+ }
2186
+ return string;
2187
+ };
2188
+ const createTailwindMerge = (createConfigFirst, ...createConfigRest) => {
2189
+ let configUtils;
2190
+ let cacheGet;
2191
+ let cacheSet;
2192
+ let functionToCall;
2193
+ const initTailwindMerge = classList => {
2194
+ const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());
2195
+ configUtils = createConfigUtils(config);
2196
+ cacheGet = configUtils.cache.get;
2197
+ cacheSet = configUtils.cache.set;
2198
+ functionToCall = tailwindMerge;
2199
+ return tailwindMerge(classList);
2200
+ };
2201
+ const tailwindMerge = classList => {
2202
+ const cachedResult = cacheGet(classList);
2203
+ if (cachedResult) {
2204
+ return cachedResult;
2205
+ }
2206
+ const result = mergeClassList(classList, configUtils);
2207
+ cacheSet(classList, result);
2208
+ return result;
2209
+ };
2210
+ functionToCall = initTailwindMerge;
2211
+ return (...args) => functionToCall(twJoin(...args));
2212
+ };
2213
+ const fallbackThemeArr = [];
2214
+ const fromTheme = key => {
2215
+ const themeGetter = theme => theme[key] || fallbackThemeArr;
2216
+ themeGetter.isThemeGetter = true;
2217
+ return themeGetter;
2218
+ };
2219
+ const arbitraryValueRegex = /^\[(?:(\w[\w-]*):)?(.+)\]$/i;
2220
+ const arbitraryVariableRegex = /^\((?:(\w[\w-]*):)?(.+)\)$/i;
2221
+ const fractionRegex = /^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/;
2222
+ const tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/;
2223
+ const lengthUnitRegex = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/;
2224
+ const colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/;
2225
+ // Shadow always begins with x and y offset separated by underscore optionally prepended by inset
2226
+ const shadowRegex = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/;
2227
+ const imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;
2228
+ const isFraction = value => fractionRegex.test(value);
2229
+ const isNumber = value => !!value && !Number.isNaN(Number(value));
2230
+ const isInteger = value => !!value && Number.isInteger(Number(value));
2231
+ const isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));
2232
+ const isTshirtSize = value => tshirtUnitRegex.test(value);
2233
+ const isAny = () => true;
2234
+ const isLengthOnly = value =>
2235
+ // `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.
2236
+ // For example, `hsl(0 0% 0%)` would be classified as a length without this check.
2237
+ // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.
2238
+ lengthUnitRegex.test(value) && !colorFunctionRegex.test(value);
2239
+ const isNever = () => false;
2240
+ const isShadow = value => shadowRegex.test(value);
2241
+ const isImage = value => imageRegex.test(value);
2242
+ const isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);
2243
+ const isNamedContainerQuery = value => value.startsWith('@container') && (value[10] === '/' && value[11] !== undefined || value[11] === 's' && value[16] !== undefined && value.startsWith('-size/', 10) || value[11] === 'n' && value[18] !== undefined && value.startsWith('-normal/', 10));
2244
+ const isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);
2245
+ const isArbitraryValue = value => arbitraryValueRegex.test(value);
2246
+ const isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);
2247
+ const isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);
2248
+ const isArbitraryWeight = value => getIsArbitraryValue(value, isLabelWeight, isAny);
2249
+ const isArbitraryFamilyName = value => getIsArbitraryValue(value, isLabelFamilyName, isNever);
2250
+ const isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);
2251
+ const isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);
2252
+ const isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);
2253
+ const isArbitraryVariable = value => arbitraryVariableRegex.test(value);
2254
+ const isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);
2255
+ const isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);
2256
+ const isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);
2257
+ const isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);
2258
+ const isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);
2259
+ const isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);
2260
+ const isArbitraryVariableWeight = value => getIsArbitraryVariable(value, isLabelWeight, true);
2261
+ // Helpers
2262
+ const getIsArbitraryValue = (value, testLabel, testValue) => {
2263
+ const result = arbitraryValueRegex.exec(value);
2264
+ if (result) {
2265
+ if (result[1]) {
2266
+ return testLabel(result[1]);
2267
+ }
2268
+ return testValue(result[2]);
2269
+ }
2270
+ return false;
2271
+ };
2272
+ const getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {
2273
+ const result = arbitraryVariableRegex.exec(value);
2274
+ if (result) {
2275
+ if (result[1]) {
2276
+ return testLabel(result[1]);
2277
+ }
2278
+ return shouldMatchNoLabel;
2279
+ }
2280
+ return false;
2281
+ };
2282
+ // Labels
2283
+ const isLabelPosition = label => label === 'position' || label === 'percentage';
2284
+ const isLabelImage = label => label === 'image' || label === 'url';
2285
+ const isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';
2286
+ const isLabelLength = label => label === 'length';
2287
+ const isLabelNumber = label => label === 'number';
2288
+ const isLabelFamilyName = label => label === 'family-name';
2289
+ const isLabelWeight = label => label === 'number' || label === 'weight';
2290
+ const isLabelShadow = label => label === 'shadow';
2291
+ const getDefaultConfig = () => {
2292
+ /**
2293
+ * Theme getters for theme variable namespaces
2294
+ * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces
2295
+ */
2296
+ /***/
2297
+ const themeColor = fromTheme('color');
2298
+ const themeFont = fromTheme('font');
2299
+ const themeText = fromTheme('text');
2300
+ const themeFontWeight = fromTheme('font-weight');
2301
+ const themeTracking = fromTheme('tracking');
2302
+ const themeLeading = fromTheme('leading');
2303
+ const themeBreakpoint = fromTheme('breakpoint');
2304
+ const themeContainer = fromTheme('container');
2305
+ const themeSpacing = fromTheme('spacing');
2306
+ const themeRadius = fromTheme('radius');
2307
+ const themeShadow = fromTheme('shadow');
2308
+ const themeInsetShadow = fromTheme('inset-shadow');
2309
+ const themeTextShadow = fromTheme('text-shadow');
2310
+ const themeDropShadow = fromTheme('drop-shadow');
2311
+ const themeBlur = fromTheme('blur');
2312
+ const themePerspective = fromTheme('perspective');
2313
+ const themeAspect = fromTheme('aspect');
2314
+ const themeEase = fromTheme('ease');
2315
+ const themeAnimate = fromTheme('animate');
2316
+ /**
2317
+ * Helpers to avoid repeating the same scales
2318
+ *
2319
+ * We use functions that create a new array every time they're called instead of static arrays.
2320
+ * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.
2321
+ */
2322
+ /***/
2323
+ const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];
2324
+ const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',
2325
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
2326
+ 'left-top', 'top-right',
2327
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
2328
+ 'right-top', 'bottom-right',
2329
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
2330
+ 'right-bottom', 'bottom-left',
2331
+ // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
2332
+ 'left-bottom'];
2333
+ const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];
2334
+ const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];
2335
+ const scaleOverscroll = () => ['auto', 'contain', 'none'];
2336
+ const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];
2337
+ const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];
2338
+ const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];
2339
+ const scaleGridColRowStartAndEnd = () => ['auto', {
2340
+ span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]
2341
+ }, isInteger, isArbitraryVariable, isArbitraryValue];
2342
+ const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];
2343
+ const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];
2344
+ const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];
2345
+ const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];
2346
+ const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];
2347
+ const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];
2348
+ const scaleSizingInline = () => [isFraction, 'screen', 'full', 'dvw', 'lvw', 'svw', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];
2349
+ const scaleSizingBlock = () => [isFraction, 'screen', 'full', 'lh', 'dvh', 'lvh', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];
2350
+ const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];
2351
+ const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {
2352
+ position: [isArbitraryVariable, isArbitraryValue]
2353
+ }];
2354
+ const scaleBgRepeat = () => ['no-repeat', {
2355
+ repeat: ['', 'x', 'y', 'space', 'round']
2356
+ }];
2357
+ const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {
2358
+ size: [isArbitraryVariable, isArbitraryValue]
2359
+ }];
2360
+ const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];
2361
+ const scaleRadius = () => [
2362
+ // Deprecated since Tailwind CSS v4.0.0
2363
+ '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];
2364
+ const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];
2365
+ const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];
2366
+ const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];
2367
+ const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];
2368
+ const scaleBlur = () => [
2369
+ // Deprecated since Tailwind CSS v4.0.0
2370
+ '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];
2371
+ const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];
2372
+ const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];
2373
+ const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];
2374
+ const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];
2375
+ return {
2376
+ cacheSize: 500,
2377
+ theme: {
2378
+ animate: ['spin', 'ping', 'pulse', 'bounce'],
2379
+ aspect: ['video'],
2380
+ blur: [isTshirtSize],
2381
+ breakpoint: [isTshirtSize],
2382
+ color: [isAny],
2383
+ container: [isTshirtSize],
2384
+ 'drop-shadow': [isTshirtSize],
2385
+ ease: ['in', 'out', 'in-out'],
2386
+ font: [isAnyNonArbitrary],
2387
+ 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],
2388
+ 'inset-shadow': [isTshirtSize],
2389
+ leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],
2390
+ perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],
2391
+ radius: [isTshirtSize],
2392
+ shadow: [isTshirtSize],
2393
+ spacing: ['px', isNumber],
2394
+ text: [isTshirtSize],
2395
+ 'text-shadow': [isTshirtSize],
2396
+ tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']
2397
+ },
2398
+ classGroups: {
2399
+ // --------------
2400
+ // --- Layout ---
2401
+ // --------------
2402
+ /**
2403
+ * Aspect Ratio
2404
+ * @see https://tailwindcss.com/docs/aspect-ratio
2405
+ */
2406
+ aspect: [{
2407
+ aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]
2408
+ }],
2409
+ /**
2410
+ * Container
2411
+ * @see https://tailwindcss.com/docs/container
2412
+ * @deprecated since Tailwind CSS v4.0.0
2413
+ */
2414
+ container: ['container'],
2415
+ /**
2416
+ * Container Type
2417
+ * @see https://tailwindcss.com/docs/responsive-design#container-queries
2418
+ */
2419
+ 'container-type': [{
2420
+ '@container': ['', 'normal', 'size', isArbitraryVariable, isArbitraryValue]
2421
+ }],
2422
+ /**
2423
+ * Container Name
2424
+ * @see https://tailwindcss.com/docs/responsive-design#named-containers
2425
+ */
2426
+ 'container-named': [isNamedContainerQuery],
2427
+ /**
2428
+ * Columns
2429
+ * @see https://tailwindcss.com/docs/columns
2430
+ */
2431
+ columns: [{
2432
+ columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]
2433
+ }],
2434
+ /**
2435
+ * Break After
2436
+ * @see https://tailwindcss.com/docs/break-after
2437
+ */
2438
+ 'break-after': [{
2439
+ 'break-after': scaleBreak()
2440
+ }],
2441
+ /**
2442
+ * Break Before
2443
+ * @see https://tailwindcss.com/docs/break-before
2444
+ */
2445
+ 'break-before': [{
2446
+ 'break-before': scaleBreak()
2447
+ }],
2448
+ /**
2449
+ * Break Inside
2450
+ * @see https://tailwindcss.com/docs/break-inside
2451
+ */
2452
+ 'break-inside': [{
2453
+ 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']
2454
+ }],
2455
+ /**
2456
+ * Box Decoration Break
2457
+ * @see https://tailwindcss.com/docs/box-decoration-break
2458
+ */
2459
+ 'box-decoration': [{
2460
+ 'box-decoration': ['slice', 'clone']
2461
+ }],
2462
+ /**
2463
+ * Box Sizing
2464
+ * @see https://tailwindcss.com/docs/box-sizing
2465
+ */
2466
+ box: [{
2467
+ box: ['border', 'content']
2468
+ }],
2469
+ /**
2470
+ * Display
2471
+ * @see https://tailwindcss.com/docs/display
2472
+ */
2473
+ 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'],
2474
+ /**
2475
+ * Screen Reader Only
2476
+ * @see https://tailwindcss.com/docs/display#screen-reader-only
2477
+ */
2478
+ sr: ['sr-only', 'not-sr-only'],
2479
+ /**
2480
+ * Floats
2481
+ * @see https://tailwindcss.com/docs/float
2482
+ */
2483
+ float: [{
2484
+ float: ['right', 'left', 'none', 'start', 'end']
2485
+ }],
2486
+ /**
2487
+ * Clear
2488
+ * @see https://tailwindcss.com/docs/clear
2489
+ */
2490
+ clear: [{
2491
+ clear: ['left', 'right', 'both', 'none', 'start', 'end']
2492
+ }],
2493
+ /**
2494
+ * Isolation
2495
+ * @see https://tailwindcss.com/docs/isolation
2496
+ */
2497
+ isolation: ['isolate', 'isolation-auto'],
2498
+ /**
2499
+ * Object Fit
2500
+ * @see https://tailwindcss.com/docs/object-fit
2501
+ */
2502
+ 'object-fit': [{
2503
+ object: ['contain', 'cover', 'fill', 'none', 'scale-down']
2504
+ }],
2505
+ /**
2506
+ * Object Position
2507
+ * @see https://tailwindcss.com/docs/object-position
2508
+ */
2509
+ 'object-position': [{
2510
+ object: scalePositionWithArbitrary()
2511
+ }],
2512
+ /**
2513
+ * Overflow
2514
+ * @see https://tailwindcss.com/docs/overflow
2515
+ */
2516
+ overflow: [{
2517
+ overflow: scaleOverflow()
2518
+ }],
2519
+ /**
2520
+ * Overflow X
2521
+ * @see https://tailwindcss.com/docs/overflow
2522
+ */
2523
+ 'overflow-x': [{
2524
+ 'overflow-x': scaleOverflow()
2525
+ }],
2526
+ /**
2527
+ * Overflow Y
2528
+ * @see https://tailwindcss.com/docs/overflow
2529
+ */
2530
+ 'overflow-y': [{
2531
+ 'overflow-y': scaleOverflow()
2532
+ }],
2533
+ /**
2534
+ * Overscroll Behavior
2535
+ * @see https://tailwindcss.com/docs/overscroll-behavior
2536
+ */
2537
+ overscroll: [{
2538
+ overscroll: scaleOverscroll()
2539
+ }],
2540
+ /**
2541
+ * Overscroll Behavior X
2542
+ * @see https://tailwindcss.com/docs/overscroll-behavior
2543
+ */
2544
+ 'overscroll-x': [{
2545
+ 'overscroll-x': scaleOverscroll()
2546
+ }],
2547
+ /**
2548
+ * Overscroll Behavior Y
2549
+ * @see https://tailwindcss.com/docs/overscroll-behavior
2550
+ */
2551
+ 'overscroll-y': [{
2552
+ 'overscroll-y': scaleOverscroll()
2553
+ }],
2554
+ /**
2555
+ * Position
2556
+ * @see https://tailwindcss.com/docs/position
2557
+ */
2558
+ position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],
2559
+ /**
2560
+ * Inset
2561
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2562
+ */
2563
+ inset: [{
2564
+ inset: scaleInset()
2565
+ }],
2566
+ /**
2567
+ * Inset Inline
2568
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2569
+ */
2570
+ 'inset-x': [{
2571
+ 'inset-x': scaleInset()
2572
+ }],
2573
+ /**
2574
+ * Inset Block
2575
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2576
+ */
2577
+ 'inset-y': [{
2578
+ 'inset-y': scaleInset()
2579
+ }],
2580
+ /**
2581
+ * Inset Inline Start
2582
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2583
+ * @todo class group will be renamed to `inset-s` in next major release
2584
+ */
2585
+ start: [{
2586
+ 'inset-s': scaleInset(),
2587
+ /**
2588
+ * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-s-*` utilities.
2589
+ * @see https://github.com/tailwindlabs/tailwindcss/pull/19613
2590
+ */
2591
+ start: scaleInset()
2592
+ }],
2593
+ /**
2594
+ * Inset Inline End
2595
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2596
+ * @todo class group will be renamed to `inset-e` in next major release
2597
+ */
2598
+ end: [{
2599
+ 'inset-e': scaleInset(),
2600
+ /**
2601
+ * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-e-*` utilities.
2602
+ * @see https://github.com/tailwindlabs/tailwindcss/pull/19613
2603
+ */
2604
+ end: scaleInset()
2605
+ }],
2606
+ /**
2607
+ * Inset Block Start
2608
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2609
+ */
2610
+ 'inset-bs': [{
2611
+ 'inset-bs': scaleInset()
2612
+ }],
2613
+ /**
2614
+ * Inset Block End
2615
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2616
+ */
2617
+ 'inset-be': [{
2618
+ 'inset-be': scaleInset()
2619
+ }],
2620
+ /**
2621
+ * Top
2622
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2623
+ */
2624
+ top: [{
2625
+ top: scaleInset()
2626
+ }],
2627
+ /**
2628
+ * Right
2629
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2630
+ */
2631
+ right: [{
2632
+ right: scaleInset()
2633
+ }],
2634
+ /**
2635
+ * Bottom
2636
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2637
+ */
2638
+ bottom: [{
2639
+ bottom: scaleInset()
2640
+ }],
2641
+ /**
2642
+ * Left
2643
+ * @see https://tailwindcss.com/docs/top-right-bottom-left
2644
+ */
2645
+ left: [{
2646
+ left: scaleInset()
2647
+ }],
2648
+ /**
2649
+ * Visibility
2650
+ * @see https://tailwindcss.com/docs/visibility
2651
+ */
2652
+ visibility: ['visible', 'invisible', 'collapse'],
2653
+ /**
2654
+ * Z-Index
2655
+ * @see https://tailwindcss.com/docs/z-index
2656
+ */
2657
+ z: [{
2658
+ z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]
2659
+ }],
2660
+ // ------------------------
2661
+ // --- Flexbox and Grid ---
2662
+ // ------------------------
2663
+ /**
2664
+ * Flex Basis
2665
+ * @see https://tailwindcss.com/docs/flex-basis
2666
+ */
2667
+ basis: [{
2668
+ basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]
2669
+ }],
2670
+ /**
2671
+ * Flex Direction
2672
+ * @see https://tailwindcss.com/docs/flex-direction
2673
+ */
2674
+ 'flex-direction': [{
2675
+ flex: ['row', 'row-reverse', 'col', 'col-reverse']
2676
+ }],
2677
+ /**
2678
+ * Flex Wrap
2679
+ * @see https://tailwindcss.com/docs/flex-wrap
2680
+ */
2681
+ 'flex-wrap': [{
2682
+ flex: ['nowrap', 'wrap', 'wrap-reverse']
2683
+ }],
2684
+ /**
2685
+ * Flex
2686
+ * @see https://tailwindcss.com/docs/flex
2687
+ */
2688
+ flex: [{
2689
+ flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]
2690
+ }],
2691
+ /**
2692
+ * Flex Grow
2693
+ * @see https://tailwindcss.com/docs/flex-grow
2694
+ */
2695
+ grow: [{
2696
+ grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]
2697
+ }],
2698
+ /**
2699
+ * Flex Shrink
2700
+ * @see https://tailwindcss.com/docs/flex-shrink
2701
+ */
2702
+ shrink: [{
2703
+ shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]
2704
+ }],
2705
+ /**
2706
+ * Order
2707
+ * @see https://tailwindcss.com/docs/order
2708
+ */
2709
+ order: [{
2710
+ order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]
2711
+ }],
2712
+ /**
2713
+ * Grid Template Columns
2714
+ * @see https://tailwindcss.com/docs/grid-template-columns
2715
+ */
2716
+ 'grid-cols': [{
2717
+ 'grid-cols': scaleGridTemplateColsRows()
2718
+ }],
2719
+ /**
2720
+ * Grid Column Start / End
2721
+ * @see https://tailwindcss.com/docs/grid-column
2722
+ */
2723
+ 'col-start-end': [{
2724
+ col: scaleGridColRowStartAndEnd()
2725
+ }],
2726
+ /**
2727
+ * Grid Column Start
2728
+ * @see https://tailwindcss.com/docs/grid-column
2729
+ */
2730
+ 'col-start': [{
2731
+ 'col-start': scaleGridColRowStartOrEnd()
2732
+ }],
2733
+ /**
2734
+ * Grid Column End
2735
+ * @see https://tailwindcss.com/docs/grid-column
2736
+ */
2737
+ 'col-end': [{
2738
+ 'col-end': scaleGridColRowStartOrEnd()
2739
+ }],
2740
+ /**
2741
+ * Grid Template Rows
2742
+ * @see https://tailwindcss.com/docs/grid-template-rows
2743
+ */
2744
+ 'grid-rows': [{
2745
+ 'grid-rows': scaleGridTemplateColsRows()
2746
+ }],
2747
+ /**
2748
+ * Grid Row Start / End
2749
+ * @see https://tailwindcss.com/docs/grid-row
2750
+ */
2751
+ 'row-start-end': [{
2752
+ row: scaleGridColRowStartAndEnd()
2753
+ }],
2754
+ /**
2755
+ * Grid Row Start
2756
+ * @see https://tailwindcss.com/docs/grid-row
2757
+ */
2758
+ 'row-start': [{
2759
+ 'row-start': scaleGridColRowStartOrEnd()
2760
+ }],
2761
+ /**
2762
+ * Grid Row End
2763
+ * @see https://tailwindcss.com/docs/grid-row
2764
+ */
2765
+ 'row-end': [{
2766
+ 'row-end': scaleGridColRowStartOrEnd()
2767
+ }],
2768
+ /**
2769
+ * Grid Auto Flow
2770
+ * @see https://tailwindcss.com/docs/grid-auto-flow
2771
+ */
2772
+ 'grid-flow': [{
2773
+ 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']
2774
+ }],
2775
+ /**
2776
+ * Grid Auto Columns
2777
+ * @see https://tailwindcss.com/docs/grid-auto-columns
2778
+ */
2779
+ 'auto-cols': [{
2780
+ 'auto-cols': scaleGridAutoColsRows()
2781
+ }],
2782
+ /**
2783
+ * Grid Auto Rows
2784
+ * @see https://tailwindcss.com/docs/grid-auto-rows
2785
+ */
2786
+ 'auto-rows': [{
2787
+ 'auto-rows': scaleGridAutoColsRows()
2788
+ }],
2789
+ /**
2790
+ * Gap
2791
+ * @see https://tailwindcss.com/docs/gap
2792
+ */
2793
+ gap: [{
2794
+ gap: scaleUnambiguousSpacing()
2795
+ }],
2796
+ /**
2797
+ * Gap X
2798
+ * @see https://tailwindcss.com/docs/gap
2799
+ */
2800
+ 'gap-x': [{
2801
+ 'gap-x': scaleUnambiguousSpacing()
2802
+ }],
2803
+ /**
2804
+ * Gap Y
2805
+ * @see https://tailwindcss.com/docs/gap
2806
+ */
2807
+ 'gap-y': [{
2808
+ 'gap-y': scaleUnambiguousSpacing()
2809
+ }],
2810
+ /**
2811
+ * Justify Content
2812
+ * @see https://tailwindcss.com/docs/justify-content
2813
+ */
2814
+ 'justify-content': [{
2815
+ justify: [...scaleAlignPrimaryAxis(), 'normal']
2816
+ }],
2817
+ /**
2818
+ * Justify Items
2819
+ * @see https://tailwindcss.com/docs/justify-items
2820
+ */
2821
+ 'justify-items': [{
2822
+ 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']
2823
+ }],
2824
+ /**
2825
+ * Justify Self
2826
+ * @see https://tailwindcss.com/docs/justify-self
2827
+ */
2828
+ 'justify-self': [{
2829
+ 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]
2830
+ }],
2831
+ /**
2832
+ * Align Content
2833
+ * @see https://tailwindcss.com/docs/align-content
2834
+ */
2835
+ 'align-content': [{
2836
+ content: ['normal', ...scaleAlignPrimaryAxis()]
2837
+ }],
2838
+ /**
2839
+ * Align Items
2840
+ * @see https://tailwindcss.com/docs/align-items
2841
+ */
2842
+ 'align-items': [{
2843
+ items: [...scaleAlignSecondaryAxis(), {
2844
+ baseline: ['', 'last']
2845
+ }]
2846
+ }],
2847
+ /**
2848
+ * Align Self
2849
+ * @see https://tailwindcss.com/docs/align-self
2850
+ */
2851
+ 'align-self': [{
2852
+ self: ['auto', ...scaleAlignSecondaryAxis(), {
2853
+ baseline: ['', 'last']
2854
+ }]
2855
+ }],
2856
+ /**
2857
+ * Place Content
2858
+ * @see https://tailwindcss.com/docs/place-content
2859
+ */
2860
+ 'place-content': [{
2861
+ 'place-content': scaleAlignPrimaryAxis()
2862
+ }],
2863
+ /**
2864
+ * Place Items
2865
+ * @see https://tailwindcss.com/docs/place-items
2866
+ */
2867
+ 'place-items': [{
2868
+ 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']
2869
+ }],
2870
+ /**
2871
+ * Place Self
2872
+ * @see https://tailwindcss.com/docs/place-self
2873
+ */
2874
+ 'place-self': [{
2875
+ 'place-self': ['auto', ...scaleAlignSecondaryAxis()]
2876
+ }],
2877
+ // Spacing
2878
+ /**
2879
+ * Padding
2880
+ * @see https://tailwindcss.com/docs/padding
2881
+ */
2882
+ p: [{
2883
+ p: scaleUnambiguousSpacing()
2884
+ }],
2885
+ /**
2886
+ * Padding Inline
2887
+ * @see https://tailwindcss.com/docs/padding
2888
+ */
2889
+ px: [{
2890
+ px: scaleUnambiguousSpacing()
2891
+ }],
2892
+ /**
2893
+ * Padding Block
2894
+ * @see https://tailwindcss.com/docs/padding
2895
+ */
2896
+ py: [{
2897
+ py: scaleUnambiguousSpacing()
2898
+ }],
2899
+ /**
2900
+ * Padding Inline Start
2901
+ * @see https://tailwindcss.com/docs/padding
2902
+ */
2903
+ ps: [{
2904
+ ps: scaleUnambiguousSpacing()
2905
+ }],
2906
+ /**
2907
+ * Padding Inline End
2908
+ * @see https://tailwindcss.com/docs/padding
2909
+ */
2910
+ pe: [{
2911
+ pe: scaleUnambiguousSpacing()
2912
+ }],
2913
+ /**
2914
+ * Padding Block Start
2915
+ * @see https://tailwindcss.com/docs/padding
2916
+ */
2917
+ pbs: [{
2918
+ pbs: scaleUnambiguousSpacing()
2919
+ }],
2920
+ /**
2921
+ * Padding Block End
2922
+ * @see https://tailwindcss.com/docs/padding
2923
+ */
2924
+ pbe: [{
2925
+ pbe: scaleUnambiguousSpacing()
2926
+ }],
2927
+ /**
2928
+ * Padding Top
2929
+ * @see https://tailwindcss.com/docs/padding
2930
+ */
2931
+ pt: [{
2932
+ pt: scaleUnambiguousSpacing()
2933
+ }],
2934
+ /**
2935
+ * Padding Right
2936
+ * @see https://tailwindcss.com/docs/padding
2937
+ */
2938
+ pr: [{
2939
+ pr: scaleUnambiguousSpacing()
2940
+ }],
2941
+ /**
2942
+ * Padding Bottom
2943
+ * @see https://tailwindcss.com/docs/padding
2944
+ */
2945
+ pb: [{
2946
+ pb: scaleUnambiguousSpacing()
2947
+ }],
2948
+ /**
2949
+ * Padding Left
2950
+ * @see https://tailwindcss.com/docs/padding
2951
+ */
2952
+ pl: [{
2953
+ pl: scaleUnambiguousSpacing()
2954
+ }],
2955
+ /**
2956
+ * Margin
2957
+ * @see https://tailwindcss.com/docs/margin
2958
+ */
2959
+ m: [{
2960
+ m: scaleMargin()
2961
+ }],
2962
+ /**
2963
+ * Margin Inline
2964
+ * @see https://tailwindcss.com/docs/margin
2965
+ */
2966
+ mx: [{
2967
+ mx: scaleMargin()
2968
+ }],
2969
+ /**
2970
+ * Margin Block
2971
+ * @see https://tailwindcss.com/docs/margin
2972
+ */
2973
+ my: [{
2974
+ my: scaleMargin()
2975
+ }],
2976
+ /**
2977
+ * Margin Inline Start
2978
+ * @see https://tailwindcss.com/docs/margin
2979
+ */
2980
+ ms: [{
2981
+ ms: scaleMargin()
2982
+ }],
2983
+ /**
2984
+ * Margin Inline End
2985
+ * @see https://tailwindcss.com/docs/margin
2986
+ */
2987
+ me: [{
2988
+ me: scaleMargin()
2989
+ }],
2990
+ /**
2991
+ * Margin Block Start
2992
+ * @see https://tailwindcss.com/docs/margin
2993
+ */
2994
+ mbs: [{
2995
+ mbs: scaleMargin()
2996
+ }],
2997
+ /**
2998
+ * Margin Block End
2999
+ * @see https://tailwindcss.com/docs/margin
3000
+ */
3001
+ mbe: [{
3002
+ mbe: scaleMargin()
3003
+ }],
3004
+ /**
3005
+ * Margin Top
3006
+ * @see https://tailwindcss.com/docs/margin
3007
+ */
3008
+ mt: [{
3009
+ mt: scaleMargin()
3010
+ }],
3011
+ /**
3012
+ * Margin Right
3013
+ * @see https://tailwindcss.com/docs/margin
3014
+ */
3015
+ mr: [{
3016
+ mr: scaleMargin()
3017
+ }],
3018
+ /**
3019
+ * Margin Bottom
3020
+ * @see https://tailwindcss.com/docs/margin
3021
+ */
3022
+ mb: [{
3023
+ mb: scaleMargin()
3024
+ }],
3025
+ /**
3026
+ * Margin Left
3027
+ * @see https://tailwindcss.com/docs/margin
3028
+ */
3029
+ ml: [{
3030
+ ml: scaleMargin()
3031
+ }],
3032
+ /**
3033
+ * Space Between X
3034
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
3035
+ */
3036
+ 'space-x': [{
3037
+ 'space-x': scaleUnambiguousSpacing()
3038
+ }],
3039
+ /**
3040
+ * Space Between X Reverse
3041
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
3042
+ */
3043
+ 'space-x-reverse': ['space-x-reverse'],
3044
+ /**
3045
+ * Space Between Y
3046
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
3047
+ */
3048
+ 'space-y': [{
3049
+ 'space-y': scaleUnambiguousSpacing()
3050
+ }],
3051
+ /**
3052
+ * Space Between Y Reverse
3053
+ * @see https://tailwindcss.com/docs/margin#adding-space-between-children
3054
+ */
3055
+ 'space-y-reverse': ['space-y-reverse'],
3056
+ // --------------
3057
+ // --- Sizing ---
3058
+ // --------------
3059
+ /**
3060
+ * Size
3061
+ * @see https://tailwindcss.com/docs/width#setting-both-width-and-height
3062
+ */
3063
+ size: [{
3064
+ size: scaleSizing()
3065
+ }],
3066
+ /**
3067
+ * Inline Size
3068
+ * @see https://tailwindcss.com/docs/width
3069
+ */
3070
+ 'inline-size': [{
3071
+ inline: ['auto', ...scaleSizingInline()]
3072
+ }],
3073
+ /**
3074
+ * Min-Inline Size
3075
+ * @see https://tailwindcss.com/docs/min-width
3076
+ */
3077
+ 'min-inline-size': [{
3078
+ 'min-inline': ['auto', ...scaleSizingInline()]
3079
+ }],
3080
+ /**
3081
+ * Max-Inline Size
3082
+ * @see https://tailwindcss.com/docs/max-width
3083
+ */
3084
+ 'max-inline-size': [{
3085
+ 'max-inline': ['none', ...scaleSizingInline()]
3086
+ }],
3087
+ /**
3088
+ * Block Size
3089
+ * @see https://tailwindcss.com/docs/height
3090
+ */
3091
+ 'block-size': [{
3092
+ block: ['auto', ...scaleSizingBlock()]
3093
+ }],
3094
+ /**
3095
+ * Min-Block Size
3096
+ * @see https://tailwindcss.com/docs/min-height
3097
+ */
3098
+ 'min-block-size': [{
3099
+ 'min-block': ['auto', ...scaleSizingBlock()]
3100
+ }],
3101
+ /**
3102
+ * Max-Block Size
3103
+ * @see https://tailwindcss.com/docs/max-height
3104
+ */
3105
+ 'max-block-size': [{
3106
+ 'max-block': ['none', ...scaleSizingBlock()]
3107
+ }],
3108
+ /**
3109
+ * Width
3110
+ * @see https://tailwindcss.com/docs/width
3111
+ */
3112
+ w: [{
3113
+ w: [themeContainer, 'screen', ...scaleSizing()]
3114
+ }],
3115
+ /**
3116
+ * Min-Width
3117
+ * @see https://tailwindcss.com/docs/min-width
3118
+ */
3119
+ 'min-w': [{
3120
+ 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
3121
+ 'none', ...scaleSizing()]
3122
+ }],
3123
+ /**
3124
+ * Max-Width
3125
+ * @see https://tailwindcss.com/docs/max-width
3126
+ */
3127
+ 'max-w': [{
3128
+ 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
3129
+ 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
3130
+ {
3131
+ screen: [themeBreakpoint]
3132
+ }, ...scaleSizing()]
3133
+ }],
3134
+ /**
3135
+ * Height
3136
+ * @see https://tailwindcss.com/docs/height
3137
+ */
3138
+ h: [{
3139
+ h: ['screen', 'lh', ...scaleSizing()]
3140
+ }],
3141
+ /**
3142
+ * Min-Height
3143
+ * @see https://tailwindcss.com/docs/min-height
3144
+ */
3145
+ 'min-h': [{
3146
+ 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]
3147
+ }],
3148
+ /**
3149
+ * Max-Height
3150
+ * @see https://tailwindcss.com/docs/max-height
3151
+ */
3152
+ 'max-h': [{
3153
+ 'max-h': ['screen', 'lh', ...scaleSizing()]
3154
+ }],
3155
+ // ------------------
3156
+ // --- Typography ---
3157
+ // ------------------
3158
+ /**
3159
+ * Font Size
3160
+ * @see https://tailwindcss.com/docs/font-size
3161
+ */
3162
+ 'font-size': [{
3163
+ text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]
3164
+ }],
3165
+ /**
3166
+ * Font Smoothing
3167
+ * @see https://tailwindcss.com/docs/font-smoothing
3168
+ */
3169
+ 'font-smoothing': ['antialiased', 'subpixel-antialiased'],
3170
+ /**
3171
+ * Font Style
3172
+ * @see https://tailwindcss.com/docs/font-style
3173
+ */
3174
+ 'font-style': ['italic', 'not-italic'],
3175
+ /**
3176
+ * Font Weight
3177
+ * @see https://tailwindcss.com/docs/font-weight
3178
+ */
3179
+ 'font-weight': [{
3180
+ font: [themeFontWeight, isArbitraryVariableWeight, isArbitraryWeight]
3181
+ }],
3182
+ /**
3183
+ * Font Stretch
3184
+ * @see https://tailwindcss.com/docs/font-stretch
3185
+ */
3186
+ 'font-stretch': [{
3187
+ 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]
3188
+ }],
3189
+ /**
3190
+ * Font Family
3191
+ * @see https://tailwindcss.com/docs/font-family
3192
+ */
3193
+ 'font-family': [{
3194
+ font: [isArbitraryVariableFamilyName, isArbitraryFamilyName, themeFont]
3195
+ }],
3196
+ /**
3197
+ * Font Feature Settings
3198
+ * @see https://tailwindcss.com/docs/font-feature-settings
3199
+ */
3200
+ 'font-features': [{
3201
+ 'font-features': [isArbitraryValue]
3202
+ }],
3203
+ /**
3204
+ * Font Variant Numeric
3205
+ * @see https://tailwindcss.com/docs/font-variant-numeric
3206
+ */
3207
+ 'fvn-normal': ['normal-nums'],
3208
+ /**
3209
+ * Font Variant Numeric
3210
+ * @see https://tailwindcss.com/docs/font-variant-numeric
3211
+ */
3212
+ 'fvn-ordinal': ['ordinal'],
3213
+ /**
3214
+ * Font Variant Numeric
3215
+ * @see https://tailwindcss.com/docs/font-variant-numeric
3216
+ */
3217
+ 'fvn-slashed-zero': ['slashed-zero'],
3218
+ /**
3219
+ * Font Variant Numeric
3220
+ * @see https://tailwindcss.com/docs/font-variant-numeric
3221
+ */
3222
+ 'fvn-figure': ['lining-nums', 'oldstyle-nums'],
3223
+ /**
3224
+ * Font Variant Numeric
3225
+ * @see https://tailwindcss.com/docs/font-variant-numeric
3226
+ */
3227
+ 'fvn-spacing': ['proportional-nums', 'tabular-nums'],
3228
+ /**
3229
+ * Font Variant Numeric
3230
+ * @see https://tailwindcss.com/docs/font-variant-numeric
3231
+ */
3232
+ 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],
3233
+ /**
3234
+ * Letter Spacing
3235
+ * @see https://tailwindcss.com/docs/letter-spacing
3236
+ */
3237
+ tracking: [{
3238
+ tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]
3239
+ }],
3240
+ /**
3241
+ * Line Clamp
3242
+ * @see https://tailwindcss.com/docs/line-clamp
3243
+ */
3244
+ 'line-clamp': [{
3245
+ 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]
3246
+ }],
3247
+ /**
3248
+ * Line Height
3249
+ * @see https://tailwindcss.com/docs/line-height
3250
+ */
3251
+ leading: [{
3252
+ leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
3253
+ themeLeading, ...scaleUnambiguousSpacing()]
3254
+ }],
3255
+ /**
3256
+ * List Style Image
3257
+ * @see https://tailwindcss.com/docs/list-style-image
3258
+ */
3259
+ 'list-image': [{
3260
+ 'list-image': ['none', isArbitraryVariable, isArbitraryValue]
3261
+ }],
3262
+ /**
3263
+ * List Style Position
3264
+ * @see https://tailwindcss.com/docs/list-style-position
3265
+ */
3266
+ 'list-style-position': [{
3267
+ list: ['inside', 'outside']
3268
+ }],
3269
+ /**
3270
+ * List Style Type
3271
+ * @see https://tailwindcss.com/docs/list-style-type
3272
+ */
3273
+ 'list-style-type': [{
3274
+ list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]
3275
+ }],
3276
+ /**
3277
+ * Text Alignment
3278
+ * @see https://tailwindcss.com/docs/text-align
3279
+ */
3280
+ 'text-alignment': [{
3281
+ text: ['left', 'center', 'right', 'justify', 'start', 'end']
3282
+ }],
3283
+ /**
3284
+ * Placeholder Color
3285
+ * @deprecated since Tailwind CSS v3.0.0
3286
+ * @see https://v3.tailwindcss.com/docs/placeholder-color
3287
+ */
3288
+ 'placeholder-color': [{
3289
+ placeholder: scaleColor()
3290
+ }],
3291
+ /**
3292
+ * Text Color
3293
+ * @see https://tailwindcss.com/docs/text-color
3294
+ */
3295
+ 'text-color': [{
3296
+ text: scaleColor()
3297
+ }],
3298
+ /**
3299
+ * Text Decoration
3300
+ * @see https://tailwindcss.com/docs/text-decoration
3301
+ */
3302
+ 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],
3303
+ /**
3304
+ * Text Decoration Style
3305
+ * @see https://tailwindcss.com/docs/text-decoration-style
3306
+ */
3307
+ 'text-decoration-style': [{
3308
+ decoration: [...scaleLineStyle(), 'wavy']
3309
+ }],
3310
+ /**
3311
+ * Text Decoration Thickness
3312
+ * @see https://tailwindcss.com/docs/text-decoration-thickness
3313
+ */
3314
+ 'text-decoration-thickness': [{
3315
+ decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]
3316
+ }],
3317
+ /**
3318
+ * Text Decoration Color
3319
+ * @see https://tailwindcss.com/docs/text-decoration-color
3320
+ */
3321
+ 'text-decoration-color': [{
3322
+ decoration: scaleColor()
3323
+ }],
3324
+ /**
3325
+ * Text Underline Offset
3326
+ * @see https://tailwindcss.com/docs/text-underline-offset
3327
+ */
3328
+ 'underline-offset': [{
3329
+ 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]
3330
+ }],
3331
+ /**
3332
+ * Text Transform
3333
+ * @see https://tailwindcss.com/docs/text-transform
3334
+ */
3335
+ 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],
3336
+ /**
3337
+ * Text Overflow
3338
+ * @see https://tailwindcss.com/docs/text-overflow
3339
+ */
3340
+ 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],
3341
+ /**
3342
+ * Text Wrap
3343
+ * @see https://tailwindcss.com/docs/text-wrap
3344
+ */
3345
+ 'text-wrap': [{
3346
+ text: ['wrap', 'nowrap', 'balance', 'pretty']
3347
+ }],
3348
+ /**
3349
+ * Text Indent
3350
+ * @see https://tailwindcss.com/docs/text-indent
3351
+ */
3352
+ indent: [{
3353
+ indent: scaleUnambiguousSpacing()
3354
+ }],
3355
+ /**
3356
+ * Tab Size
3357
+ * @see https://tailwindcss.com/docs/tab-size
3358
+ */
3359
+ 'tab-size': [{
3360
+ tab: [isInteger, isArbitraryVariable, isArbitraryValue]
3361
+ }],
3362
+ /**
3363
+ * Vertical Alignment
3364
+ * @see https://tailwindcss.com/docs/vertical-align
3365
+ */
3366
+ 'vertical-align': [{
3367
+ align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]
3368
+ }],
3369
+ /**
3370
+ * Whitespace
3371
+ * @see https://tailwindcss.com/docs/whitespace
3372
+ */
3373
+ whitespace: [{
3374
+ whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']
3375
+ }],
3376
+ /**
3377
+ * Word Break
3378
+ * @see https://tailwindcss.com/docs/word-break
3379
+ */
3380
+ break: [{
3381
+ break: ['normal', 'words', 'all', 'keep']
3382
+ }],
3383
+ /**
3384
+ * Overflow Wrap
3385
+ * @see https://tailwindcss.com/docs/overflow-wrap
3386
+ */
3387
+ wrap: [{
3388
+ wrap: ['break-word', 'anywhere', 'normal']
3389
+ }],
3390
+ /**
3391
+ * Hyphens
3392
+ * @see https://tailwindcss.com/docs/hyphens
3393
+ */
3394
+ hyphens: [{
3395
+ hyphens: ['none', 'manual', 'auto']
3396
+ }],
3397
+ /**
3398
+ * Content
3399
+ * @see https://tailwindcss.com/docs/content
3400
+ */
3401
+ content: [{
3402
+ content: ['none', isArbitraryVariable, isArbitraryValue]
3403
+ }],
3404
+ // -------------------
3405
+ // --- Backgrounds ---
3406
+ // -------------------
3407
+ /**
3408
+ * Background Attachment
3409
+ * @see https://tailwindcss.com/docs/background-attachment
3410
+ */
3411
+ 'bg-attachment': [{
3412
+ bg: ['fixed', 'local', 'scroll']
3413
+ }],
3414
+ /**
3415
+ * Background Clip
3416
+ * @see https://tailwindcss.com/docs/background-clip
3417
+ */
3418
+ 'bg-clip': [{
3419
+ 'bg-clip': ['border', 'padding', 'content', 'text']
3420
+ }],
3421
+ /**
3422
+ * Background Origin
3423
+ * @see https://tailwindcss.com/docs/background-origin
3424
+ */
3425
+ 'bg-origin': [{
3426
+ 'bg-origin': ['border', 'padding', 'content']
3427
+ }],
3428
+ /**
3429
+ * Background Position
3430
+ * @see https://tailwindcss.com/docs/background-position
3431
+ */
3432
+ 'bg-position': [{
3433
+ bg: scaleBgPosition()
3434
+ }],
3435
+ /**
3436
+ * Background Repeat
3437
+ * @see https://tailwindcss.com/docs/background-repeat
3438
+ */
3439
+ 'bg-repeat': [{
3440
+ bg: scaleBgRepeat()
3441
+ }],
3442
+ /**
3443
+ * Background Size
3444
+ * @see https://tailwindcss.com/docs/background-size
3445
+ */
3446
+ 'bg-size': [{
3447
+ bg: scaleBgSize()
3448
+ }],
3449
+ /**
3450
+ * Background Image
3451
+ * @see https://tailwindcss.com/docs/background-image
3452
+ */
3453
+ 'bg-image': [{
3454
+ bg: ['none', {
3455
+ linear: [{
3456
+ to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']
3457
+ }, isInteger, isArbitraryVariable, isArbitraryValue],
3458
+ radial: ['', isArbitraryVariable, isArbitraryValue],
3459
+ conic: [isInteger, isArbitraryVariable, isArbitraryValue]
3460
+ }, isArbitraryVariableImage, isArbitraryImage]
3461
+ }],
3462
+ /**
3463
+ * Background Color
3464
+ * @see https://tailwindcss.com/docs/background-color
3465
+ */
3466
+ 'bg-color': [{
3467
+ bg: scaleColor()
3468
+ }],
3469
+ /**
3470
+ * Gradient Color Stops From Position
3471
+ * @see https://tailwindcss.com/docs/gradient-color-stops
3472
+ */
3473
+ 'gradient-from-pos': [{
3474
+ from: scaleGradientStopPosition()
3475
+ }],
3476
+ /**
3477
+ * Gradient Color Stops Via Position
3478
+ * @see https://tailwindcss.com/docs/gradient-color-stops
3479
+ */
3480
+ 'gradient-via-pos': [{
3481
+ via: scaleGradientStopPosition()
3482
+ }],
3483
+ /**
3484
+ * Gradient Color Stops To Position
3485
+ * @see https://tailwindcss.com/docs/gradient-color-stops
3486
+ */
3487
+ 'gradient-to-pos': [{
3488
+ to: scaleGradientStopPosition()
3489
+ }],
3490
+ /**
3491
+ * Gradient Color Stops From
3492
+ * @see https://tailwindcss.com/docs/gradient-color-stops
3493
+ */
3494
+ 'gradient-from': [{
3495
+ from: scaleColor()
3496
+ }],
3497
+ /**
3498
+ * Gradient Color Stops Via
3499
+ * @see https://tailwindcss.com/docs/gradient-color-stops
3500
+ */
3501
+ 'gradient-via': [{
3502
+ via: scaleColor()
3503
+ }],
3504
+ /**
3505
+ * Gradient Color Stops To
3506
+ * @see https://tailwindcss.com/docs/gradient-color-stops
3507
+ */
3508
+ 'gradient-to': [{
3509
+ to: scaleColor()
3510
+ }],
3511
+ // ---------------
3512
+ // --- Borders ---
3513
+ // ---------------
3514
+ /**
3515
+ * Border Radius
3516
+ * @see https://tailwindcss.com/docs/border-radius
3517
+ */
3518
+ rounded: [{
3519
+ rounded: scaleRadius()
3520
+ }],
3521
+ /**
3522
+ * Border Radius Start
3523
+ * @see https://tailwindcss.com/docs/border-radius
3524
+ */
3525
+ 'rounded-s': [{
3526
+ 'rounded-s': scaleRadius()
3527
+ }],
3528
+ /**
3529
+ * Border Radius End
3530
+ * @see https://tailwindcss.com/docs/border-radius
3531
+ */
3532
+ 'rounded-e': [{
3533
+ 'rounded-e': scaleRadius()
3534
+ }],
3535
+ /**
3536
+ * Border Radius Top
3537
+ * @see https://tailwindcss.com/docs/border-radius
3538
+ */
3539
+ 'rounded-t': [{
3540
+ 'rounded-t': scaleRadius()
3541
+ }],
3542
+ /**
3543
+ * Border Radius Right
3544
+ * @see https://tailwindcss.com/docs/border-radius
3545
+ */
3546
+ 'rounded-r': [{
3547
+ 'rounded-r': scaleRadius()
3548
+ }],
3549
+ /**
3550
+ * Border Radius Bottom
3551
+ * @see https://tailwindcss.com/docs/border-radius
3552
+ */
3553
+ 'rounded-b': [{
3554
+ 'rounded-b': scaleRadius()
3555
+ }],
3556
+ /**
3557
+ * Border Radius Left
3558
+ * @see https://tailwindcss.com/docs/border-radius
3559
+ */
3560
+ 'rounded-l': [{
3561
+ 'rounded-l': scaleRadius()
3562
+ }],
3563
+ /**
3564
+ * Border Radius Start Start
3565
+ * @see https://tailwindcss.com/docs/border-radius
3566
+ */
3567
+ 'rounded-ss': [{
3568
+ 'rounded-ss': scaleRadius()
3569
+ }],
3570
+ /**
3571
+ * Border Radius Start End
3572
+ * @see https://tailwindcss.com/docs/border-radius
3573
+ */
3574
+ 'rounded-se': [{
3575
+ 'rounded-se': scaleRadius()
3576
+ }],
3577
+ /**
3578
+ * Border Radius End End
3579
+ * @see https://tailwindcss.com/docs/border-radius
3580
+ */
3581
+ 'rounded-ee': [{
3582
+ 'rounded-ee': scaleRadius()
3583
+ }],
3584
+ /**
3585
+ * Border Radius End Start
3586
+ * @see https://tailwindcss.com/docs/border-radius
3587
+ */
3588
+ 'rounded-es': [{
3589
+ 'rounded-es': scaleRadius()
3590
+ }],
3591
+ /**
3592
+ * Border Radius Top Left
3593
+ * @see https://tailwindcss.com/docs/border-radius
3594
+ */
3595
+ 'rounded-tl': [{
3596
+ 'rounded-tl': scaleRadius()
3597
+ }],
3598
+ /**
3599
+ * Border Radius Top Right
3600
+ * @see https://tailwindcss.com/docs/border-radius
3601
+ */
3602
+ 'rounded-tr': [{
3603
+ 'rounded-tr': scaleRadius()
3604
+ }],
3605
+ /**
3606
+ * Border Radius Bottom Right
3607
+ * @see https://tailwindcss.com/docs/border-radius
3608
+ */
3609
+ 'rounded-br': [{
3610
+ 'rounded-br': scaleRadius()
3611
+ }],
3612
+ /**
3613
+ * Border Radius Bottom Left
3614
+ * @see https://tailwindcss.com/docs/border-radius
3615
+ */
3616
+ 'rounded-bl': [{
3617
+ 'rounded-bl': scaleRadius()
3618
+ }],
3619
+ /**
3620
+ * Border Width
3621
+ * @see https://tailwindcss.com/docs/border-width
3622
+ */
3623
+ 'border-w': [{
3624
+ border: scaleBorderWidth()
3625
+ }],
3626
+ /**
3627
+ * Border Width Inline
3628
+ * @see https://tailwindcss.com/docs/border-width
3629
+ */
3630
+ 'border-w-x': [{
3631
+ 'border-x': scaleBorderWidth()
3632
+ }],
3633
+ /**
3634
+ * Border Width Block
3635
+ * @see https://tailwindcss.com/docs/border-width
3636
+ */
3637
+ 'border-w-y': [{
3638
+ 'border-y': scaleBorderWidth()
3639
+ }],
3640
+ /**
3641
+ * Border Width Inline Start
3642
+ * @see https://tailwindcss.com/docs/border-width
3643
+ */
3644
+ 'border-w-s': [{
3645
+ 'border-s': scaleBorderWidth()
3646
+ }],
3647
+ /**
3648
+ * Border Width Inline End
3649
+ * @see https://tailwindcss.com/docs/border-width
3650
+ */
3651
+ 'border-w-e': [{
3652
+ 'border-e': scaleBorderWidth()
3653
+ }],
3654
+ /**
3655
+ * Border Width Block Start
3656
+ * @see https://tailwindcss.com/docs/border-width
3657
+ */
3658
+ 'border-w-bs': [{
3659
+ 'border-bs': scaleBorderWidth()
3660
+ }],
3661
+ /**
3662
+ * Border Width Block End
3663
+ * @see https://tailwindcss.com/docs/border-width
3664
+ */
3665
+ 'border-w-be': [{
3666
+ 'border-be': scaleBorderWidth()
3667
+ }],
3668
+ /**
3669
+ * Border Width Top
3670
+ * @see https://tailwindcss.com/docs/border-width
3671
+ */
3672
+ 'border-w-t': [{
3673
+ 'border-t': scaleBorderWidth()
3674
+ }],
3675
+ /**
3676
+ * Border Width Right
3677
+ * @see https://tailwindcss.com/docs/border-width
3678
+ */
3679
+ 'border-w-r': [{
3680
+ 'border-r': scaleBorderWidth()
3681
+ }],
3682
+ /**
3683
+ * Border Width Bottom
3684
+ * @see https://tailwindcss.com/docs/border-width
3685
+ */
3686
+ 'border-w-b': [{
3687
+ 'border-b': scaleBorderWidth()
3688
+ }],
3689
+ /**
3690
+ * Border Width Left
3691
+ * @see https://tailwindcss.com/docs/border-width
3692
+ */
3693
+ 'border-w-l': [{
3694
+ 'border-l': scaleBorderWidth()
3695
+ }],
3696
+ /**
3697
+ * Divide Width X
3698
+ * @see https://tailwindcss.com/docs/border-width#between-children
3699
+ */
3700
+ 'divide-x': [{
3701
+ 'divide-x': scaleBorderWidth()
3702
+ }],
3703
+ /**
3704
+ * Divide Width X Reverse
3705
+ * @see https://tailwindcss.com/docs/border-width#between-children
3706
+ */
3707
+ 'divide-x-reverse': ['divide-x-reverse'],
3708
+ /**
3709
+ * Divide Width Y
3710
+ * @see https://tailwindcss.com/docs/border-width#between-children
3711
+ */
3712
+ 'divide-y': [{
3713
+ 'divide-y': scaleBorderWidth()
3714
+ }],
3715
+ /**
3716
+ * Divide Width Y Reverse
3717
+ * @see https://tailwindcss.com/docs/border-width#between-children
3718
+ */
3719
+ 'divide-y-reverse': ['divide-y-reverse'],
3720
+ /**
3721
+ * Border Style
3722
+ * @see https://tailwindcss.com/docs/border-style
3723
+ */
3724
+ 'border-style': [{
3725
+ border: [...scaleLineStyle(), 'hidden', 'none']
3726
+ }],
3727
+ /**
3728
+ * Divide Style
3729
+ * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style
3730
+ */
3731
+ 'divide-style': [{
3732
+ divide: [...scaleLineStyle(), 'hidden', 'none']
3733
+ }],
3734
+ /**
3735
+ * Border Color
3736
+ * @see https://tailwindcss.com/docs/border-color
3737
+ */
3738
+ 'border-color': [{
3739
+ border: scaleColor()
3740
+ }],
3741
+ /**
3742
+ * Border Color Inline
3743
+ * @see https://tailwindcss.com/docs/border-color
3744
+ */
3745
+ 'border-color-x': [{
3746
+ 'border-x': scaleColor()
3747
+ }],
3748
+ /**
3749
+ * Border Color Block
3750
+ * @see https://tailwindcss.com/docs/border-color
3751
+ */
3752
+ 'border-color-y': [{
3753
+ 'border-y': scaleColor()
3754
+ }],
3755
+ /**
3756
+ * Border Color Inline Start
3757
+ * @see https://tailwindcss.com/docs/border-color
3758
+ */
3759
+ 'border-color-s': [{
3760
+ 'border-s': scaleColor()
3761
+ }],
3762
+ /**
3763
+ * Border Color Inline End
3764
+ * @see https://tailwindcss.com/docs/border-color
3765
+ */
3766
+ 'border-color-e': [{
3767
+ 'border-e': scaleColor()
3768
+ }],
3769
+ /**
3770
+ * Border Color Block Start
3771
+ * @see https://tailwindcss.com/docs/border-color
3772
+ */
3773
+ 'border-color-bs': [{
3774
+ 'border-bs': scaleColor()
3775
+ }],
3776
+ /**
3777
+ * Border Color Block End
3778
+ * @see https://tailwindcss.com/docs/border-color
3779
+ */
3780
+ 'border-color-be': [{
3781
+ 'border-be': scaleColor()
3782
+ }],
3783
+ /**
3784
+ * Border Color Top
3785
+ * @see https://tailwindcss.com/docs/border-color
3786
+ */
3787
+ 'border-color-t': [{
3788
+ 'border-t': scaleColor()
3789
+ }],
3790
+ /**
3791
+ * Border Color Right
3792
+ * @see https://tailwindcss.com/docs/border-color
3793
+ */
3794
+ 'border-color-r': [{
3795
+ 'border-r': scaleColor()
3796
+ }],
3797
+ /**
3798
+ * Border Color Bottom
3799
+ * @see https://tailwindcss.com/docs/border-color
3800
+ */
3801
+ 'border-color-b': [{
3802
+ 'border-b': scaleColor()
3803
+ }],
3804
+ /**
3805
+ * Border Color Left
3806
+ * @see https://tailwindcss.com/docs/border-color
3807
+ */
3808
+ 'border-color-l': [{
3809
+ 'border-l': scaleColor()
3810
+ }],
3811
+ /**
3812
+ * Divide Color
3813
+ * @see https://tailwindcss.com/docs/divide-color
3814
+ */
3815
+ 'divide-color': [{
3816
+ divide: scaleColor()
3817
+ }],
3818
+ /**
3819
+ * Outline Style
3820
+ * @see https://tailwindcss.com/docs/outline-style
3821
+ */
3822
+ 'outline-style': [{
3823
+ outline: [...scaleLineStyle(), 'none', 'hidden']
3824
+ }],
3825
+ /**
3826
+ * Outline Offset
3827
+ * @see https://tailwindcss.com/docs/outline-offset
3828
+ */
3829
+ 'outline-offset': [{
3830
+ 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]
3831
+ }],
3832
+ /**
3833
+ * Outline Width
3834
+ * @see https://tailwindcss.com/docs/outline-width
3835
+ */
3836
+ 'outline-w': [{
3837
+ outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]
3838
+ }],
3839
+ /**
3840
+ * Outline Color
3841
+ * @see https://tailwindcss.com/docs/outline-color
3842
+ */
3843
+ 'outline-color': [{
3844
+ outline: scaleColor()
3845
+ }],
3846
+ // ---------------
3847
+ // --- Effects ---
3848
+ // ---------------
3849
+ /**
3850
+ * Box Shadow
3851
+ * @see https://tailwindcss.com/docs/box-shadow
3852
+ */
3853
+ shadow: [{
3854
+ shadow: [
3855
+ // Deprecated since Tailwind CSS v4.0.0
3856
+ '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]
3857
+ }],
3858
+ /**
3859
+ * Box Shadow Color
3860
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color
3861
+ */
3862
+ 'shadow-color': [{
3863
+ shadow: scaleColor()
3864
+ }],
3865
+ /**
3866
+ * Inset Box Shadow
3867
+ * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow
3868
+ */
3869
+ 'inset-shadow': [{
3870
+ 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]
3871
+ }],
3872
+ /**
3873
+ * Inset Box Shadow Color
3874
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color
3875
+ */
3876
+ 'inset-shadow-color': [{
3877
+ 'inset-shadow': scaleColor()
3878
+ }],
3879
+ /**
3880
+ * Ring Width
3881
+ * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring
3882
+ */
3883
+ 'ring-w': [{
3884
+ ring: scaleBorderWidth()
3885
+ }],
3886
+ /**
3887
+ * Ring Width Inset
3888
+ * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings
3889
+ * @deprecated since Tailwind CSS v4.0.0
3890
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
3891
+ */
3892
+ 'ring-w-inset': ['ring-inset'],
3893
+ /**
3894
+ * Ring Color
3895
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color
3896
+ */
3897
+ 'ring-color': [{
3898
+ ring: scaleColor()
3899
+ }],
3900
+ /**
3901
+ * Ring Offset Width
3902
+ * @see https://v3.tailwindcss.com/docs/ring-offset-width
3903
+ * @deprecated since Tailwind CSS v4.0.0
3904
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
3905
+ */
3906
+ 'ring-offset-w': [{
3907
+ 'ring-offset': [isNumber, isArbitraryLength]
3908
+ }],
3909
+ /**
3910
+ * Ring Offset Color
3911
+ * @see https://v3.tailwindcss.com/docs/ring-offset-color
3912
+ * @deprecated since Tailwind CSS v4.0.0
3913
+ * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
3914
+ */
3915
+ 'ring-offset-color': [{
3916
+ 'ring-offset': scaleColor()
3917
+ }],
3918
+ /**
3919
+ * Inset Ring Width
3920
+ * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring
3921
+ */
3922
+ 'inset-ring-w': [{
3923
+ 'inset-ring': scaleBorderWidth()
3924
+ }],
3925
+ /**
3926
+ * Inset Ring Color
3927
+ * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color
3928
+ */
3929
+ 'inset-ring-color': [{
3930
+ 'inset-ring': scaleColor()
3931
+ }],
3932
+ /**
3933
+ * Text Shadow
3934
+ * @see https://tailwindcss.com/docs/text-shadow
3935
+ */
3936
+ 'text-shadow': [{
3937
+ 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]
3938
+ }],
3939
+ /**
3940
+ * Text Shadow Color
3941
+ * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color
3942
+ */
3943
+ 'text-shadow-color': [{
3944
+ 'text-shadow': scaleColor()
3945
+ }],
3946
+ /**
3947
+ * Opacity
3948
+ * @see https://tailwindcss.com/docs/opacity
3949
+ */
3950
+ opacity: [{
3951
+ opacity: [isNumber, isArbitraryVariable, isArbitraryValue]
3952
+ }],
3953
+ /**
3954
+ * Mix Blend Mode
3955
+ * @see https://tailwindcss.com/docs/mix-blend-mode
3956
+ */
3957
+ 'mix-blend': [{
3958
+ 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']
3959
+ }],
3960
+ /**
3961
+ * Background Blend Mode
3962
+ * @see https://tailwindcss.com/docs/background-blend-mode
3963
+ */
3964
+ 'bg-blend': [{
3965
+ 'bg-blend': scaleBlendMode()
3966
+ }],
3967
+ /**
3968
+ * Mask Clip
3969
+ * @see https://tailwindcss.com/docs/mask-clip
3970
+ */
3971
+ 'mask-clip': [{
3972
+ 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']
3973
+ }, 'mask-no-clip'],
3974
+ /**
3975
+ * Mask Composite
3976
+ * @see https://tailwindcss.com/docs/mask-composite
3977
+ */
3978
+ 'mask-composite': [{
3979
+ mask: ['add', 'subtract', 'intersect', 'exclude']
3980
+ }],
3981
+ /**
3982
+ * Mask Image
3983
+ * @see https://tailwindcss.com/docs/mask-image
3984
+ */
3985
+ 'mask-image-linear-pos': [{
3986
+ 'mask-linear': [isNumber]
3987
+ }],
3988
+ 'mask-image-linear-from-pos': [{
3989
+ 'mask-linear-from': scaleMaskImagePosition()
3990
+ }],
3991
+ 'mask-image-linear-to-pos': [{
3992
+ 'mask-linear-to': scaleMaskImagePosition()
3993
+ }],
3994
+ 'mask-image-linear-from-color': [{
3995
+ 'mask-linear-from': scaleColor()
3996
+ }],
3997
+ 'mask-image-linear-to-color': [{
3998
+ 'mask-linear-to': scaleColor()
3999
+ }],
4000
+ 'mask-image-t-from-pos': [{
4001
+ 'mask-t-from': scaleMaskImagePosition()
4002
+ }],
4003
+ 'mask-image-t-to-pos': [{
4004
+ 'mask-t-to': scaleMaskImagePosition()
4005
+ }],
4006
+ 'mask-image-t-from-color': [{
4007
+ 'mask-t-from': scaleColor()
4008
+ }],
4009
+ 'mask-image-t-to-color': [{
4010
+ 'mask-t-to': scaleColor()
4011
+ }],
4012
+ 'mask-image-r-from-pos': [{
4013
+ 'mask-r-from': scaleMaskImagePosition()
4014
+ }],
4015
+ 'mask-image-r-to-pos': [{
4016
+ 'mask-r-to': scaleMaskImagePosition()
4017
+ }],
4018
+ 'mask-image-r-from-color': [{
4019
+ 'mask-r-from': scaleColor()
4020
+ }],
4021
+ 'mask-image-r-to-color': [{
4022
+ 'mask-r-to': scaleColor()
4023
+ }],
4024
+ 'mask-image-b-from-pos': [{
4025
+ 'mask-b-from': scaleMaskImagePosition()
4026
+ }],
4027
+ 'mask-image-b-to-pos': [{
4028
+ 'mask-b-to': scaleMaskImagePosition()
4029
+ }],
4030
+ 'mask-image-b-from-color': [{
4031
+ 'mask-b-from': scaleColor()
4032
+ }],
4033
+ 'mask-image-b-to-color': [{
4034
+ 'mask-b-to': scaleColor()
4035
+ }],
4036
+ 'mask-image-l-from-pos': [{
4037
+ 'mask-l-from': scaleMaskImagePosition()
4038
+ }],
4039
+ 'mask-image-l-to-pos': [{
4040
+ 'mask-l-to': scaleMaskImagePosition()
4041
+ }],
4042
+ 'mask-image-l-from-color': [{
4043
+ 'mask-l-from': scaleColor()
4044
+ }],
4045
+ 'mask-image-l-to-color': [{
4046
+ 'mask-l-to': scaleColor()
4047
+ }],
4048
+ 'mask-image-x-from-pos': [{
4049
+ 'mask-x-from': scaleMaskImagePosition()
4050
+ }],
4051
+ 'mask-image-x-to-pos': [{
4052
+ 'mask-x-to': scaleMaskImagePosition()
4053
+ }],
4054
+ 'mask-image-x-from-color': [{
4055
+ 'mask-x-from': scaleColor()
4056
+ }],
4057
+ 'mask-image-x-to-color': [{
4058
+ 'mask-x-to': scaleColor()
4059
+ }],
4060
+ 'mask-image-y-from-pos': [{
4061
+ 'mask-y-from': scaleMaskImagePosition()
4062
+ }],
4063
+ 'mask-image-y-to-pos': [{
4064
+ 'mask-y-to': scaleMaskImagePosition()
4065
+ }],
4066
+ 'mask-image-y-from-color': [{
4067
+ 'mask-y-from': scaleColor()
4068
+ }],
4069
+ 'mask-image-y-to-color': [{
4070
+ 'mask-y-to': scaleColor()
4071
+ }],
4072
+ 'mask-image-radial': [{
4073
+ 'mask-radial': [isArbitraryVariable, isArbitraryValue]
4074
+ }],
4075
+ 'mask-image-radial-from-pos': [{
4076
+ 'mask-radial-from': scaleMaskImagePosition()
4077
+ }],
4078
+ 'mask-image-radial-to-pos': [{
4079
+ 'mask-radial-to': scaleMaskImagePosition()
4080
+ }],
4081
+ 'mask-image-radial-from-color': [{
4082
+ 'mask-radial-from': scaleColor()
4083
+ }],
4084
+ 'mask-image-radial-to-color': [{
4085
+ 'mask-radial-to': scaleColor()
4086
+ }],
4087
+ 'mask-image-radial-shape': [{
4088
+ 'mask-radial': ['circle', 'ellipse']
4089
+ }],
4090
+ 'mask-image-radial-size': [{
4091
+ 'mask-radial': [{
4092
+ closest: ['side', 'corner'],
4093
+ farthest: ['side', 'corner']
4094
+ }]
4095
+ }],
4096
+ 'mask-image-radial-pos': [{
4097
+ 'mask-radial-at': scalePosition()
4098
+ }],
4099
+ 'mask-image-conic-pos': [{
4100
+ 'mask-conic': [isNumber]
4101
+ }],
4102
+ 'mask-image-conic-from-pos': [{
4103
+ 'mask-conic-from': scaleMaskImagePosition()
4104
+ }],
4105
+ 'mask-image-conic-to-pos': [{
4106
+ 'mask-conic-to': scaleMaskImagePosition()
4107
+ }],
4108
+ 'mask-image-conic-from-color': [{
4109
+ 'mask-conic-from': scaleColor()
4110
+ }],
4111
+ 'mask-image-conic-to-color': [{
4112
+ 'mask-conic-to': scaleColor()
4113
+ }],
4114
+ /**
4115
+ * Mask Mode
4116
+ * @see https://tailwindcss.com/docs/mask-mode
4117
+ */
4118
+ 'mask-mode': [{
4119
+ mask: ['alpha', 'luminance', 'match']
4120
+ }],
4121
+ /**
4122
+ * Mask Origin
4123
+ * @see https://tailwindcss.com/docs/mask-origin
4124
+ */
4125
+ 'mask-origin': [{
4126
+ 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']
4127
+ }],
4128
+ /**
4129
+ * Mask Position
4130
+ * @see https://tailwindcss.com/docs/mask-position
4131
+ */
4132
+ 'mask-position': [{
4133
+ mask: scaleBgPosition()
4134
+ }],
4135
+ /**
4136
+ * Mask Repeat
4137
+ * @see https://tailwindcss.com/docs/mask-repeat
4138
+ */
4139
+ 'mask-repeat': [{
4140
+ mask: scaleBgRepeat()
4141
+ }],
4142
+ /**
4143
+ * Mask Size
4144
+ * @see https://tailwindcss.com/docs/mask-size
4145
+ */
4146
+ 'mask-size': [{
4147
+ mask: scaleBgSize()
4148
+ }],
4149
+ /**
4150
+ * Mask Type
4151
+ * @see https://tailwindcss.com/docs/mask-type
4152
+ */
4153
+ 'mask-type': [{
4154
+ 'mask-type': ['alpha', 'luminance']
4155
+ }],
4156
+ /**
4157
+ * Mask Image
4158
+ * @see https://tailwindcss.com/docs/mask-image
4159
+ */
4160
+ 'mask-image': [{
4161
+ mask: ['none', isArbitraryVariable, isArbitraryValue]
4162
+ }],
4163
+ // ---------------
4164
+ // --- Filters ---
4165
+ // ---------------
4166
+ /**
4167
+ * Filter
4168
+ * @see https://tailwindcss.com/docs/filter
4169
+ */
4170
+ filter: [{
4171
+ filter: [
4172
+ // Deprecated since Tailwind CSS v3.0.0
4173
+ '', 'none', isArbitraryVariable, isArbitraryValue]
4174
+ }],
4175
+ /**
4176
+ * Blur
4177
+ * @see https://tailwindcss.com/docs/blur
4178
+ */
4179
+ blur: [{
4180
+ blur: scaleBlur()
4181
+ }],
4182
+ /**
4183
+ * Brightness
4184
+ * @see https://tailwindcss.com/docs/brightness
4185
+ */
4186
+ brightness: [{
4187
+ brightness: [isNumber, isArbitraryVariable, isArbitraryValue]
4188
+ }],
4189
+ /**
4190
+ * Contrast
4191
+ * @see https://tailwindcss.com/docs/contrast
4192
+ */
4193
+ contrast: [{
4194
+ contrast: [isNumber, isArbitraryVariable, isArbitraryValue]
4195
+ }],
4196
+ /**
4197
+ * Drop Shadow
4198
+ * @see https://tailwindcss.com/docs/drop-shadow
4199
+ */
4200
+ 'drop-shadow': [{
4201
+ 'drop-shadow': [
4202
+ // Deprecated since Tailwind CSS v4.0.0
4203
+ '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]
4204
+ }],
4205
+ /**
4206
+ * Drop Shadow Color
4207
+ * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color
4208
+ */
4209
+ 'drop-shadow-color': [{
4210
+ 'drop-shadow': scaleColor()
4211
+ }],
4212
+ /**
4213
+ * Grayscale
4214
+ * @see https://tailwindcss.com/docs/grayscale
4215
+ */
4216
+ grayscale: [{
4217
+ grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]
4218
+ }],
4219
+ /**
4220
+ * Hue Rotate
4221
+ * @see https://tailwindcss.com/docs/hue-rotate
4222
+ */
4223
+ 'hue-rotate': [{
4224
+ 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]
4225
+ }],
4226
+ /**
4227
+ * Invert
4228
+ * @see https://tailwindcss.com/docs/invert
4229
+ */
4230
+ invert: [{
4231
+ invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]
4232
+ }],
4233
+ /**
4234
+ * Saturate
4235
+ * @see https://tailwindcss.com/docs/saturate
4236
+ */
4237
+ saturate: [{
4238
+ saturate: [isNumber, isArbitraryVariable, isArbitraryValue]
4239
+ }],
4240
+ /**
4241
+ * Sepia
4242
+ * @see https://tailwindcss.com/docs/sepia
4243
+ */
4244
+ sepia: [{
4245
+ sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]
4246
+ }],
4247
+ /**
4248
+ * Backdrop Filter
4249
+ * @see https://tailwindcss.com/docs/backdrop-filter
4250
+ */
4251
+ 'backdrop-filter': [{
4252
+ 'backdrop-filter': [
4253
+ // Deprecated since Tailwind CSS v3.0.0
4254
+ '', 'none', isArbitraryVariable, isArbitraryValue]
4255
+ }],
4256
+ /**
4257
+ * Backdrop Blur
4258
+ * @see https://tailwindcss.com/docs/backdrop-blur
4259
+ */
4260
+ 'backdrop-blur': [{
4261
+ 'backdrop-blur': scaleBlur()
4262
+ }],
4263
+ /**
4264
+ * Backdrop Brightness
4265
+ * @see https://tailwindcss.com/docs/backdrop-brightness
4266
+ */
4267
+ 'backdrop-brightness': [{
4268
+ 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]
4269
+ }],
4270
+ /**
4271
+ * Backdrop Contrast
4272
+ * @see https://tailwindcss.com/docs/backdrop-contrast
4273
+ */
4274
+ 'backdrop-contrast': [{
4275
+ 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]
4276
+ }],
4277
+ /**
4278
+ * Backdrop Grayscale
4279
+ * @see https://tailwindcss.com/docs/backdrop-grayscale
4280
+ */
4281
+ 'backdrop-grayscale': [{
4282
+ 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]
4283
+ }],
4284
+ /**
4285
+ * Backdrop Hue Rotate
4286
+ * @see https://tailwindcss.com/docs/backdrop-hue-rotate
4287
+ */
4288
+ 'backdrop-hue-rotate': [{
4289
+ 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]
4290
+ }],
4291
+ /**
4292
+ * Backdrop Invert
4293
+ * @see https://tailwindcss.com/docs/backdrop-invert
4294
+ */
4295
+ 'backdrop-invert': [{
4296
+ 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]
4297
+ }],
4298
+ /**
4299
+ * Backdrop Opacity
4300
+ * @see https://tailwindcss.com/docs/backdrop-opacity
4301
+ */
4302
+ 'backdrop-opacity': [{
4303
+ 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]
4304
+ }],
4305
+ /**
4306
+ * Backdrop Saturate
4307
+ * @see https://tailwindcss.com/docs/backdrop-saturate
4308
+ */
4309
+ 'backdrop-saturate': [{
4310
+ 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]
4311
+ }],
4312
+ /**
4313
+ * Backdrop Sepia
4314
+ * @see https://tailwindcss.com/docs/backdrop-sepia
4315
+ */
4316
+ 'backdrop-sepia': [{
4317
+ 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]
4318
+ }],
4319
+ // --------------
4320
+ // --- Tables ---
4321
+ // --------------
4322
+ /**
4323
+ * Border Collapse
4324
+ * @see https://tailwindcss.com/docs/border-collapse
4325
+ */
4326
+ 'border-collapse': [{
4327
+ border: ['collapse', 'separate']
4328
+ }],
4329
+ /**
4330
+ * Border Spacing
4331
+ * @see https://tailwindcss.com/docs/border-spacing
4332
+ */
4333
+ 'border-spacing': [{
4334
+ 'border-spacing': scaleUnambiguousSpacing()
4335
+ }],
4336
+ /**
4337
+ * Border Spacing X
4338
+ * @see https://tailwindcss.com/docs/border-spacing
4339
+ */
4340
+ 'border-spacing-x': [{
4341
+ 'border-spacing-x': scaleUnambiguousSpacing()
4342
+ }],
4343
+ /**
4344
+ * Border Spacing Y
4345
+ * @see https://tailwindcss.com/docs/border-spacing
4346
+ */
4347
+ 'border-spacing-y': [{
4348
+ 'border-spacing-y': scaleUnambiguousSpacing()
4349
+ }],
4350
+ /**
4351
+ * Table Layout
4352
+ * @see https://tailwindcss.com/docs/table-layout
4353
+ */
4354
+ 'table-layout': [{
4355
+ table: ['auto', 'fixed']
4356
+ }],
4357
+ /**
4358
+ * Caption Side
4359
+ * @see https://tailwindcss.com/docs/caption-side
4360
+ */
4361
+ caption: [{
4362
+ caption: ['top', 'bottom']
4363
+ }],
4364
+ // ---------------------------------
4365
+ // --- Transitions and Animation ---
4366
+ // ---------------------------------
4367
+ /**
4368
+ * Transition Property
4369
+ * @see https://tailwindcss.com/docs/transition-property
4370
+ */
4371
+ transition: [{
4372
+ transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]
4373
+ }],
4374
+ /**
4375
+ * Transition Behavior
4376
+ * @see https://tailwindcss.com/docs/transition-behavior
4377
+ */
4378
+ 'transition-behavior': [{
4379
+ transition: ['normal', 'discrete']
4380
+ }],
4381
+ /**
4382
+ * Transition Duration
4383
+ * @see https://tailwindcss.com/docs/transition-duration
4384
+ */
4385
+ duration: [{
4386
+ duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]
4387
+ }],
4388
+ /**
4389
+ * Transition Timing Function
4390
+ * @see https://tailwindcss.com/docs/transition-timing-function
4391
+ */
4392
+ ease: [{
4393
+ ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]
4394
+ }],
4395
+ /**
4396
+ * Transition Delay
4397
+ * @see https://tailwindcss.com/docs/transition-delay
4398
+ */
4399
+ delay: [{
4400
+ delay: [isNumber, isArbitraryVariable, isArbitraryValue]
4401
+ }],
4402
+ /**
4403
+ * Animation
4404
+ * @see https://tailwindcss.com/docs/animation
4405
+ */
4406
+ animate: [{
4407
+ animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]
4408
+ }],
4409
+ // ------------------
4410
+ // --- Transforms ---
4411
+ // ------------------
4412
+ /**
4413
+ * Backface Visibility
4414
+ * @see https://tailwindcss.com/docs/backface-visibility
4415
+ */
4416
+ backface: [{
4417
+ backface: ['hidden', 'visible']
4418
+ }],
4419
+ /**
4420
+ * Perspective
4421
+ * @see https://tailwindcss.com/docs/perspective
4422
+ */
4423
+ perspective: [{
4424
+ perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]
4425
+ }],
4426
+ /**
4427
+ * Perspective Origin
4428
+ * @see https://tailwindcss.com/docs/perspective-origin
4429
+ */
4430
+ 'perspective-origin': [{
4431
+ 'perspective-origin': scalePositionWithArbitrary()
4432
+ }],
4433
+ /**
4434
+ * Rotate
4435
+ * @see https://tailwindcss.com/docs/rotate
4436
+ */
4437
+ rotate: [{
4438
+ rotate: scaleRotate()
4439
+ }],
4440
+ /**
4441
+ * Rotate X
4442
+ * @see https://tailwindcss.com/docs/rotate
4443
+ */
4444
+ 'rotate-x': [{
4445
+ 'rotate-x': scaleRotate()
4446
+ }],
4447
+ /**
4448
+ * Rotate Y
4449
+ * @see https://tailwindcss.com/docs/rotate
4450
+ */
4451
+ 'rotate-y': [{
4452
+ 'rotate-y': scaleRotate()
4453
+ }],
4454
+ /**
4455
+ * Rotate Z
4456
+ * @see https://tailwindcss.com/docs/rotate
4457
+ */
4458
+ 'rotate-z': [{
4459
+ 'rotate-z': scaleRotate()
4460
+ }],
4461
+ /**
4462
+ * Scale
4463
+ * @see https://tailwindcss.com/docs/scale
4464
+ */
4465
+ scale: [{
4466
+ scale: scaleScale()
4467
+ }],
4468
+ /**
4469
+ * Scale X
4470
+ * @see https://tailwindcss.com/docs/scale
4471
+ */
4472
+ 'scale-x': [{
4473
+ 'scale-x': scaleScale()
4474
+ }],
4475
+ /**
4476
+ * Scale Y
4477
+ * @see https://tailwindcss.com/docs/scale
4478
+ */
4479
+ 'scale-y': [{
4480
+ 'scale-y': scaleScale()
4481
+ }],
4482
+ /**
4483
+ * Scale Z
4484
+ * @see https://tailwindcss.com/docs/scale
4485
+ */
4486
+ 'scale-z': [{
4487
+ 'scale-z': scaleScale()
4488
+ }],
4489
+ /**
4490
+ * Scale 3D
4491
+ * @see https://tailwindcss.com/docs/scale
4492
+ */
4493
+ 'scale-3d': ['scale-3d'],
4494
+ /**
4495
+ * Skew
4496
+ * @see https://tailwindcss.com/docs/skew
4497
+ */
4498
+ skew: [{
4499
+ skew: scaleSkew()
4500
+ }],
4501
+ /**
4502
+ * Skew X
4503
+ * @see https://tailwindcss.com/docs/skew
4504
+ */
4505
+ 'skew-x': [{
4506
+ 'skew-x': scaleSkew()
4507
+ }],
4508
+ /**
4509
+ * Skew Y
4510
+ * @see https://tailwindcss.com/docs/skew
4511
+ */
4512
+ 'skew-y': [{
4513
+ 'skew-y': scaleSkew()
4514
+ }],
4515
+ /**
4516
+ * Transform
4517
+ * @see https://tailwindcss.com/docs/transform
4518
+ */
4519
+ transform: [{
4520
+ transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']
4521
+ }],
4522
+ /**
4523
+ * Transform Origin
4524
+ * @see https://tailwindcss.com/docs/transform-origin
4525
+ */
4526
+ 'transform-origin': [{
4527
+ origin: scalePositionWithArbitrary()
4528
+ }],
4529
+ /**
4530
+ * Transform Style
4531
+ * @see https://tailwindcss.com/docs/transform-style
4532
+ */
4533
+ 'transform-style': [{
4534
+ transform: ['3d', 'flat']
4535
+ }],
4536
+ /**
4537
+ * Translate
4538
+ * @see https://tailwindcss.com/docs/translate
4539
+ */
4540
+ translate: [{
4541
+ translate: scaleTranslate()
4542
+ }],
4543
+ /**
4544
+ * Translate X
4545
+ * @see https://tailwindcss.com/docs/translate
4546
+ */
4547
+ 'translate-x': [{
4548
+ 'translate-x': scaleTranslate()
4549
+ }],
4550
+ /**
4551
+ * Translate Y
4552
+ * @see https://tailwindcss.com/docs/translate
4553
+ */
4554
+ 'translate-y': [{
4555
+ 'translate-y': scaleTranslate()
4556
+ }],
4557
+ /**
4558
+ * Translate Z
4559
+ * @see https://tailwindcss.com/docs/translate
4560
+ */
4561
+ 'translate-z': [{
4562
+ 'translate-z': scaleTranslate()
4563
+ }],
4564
+ /**
4565
+ * Translate None
4566
+ * @see https://tailwindcss.com/docs/translate
4567
+ */
4568
+ 'translate-none': ['translate-none'],
4569
+ /**
4570
+ * Zoom
4571
+ * @see https://tailwindcss.com/docs/zoom
4572
+ */
4573
+ zoom: [{
4574
+ zoom: [isInteger, isArbitraryVariable, isArbitraryValue]
4575
+ }],
4576
+ // ---------------------
4577
+ // --- Interactivity ---
4578
+ // ---------------------
4579
+ /**
4580
+ * Accent Color
4581
+ * @see https://tailwindcss.com/docs/accent-color
4582
+ */
4583
+ accent: [{
4584
+ accent: scaleColor()
4585
+ }],
4586
+ /**
4587
+ * Appearance
4588
+ * @see https://tailwindcss.com/docs/appearance
4589
+ */
4590
+ appearance: [{
4591
+ appearance: ['none', 'auto']
4592
+ }],
4593
+ /**
4594
+ * Caret Color
4595
+ * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities
4596
+ */
4597
+ 'caret-color': [{
4598
+ caret: scaleColor()
4599
+ }],
4600
+ /**
4601
+ * Color Scheme
4602
+ * @see https://tailwindcss.com/docs/color-scheme
4603
+ */
4604
+ 'color-scheme': [{
4605
+ scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']
4606
+ }],
4607
+ /**
4608
+ * Cursor
4609
+ * @see https://tailwindcss.com/docs/cursor
4610
+ */
4611
+ cursor: [{
4612
+ 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]
4613
+ }],
4614
+ /**
4615
+ * Field Sizing
4616
+ * @see https://tailwindcss.com/docs/field-sizing
4617
+ */
4618
+ 'field-sizing': [{
4619
+ 'field-sizing': ['fixed', 'content']
4620
+ }],
4621
+ /**
4622
+ * Pointer Events
4623
+ * @see https://tailwindcss.com/docs/pointer-events
4624
+ */
4625
+ 'pointer-events': [{
4626
+ 'pointer-events': ['auto', 'none']
4627
+ }],
4628
+ /**
4629
+ * Resize
4630
+ * @see https://tailwindcss.com/docs/resize
4631
+ */
4632
+ resize: [{
4633
+ resize: ['none', '', 'y', 'x']
4634
+ }],
4635
+ /**
4636
+ * Scroll Behavior
4637
+ * @see https://tailwindcss.com/docs/scroll-behavior
4638
+ */
4639
+ 'scroll-behavior': [{
4640
+ scroll: ['auto', 'smooth']
4641
+ }],
4642
+ /**
4643
+ * Scrollbar Thumb Color
4644
+ * @see https://tailwindcss.com/docs/scrollbar-color
4645
+ */
4646
+ 'scrollbar-thumb-color': [{
4647
+ 'scrollbar-thumb': scaleColor()
4648
+ }],
4649
+ /**
4650
+ * Scrollbar Track Color
4651
+ * @see https://tailwindcss.com/docs/scrollbar-color
4652
+ */
4653
+ 'scrollbar-track-color': [{
4654
+ 'scrollbar-track': scaleColor()
4655
+ }],
4656
+ /**
4657
+ * Scrollbar Gutter
4658
+ * @see https://tailwindcss.com/docs/scrollbar-gutter
4659
+ */
4660
+ 'scrollbar-gutter': [{
4661
+ 'scrollbar-gutter': ['auto', 'stable', 'both']
4662
+ }],
4663
+ /**
4664
+ * Scrollbar Width
4665
+ * @see https://tailwindcss.com/docs/scrollbar-width
4666
+ */
4667
+ 'scrollbar-w': [{
4668
+ scrollbar: ['auto', 'thin', 'none']
4669
+ }],
4670
+ /**
4671
+ * Scroll Margin
4672
+ * @see https://tailwindcss.com/docs/scroll-margin
4673
+ */
4674
+ 'scroll-m': [{
4675
+ 'scroll-m': scaleUnambiguousSpacing()
4676
+ }],
4677
+ /**
4678
+ * Scroll Margin Inline
4679
+ * @see https://tailwindcss.com/docs/scroll-margin
4680
+ */
4681
+ 'scroll-mx': [{
4682
+ 'scroll-mx': scaleUnambiguousSpacing()
4683
+ }],
4684
+ /**
4685
+ * Scroll Margin Block
4686
+ * @see https://tailwindcss.com/docs/scroll-margin
4687
+ */
4688
+ 'scroll-my': [{
4689
+ 'scroll-my': scaleUnambiguousSpacing()
4690
+ }],
4691
+ /**
4692
+ * Scroll Margin Inline Start
4693
+ * @see https://tailwindcss.com/docs/scroll-margin
4694
+ */
4695
+ 'scroll-ms': [{
4696
+ 'scroll-ms': scaleUnambiguousSpacing()
4697
+ }],
4698
+ /**
4699
+ * Scroll Margin Inline End
4700
+ * @see https://tailwindcss.com/docs/scroll-margin
4701
+ */
4702
+ 'scroll-me': [{
4703
+ 'scroll-me': scaleUnambiguousSpacing()
4704
+ }],
4705
+ /**
4706
+ * Scroll Margin Block Start
4707
+ * @see https://tailwindcss.com/docs/scroll-margin
4708
+ */
4709
+ 'scroll-mbs': [{
4710
+ 'scroll-mbs': scaleUnambiguousSpacing()
4711
+ }],
4712
+ /**
4713
+ * Scroll Margin Block End
4714
+ * @see https://tailwindcss.com/docs/scroll-margin
4715
+ */
4716
+ 'scroll-mbe': [{
4717
+ 'scroll-mbe': scaleUnambiguousSpacing()
4718
+ }],
4719
+ /**
4720
+ * Scroll Margin Top
4721
+ * @see https://tailwindcss.com/docs/scroll-margin
4722
+ */
4723
+ 'scroll-mt': [{
4724
+ 'scroll-mt': scaleUnambiguousSpacing()
4725
+ }],
4726
+ /**
4727
+ * Scroll Margin Right
4728
+ * @see https://tailwindcss.com/docs/scroll-margin
4729
+ */
4730
+ 'scroll-mr': [{
4731
+ 'scroll-mr': scaleUnambiguousSpacing()
4732
+ }],
4733
+ /**
4734
+ * Scroll Margin Bottom
4735
+ * @see https://tailwindcss.com/docs/scroll-margin
4736
+ */
4737
+ 'scroll-mb': [{
4738
+ 'scroll-mb': scaleUnambiguousSpacing()
4739
+ }],
4740
+ /**
4741
+ * Scroll Margin Left
4742
+ * @see https://tailwindcss.com/docs/scroll-margin
4743
+ */
4744
+ 'scroll-ml': [{
4745
+ 'scroll-ml': scaleUnambiguousSpacing()
4746
+ }],
4747
+ /**
4748
+ * Scroll Padding
4749
+ * @see https://tailwindcss.com/docs/scroll-padding
4750
+ */
4751
+ 'scroll-p': [{
4752
+ 'scroll-p': scaleUnambiguousSpacing()
4753
+ }],
4754
+ /**
4755
+ * Scroll Padding Inline
4756
+ * @see https://tailwindcss.com/docs/scroll-padding
4757
+ */
4758
+ 'scroll-px': [{
4759
+ 'scroll-px': scaleUnambiguousSpacing()
4760
+ }],
4761
+ /**
4762
+ * Scroll Padding Block
4763
+ * @see https://tailwindcss.com/docs/scroll-padding
4764
+ */
4765
+ 'scroll-py': [{
4766
+ 'scroll-py': scaleUnambiguousSpacing()
4767
+ }],
4768
+ /**
4769
+ * Scroll Padding Inline Start
4770
+ * @see https://tailwindcss.com/docs/scroll-padding
4771
+ */
4772
+ 'scroll-ps': [{
4773
+ 'scroll-ps': scaleUnambiguousSpacing()
4774
+ }],
4775
+ /**
4776
+ * Scroll Padding Inline End
4777
+ * @see https://tailwindcss.com/docs/scroll-padding
4778
+ */
4779
+ 'scroll-pe': [{
4780
+ 'scroll-pe': scaleUnambiguousSpacing()
4781
+ }],
4782
+ /**
4783
+ * Scroll Padding Block Start
4784
+ * @see https://tailwindcss.com/docs/scroll-padding
4785
+ */
4786
+ 'scroll-pbs': [{
4787
+ 'scroll-pbs': scaleUnambiguousSpacing()
4788
+ }],
4789
+ /**
4790
+ * Scroll Padding Block End
4791
+ * @see https://tailwindcss.com/docs/scroll-padding
4792
+ */
4793
+ 'scroll-pbe': [{
4794
+ 'scroll-pbe': scaleUnambiguousSpacing()
4795
+ }],
4796
+ /**
4797
+ * Scroll Padding Top
4798
+ * @see https://tailwindcss.com/docs/scroll-padding
4799
+ */
4800
+ 'scroll-pt': [{
4801
+ 'scroll-pt': scaleUnambiguousSpacing()
4802
+ }],
4803
+ /**
4804
+ * Scroll Padding Right
4805
+ * @see https://tailwindcss.com/docs/scroll-padding
4806
+ */
4807
+ 'scroll-pr': [{
4808
+ 'scroll-pr': scaleUnambiguousSpacing()
4809
+ }],
4810
+ /**
4811
+ * Scroll Padding Bottom
4812
+ * @see https://tailwindcss.com/docs/scroll-padding
4813
+ */
4814
+ 'scroll-pb': [{
4815
+ 'scroll-pb': scaleUnambiguousSpacing()
4816
+ }],
4817
+ /**
4818
+ * Scroll Padding Left
4819
+ * @see https://tailwindcss.com/docs/scroll-padding
4820
+ */
4821
+ 'scroll-pl': [{
4822
+ 'scroll-pl': scaleUnambiguousSpacing()
4823
+ }],
4824
+ /**
4825
+ * Scroll Snap Align
4826
+ * @see https://tailwindcss.com/docs/scroll-snap-align
4827
+ */
4828
+ 'snap-align': [{
4829
+ snap: ['start', 'end', 'center', 'align-none']
4830
+ }],
4831
+ /**
4832
+ * Scroll Snap Stop
4833
+ * @see https://tailwindcss.com/docs/scroll-snap-stop
4834
+ */
4835
+ 'snap-stop': [{
4836
+ snap: ['normal', 'always']
4837
+ }],
4838
+ /**
4839
+ * Scroll Snap Type
4840
+ * @see https://tailwindcss.com/docs/scroll-snap-type
4841
+ */
4842
+ 'snap-type': [{
4843
+ snap: ['none', 'x', 'y', 'both']
4844
+ }],
4845
+ /**
4846
+ * Scroll Snap Type Strictness
4847
+ * @see https://tailwindcss.com/docs/scroll-snap-type
4848
+ */
4849
+ 'snap-strictness': [{
4850
+ snap: ['mandatory', 'proximity']
4851
+ }],
4852
+ /**
4853
+ * Touch Action
4854
+ * @see https://tailwindcss.com/docs/touch-action
4855
+ */
4856
+ touch: [{
4857
+ touch: ['auto', 'none', 'manipulation']
4858
+ }],
4859
+ /**
4860
+ * Touch Action X
4861
+ * @see https://tailwindcss.com/docs/touch-action
4862
+ */
4863
+ 'touch-x': [{
4864
+ 'touch-pan': ['x', 'left', 'right']
4865
+ }],
4866
+ /**
4867
+ * Touch Action Y
4868
+ * @see https://tailwindcss.com/docs/touch-action
4869
+ */
4870
+ 'touch-y': [{
4871
+ 'touch-pan': ['y', 'up', 'down']
4872
+ }],
4873
+ /**
4874
+ * Touch Action Pinch Zoom
4875
+ * @see https://tailwindcss.com/docs/touch-action
4876
+ */
4877
+ 'touch-pz': ['touch-pinch-zoom'],
4878
+ /**
4879
+ * User Select
4880
+ * @see https://tailwindcss.com/docs/user-select
4881
+ */
4882
+ select: [{
4883
+ select: ['none', 'text', 'all', 'auto']
4884
+ }],
4885
+ /**
4886
+ * Will Change
4887
+ * @see https://tailwindcss.com/docs/will-change
4888
+ */
4889
+ 'will-change': [{
4890
+ 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]
4891
+ }],
4892
+ // -----------
4893
+ // --- SVG ---
4894
+ // -----------
4895
+ /**
4896
+ * Fill
4897
+ * @see https://tailwindcss.com/docs/fill
4898
+ */
4899
+ fill: [{
4900
+ fill: ['none', ...scaleColor()]
4901
+ }],
4902
+ /**
4903
+ * Stroke Width
4904
+ * @see https://tailwindcss.com/docs/stroke-width
4905
+ */
4906
+ 'stroke-w': [{
4907
+ stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]
4908
+ }],
4909
+ /**
4910
+ * Stroke
4911
+ * @see https://tailwindcss.com/docs/stroke
4912
+ */
4913
+ stroke: [{
4914
+ stroke: ['none', ...scaleColor()]
4915
+ }],
4916
+ // ---------------------
4917
+ // --- Accessibility ---
4918
+ // ---------------------
4919
+ /**
4920
+ * Forced Color Adjust
4921
+ * @see https://tailwindcss.com/docs/forced-color-adjust
4922
+ */
4923
+ 'forced-color-adjust': [{
4924
+ 'forced-color-adjust': ['auto', 'none']
4925
+ }]
4926
+ },
4927
+ conflictingClassGroups: {
4928
+ 'container-named': ['container-type'],
4929
+ overflow: ['overflow-x', 'overflow-y'],
4930
+ overscroll: ['overscroll-x', 'overscroll-y'],
4931
+ inset: ['inset-x', 'inset-y', 'inset-bs', 'inset-be', 'start', 'end', 'top', 'right', 'bottom', 'left'],
4932
+ 'inset-x': ['right', 'left'],
4933
+ 'inset-y': ['top', 'bottom'],
4934
+ flex: ['basis', 'grow', 'shrink'],
4935
+ gap: ['gap-x', 'gap-y'],
4936
+ p: ['px', 'py', 'ps', 'pe', 'pbs', 'pbe', 'pt', 'pr', 'pb', 'pl'],
4937
+ px: ['pr', 'pl'],
4938
+ py: ['pt', 'pb'],
4939
+ m: ['mx', 'my', 'ms', 'me', 'mbs', 'mbe', 'mt', 'mr', 'mb', 'ml'],
4940
+ mx: ['mr', 'ml'],
4941
+ my: ['mt', 'mb'],
4942
+ size: ['w', 'h'],
4943
+ 'font-size': ['leading'],
4944
+ 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],
4945
+ 'fvn-ordinal': ['fvn-normal'],
4946
+ 'fvn-slashed-zero': ['fvn-normal'],
4947
+ 'fvn-figure': ['fvn-normal'],
4948
+ 'fvn-spacing': ['fvn-normal'],
4949
+ 'fvn-fraction': ['fvn-normal'],
4950
+ 'line-clamp': ['display', 'overflow'],
4951
+ 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'],
4952
+ 'rounded-s': ['rounded-ss', 'rounded-es'],
4953
+ 'rounded-e': ['rounded-se', 'rounded-ee'],
4954
+ 'rounded-t': ['rounded-tl', 'rounded-tr'],
4955
+ 'rounded-r': ['rounded-tr', 'rounded-br'],
4956
+ 'rounded-b': ['rounded-br', 'rounded-bl'],
4957
+ 'rounded-l': ['rounded-tl', 'rounded-bl'],
4958
+ 'border-spacing': ['border-spacing-x', 'border-spacing-y'],
4959
+ 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-bs', 'border-w-be', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],
4960
+ 'border-w-x': ['border-w-r', 'border-w-l'],
4961
+ 'border-w-y': ['border-w-t', 'border-w-b'],
4962
+ 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-bs', 'border-color-be', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],
4963
+ 'border-color-x': ['border-color-r', 'border-color-l'],
4964
+ 'border-color-y': ['border-color-t', 'border-color-b'],
4965
+ translate: ['translate-x', 'translate-y', 'translate-none'],
4966
+ 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],
4967
+ 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mbs', 'scroll-mbe', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],
4968
+ 'scroll-mx': ['scroll-mr', 'scroll-ml'],
4969
+ 'scroll-my': ['scroll-mt', 'scroll-mb'],
4970
+ 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pbs', 'scroll-pbe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],
4971
+ 'scroll-px': ['scroll-pr', 'scroll-pl'],
4972
+ 'scroll-py': ['scroll-pt', 'scroll-pb'],
4973
+ touch: ['touch-x', 'touch-y', 'touch-pz'],
4974
+ 'touch-x': ['touch'],
4975
+ 'touch-y': ['touch'],
4976
+ 'touch-pz': ['touch']
4977
+ },
4978
+ conflictingClassGroupModifiers: {
4979
+ 'font-size': ['leading']
4980
+ },
4981
+ postfixLookupClassGroups: ['container-type'],
4982
+ orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']
4983
+ };
4984
+ };
4985
+ const twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);
4986
+
4987
+ function cn() {
4988
+ var inputs = [];
4989
+ for (var _i = 0; _i < arguments.length; _i++) {
4990
+ inputs[_i] = arguments[_i];
4991
+ }
4992
+ return twMerge(clsx(inputs));
4993
+ }
4994
+ var BORDER_COLOR = {
4995
+ countdown: 'border-bia-blue',
4996
+ success: 'border-bia-green',
4997
+ };
4998
+ var Countdown = React.forwardRef(function (_a, ref) {
4999
+ var seconds = _a.seconds, _b = _a.variant, variant = _b === void 0 ? 'countdown' : _b, className = _a.className, props = __rest(_a, ["seconds", "variant", "className"]);
5000
+ var isCountdown = variant === 'countdown';
5001
+ var borderColor = BORDER_COLOR[variant];
5002
+ return (React.createElement("div", __assign({ ref: ref, role: isCountdown ? 'timer' : 'status', "aria-live": "polite", "aria-atomic": "true", className: cn('flex aspect-square w-[120px] flex-col items-center justify-center rounded-radius-full border-[3px]', borderColor, className) }, props), isCountdown ? (React.createElement(React.Fragment, null,
5003
+ React.createElement(Heading, { variant: "2" }, seconds),
5004
+ React.createElement(Text, { variant: "small-text", className: "font-segoe text-bia-coolgrey" }, seconds === 1 ? 'second' : 'seconds'))) : (React.createElement(TbCheck, { size: 46, className: "text-bia-green", "aria-label": "Countdown complete" }))));
5005
+ });
5006
+ Countdown.displayName = 'Countdown';
5007
+
1704
5008
  var DividerConfig = {
1705
5009
  horizontal: 'h-px w-full',
1706
5010
  vertical: 'h-full w-px',
@@ -4535,10 +7839,10 @@ var radiusConfig = {
4535
7839
  right: 'rounded-tr-radius-sm',
4536
7840
  left: 'rounded-tl-radius-sm',
4537
7841
  };
4538
- var variantConfig = {
4539
- default: 'pb-[7.5px] pt-[8.5px] ps-[15px] pe-[10px] gap-[10px]',
4540
- alternative: 'pt-[4.8px] pb-[4.0px] px-[20px] relative',
4541
- 'alternative-more': 'pt-[4.8px] pb-[4.0px] px-[10px] relative',
7842
+ var variantConfig$1 = {
7843
+ default: 'h-[30px] pl-[15px] pr-[10px]',
7844
+ alternative: 'h-[22px] px-[20px] relative',
7845
+ 'alternative-more': 'h-[22px] px-[10px] relative',
4542
7846
  };
4543
7847
  var defaultConfigs = {
4544
7848
  active: 'cursor-default bg-bia-grey-light-80 hover:bg-bia-coolgrey-light-90 text-primary-black',
@@ -4562,8 +7866,7 @@ var actionButtonConfig = {
4562
7866
  };
4563
7867
 
4564
7868
  var TabMenu = React.forwardRef(function (props, ref) {
4565
- var variant = props.variant, rounded = props.rounded, _a = props.text, text = _a === void 0 ? '' : _a, _b = props.isActive, isActive = _b === void 0 ? false : _b, _c = props.moreCount, moreCount = _c === void 0 ? 1 : _c, onClose = props.onClose, onClick = props.onClick, _d = props.className, className = _d === void 0 ? '' : _d, rest = __rest(props, ["variant", "rounded", "text", "isActive", "moreCount", "onClose", "onClick", "className"]);
4566
- var _e = React.useState(false), isMoreExpand = _e[0], setIsMoreExpand = _e[1];
7869
+ var variant = props.variant, rounded = props.rounded, _a = props.text, text = _a === void 0 ? '' : _a, _b = props.isActive, isActive = _b === void 0 ? false : _b, _c = props.moreCount, moreCount = _c === void 0 ? 0 : _c, onClose = props.onClose, onClick = props.onClick, _d = props.className, className = _d === void 0 ? '' : _d, isMoreExpand = props.isMoreExpand, rest = __rest(props, ["variant", "rounded", "text", "isActive", "moreCount", "onClose", "onClick", "className", "isMoreExpand"]);
4567
7870
  var validatedVariant = validUnion(variant, [
4568
7871
  'default',
4569
7872
  'alternative',
@@ -4579,23 +7882,17 @@ var TabMenu = React.forwardRef(function (props, ref) {
4579
7882
  var isAlternative = validatedVariant.startsWith('alternative');
4580
7883
  var isMoreDropdown = validatedVariant === 'alternative-more';
4581
7884
  var stateKey = isActive ? 'active' : 'inactive';
4582
- var baseStyles = isAlternative ? alternativeConfigs[stateKey] : defaultConfigs[stateKey];
7885
+ var baseStyles = isAlternative
7886
+ ? alternativeConfigs[stateKey]
7887
+ : defaultConfigs[stateKey];
4583
7888
  var actionButtonStyles = isAlternative ? actionButtonConfig[stateKey] : '';
4584
7889
  var itemButtonStyles = validatedVariant === 'alternative'
4585
7890
  ? alternativeButtonConfigs[stateKey]
4586
7891
  : defaultButtonConfigs[stateKey];
4587
- var handleWrapperClick = function (e) {
4588
- if (isMoreDropdown) {
4589
- setIsMoreExpand(function (prev) { return !prev; });
4590
- }
4591
- onClick === null || onClick === void 0 ? void 0 : onClick(e);
4592
- };
7892
+ var handleWrapperClick = function (e) { return onClick === null || onClick === void 0 ? void 0 : onClick(e); };
4593
7893
  var handleKeyDown = function (e) {
4594
7894
  if (e.key === 'Enter' || e.key === ' ') {
4595
7895
  e.preventDefault();
4596
- if (isMoreDropdown) {
4597
- setIsMoreExpand(function (prev) { return !prev; });
4598
- }
4599
7896
  onClick === null || onClick === void 0 ? void 0 : onClick(e);
4600
7897
  }
4601
7898
  };
@@ -4603,9 +7900,10 @@ var TabMenu = React.forwardRef(function (props, ref) {
4603
7900
  e.stopPropagation();
4604
7901
  onClose === null || onClose === void 0 ? void 0 : onClose();
4605
7902
  };
4606
- return (React.createElement("div", __assign({ ref: ref, role: "tab", tabIndex: 0, "aria-selected": isActive, "aria-expanded": isMoreDropdown ? isMoreExpand : undefined, className: "tab-menu group/container flex flex-row items-center font-arial text-size-tiny font-normal select-none transition-all outline-none focus-visible:ring-2 focus-visible:ring-primary-black/30 ".concat(isAlternative && !isMoreDropdown ? 'pe-[36px]' : '', " ").concat(radiusConfig[validatedRadius], " ").concat(variantConfig[validatedVariant], " ").concat(baseStyles, " ").concat(className).trim(), onClick: handleWrapperClick, onKeyDown: handleKeyDown }, rest),
4607
- React.createElement("span", { className: "truncate flex-grow" }, isMoreDropdown ? "More (".concat(moreCount, ")") : text),
4608
- React.createElement("div", { className: "grid items-center ".concat(itemButtonStyles) }, isMoreDropdown ? (React.createElement("div", { className: "col-start-2 pl-[2px] flex items-center justify-center h-full" }, isMoreExpand ? (React.createElement(TbChevronUp, { className: "rounded-radius-sm ".concat(isActive ? 'text-primary-black' : 'text-primary-white'), size: 14 })) : (React.createElement(TbChevronDown, { className: "rounded-radius-sm ".concat(isActive ? 'text-primary-black' : 'text-primary-white'), size: 14 })))) : (React.createElement("button", { type: "button", className: "col-start-2 group p-0.5 focus:outline-none flex items-center justify-center", onClick: handleCloseClick, "aria-label": "Close ".concat(text) },
7903
+ var moreCountText = moreCount > 0 ? " (".concat(moreCount, ")") : '';
7904
+ return (React.createElement("div", __assign({ ref: ref, role: "tab", tabIndex: 0, "aria-selected": isActive, "aria-expanded": isMoreDropdown ? isMoreExpand : undefined, className: "tab-menu group/container flex select-none flex-row items-center justify-center font-arial text-size-tiny font-normal outline-none transition-all focus-visible:ring-2 focus-visible:ring-primary-black/30 ".concat(radiusConfig[validatedRadius], " ").concat(variantConfig$1[validatedVariant], " ").concat(baseStyles, " ").concat(className).trim(), onClick: handleWrapperClick, onKeyDown: handleKeyDown }, rest),
7905
+ React.createElement("span", { className: "-top[1px] relative flex-grow truncate text-center" }, isMoreDropdown ? "More".concat(moreCountText) : text),
7906
+ React.createElement("div", { className: "grid items-center ".concat(itemButtonStyles) }, isMoreDropdown ? (React.createElement("div", { className: "col-start-2 flex h-full items-center justify-center pl-[2px]" }, isMoreExpand ? (React.createElement(TbChevronUp, { className: "rounded-radius-sm ".concat(isActive ? 'text-primary-black' : 'text-primary-white'), size: 14 })) : (React.createElement(TbChevronDown, { className: "rounded-radius-sm ".concat(isActive ? 'text-primary-black' : 'text-primary-white'), size: 14 })))) : (React.createElement("button", { type: "button", className: "group col-start-2 flex items-center justify-center p-0.5 focus:outline-none", onClick: handleCloseClick, "aria-label": "Close ".concat(text) },
4609
7907
  React.createElement(TbX, { className: "rounded-radius-sm transition-colors ".concat(actionButtonStyles), size: 14 }))))));
4610
7908
  });
4611
7909
  TabMenu.displayName = 'TabMenu';
@@ -4803,6 +8101,41 @@ function Toaster(_a) {
4803
8101
  React.createElement(TbX, { size: 14 })))));
4804
8102
  }
4805
8103
 
8104
+ var variantConfig = {
8105
+ upcoming: 'bg-white border-2 border-coolgrey-light-50',
8106
+ processed: 'bg-white border-2 border-bia-blue',
8107
+ current: 'bg-white border-2 border-bia-blue',
8108
+ completed: 'bg-bia-green',
8109
+ rejected: 'bg-bia-red',
8110
+ };
8111
+ var lineVariantConfig = {
8112
+ upcoming: 'border border-coolgrey-light-50',
8113
+ processed: 'border border-bia-blue box-border',
8114
+ current: 'border border-bia-blue box-border',
8115
+ completed: 'border border-bia-green box-border',
8116
+ rejected: 'border border-bia-red box-border',
8117
+ };
8118
+ var icon = {
8119
+ current: React.createElement(TbCircleFilled, { className: "text-bia-blue", size: 16 }),
8120
+ completed: React.createElement(TbCheck, { className: "text-bia-white", size: 16 }),
8121
+ rejected: React.createElement(TbX, { className: "text-bia-white", size: 16 }),
8122
+ processed: '',
8123
+ upcoming: '',
8124
+ };
8125
+
8126
+ var StepperItem = function (_a) {
8127
+ var onClick = _a.onClick, _b = _a.variant, variant = _b === void 0 ? 'upcoming' : _b, withBorder = _a.withBorder, children = _a.children, _c = _a.className, className = _c === void 0 ? '' : _c;
8128
+ var stepperCardClass = withBorder
8129
+ ? "border border-bia-grey-dark-10 p-[15px] rounded-radius-lg ".concat(className)
8130
+ : className;
8131
+ var StepperElement = onClick !== undefined && typeof onClick === 'function' ? 'button' : 'div';
8132
+ return (React.createElement(StepperElement, { className: "flex gap-x-3" },
8133
+ React.createElement("div", { className: "flex flex-col items-center" },
8134
+ React.createElement("div", { className: "flex h-6 w-6 items-center justify-center rounded-radius-full ".concat(variant ? variantConfig[variant] : '', " box-border") }, icon[variant]),
8135
+ React.createElement("div", { className: "grow ".concat(variant ? lineVariantConfig[variant] : '') })),
8136
+ React.createElement("div", { className: "stepper-card mb-5 w-full text-justify ".concat(stepperCardClass) }, children)));
8137
+ };
8138
+
4806
8139
  function Window(_a) {
4807
8140
  var _b = _a.size, size = _b === void 0 ? 'sm' : _b, title = _a.title; _a.zIndex; var onClose = _a.onClose, rest = __rest(_a, ["size", "title", "zIndex", "onClose"]);
4808
8141
  var windowSize;
@@ -4902,6 +8235,7 @@ exports.Card = Card;
4902
8235
  exports.Checkbox = Checkbox;
4903
8236
  exports.Color = Color;
4904
8237
  exports.ContextualButton = ContextualButton;
8238
+ exports.Countdown = Countdown;
4905
8239
  exports.DatePicker = DatePicker;
4906
8240
  exports.Display = Display;
4907
8241
  exports.Divider = Divider;
@@ -4945,6 +8279,7 @@ exports.Toaster = Toaster;
4945
8279
  exports.Toggle = Toggle;
4946
8280
  exports.Tooltip = Tooltip;
4947
8281
  exports.TreeItem = TreeItem;
8282
+ exports.VerticalStepper = StepperItem;
4948
8283
  exports.Window = Window;
4949
8284
  exports.getRelativeTime = getRelativeTime;
4950
8285
  exports.useFileTree = useFileTree;