UNPKG

@twind/preset-tailwind

Version:

Tailwind CSS preset for twind

1 lines 56.4 kB
{"version":3,"file":"rules.dev.cjs","sources":["../src/rules.ts"],"sourcesContent":["/**\n * @module @twind/preset-tailwind/rules\n */\n\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\nimport type {\n MatchResult,\n Rule,\n MaybeArray,\n CSSProperties,\n CSSObject,\n CSSBase,\n ThemeMatchResult,\n ThemeRuleResolver,\n ColorFromThemeValue,\n AutocompleteProvider,\n} from '@twind/core'\n\nimport { DEV } from 'distilt/env'\n\nimport {\n mql,\n match,\n matchTheme,\n matchColor,\n toColorValue,\n toCSS,\n asArray,\n arbitrary,\n withAutocomplete,\n} from '@twind/core'\n\nimport type { TailwindTheme } from './types'\n\n// indirection wrapper to remove autocomplete functions from production bundles\nfunction withAutocomplete$(\n rule: Rule<TailwindTheme>,\n autocomplete: AutocompleteProvider<TailwindTheme> | false,\n): Rule<TailwindTheme> {\n if (DEV) {\n return withAutocomplete(rule, autocomplete)\n }\n\n return rule\n}\n\nconst rules: Rule<TailwindTheme>[] = [\n /* arbitrary properties: [paint-order:markers] */\n match('\\\\[([-\\\\w]+):(.+)]', ({ 1: $1, 2: $2 }, context) => ({\n '@layer overrides': {\n '&': {\n [$1]: arbitrary(`[${$2}]`, '', context),\n },\n },\n })),\n\n /* Styling based on parent and peer state */\n withAutocomplete$(\n match('(group|peer)([~/][^-[]+)?', ({ input }, { h }) => [{ c: h(input) }]),\n DEV && (() => ['group', 'peer']),\n ),\n\n /* LAYOUT */\n matchTheme('aspect-', 'aspectRatio'),\n\n match('container', (_, { theme }) => {\n const { screens = theme('screens'), center, padding } = theme('container')\n\n const rules = {\n width: '100%',\n marginRight: center && 'auto',\n marginLeft: center && 'auto',\n ...paddingFor('xs'),\n } as CSSObject\n\n for (const screen in screens) {\n const value = screens[screen]\n\n if (typeof value == 'string') {\n rules[mql(value)] = {\n '&': {\n maxWidth: value,\n ...paddingFor(screen),\n },\n }\n }\n }\n\n return rules\n\n function paddingFor(screen: string): CSSProperties | undefined {\n const value =\n padding && (typeof padding == 'string' ? padding : padding[screen] || padding.DEFAULT)\n\n if (value) {\n return {\n paddingRight: value,\n paddingLeft: value,\n }\n }\n }\n }),\n\n // Content\n matchTheme('content-', 'content', ({ _ }) => ({\n '--tw-content': _,\n content: 'var(--tw-content)',\n })),\n\n // Box Decoration Break\n match('(?:box-)?decoration-(slice|clone)', 'boxDecorationBreak'),\n\n // Box Sizing\n match('box-(border|content)', 'boxSizing', ({ 1: $1 }) => $1 + '-box'),\n\n // Display\n match('hidden', { display: 'none' }),\n\n // Table Layout\n match('table-(auto|fixed)', 'tableLayout'),\n\n match(\n [\n '(block|flex|table|grid|inline|contents|flow-root|list-item)',\n '(inline-(block|flex|table|grid))',\n '(table-(caption|cell|column|row|(column|row|footer|header)-group))',\n ],\n 'display',\n ),\n\n // Floats\n '(float)-(left|right|none)',\n\n // Clear\n '(clear)-(left|right|none|both)',\n\n // Overflow\n '(overflow(?:-[xy])?)-(auto|hidden|clip|visible|scroll)',\n\n // Isolation\n '(isolation)-(auto)',\n\n // Isolation\n match('isolate', 'isolation'),\n\n // Object Fit\n match('object-(contain|cover|fill|none|scale-down)', 'objectFit'),\n\n // Object Position\n matchTheme('object-', 'objectPosition'),\n match('object-(top|bottom|center|(left|right)(-(top|bottom))?)', 'objectPosition', spacify),\n\n // Overscroll Behavior\n match('overscroll(-[xy])?-(auto|contain|none)', ({ 1: $1 = '', 2: $2 }) => ({\n [('overscroll-behavior' + $1) as 'overscroll-behavior-x']: $2 as 'auto',\n })),\n\n // Position\n match('(static|fixed|absolute|relative|sticky)', 'position'),\n\n // Top / Right / Bottom / Left\n matchTheme('-?inset(-[xy])?(?:$|-)', 'inset', ({ 1: $1, _ }) => ({\n top: $1 != '-x' && _,\n right: $1 != '-y' && _,\n bottom: $1 != '-x' && _,\n left: $1 != '-y' && _,\n })),\n\n matchTheme('-?(top|bottom|left|right)(?:$|-)', 'inset'),\n\n // Visibility\n match('(visible|collapse)', 'visibility'),\n match('invisible', { visibility: 'hidden' }),\n\n // Z-Index\n matchTheme('-?z-', 'zIndex'),\n\n /* FLEXBOX */\n // Flex Direction\n match('flex-((row|col)(-reverse)?)', 'flexDirection', columnify),\n\n match('flex-(wrap|wrap-reverse|nowrap)', 'flexWrap'),\n matchTheme('(flex-(?:grow|shrink))(?:$|-)' /*, 'flex-grow' | flex-shrink */),\n matchTheme('(flex)-' /*, 'flex' */),\n matchTheme('grow(?:$|-)', 'flexGrow'),\n matchTheme('shrink(?:$|-)', 'flexShrink'),\n matchTheme('basis-', 'flexBasis'),\n\n matchTheme('-?(order)-' /*, 'order' */),\n withAutocomplete$('-?(order)-(\\\\d+)', DEV && (() => range({ end: 12 }))),\n\n /* GRID */\n // Grid Template Columns\n matchTheme('grid-cols-', 'gridTemplateColumns'),\n withAutocomplete$(\n match('grid-cols-(\\\\d+)', 'gridTemplateColumns', gridTemplate),\n DEV && (() => range({ end: 6 })),\n ),\n\n // Grid Column Start / End\n matchTheme('col-', 'gridColumn'),\n withAutocomplete$(\n match('col-(span)-(\\\\d+)', 'gridColumn', span),\n DEV && (() => range({ end: 12 })),\n ),\n\n matchTheme('col-start-', 'gridColumnStart'),\n withAutocomplete$(\n match('col-start-(auto|\\\\d+)', 'gridColumnStart'),\n DEV && (({ 1: $1 }) => ($1 === 'auto' ? [''] : range({ end: 13 }))),\n ),\n\n matchTheme('col-end-', 'gridColumnEnd'),\n withAutocomplete$(\n match('col-end-(auto|\\\\d+)', 'gridColumnEnd'),\n DEV && (({ 1: $1 }) => ($1 === 'auto' ? [''] : range({ end: 13 }))),\n ),\n\n // Grid Template Rows\n matchTheme('grid-rows-', 'gridTemplateRows'),\n withAutocomplete$(\n match('grid-rows-(\\\\d+)', 'gridTemplateRows', gridTemplate),\n DEV && (() => range({ end: 6 })),\n ),\n\n // Grid Row Start / End\n matchTheme('row-', 'gridRow'),\n withAutocomplete$(match('row-(span)-(\\\\d+)', 'gridRow', span), DEV && (() => range({ end: 6 }))),\n\n matchTheme('row-start-', 'gridRowStart'),\n withAutocomplete$(\n match('row-start-(auto|\\\\d+)', 'gridRowStart'),\n DEV && (({ 1: $1 }) => ($1 === 'auto' ? [''] : range({ end: 7 }))),\n ),\n\n matchTheme('row-end-', 'gridRowEnd'),\n withAutocomplete$(\n match('row-end-(auto|\\\\d+)', 'gridRowEnd'),\n DEV && (({ 1: $1 }) => ($1 === 'auto' ? [''] : range({ end: 7 }))),\n ),\n\n // Grid Auto Flow\n match('grid-flow-((row|col)(-dense)?)', 'gridAutoFlow', (match) => spacify(columnify(match))),\n match('grid-flow-(dense)', 'gridAutoFlow'),\n\n // Grid Auto Columns\n matchTheme('auto-cols-', 'gridAutoColumns'),\n\n // Grid Auto Rows\n matchTheme('auto-rows-', 'gridAutoRows'),\n\n // Gap\n matchTheme('gap-x(?:$|-)', 'gap', 'columnGap'),\n matchTheme('gap-y(?:$|-)', 'gap', 'rowGap'),\n matchTheme('gap(?:$|-)', 'gap'),\n\n /* BOX ALIGNMENT */\n // Justify Items\n // Justify Self\n withAutocomplete$(\n '(justify-(?:items|self))-',\n DEV &&\n (({ 1: $1 }) =>\n $1.endsWith('-items-')\n ? ['start', 'end', 'center', 'stretch']\n : /* '-self-' */ ['auto', 'start', 'end', 'center', 'stretch']),\n ),\n\n // Justify Content\n withAutocomplete$(\n match('justify-', 'justifyContent', convertContentValue),\n DEV && (() => ['start', 'end', 'center', 'between', 'around', 'evenly']),\n ),\n\n // Align Content\n // Align Items\n // Align Self\n withAutocomplete$(\n match('(content|items|self)-', (match) => ({\n [('align-' + match[1]) as 'align-content']: convertContentValue(match),\n })),\n DEV &&\n (({ 1: $1 }) =>\n $1 == 'content'\n ? ['center', 'start', 'end', 'between', 'around', 'evenly', 'stretch', 'baseline']\n : $1 == 'items'\n ? ['start', 'end', 'center', 'stretch', 'baseline']\n : /* $1 == 'self' */ ['auto', 'start', 'end', 'center', 'stretch', 'baseline']),\n ),\n\n // Place Content\n // Place Items\n // Place Self\n withAutocomplete$(\n match('(place-(content|items|self))-', ({ 1: $1, $$ }) => ({\n [$1 as 'place-content']: ('wun'.includes($$[3]) ? 'space-' : '') + $$,\n })),\n DEV &&\n (({ 2: $2 }) =>\n $2 == 'content'\n ? ['center', 'start', 'end', 'between', 'around', 'evenly', 'stretch', 'baseline']\n : $2 == 'items'\n ? ['start', 'end', 'center', 'stretch', 'baseline']\n : /* $2 == 'self' */ ['auto', 'start', 'end', 'center', 'stretch', 'baseline']),\n ),\n\n /* SPACING */\n // Padding\n matchTheme('p([xytrbl])?(?:$|-)', 'padding', edge('padding')),\n\n // Margin\n matchTheme('-?m([xytrbl])?(?:$|-)', 'margin', edge('margin')),\n\n // Space Between\n matchTheme('-?space-(x|y)(?:$|-)', 'space', ({ 1: $1, _ }) => ({\n '&>:not([hidden])~:not([hidden])': {\n [`--tw-space-${$1}-reverse`]: '0',\n ['margin-' +\n { y: 'top', x: 'left' }[\n $1 as 'y' | 'x'\n ]]: `calc(${_} * calc(1 - var(--tw-space-${$1}-reverse)))`,\n ['margin-' +\n { y: 'bottom', x: 'right' }[$1 as 'y' | 'x']]: `calc(${_} * var(--tw-space-${$1}-reverse))`,\n },\n })),\n\n match('space-(x|y)-reverse', ({ 1: $1 }) => ({\n '&>:not([hidden])~:not([hidden])': {\n [`--tw-space-${$1}-reverse`]: '1',\n },\n })),\n\n /* SIZING */\n // Width\n matchTheme('w-', 'width'),\n\n // Min-Width\n matchTheme('min-w-', 'minWidth'),\n\n // Max-Width\n matchTheme('max-w-', 'maxWidth'),\n\n // Height\n matchTheme('h-', 'height'),\n\n // Min-Height\n matchTheme('min-h-', 'minHeight'),\n\n // Max-Height\n matchTheme('max-h-', 'maxHeight'),\n\n /* TYPOGRAPHY */\n // Font Weight\n matchTheme('font-', 'fontWeight'),\n\n // Font Family\n matchTheme('font-', 'fontFamily', ({ _ }) => {\n _ = asArray(_)\n\n if (typeof _[1] == 'string') {\n return { fontFamily: join(_ as MaybeArray<string>) }\n }\n\n return {\n fontFamily: join(_[0]),\n ...(_[1] as { fontFeatureSettings?: string }),\n }\n }),\n\n // Font Smoothing\n match('antialiased', {\n WebkitFontSmoothing: 'antialiased',\n MozOsxFontSmoothing: 'grayscale',\n }),\n\n match('subpixel-antialiased', {\n WebkitFontSmoothing: 'auto',\n MozOsxFontSmoothing: 'auto',\n }),\n\n // Font Style\n match('italic', 'fontStyle'),\n match('not-italic', { fontStyle: 'normal' }),\n\n // Font Variant Numeric\n match(\n '(ordinal|slashed-zero|(normal|lining|oldstyle|proportional|tabular)-nums|(diagonal|stacked)-fractions)',\n ({ 1: $1, 2: $2 = '', 3: $3 }) =>\n // normal-nums\n $2 == 'normal'\n ? { fontVariantNumeric: 'normal' }\n : {\n [('--tw-' +\n ($3 // diagonal-fractions, stacked-fractions\n ? 'numeric-fraction'\n : 'pt'.includes($2[0]) // proportional-nums, tabular-nums\n ? 'numeric-spacing'\n : $2 // lining-nums, oldstyle-nums\n ? 'numeric-figure'\n : // ordinal, slashed-zero\n $1)) as 'numeric-spacing']: $1,\n fontVariantNumeric:\n 'var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)',\n ...asDefaults({\n '--tw-ordinal': 'var(--tw-empty,/*!*/ /*!*/)',\n '--tw-slashed-zero': 'var(--tw-empty,/*!*/ /*!*/)',\n '--tw-numeric-figure': 'var(--tw-empty,/*!*/ /*!*/)',\n '--tw-numeric-spacing': 'var(--tw-empty,/*!*/ /*!*/)',\n '--tw-numeric-fraction': 'var(--tw-empty,/*!*/ /*!*/)',\n }),\n },\n ),\n\n // Letter Spacing\n matchTheme('tracking-', 'letterSpacing'),\n\n // Line Height\n matchTheme('leading-', 'lineHeight'),\n\n // List Style Position\n match('list-(inside|outside)', 'listStylePosition'),\n\n // List Style Type\n matchTheme('list-', 'listStyleType'),\n withAutocomplete$(match('list-', 'listStyleType'), DEV && (() => ['none', 'disc', 'decimal'])),\n\n // Placeholder Opacity\n matchTheme('placeholder-opacity-', 'placeholderOpacity', ({ _ }) => ({\n ['&::placeholder']: { '--tw-placeholder-opacity': _ },\n })),\n\n // Placeholder Color\n matchColor('placeholder-', { property: 'color', selector: '&::placeholder' }),\n\n // Text Alignment\n match('text-(left|center|right|justify|start|end)', 'textAlign'),\n\n match('text-(ellipsis|clip)', 'textOverflow'),\n\n // Text Opacity\n matchTheme('text-opacity-', 'textOpacity', '--tw-text-opacity'),\n\n // Text Color\n matchColor('text-', { property: 'color' }),\n\n // Font Size\n matchTheme('text-', 'fontSize', ({ _ }) =>\n typeof _ == 'string'\n ? { fontSize: _ }\n : {\n fontSize: _[0],\n ...(typeof _[1] == 'string' ? { lineHeight: _[1] } : _[1]),\n },\n ),\n\n // Text Indent\n matchTheme('indent-', 'textIndent'),\n\n // Text Decoration\n match('(overline|underline|line-through)', 'textDecorationLine'),\n match('no-underline', { textDecorationLine: 'none' }),\n\n // Text Underline offset\n matchTheme('underline-offset-', 'textUnderlineOffset'),\n\n // Text Decoration Color\n matchColor('decoration-', {\n section: 'textDecorationColor',\n opacityVariable: false,\n opacitySection: 'opacity',\n }),\n\n // Text Decoration Thickness\n matchTheme('decoration-', 'textDecorationThickness'),\n\n // Text Decoration Style\n withAutocomplete$(\n match('decoration-', 'textDecorationStyle'),\n DEV && (() => ['solid', 'double', 'dotted', 'dashed', 'wavy']),\n ),\n\n // Text Transform\n match('(uppercase|lowercase|capitalize)', 'textTransform'),\n match('normal-case', { textTransform: 'none' }),\n\n // Text Overflow\n match('truncate', {\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n }),\n\n // Vertical Alignment\n withAutocomplete$(\n match('align-', 'verticalAlign'),\n DEV &&\n (() => ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super']),\n ),\n\n // Whitespace\n withAutocomplete$(\n match('whitespace-', 'whiteSpace'),\n DEV && (() => ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap']),\n ),\n\n // Word Break\n match('break-normal', { wordBreak: 'normal', overflowWrap: 'normal' }),\n match('break-words', { overflowWrap: 'break-word' }),\n match('break-all', { wordBreak: 'break-all' }),\n match('break-keep', { wordBreak: 'keep-all' }),\n\n // Caret Color\n matchColor('caret-', {\n // section: 'caretColor',\n opacityVariable: false,\n opacitySection: 'opacity',\n }),\n\n // Accent Color\n matchColor('accent-', {\n // section: 'accentColor',\n opacityVariable: false,\n opacitySection: 'opacity',\n }),\n\n // Gradient Color Stops\n match(\n 'bg-gradient-to-([trbl]|[tb][rl])',\n 'backgroundImage',\n ({ 1: $1 }) => `linear-gradient(to ${position($1, ' ')},var(--tw-gradient-stops))`,\n ),\n\n matchColor(\n 'from-',\n {\n section: 'gradientColorStops',\n opacityVariable: false,\n opacitySection: 'opacity',\n },\n ({ _ }) => ({\n '--tw-gradient-from': _.value,\n '--tw-gradient-to': _.color({ opacityValue: '0' }),\n '--tw-gradient-stops': `var(--tw-gradient-from),var(--tw-gradient-to)`,\n }),\n ),\n matchColor(\n 'via-',\n\n {\n section: 'gradientColorStops',\n opacityVariable: false,\n opacitySection: 'opacity',\n },\n ({ _ }) => ({\n '--tw-gradient-to': _.color({ opacityValue: '0' }),\n '--tw-gradient-stops': `var(--tw-gradient-from),${_.value},var(--tw-gradient-to)`,\n }),\n ),\n matchColor('to-', {\n section: 'gradientColorStops',\n property: '--tw-gradient-to',\n opacityVariable: false,\n opacitySection: 'opacity',\n }),\n\n /* BACKGROUNDS */\n // Background Attachment\n match('bg-(fixed|local|scroll)', 'backgroundAttachment'),\n\n // Background Origin\n match('bg-origin-(border|padding|content)', 'backgroundOrigin', ({ 1: $1 }) => $1 + '-box'),\n\n // Background Repeat\n match(['bg-(no-repeat|repeat(-[xy])?)', 'bg-repeat-(round|space)'], 'backgroundRepeat'),\n\n // Background Blend Mode\n withAutocomplete$(\n match('bg-blend-', 'backgroundBlendMode'),\n DEV &&\n (() => [\n 'normal',\n 'multiply',\n 'screen',\n 'overlay',\n 'darken',\n 'lighten',\n 'color-dodge',\n 'color-burn',\n 'hard-light',\n 'soft-light',\n 'difference',\n 'exclusion',\n 'hue',\n 'saturation',\n 'color',\n 'luminosity',\n ]),\n ),\n\n // Background Clip\n match(\n 'bg-clip-(border|padding|content|text)',\n 'backgroundClip',\n ({ 1: $1 }) => $1 + ($1 == 'text' ? '' : '-box'),\n ),\n\n // Background Opacity\n matchTheme('bg-opacity-', 'backgroundOpacity', '--tw-bg-opacity'),\n\n // Background Color\n // bg-${backgroundColor}/${backgroundOpacity}\n matchColor('bg-', { section: 'backgroundColor' }),\n\n // Background Image\n // supported arbitrary types are: length, color, angle, list\n matchTheme('bg-', 'backgroundImage'),\n\n // Background Position\n matchTheme('bg-', 'backgroundPosition'),\n match('bg-(top|bottom|center|(left|right)(-(top|bottom))?)', 'backgroundPosition', spacify),\n\n // Background Size\n matchTheme('bg-', 'backgroundSize'),\n\n /* BORDERS */\n // Border Radius\n matchTheme('rounded(?:$|-)', 'borderRadius'),\n matchTheme('rounded-([trbl]|[tb][rl])(?:$|-)', 'borderRadius', ({ 1: $1, _ }) => {\n const corners = (\n {\n t: ['tl', 'tr'],\n r: ['tr', 'br'],\n b: ['bl', 'br'],\n l: ['bl', 'tl'],\n } as const\n )[$1] || [$1, $1]\n\n return {\n [`border-${position(corners[0])}-radius` as 'border-top-left-radius']: _,\n [`border-${position(corners[1])}-radius` as 'border-top-right-radius']: _,\n }\n }),\n\n // Border Collapse\n match('border-(collapse|separate)', 'borderCollapse'),\n\n // Border Opacity\n matchTheme('border-opacity(?:$|-)', 'borderOpacity', '--tw-border-opacity'),\n\n // Border Style\n match('border-(solid|dashed|dotted|double|none)', 'borderStyle'),\n\n // Border Spacing\n matchTheme('border-spacing(-[xy])?(?:$|-)', 'borderSpacing', ({ 1: $1, _ }) => ({\n ...asDefaults({\n '--tw-border-spacing-x': '0',\n '--tw-border-spacing-y': '0',\n }),\n [('--tw-border-spacing' + ($1 || '-x')) as '--tw-border-spacing-x']: _,\n [('--tw-border-spacing' + ($1 || '-y')) as '--tw-border-spacing-y']: _,\n 'border-spacing': 'var(--tw-border-spacing-x) var(--tw-border-spacing-y)',\n })),\n\n // Border Color\n matchColor('border-([xytrbl])-', { section: 'borderColor' }, edge('border', 'Color')),\n matchColor('border-'),\n\n // Border Width\n matchTheme('border-([xytrbl])(?:$|-)', 'borderWidth', edge('border', 'Width')),\n matchTheme('border(?:$|-)', 'borderWidth'),\n\n // Divide Opacity\n matchTheme('divide-opacity(?:$|-)', 'divideOpacity', ({ _ }) => ({\n '&>:not([hidden])~:not([hidden])': { '--tw-divide-opacity': _ },\n })),\n\n // Divide Style\n match('divide-(solid|dashed|dotted|double|none)', ({ 1: $1 }) => ({\n '&>:not([hidden])~:not([hidden])': { borderStyle: $1 },\n })),\n\n // Divide Width\n match('divide-([xy]-reverse)', ({ 1: $1 }) => ({\n '&>:not([hidden])~:not([hidden])': { ['--tw-divide-' + $1]: '1' },\n })),\n\n matchTheme('divide-([xy])(?:$|-)', 'divideWidth', ({ 1: $1, _ }) => {\n const edges = (\n {\n x: 'lr',\n y: 'tb',\n } as const\n )[$1 as 'x' | 'y']\n\n return {\n '&>:not([hidden])~:not([hidden])': {\n [`--tw-divide-${$1}-reverse`]: '0',\n [`border-${position(\n edges[0],\n )}Width`]: `calc(${_} * calc(1 - var(--tw-divide-${$1}-reverse)))`,\n [`border-${position(edges[1])}Width`]: `calc(${_} * var(--tw-divide-${$1}-reverse))`,\n },\n }\n }),\n\n // Divide Color\n matchColor('divide-', {\n // section: $0.replace('-', 'Color') -> 'divideColor'\n property: 'borderColor',\n // opacityVariable: '--tw-border-opacity',\n // opacitySection: section.replace('Color', 'Opacity') -> 'divideOpacity'\n selector: '&>:not([hidden])~:not([hidden])',\n }),\n\n // Ring Offset Opacity\n matchTheme('ring-opacity(?:$|-)', 'ringOpacity', '--tw-ring-opacity'),\n\n // Ring Offset Color\n matchColor('ring-offset-', {\n // section: 'ringOffsetColor',\n property: '--tw-ring-offset-color',\n opacityVariable: false,\n // opacitySection: section.replace('Color', 'Opacity') -> 'ringOffsetOpacity'\n }),\n\n // Ring Offset Width\n matchTheme('ring-offset(?:$|-)', 'ringOffsetWidth', '--tw-ring-offset-width'),\n\n // Ring Inset\n match('ring-inset', { '--tw-ring-inset': 'inset' }),\n\n // Ring Color\n matchColor('ring-', {\n // section: 'ringColor',\n property: '--tw-ring-color',\n // opacityVariable: '--tw-ring-opacity',\n // opacitySection: section.replace('Color', 'Opacity') -> 'ringOpacity'\n }),\n\n // Ring Width\n matchTheme('ring(?:$|-)', 'ringWidth', ({ _ }, { theme }) => ({\n ...asDefaults({\n '--tw-ring-offset-shadow': '0 0 #0000',\n '--tw-ring-shadow': '0 0 #0000',\n '--tw-shadow': '0 0 #0000',\n '--tw-shadow-colored': '0 0 #0000',\n // Within own declaration to have the defaults above to be merged with defaults from shadow\n '&': {\n '--tw-ring-inset': 'var(--tw-empty,/*!*/ /*!*/)',\n '--tw-ring-offset-width': theme('ringOffsetWidth', '', '0px'),\n '--tw-ring-offset-color': toColorValue(theme('ringOffsetColor', '', '#fff')),\n '--tw-ring-color': toColorValue(theme('ringColor', '', '#93c5fd'), {\n opacityVariable: '--tw-ring-opacity',\n }),\n '--tw-ring-opacity': theme('ringOpacity', '', '0.5'),\n },\n }),\n '--tw-ring-offset-shadow': `var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)`,\n '--tw-ring-shadow': `var(--tw-ring-inset) 0 0 0 calc(${_} + var(--tw-ring-offset-width)) var(--tw-ring-color)`,\n boxShadow: `var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)`,\n })),\n\n /* EFFECTS */\n // Box Shadow Color\n matchColor(\n 'shadow-',\n {\n section: 'boxShadowColor',\n opacityVariable: false,\n opacitySection: 'opacity',\n },\n ({ _ }) => ({\n '--tw-shadow-color': _.value,\n '--tw-shadow': 'var(--tw-shadow-colored)',\n }),\n ),\n\n // Box Shadow\n matchTheme('shadow(?:$|-)', 'boxShadow', ({ _ }) => ({\n ...asDefaults({\n '--tw-ring-offset-shadow': '0 0 #0000',\n '--tw-ring-shadow': '0 0 #0000',\n '--tw-shadow': '0 0 #0000',\n '--tw-shadow-colored': '0 0 #0000',\n }),\n '--tw-shadow': join(_),\n // replace all colors with reference to --tw-shadow-colored\n // this matches colors after non-comma char (keyword, offset) before comma or the end\n '--tw-shadow-colored': (join(_) as string).replace(\n /([^,]\\s+)(?:#[a-f\\d]+|(?:(?:hsl|rgb)a?|hwb|lab|lch|color|var)\\(.+?\\)|[a-z]+)(,|$)/g,\n '$1var(--tw-shadow-color)$2',\n ),\n boxShadow: `var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)`,\n })),\n\n // Opacity\n matchTheme('(opacity)-' /*, 'opacity' */),\n\n // Mix Blend Mode\n withAutocomplete$(\n match('mix-blend-', 'mixBlendMode'),\n DEV &&\n (() => [\n 'normal',\n 'multiply',\n 'screen',\n 'overlay',\n 'darken',\n 'lighten',\n 'color-dodge',\n 'color-burn',\n 'hard-light',\n 'soft-light',\n 'difference',\n 'exclusion',\n 'hue',\n 'saturation',\n 'color',\n 'luminosity',\n ]),\n ),\n\n /* FILTERS */\n ...filter(),\n ...filter('backdrop-'),\n\n /* TRANSITIONS AND ANIMATION */\n // Transition Property\n matchTheme('transition(?:$|-)', 'transitionProperty', (match, { theme }) => ({\n transitionProperty: join(match),\n transitionTimingFunction:\n match._ == 'none' ? undefined : join(theme('transitionTimingFunction', '')),\n transitionDuration: match._ == 'none' ? undefined : join(theme('transitionDuration', '')),\n })),\n\n // Transition Duration\n matchTheme('duration(?:$|-)', 'transitionDuration', 'transitionDuration', join),\n\n // Transition Timing Function\n matchTheme('ease(?:$|-)', 'transitionTimingFunction', 'transitionTimingFunction', join),\n\n // Transition Delay\n matchTheme('delay(?:$|-)', 'transitionDelay', 'transitionDelay', join),\n\n matchTheme('animate(?:$|-)', 'animation', (match, { theme, h, e }) => {\n const animation: string = join(match)\n\n // Try to auto inject keyframes\n const parts = animation.split(' ')\n const keyframeValues = theme('keyframes', parts[0]) as CSSBase\n\n if (keyframeValues) {\n return {\n [('@keyframes ' + (parts[0] = e(h(parts[0])))) as '@keyframes xxx']: keyframeValues,\n animation: parts.join(' '),\n }\n }\n\n return { animation }\n }),\n\n /* TRANSFORMS */\n // Transform\n '(transform)-(none)',\n match('transform', tranformDefaults),\n match('transform-(cpu|gpu)', ({ 1: $1 }) => ({\n '--tw-transform': transformValue($1 == 'gpu'),\n })),\n\n // Scale\n matchTheme(\n 'scale(-[xy])?-',\n 'scale',\n ({ 1: $1, _ }) =>\n ({\n [('--tw-scale' + ($1 || '-x')) as '--tw-scale-x']: _,\n [('--tw-scale' + ($1 || '-y')) as '--tw-scale-y']: _,\n ...tranformDefaults(),\n } as CSSObject),\n ),\n\n // Rotate\n matchTheme('-?(rotate)-', 'rotate', transform),\n\n // Translate\n matchTheme('-?(translate-[xy])-', 'translate', transform),\n\n // Skew\n matchTheme('-?(skew-[xy])-', 'skew', transform),\n\n // Transform Origin\n match('origin-(center|((top|bottom)(-(left|right))?)|left|right)', 'transformOrigin', spacify),\n\n /* INTERACTIVITY */\n // Appearance\n withAutocomplete$('(appearance)-', DEV && (() => ['auto', 'none'])),\n\n // Columns\n matchTheme('(columns)-' /*, 'columns' */),\n withAutocomplete$('(columns)-(\\\\d+)', DEV && (() => range({ end: 12 }))),\n\n // Break Before, After and Inside\n withAutocomplete$(\n '(break-(?:before|after|inside))-',\n DEV &&\n (({ 1: $1 }) =>\n $1.endsWith('-inside-')\n ? ['auto', 'avoid', 'avoid-page', 'avoid-column']\n : /* before || after */ [\n 'auto',\n 'avoid',\n 'all',\n 'avoid-page',\n 'page',\n 'left',\n 'right',\n 'column',\n ]),\n ),\n\n // Cursor\n matchTheme('(cursor)-' /*, 'cursor' */),\n withAutocomplete$(\n '(cursor)-',\n DEV &&\n (() => [\n 'alias',\n 'all-scroll',\n 'auto',\n 'cell',\n 'col-resize',\n 'context-menu',\n 'copy',\n 'crosshair',\n 'default',\n 'e-resize',\n 'ew-resize',\n 'grab',\n 'grabbing',\n 'help',\n 'move',\n 'n-resize',\n 'ne-resize',\n 'nesw-resize',\n 'no-drop',\n 'none',\n 'not-allowed',\n 'ns-resize',\n 'nw-resize',\n 'nwse-resize',\n 'pointer',\n 'progress',\n 'row-resize',\n 's-resize',\n 'se-resize',\n 'sw-resize',\n 'text',\n 'vertical-text',\n 'w-resize',\n 'wait',\n 'zoom-in',\n 'zoom-out',\n ]),\n ),\n\n // Scroll Snap Type\n match('snap-(none)', 'scroll-snap-type'),\n match('snap-(x|y|both)', ({ 1: $1 }) => ({\n ...asDefaults({\n '--tw-scroll-snap-strictness': 'proximity',\n }),\n 'scroll-snap-type': $1 + ' var(--tw-scroll-snap-strictness)',\n })),\n match('snap-(mandatory|proximity)', '--tw-scroll-snap-strictness'),\n\n // Scroll Snap Align\n match('snap-(?:(start|end|center)|align-(none))', 'scroll-snap-align'),\n\n // Scroll Snap Stop\n match('snap-(normal|always)', 'scroll-snap-stop'),\n\n match('scroll-(auto|smooth)', 'scroll-behavior'),\n\n // Scroll Margin\n // Padding\n matchTheme('scroll-p([xytrbl])?(?:$|-)', 'padding', edge('scroll-padding')),\n\n // Margin\n matchTheme<TailwindTheme, 'scrollMargin'>(\n '-?scroll-m([xytrbl])?(?:$|-)',\n 'scroll-margin',\n edge('scroll-margin'),\n ),\n\n // Touch Action\n match('touch-(auto|none|manipulation)', 'touch-action'),\n match('touch-(pinch-zoom|pan-(?:(x|left|right)|(y|up|down)))', ({ 1: $1, 2: $2, 3: $3 }) => ({\n ...asDefaults({\n '--tw-pan-x': 'var(--tw-empty,/*!*/ /*!*/)',\n '--tw-pan-y': 'var(--tw-empty,/*!*/ /*!*/)',\n '--tw-pinch-zoom': 'var(--tw-empty,/*!*/ /*!*/)',\n '--tw-touch-action': 'var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)',\n }),\n // x, left, right -> pan-x\n // y, up, down -> pan-y\n // -> pinch-zoom\n [`--tw-${$2 ? 'pan-x' : $3 ? 'pan-y' : $1}` as '--tw-pan-x']: $1,\n 'touch-action': 'var(--tw-touch-action)',\n })),\n\n // Outline Style\n match('outline-none', {\n outline: '2px solid transparent',\n 'outline-offset': '2px',\n }),\n match('outline', { outlineStyle: 'solid' }),\n match('outline-(dashed|dotted|double)', 'outlineStyle'),\n\n // Outline Offset\n matchTheme('-?(outline-offset)-' /*, 'outlineOffset'*/),\n\n // Outline Color\n matchColor('outline-', {\n opacityVariable: false,\n opacitySection: 'opacity',\n }),\n\n // Outline Width\n matchTheme('outline-', 'outlineWidth'),\n\n // Pointer Events\n withAutocomplete$('(pointer-events)-', DEV && (() => ['auto', 'none'])),\n\n // Will Change\n matchTheme('(will-change)-' /*, 'willChange' */),\n withAutocomplete$('(will-change)-', DEV && (() => ['auto', 'contents', 'transform'])),\n\n // Resize\n [\n 'resize(?:-(none|x|y))?',\n 'resize',\n ({ 1: $1 }) => ({ x: 'horizontal', y: 'vertical' }[$1] || $1 || 'both'),\n ],\n\n // User Select\n match('select-(none|text|all|auto)', 'userSelect'),\n\n /* SVG */\n // Fill, Stroke\n matchColor('fill-', { section: 'fill', opacityVariable: false, opacitySection: 'opacity' }),\n matchColor('stroke-', { section: 'stroke', opacityVariable: false, opacitySection: 'opacity' }),\n\n // Stroke Width\n matchTheme('stroke-', 'strokeWidth'),\n\n /* ACCESSIBILITY */\n // Screen Readers\n match('sr-only', {\n position: 'absolute',\n width: '1px',\n height: '1px',\n padding: '0',\n margin: '-1px',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n clip: 'rect(0,0,0,0)',\n borderWidth: '0',\n }),\n\n match('not-sr-only', {\n position: 'static',\n width: 'auto',\n height: 'auto',\n padding: '0',\n margin: '0',\n overflow: 'visible',\n whiteSpace: 'normal',\n clip: 'auto',\n }),\n]\n\nexport default rules\n\nfunction spacify(value: string | MatchResult): string {\n return (typeof value == 'string' ? value : value[1]).replace(/-/g, ' ').trim()\n}\n\nfunction columnify(value: string | MatchResult): string {\n return (typeof value == 'string' ? value : value[1]).replace('col', 'column')\n}\n\nfunction position(shorthand: string, separator = '-'): string {\n const longhand: string[] = []\n\n for (const short of shorthand) {\n longhand.push({ t: 'top', r: 'right', b: 'bottom', l: 'left' }[short] as string)\n }\n\n return longhand.join(separator)\n}\n\nfunction join(match: ThemeMatchResult<MaybeArray<string>>): string\nfunction join(value: MaybeArray<string> | undefined): string | undefined\n\nfunction join(\n value: ThemeMatchResult<MaybeArray<string>> | MaybeArray<string> | undefined,\n): string | undefined {\n return value && '' + ((value as ThemeMatchResult<MaybeArray<string>>)._ || value)\n}\n\nfunction convertContentValue({ $$ }: MatchResult) {\n return (\n ({\n // /* aut*/ o: '',\n /* sta*/ r /*t*/: 'flex-',\n /* end*/ '': 'flex-',\n // /* cen*/ t /*er*/: '',\n /* bet*/ w /*een*/: 'space-',\n /* aro*/ u /*nd*/: 'space-',\n /* eve*/ n /*ly*/: 'space-',\n // /* str*/ e /*tch*/: '',\n // /* bas*/ l /*ine*/: '',\n }[$$[3] || ''] || '') + $$\n )\n}\n\nfunction edge(\n propertyPrefix: string,\n propertySuffix = '',\n): ThemeRuleResolver<string | ColorFromThemeValue, TailwindTheme> {\n return ({ 1: $1, _ }) => {\n const edges =\n {\n x: 'lr',\n y: 'tb',\n }[$1 as 'x' | 'y'] || $1 + $1\n\n return edges\n ? {\n ...toCSS(propertyPrefix + '-' + position(edges[0]) + propertySuffix, _),\n ...toCSS(propertyPrefix + '-' + position(edges[1]) + propertySuffix, _),\n }\n : toCSS(propertyPrefix + propertySuffix, _)\n }\n}\n\nfunction filter(prefix = ''): Rule<TailwindTheme>[] {\n const filters = [\n 'blur',\n 'brightness',\n 'contrast',\n 'grayscale',\n 'hue-rotate',\n 'invert',\n prefix && 'opacity',\n 'saturate',\n 'sepia',\n !prefix && 'drop-shadow',\n ].filter(Boolean) as string[]\n\n let defaults = {} as CSSObject\n\n // first create properties defaults\n for (const key of filters) {\n defaults[`--tw-${prefix}${key}` as '--tw-blur'] = 'var(--tw-empty,/*!*/ /*!*/)'\n }\n\n defaults = {\n // move defaults\n ...asDefaults(defaults),\n // add default filter which allows standalone usage\n [`${prefix}filter`]: filters.map((key) => `var(--tw-${prefix}${key})`).join(' '),\n } as CSSObject\n\n return [\n `(${prefix}filter)-(none)`,\n\n match(`${prefix}filter`, defaults),\n\n ...filters.map((key) =>\n matchTheme<TailwindTheme, 'hueRotate' | 'dropShadow'>(\n // hue-rotate can be negated\n `${key[0] == 'h' ? '-?' : ''}(${prefix}${key})(?:$|-)`,\n\n key as 'hueRotate' | 'dropShadow',\n ({ 1: $1, _ }) =>\n ({\n [`--tw-${$1}`]: asArray(_)\n .map((value) => `${key}(${value})`)\n .join(' '),\n ...defaults,\n } as CSSObject),\n ),\n ),\n ]\n}\n\nfunction transform({ 1: $1, _ }: ThemeMatchResult<string>): CSSObject {\n return {\n ['--tw-' + $1]: _,\n ...tranformDefaults(),\n } as CSSObject\n}\n\nfunction tranformDefaults(): CSSObject {\n return {\n ...asDefaults({\n '--tw-translate-x': '0',\n '--tw-translate-y': '0',\n '--tw-rotate': '0',\n '--tw-skew-x': '0',\n '--tw-skew-y': '0',\n '--tw-scale-x': '1',\n '--tw-scale-y': '1',\n '--tw-transform': transformValue(),\n }),\n transform: 'var(--tw-transform)',\n }\n}\n\nfunction transformValue(gpu?: boolean): string {\n return [\n gpu // -gpu\n ? 'translate3d(var(--tw-translate-x),var(--tw-translate-y),0)'\n : 'translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y))',\n 'rotate(var(--tw-rotate))',\n 'skewX(var(--tw-skew-x))',\n 'skewY(var(--tw-skew-y))',\n 'scaleX(var(--tw-scale-x))',\n 'scaleY(var(--tw-scale-y))',\n ].join(' ')\n}\nfunction span({ 1: $1, 2: $2 }: MatchResult) {\n return `${$1} ${$2} / ${$1} ${$2}`\n}\n\nfunction gridTemplate({ 1: $1 }: MatchResult) {\n return `repeat(${$1},minmax(0,1fr))`\n}\n\nfunction range({\n start = 1,\n end,\n step = 1,\n}: {\n start?: number\n end: number\n step?: number\n}): string[] {\n const result: string[] = []\n\n for (let index = start; index <= end; index += step) {\n result.push(`${index}`)\n }\n\n return result\n}\n\nfunction asDefaults(props: CSSObject): { '@layer defaults': CSSBase } {\n return {\n '@layer defaults': {\n '*,::before,::after': props,\n '::backdrop': props,\n },\n }\n}\n"],"names":["withAutocomplete$","rule","autocomplete","withAutocomplete","rules","match","$1","$2","context","arbitrary","input","h","c","matchTheme","_","theme","screens","center","padding","width","marginRight","marginLeft","paddingFor","screen","value","mql","maxWidth","DEFAULT","paddingRight","paddingLeft","content","display","spacify","top","right","bottom","left","visibility","columnify","range","end","gridTemplate","span","endsWith","convertContentValue","$$","includes","edge","y","x","asArray","fontFamily","join","WebkitFontSmoothing","MozOsxFontSmoothing","fontStyle","$3","fontVariantNumeric","asDefaults","matchColor","property","selector","fontSize","lineHeight","textDecorationLine","section","opacityVariable","opacitySection","textTransform","overflow","whiteSpace","textOverflow","wordBreak","overflowWrap","position","color","opacityValue","corners","t","r","b","l","borderStyle","edges","toColorValue","boxShadow","replace","filter","transitionProperty","transitionTimingFunction","undefined","transitionDuration","e","animation","parts","split","keyframeValues","tranformDefaults","transformValue","transform","outline","outlineStyle","height","margin","clip","borderWidth","trim","shorthand","separator","longhand","short","push","w","u","n","propertyPrefix","propertySuffix","toCSS","prefix","filters","Boolean","defaults","key","map","gpu","start","step","result","index","props"],"mappings":"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