UNPKG

tailwindcss

Version:

A utility-first CSS framework for rapidly building custom user interfaces.

1,513 lines • 136 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { variantPlugins: function() { return variantPlugins; }, corePlugins: function() { return corePlugins; } }); const _fs = /*#__PURE__*/ _interop_require_default(require("fs")); const _path = /*#__PURE__*/ _interop_require_wildcard(require("path")); const _postcss = /*#__PURE__*/ _interop_require_default(require("postcss")); const _createUtilityPlugin = /*#__PURE__*/ _interop_require_default(require("./util/createUtilityPlugin")); const _buildMediaQuery = /*#__PURE__*/ _interop_require_default(require("./util/buildMediaQuery")); const _escapeClassName = /*#__PURE__*/ _interop_require_default(require("./util/escapeClassName")); const _parseAnimationValue = /*#__PURE__*/ _interop_require_default(require("./util/parseAnimationValue")); const _flattenColorPalette = /*#__PURE__*/ _interop_require_default(require("./util/flattenColorPalette")); const _withAlphaVariable = /*#__PURE__*/ _interop_require_wildcard(require("./util/withAlphaVariable")); const _toColorValue = /*#__PURE__*/ _interop_require_default(require("./util/toColorValue")); const _isPlainObject = /*#__PURE__*/ _interop_require_default(require("./util/isPlainObject")); const _transformThemeValue = /*#__PURE__*/ _interop_require_default(require("./util/transformThemeValue")); const _packagejson = require("../package.json"); const _log = /*#__PURE__*/ _interop_require_default(require("./util/log")); const _normalizeScreens = require("./util/normalizeScreens"); const _parseBoxShadowValue = require("./util/parseBoxShadowValue"); const _removeAlphaVariables = require("./util/removeAlphaVariables"); const _featureFlags = require("./featureFlags"); const _dataTypes = require("./util/dataTypes"); const _setupContextUtils = require("./lib/setupContextUtils"); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interop_require_wildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for(var key in obj){ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } let variantPlugins = { childVariant: ({ addVariant })=>{ addVariant("*", "& > *"); }, pseudoElementVariants: ({ addVariant })=>{ addVariant("first-letter", "&::first-letter"); addVariant("first-line", "&::first-line"); addVariant("marker", [ ({ container })=>{ (0, _removeAlphaVariables.removeAlphaVariables)(container, [ "--tw-text-opacity" ]); return "& *::marker"; }, ({ container })=>{ (0, _removeAlphaVariables.removeAlphaVariables)(container, [ "--tw-text-opacity" ]); return "&::marker"; } ]); addVariant("selection", [ "& *::selection", "&::selection" ]); addVariant("file", "&::file-selector-button"); addVariant("placeholder", "&::placeholder"); addVariant("backdrop", "&::backdrop"); addVariant("before", ({ container })=>{ container.walkRules((rule)=>{ let foundContent = false; rule.walkDecls("content", ()=>{ foundContent = true; }); if (!foundContent) { rule.prepend(_postcss.default.decl({ prop: "content", value: "var(--tw-content)" })); } }); return "&::before"; }); addVariant("after", ({ container })=>{ container.walkRules((rule)=>{ let foundContent = false; rule.walkDecls("content", ()=>{ foundContent = true; }); if (!foundContent) { rule.prepend(_postcss.default.decl({ prop: "content", value: "var(--tw-content)" })); } }); return "&::after"; }); }, pseudoClassVariants: ({ addVariant , matchVariant , config , prefix })=>{ let pseudoVariants = [ // Positional [ "first", "&:first-child" ], [ "last", "&:last-child" ], [ "only", "&:only-child" ], [ "odd", "&:nth-child(odd)" ], [ "even", "&:nth-child(even)" ], "first-of-type", "last-of-type", "only-of-type", // State [ "visited", ({ container })=>{ (0, _removeAlphaVariables.removeAlphaVariables)(container, [ "--tw-text-opacity", "--tw-border-opacity", "--tw-bg-opacity" ]); return "&:visited"; } ], "target", [ "open", "&[open]" ], // Forms "default", "checked", "indeterminate", "placeholder-shown", "autofill", "optional", "required", "valid", "invalid", "in-range", "out-of-range", "read-only", // Content "empty", // Interactive "focus-within", [ "hover", !(0, _featureFlags.flagEnabled)(config(), "hoverOnlyWhenSupported") ? "&:hover" : "@media (hover: hover) and (pointer: fine) { &:hover }" ], "focus", "focus-visible", "active", "enabled", "disabled" ].map((variant)=>Array.isArray(variant) ? variant : [ variant, `&:${variant}` ]); for (let [variantName, state] of pseudoVariants){ addVariant(variantName, (ctx)=>{ let result = typeof state === "function" ? state(ctx) : state; return result; }); } let variants = { group: (_, { modifier })=>modifier ? [ `:merge(${prefix(".group")}\\/${(0, _escapeClassName.default)(modifier)})`, " &" ] : [ `:merge(${prefix(".group")})`, " &" ], peer: (_, { modifier })=>modifier ? [ `:merge(${prefix(".peer")}\\/${(0, _escapeClassName.default)(modifier)})`, " ~ &" ] : [ `:merge(${prefix(".peer")})`, " ~ &" ] }; for (let [name, fn] of Object.entries(variants)){ matchVariant(name, (value = "", extra)=>{ let result = (0, _dataTypes.normalize)(typeof value === "function" ? value(extra) : value); if (!result.includes("&")) result = "&" + result; let [a, b] = fn("", extra); let start = null; let end = null; let quotes = 0; for(let i = 0; i < result.length; ++i){ let c = result[i]; if (c === "&") { start = i; } else if (c === "'" || c === '"') { quotes += 1; } else if (start !== null && c === " " && !quotes) { end = i; } } if (start !== null && end === null) { end = result.length; } // Basically this but can handle quotes: // result.replace(/&(\S+)?/g, (_, pseudo = '') => a + pseudo + b) return result.slice(0, start) + a + result.slice(start + 1, end) + b + result.slice(end); }, { values: Object.fromEntries(pseudoVariants), [_setupContextUtils.INTERNAL_FEATURES]: { respectPrefix: false } }); } }, directionVariants: ({ addVariant })=>{ addVariant("ltr", '&:where([dir="ltr"], [dir="ltr"] *)'); addVariant("rtl", '&:where([dir="rtl"], [dir="rtl"] *)'); }, reducedMotionVariants: ({ addVariant })=>{ addVariant("motion-safe", "@media (prefers-reduced-motion: no-preference)"); addVariant("motion-reduce", "@media (prefers-reduced-motion: reduce)"); }, darkVariants: ({ config , addVariant })=>{ let [mode, selector = ".dark"] = [].concat(config("darkMode", "media")); if (mode === false) { mode = "media"; _log.default.warn("darkmode-false", [ "The `darkMode` option in your Tailwind CSS configuration is set to `false`, which now behaves the same as `media`.", "Change `darkMode` to `media` or remove it entirely.", "https://tailwindcss.com/docs/upgrade-guide#remove-dark-mode-configuration" ]); } if (mode === "variant") { let formats; if (Array.isArray(selector)) { formats = selector; } else if (typeof selector === "function") { formats = selector; } else if (typeof selector === "string") { formats = [ selector ]; } // TODO: We could also add these warnings if the user passes a function that returns string | string[] // But this is an advanced enough use case that it's probably not necessary if (Array.isArray(formats)) { for (let format of formats){ if (format === ".dark") { mode = false; _log.default.warn("darkmode-variant-without-selector", [ "When using `variant` for `darkMode`, you must provide a selector.", 'Example: `darkMode: ["variant", ".your-selector &"]`' ]); } else if (!format.includes("&")) { mode = false; _log.default.warn("darkmode-variant-without-ampersand", [ "When using `variant` for `darkMode`, your selector must contain `&`.", 'Example `darkMode: ["variant", ".your-selector &"]`' ]); } } } selector = formats; } if (mode === "selector") { // New preferred behavior addVariant("dark", `&:where(${selector}, ${selector} *)`); } else if (mode === "media") { addVariant("dark", "@media (prefers-color-scheme: dark)"); } else if (mode === "variant") { addVariant("dark", selector); } else if (mode === "class") { // Old behavior addVariant("dark", `&:is(${selector} *)`); } }, printVariant: ({ addVariant })=>{ addVariant("print", "@media print"); }, screenVariants: ({ theme , addVariant , matchVariant })=>{ var _theme; let rawScreens = (_theme = theme("screens")) !== null && _theme !== void 0 ? _theme : {}; let areSimpleScreens = Object.values(rawScreens).every((v)=>typeof v === "string"); let screens = (0, _normalizeScreens.normalizeScreens)(theme("screens")); /** @type {Set<string>} */ let unitCache = new Set([]); /** @param {string} value */ function units(value) { var _value_match; var _value_match_; return (_value_match_ = (_value_match = value.match(/(\D+)$/)) === null || _value_match === void 0 ? void 0 : _value_match[1]) !== null && _value_match_ !== void 0 ? _value_match_ : "(none)"; } /** @param {string} value */ function recordUnits(value) { if (value !== undefined) { unitCache.add(units(value)); } } /** @param {string} value */ function canUseUnits(value) { recordUnits(value); // If the cache was empty it'll become 1 because we've just added the current unit // If the cache was not empty and the units are the same the size doesn't change // Otherwise, if the units are different from what is already known the size will always be > 1 return unitCache.size === 1; } for (const screen of screens){ for (const value of screen.values){ recordUnits(value.min); recordUnits(value.max); } } let screensUseConsistentUnits = unitCache.size <= 1; /** * @typedef {import('./util/normalizeScreens').Screen} Screen */ /** * @param {'min' | 'max'} type * @returns {Record<string, Screen>} */ function buildScreenValues(type) { return Object.fromEntries(screens.filter((screen)=>(0, _normalizeScreens.isScreenSortable)(screen).result).map((screen)=>{ let { min , max } = screen.values[0]; if (type === "min" && min !== undefined) { return screen; } else if (type === "min" && max !== undefined) { return { ...screen, not: !screen.not }; } else if (type === "max" && max !== undefined) { return screen; } else if (type === "max" && min !== undefined) { return { ...screen, not: !screen.not }; } }).map((screen)=>[ screen.name, screen ])); } /** * @param {'min' | 'max'} type * @returns {(a: { value: string | Screen }, z: { value: string | Screen }) => number} */ function buildSort(type) { return (a, z)=>(0, _normalizeScreens.compareScreens)(type, a.value, z.value); } let maxSort = buildSort("max"); let minSort = buildSort("min"); /** @param {'min'|'max'} type */ function buildScreenVariant(type) { return (value)=>{ if (!areSimpleScreens) { _log.default.warn("complex-screen-config", [ "The `min-*` and `max-*` variants are not supported with a `screens` configuration containing objects." ]); return []; } else if (!screensUseConsistentUnits) { _log.default.warn("mixed-screen-units", [ "The `min-*` and `max-*` variants are not supported with a `screens` configuration containing mixed units." ]); return []; } else if (typeof value === "string" && !canUseUnits(value)) { _log.default.warn("minmax-have-mixed-units", [ "The `min-*` and `max-*` variants are not supported with a `screens` configuration containing mixed units." ]); return []; } return [ `@media ${(0, _buildMediaQuery.default)((0, _normalizeScreens.toScreen)(value, type))}` ]; }; } matchVariant("max", buildScreenVariant("max"), { sort: maxSort, values: areSimpleScreens ? buildScreenValues("max") : {} }); // screens and min-* are sorted together when they can be let id = "min-screens"; for (let screen of screens){ addVariant(screen.name, `@media ${(0, _buildMediaQuery.default)(screen)}`, { id, sort: areSimpleScreens && screensUseConsistentUnits ? minSort : undefined, value: screen }); } matchVariant("min", buildScreenVariant("min"), { id, sort: minSort }); }, supportsVariants: ({ matchVariant , theme })=>{ var _theme; matchVariant("supports", (value = "")=>{ let check = (0, _dataTypes.normalize)(value); let isRaw = /^\w*\s*\(/.test(check); // Chrome has a bug where `(condition1)or(condition2)` is not valid // But `(condition1) or (condition2)` is supported. check = isRaw ? check.replace(/\b(and|or|not)\b/g, " $1 ") : check; if (isRaw) { return `@supports ${check}`; } if (!check.includes(":")) { check = `${check}: var(--tw)`; } if (!(check.startsWith("(") && check.endsWith(")"))) { check = `(${check})`; } return `@supports ${check}`; }, { values: (_theme = theme("supports")) !== null && _theme !== void 0 ? _theme : {} }); }, hasVariants: ({ matchVariant , prefix })=>{ matchVariant("has", (value)=>`&:has(${(0, _dataTypes.normalize)(value)})`, { values: {}, [_setupContextUtils.INTERNAL_FEATURES]: { respectPrefix: false } }); matchVariant("group-has", (value, { modifier })=>modifier ? `:merge(${prefix(".group")}\\/${modifier}):has(${(0, _dataTypes.normalize)(value)}) &` : `:merge(${prefix(".group")}):has(${(0, _dataTypes.normalize)(value)}) &`, { values: {}, [_setupContextUtils.INTERNAL_FEATURES]: { respectPrefix: false } }); matchVariant("peer-has", (value, { modifier })=>modifier ? `:merge(${prefix(".peer")}\\/${modifier}):has(${(0, _dataTypes.normalize)(value)}) ~ &` : `:merge(${prefix(".peer")}):has(${(0, _dataTypes.normalize)(value)}) ~ &`, { values: {}, [_setupContextUtils.INTERNAL_FEATURES]: { respectPrefix: false } }); }, ariaVariants: ({ matchVariant , theme })=>{ var _theme; matchVariant("aria", (value)=>`&[aria-${(0, _dataTypes.normalizeAttributeSelectors)((0, _dataTypes.normalize)(value))}]`, { values: (_theme = theme("aria")) !== null && _theme !== void 0 ? _theme : {} }); var _theme1; matchVariant("group-aria", (value, { modifier })=>modifier ? `:merge(.group\\/${modifier})[aria-${(0, _dataTypes.normalizeAttributeSelectors)((0, _dataTypes.normalize)(value))}] &` : `:merge(.group)[aria-${(0, _dataTypes.normalizeAttributeSelectors)((0, _dataTypes.normalize)(value))}] &`, { values: (_theme1 = theme("aria")) !== null && _theme1 !== void 0 ? _theme1 : {} }); var _theme2; matchVariant("peer-aria", (value, { modifier })=>modifier ? `:merge(.peer\\/${modifier})[aria-${(0, _dataTypes.normalizeAttributeSelectors)((0, _dataTypes.normalize)(value))}] ~ &` : `:merge(.peer)[aria-${(0, _dataTypes.normalizeAttributeSelectors)((0, _dataTypes.normalize)(value))}] ~ &`, { values: (_theme2 = theme("aria")) !== null && _theme2 !== void 0 ? _theme2 : {} }); }, dataVariants: ({ matchVariant , theme })=>{ var _theme; matchVariant("data", (value)=>`&[data-${(0, _dataTypes.normalizeAttributeSelectors)((0, _dataTypes.normalize)(value))}]`, { values: (_theme = theme("data")) !== null && _theme !== void 0 ? _theme : {} }); var _theme1; matchVariant("group-data", (value, { modifier })=>modifier ? `:merge(.group\\/${modifier})[data-${(0, _dataTypes.normalizeAttributeSelectors)((0, _dataTypes.normalize)(value))}] &` : `:merge(.group)[data-${(0, _dataTypes.normalizeAttributeSelectors)((0, _dataTypes.normalize)(value))}] &`, { values: (_theme1 = theme("data")) !== null && _theme1 !== void 0 ? _theme1 : {} }); var _theme2; matchVariant("peer-data", (value, { modifier })=>modifier ? `:merge(.peer\\/${modifier})[data-${(0, _dataTypes.normalizeAttributeSelectors)((0, _dataTypes.normalize)(value))}] ~ &` : `:merge(.peer)[data-${(0, _dataTypes.normalizeAttributeSelectors)((0, _dataTypes.normalize)(value))}] ~ &`, { values: (_theme2 = theme("data")) !== null && _theme2 !== void 0 ? _theme2 : {} }); }, orientationVariants: ({ addVariant })=>{ addVariant("portrait", "@media (orientation: portrait)"); addVariant("landscape", "@media (orientation: landscape)"); }, prefersContrastVariants: ({ addVariant })=>{ addVariant("contrast-more", "@media (prefers-contrast: more)"); addVariant("contrast-less", "@media (prefers-contrast: less)"); }, forcedColorsVariants: ({ addVariant })=>{ addVariant("forced-colors", "@media (forced-colors: active)"); } }; let cssTransformValue = [ "translate(var(--tw-translate-x), var(--tw-translate-y))", "rotate(var(--tw-rotate))", "skewX(var(--tw-skew-x))", "skewY(var(--tw-skew-y))", "scaleX(var(--tw-scale-x))", "scaleY(var(--tw-scale-y))" ].join(" "); let cssFilterValue = [ "var(--tw-blur)", "var(--tw-brightness)", "var(--tw-contrast)", "var(--tw-grayscale)", "var(--tw-hue-rotate)", "var(--tw-invert)", "var(--tw-saturate)", "var(--tw-sepia)", "var(--tw-drop-shadow)" ].join(" "); let cssBackdropFilterValue = [ "var(--tw-backdrop-blur)", "var(--tw-backdrop-brightness)", "var(--tw-backdrop-contrast)", "var(--tw-backdrop-grayscale)", "var(--tw-backdrop-hue-rotate)", "var(--tw-backdrop-invert)", "var(--tw-backdrop-opacity)", "var(--tw-backdrop-saturate)", "var(--tw-backdrop-sepia)" ].join(" "); let corePlugins = { preflight: ({ addBase })=>{ let preflightStyles = _postcss.default.parse(_fs.default.readFileSync(_path.join(__dirname, "./css/preflight.css"), "utf8")); addBase([ _postcss.default.comment({ text: `! tailwindcss v${_packagejson.version} | MIT License | https://tailwindcss.com` }), ...preflightStyles.nodes ]); }, container: (()=>{ function extractMinWidths(breakpoints = []) { return breakpoints.flatMap((breakpoint)=>breakpoint.values.map((breakpoint)=>breakpoint.min)).filter((v)=>v !== undefined); } function mapMinWidthsToPadding(minWidths, screens, paddings) { if (typeof paddings === "undefined") { return []; } if (!(typeof paddings === "object" && paddings !== null)) { return [ { screen: "DEFAULT", minWidth: 0, padding: paddings } ]; } let mapping = []; if (paddings.DEFAULT) { mapping.push({ screen: "DEFAULT", minWidth: 0, padding: paddings.DEFAULT }); } for (let minWidth of minWidths){ for (let screen of screens){ for (let { min } of screen.values){ if (min === minWidth) { mapping.push({ minWidth, padding: paddings[screen.name] }); } } } } return mapping; } return function({ addComponents , theme }) { let screens = (0, _normalizeScreens.normalizeScreens)(theme("container.screens", theme("screens"))); let minWidths = extractMinWidths(screens); let paddings = mapMinWidthsToPadding(minWidths, screens, theme("container.padding")); let generatePaddingFor = (minWidth)=>{ let paddingConfig = paddings.find((padding)=>padding.minWidth === minWidth); if (!paddingConfig) { return {}; } return { paddingRight: paddingConfig.padding, paddingLeft: paddingConfig.padding }; }; let atRules = Array.from(new Set(minWidths.slice().sort((a, z)=>parseInt(a) - parseInt(z)))).map((minWidth)=>({ [`@media (min-width: ${minWidth})`]: { ".container": { "max-width": minWidth, ...generatePaddingFor(minWidth) } } })); addComponents([ { ".container": Object.assign({ width: "100%" }, theme("container.center", false) ? { marginRight: "auto", marginLeft: "auto" } : {}, generatePaddingFor(0)) }, ...atRules ]); }; })(), accessibility: ({ addUtilities })=>{ addUtilities({ ".sr-only": { position: "absolute", width: "1px", height: "1px", padding: "0", margin: "-1px", overflow: "hidden", clip: "rect(0, 0, 0, 0)", whiteSpace: "nowrap", borderWidth: "0" }, ".not-sr-only": { position: "static", width: "auto", height: "auto", padding: "0", margin: "0", overflow: "visible", clip: "auto", whiteSpace: "normal" } }); }, pointerEvents: ({ addUtilities })=>{ addUtilities({ ".pointer-events-none": { "pointer-events": "none" }, ".pointer-events-auto": { "pointer-events": "auto" } }); }, visibility: ({ addUtilities })=>{ addUtilities({ ".visible": { visibility: "visible" }, ".invisible": { visibility: "hidden" }, ".collapse": { visibility: "collapse" } }); }, position: ({ addUtilities })=>{ addUtilities({ ".static": { position: "static" }, ".fixed": { position: "fixed" }, ".absolute": { position: "absolute" }, ".relative": { position: "relative" }, ".sticky": { position: "sticky" } }); }, inset: (0, _createUtilityPlugin.default)("inset", [ [ "inset", [ "inset" ] ], [ [ "inset-x", [ "left", "right" ] ], [ "inset-y", [ "top", "bottom" ] ] ], [ [ "start", [ "inset-inline-start" ] ], [ "end", [ "inset-inline-end" ] ], [ "top", [ "top" ] ], [ "right", [ "right" ] ], [ "bottom", [ "bottom" ] ], [ "left", [ "left" ] ] ] ], { supportsNegativeValues: true }), isolation: ({ addUtilities })=>{ addUtilities({ ".isolate": { isolation: "isolate" }, ".isolation-auto": { isolation: "auto" } }); }, zIndex: (0, _createUtilityPlugin.default)("zIndex", [ [ "z", [ "zIndex" ] ] ], { supportsNegativeValues: true }), order: (0, _createUtilityPlugin.default)("order", undefined, { supportsNegativeValues: true }), gridColumn: (0, _createUtilityPlugin.default)("gridColumn", [ [ "col", [ "gridColumn" ] ] ]), gridColumnStart: (0, _createUtilityPlugin.default)("gridColumnStart", [ [ "col-start", [ "gridColumnStart" ] ] ], { supportsNegativeValues: true }), gridColumnEnd: (0, _createUtilityPlugin.default)("gridColumnEnd", [ [ "col-end", [ "gridColumnEnd" ] ] ], { supportsNegativeValues: true }), gridRow: (0, _createUtilityPlugin.default)("gridRow", [ [ "row", [ "gridRow" ] ] ]), gridRowStart: (0, _createUtilityPlugin.default)("gridRowStart", [ [ "row-start", [ "gridRowStart" ] ] ], { supportsNegativeValues: true }), gridRowEnd: (0, _createUtilityPlugin.default)("gridRowEnd", [ [ "row-end", [ "gridRowEnd" ] ] ], { supportsNegativeValues: true }), float: ({ addUtilities })=>{ addUtilities({ ".float-start": { float: "inline-start" }, ".float-end": { float: "inline-end" }, ".float-right": { float: "right" }, ".float-left": { float: "left" }, ".float-none": { float: "none" } }); }, clear: ({ addUtilities })=>{ addUtilities({ ".clear-start": { clear: "inline-start" }, ".clear-end": { clear: "inline-end" }, ".clear-left": { clear: "left" }, ".clear-right": { clear: "right" }, ".clear-both": { clear: "both" }, ".clear-none": { clear: "none" } }); }, margin: (0, _createUtilityPlugin.default)("margin", [ [ "m", [ "margin" ] ], [ [ "mx", [ "margin-left", "margin-right" ] ], [ "my", [ "margin-top", "margin-bottom" ] ] ], [ [ "ms", [ "margin-inline-start" ] ], [ "me", [ "margin-inline-end" ] ], [ "mt", [ "margin-top" ] ], [ "mr", [ "margin-right" ] ], [ "mb", [ "margin-bottom" ] ], [ "ml", [ "margin-left" ] ] ] ], { supportsNegativeValues: true }), boxSizing: ({ addUtilities })=>{ addUtilities({ ".box-border": { "box-sizing": "border-box" }, ".box-content": { "box-sizing": "content-box" } }); }, lineClamp: ({ matchUtilities , addUtilities , theme })=>{ matchUtilities({ "line-clamp": (value)=>({ overflow: "hidden", display: "-webkit-box", "-webkit-box-orient": "vertical", "-webkit-line-clamp": `${value}` }) }, { values: theme("lineClamp") }); addUtilities({ ".line-clamp-none": { overflow: "visible", display: "block", "-webkit-box-orient": "horizontal", "-webkit-line-clamp": "none" } }); }, display: ({ addUtilities })=>{ addUtilities({ ".block": { display: "block" }, ".inline-block": { display: "inline-block" }, ".inline": { display: "inline" }, ".flex": { display: "flex" }, ".inline-flex": { display: "inline-flex" }, ".table": { display: "table" }, ".inline-table": { display: "inline-table" }, ".table-caption": { display: "table-caption" }, ".table-cell": { display: "table-cell" }, ".table-column": { display: "table-column" }, ".table-column-group": { display: "table-column-group" }, ".table-footer-group": { display: "table-footer-group" }, ".table-header-group": { display: "table-header-group" }, ".table-row-group": { display: "table-row-group" }, ".table-row": { display: "table-row" }, ".flow-root": { display: "flow-root" }, ".grid": { display: "grid" }, ".inline-grid": { display: "inline-grid" }, ".contents": { display: "contents" }, ".list-item": { display: "list-item" }, ".hidden": { display: "none" } }); }, aspectRatio: (0, _createUtilityPlugin.default)("aspectRatio", [ [ "aspect", [ "aspect-ratio" ] ] ]), size: (0, _createUtilityPlugin.default)("size", [ [ "size", [ "width", "height" ] ] ]), height: (0, _createUtilityPlugin.default)("height", [ [ "h", [ "height" ] ] ]), maxHeight: (0, _createUtilityPlugin.default)("maxHeight", [ [ "max-h", [ "maxHeight" ] ] ]), minHeight: (0, _createUtilityPlugin.default)("minHeight", [ [ "min-h", [ "minHeight" ] ] ]), width: (0, _createUtilityPlugin.default)("width", [ [ "w", [ "width" ] ] ]), minWidth: (0, _createUtilityPlugin.default)("minWidth", [ [ "min-w", [ "minWidth" ] ] ]), maxWidth: (0, _createUtilityPlugin.default)("maxWidth", [ [ "max-w", [ "maxWidth" ] ] ]), flex: (0, _createUtilityPlugin.default)("flex"), flexShrink: (0, _createUtilityPlugin.default)("flexShrink", [ [ "flex-shrink", [ "flex-shrink" ] ], [ "shrink", [ "flex-shrink" ] ] ]), flexGrow: (0, _createUtilityPlugin.default)("flexGrow", [ [ "flex-grow", [ "flex-grow" ] ], [ "grow", [ "flex-grow" ] ] ]), flexBasis: (0, _createUtilityPlugin.default)("flexBasis", [ [ "basis", [ "flex-basis" ] ] ]), tableLayout: ({ addUtilities })=>{ addUtilities({ ".table-auto": { "table-layout": "auto" }, ".table-fixed": { "table-layout": "fixed" } }); }, captionSide: ({ addUtilities })=>{ addUtilities({ ".caption-top": { "caption-side": "top" }, ".caption-bottom": { "caption-side": "bottom" } }); }, borderCollapse: ({ addUtilities })=>{ addUtilities({ ".border-collapse": { "border-collapse": "collapse" }, ".border-separate": { "border-collapse": "separate" } }); }, borderSpacing: ({ addDefaults , matchUtilities , theme })=>{ addDefaults("border-spacing", { "--tw-border-spacing-x": 0, "--tw-border-spacing-y": 0 }); matchUtilities({ "border-spacing": (value)=>{ return { "--tw-border-spacing-x": value, "--tw-border-spacing-y": value, "@defaults border-spacing": {}, "border-spacing": "var(--tw-border-spacing-x) var(--tw-border-spacing-y)" }; }, "border-spacing-x": (value)=>{ return { "--tw-border-spacing-x": value, "@defaults border-spacing": {}, "border-spacing": "var(--tw-border-spacing-x) var(--tw-border-spacing-y)" }; }, "border-spacing-y": (value)=>{ return { "--tw-border-spacing-y": value, "@defaults border-spacing": {}, "border-spacing": "var(--tw-border-spacing-x) var(--tw-border-spacing-y)" }; } }, { values: theme("borderSpacing") }); }, transformOrigin: (0, _createUtilityPlugin.default)("transformOrigin", [ [ "origin", [ "transformOrigin" ] ] ]), translate: (0, _createUtilityPlugin.default)("translate", [ [ [ "translate-x", [ [ "@defaults transform", {} ], "--tw-translate-x", [ "transform", cssTransformValue ] ] ], [ "translate-y", [ [ "@defaults transform", {} ], "--tw-translate-y", [ "transform", cssTransformValue ] ] ] ] ], { supportsNegativeValues: true }), rotate: (0, _createUtilityPlugin.default)("rotate", [ [ "rotate", [ [ "@defaults transform", {} ], "--tw-rotate", [ "transform", cssTransformValue ] ] ] ], { supportsNegativeValues: true }), skew: (0, _createUtilityPlugin.default)("skew", [ [ [ "skew-x", [ [ "@defaults transform", {} ], "--tw-skew-x", [ "transform", cssTransformValue ] ] ], [ "skew-y", [ [ "@defaults transform", {} ], "--tw-skew-y", [ "transform", cssTransformValue ] ] ] ] ], { supportsNegativeValues: true }), scale: (0, _createUtilityPlugin.default)("scale", [ [ "scale", [ [ "@defaults transform", {} ], "--tw-scale-x", "--tw-scale-y", [ "transform", cssTransformValue ] ] ], [ [ "scale-x", [ [ "@defaults transform", {} ], "--tw-scale-x", [ "transform", cssTransformValue ] ] ], [ "scale-y", [ [ "@defaults transform", {} ], "--tw-scale-y", [ "transform", cssTransformValue ] ] ] ] ], { supportsNegativeValues: true }), transform: ({ addDefaults , addUtilities })=>{ addDefaults("transform", { "--tw-translate-x": "0", "--tw-translate-y": "0", "--tw-rotate": "0", "--tw-skew-x": "0", "--tw-skew-y": "0", "--tw-scale-x": "1", "--tw-scale-y": "1" }); addUtilities({ ".transform": { "@defaults transform": {}, transform: cssTransformValue }, ".transform-cpu": { transform: cssTransformValue }, ".transform-gpu": { transform: cssTransformValue.replace("translate(var(--tw-translate-x), var(--tw-translate-y))", "translate3d(var(--tw-translate-x), var(--tw-translate-y), 0)") }, ".transform-none": { transform: "none" } }); }, animation: ({ matchUtilities , theme , config })=>{ let prefixName = (name)=>(0, _escapeClassName.default)(config("prefix") + name); var _theme; let keyframes = Object.fromEntries(Object.entries((_theme = theme("keyframes")) !== null && _theme !== void 0 ? _theme : {}).map(([key, value])=>{ return [ key, { [`@keyframes ${prefixName(key)}`]: value } ]; })); matchUtilities({ animate: (value)=>{ let animations = (0, _parseAnimationValue.default)(value); return [ ...animations.flatMap((animation)=>keyframes[animation.name]), { animation: animations.map(({ name , value })=>{ if (name === undefined || keyframes[name] === undefined) { return value; } return value.replace(name, prefixName(name)); }).join(", ") } ]; } }, { values: theme("animation") }); }, cursor: (0, _createUtilityPlugin.default)("cursor"), touchAction: ({ addDefaults , addUtilities })=>{ addDefaults("touch-action", { "--tw-pan-x": " ", "--tw-pan-y": " ", "--tw-pinch-zoom": " " }); let cssTouchActionValue = "var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)"; addUtilities({ ".touch-auto": { "touch-action": "auto" }, ".touch-none": { "touch-action": "none" }, ".touch-pan-x": { "@defaults touch-action": {}, "--tw-pan-x": "pan-x", "touch-action": cssTouchActionValue }, ".touch-pan-left": { "@defaults touch-action": {}, "--tw-pan-x": "pan-left", "touch-action": cssTouchActionValue }, ".touch-pan-right": { "@defaults touch-action": {}, "--tw-pan-x": "pan-right", "touch-action": cssTouchActionValue }, ".touch-pan-y": { "@defaults touch-action": {}, "--tw-pan-y": "pan-y", "touch-action": cssTouchActionValue }, ".touch-pan-up": { "@defaults touch-action": {}, "--tw-pan-y": "pan-up", "touch-action": cssTouchActionValue }, ".touch-pan-down": { "@defaults touch-action": {}, "--tw-pan-y": "pan-down", "touch-action": cssTouchActionValue }, ".touch-pinch-zoom": { "@defaults touch-action": {}, "--tw-pinch-zoom": "pinch-zoom", "touch-action": cssTouchActionValue }, ".touch-manipulation": { "touch-action": "manipulation" } }); }, userSelect: ({ addUtilities })=>{ addUtilities({ ".select-none": { "user-select": "none" }, ".select-text": { "user-select": "text" }, ".select-all": { "user-select": "all" }, ".select-auto": { "user-select": "auto" } }); }, resize: ({ addUtilities })=>{ addUtilities({ ".resize-none": { resize: "none" }, ".resize-y": { resize: "vertical" }, ".resize-x": { resize: "horizontal" }, ".resize": { resize: "both" } }); }, scrollSnapType: ({ addDefaults , addUtilities })=>{ addDefaults("scroll-snap-type", { "--tw-scroll-snap-strictness": "proximity" }); addUtilities({ ".snap-none": { "scroll-snap-type": "none" }, ".snap-x": { "@defaults scroll-snap-type": {}, "scroll-snap-type": "x var(--tw-scroll-snap-strictness)" }, ".snap-y": { "@defaults scroll-snap-type": {}, "scroll-snap-type": "y va