Module: TailwindMerge::Config
Constant Summary collapse
- THEME_KEYS =
[ "color", "font", "text", "font-weight", "tracking", "leading", "breakpoint", "container", "spacing", "radius", "shadow", "inset-shadow", "text-shadow", "drop-shadow", "blur", "perspective", "aspect", "ease", "animate", ].freeze
- VALID_THEME_IDS =
Set.new(THEME_KEYS.map { |theme_key| const_get("THEME_#{theme_key.upcase.tr("-", "_")}").object_id }).freeze
- SCALE_BREAK =
-> { ["auto", "avoid", "all", "avoid-page", "page", "left", "right", "column"] }
- SCALE_POSITION =
-> { [ "center", "top", "bottom", "left", "right", "top-left", # Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378 "left-top", "top-right", # Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378 "right-top", "bottom-right", # Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378 "right-bottom", "bottom-left", # Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378 "left-bottom", ] }
- SCALE_POSITION_WITH_ARBITRARY =
-> { [*SCALE_POSITION.call, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }
- SCALE_OVERFLOW =
-> { ["auto", "hidden", "clip", "visible", "scroll"] }
- SCALE_OVERSCROLL =
-> { ["auto", "contain", "none"] }
- SCALE_UNAMBIGUOUS_SPACING =
-> { [IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE, THEME_SPACING] }
- SCALE_INSET =
->(_config) { [ IS_FRACTION, "full", "auto", *SCALE_UNAMBIGUOUS_SPACING.call, ] }
- SCALE_GRID_TEMPLATE_COLS_ROWS =
-> { [IS_INTEGER, "none", "subgrid", IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }
- SCALE_GRID_COL_ROW_START_AND_END =
-> { [ "auto", { "span" => ["full", IS_INTEGER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }, IS_INTEGER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE, ] }
- SCALE_GRID_COL_ROW_START_OR_END =
-> { [IS_INTEGER, "auto", IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }
- SCALE_GRID_AUTO_COLS_ROWS =
-> { ["auto", "min", "max", "fr", IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }
- SCALE_ALIGN_PRIMARY_AXIS =
-> { ["start", "end", "center", "between", "around", "evenly", "stretch", "baseline", "center-safe", "end-safe"] }
- SCALE_ALIGN_SECONDARY_AXIS =
-> { ["start", "end", "center", "stretch", "center-safe", "end-safe"] }
- SCALE_MARGIN =
-> { ["auto", *SCALE_UNAMBIGUOUS_SPACING.call] }
- SCALE_SIZING =
-> { [ IS_FRACTION, "auto", "full", "dvw", "dvh", "lvw", "lvh", "svw", "svh", "min", "max", "fit", *SCALE_UNAMBIGUOUS_SPACING.call, ] }
- SCALE_COLOR =
-> { [THEME_COLOR, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }
- SCALE_BG_POSITION =
-> { [*SCALE_POSITION.call, IS_ARBITRARY_VARIABLE_POSITION, IS_ARBITRARY_POSITION, "position" => [IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE]] }
- SCALE_BG_REPEAT =
-> { ["no-repeat", "repeat" => ["", "x", "y", "space", "round"]] }
- SCALE_BG_SIZE =
-> { ["auto", "cover", "contain", IS_ARBITRARY_VARIABLE_SIZE, IS_ARBITRARY_SIZE, "size" => [IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE]] }
- SCALE_GRADIENT_STOP_POSITION =
-> { [IS_PERCENT, IS_ARBITRARY_VARIABLE_LENGTH, IS_ARBITRARY_LENGTH] }
- SCALE_RADIUS =
-> { [ # Deprecated since Tailwind CSS v4.0.0 "", "none", "full", THEME_RADIUS, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE, ] }
- SCALE_BORDER_WIDTH =
-> { ["", IS_NUMBER, IS_ARBITRARY_VARIABLE_LENGTH, IS_ARBITRARY_LENGTH] }
- SCALE_LINE_STYLE =
-> { ["solid", "dashed", "dotted", "double"] }
- SCALE_BLEND_MODE =
-> { [ "normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity", ] }
- SCALE_MASK_IMAGE_POSITION =
-> { [IS_NUMBER, IS_PERCENT, IS_ARBITRARY_VARIABLE_POSITION, IS_ARBITRARY_POSITION] }
- SCALE_BLUR =
-> { [ "", "none", THEME_BLUR, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE, ] }
- SCALE_ROTATE =
-> { ["none", IS_NUMBER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }
- SCALE_SCALE =
-> { ["none", IS_NUMBER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }
- SCALE_SKEW =
-> { [IS_NUMBER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }
- SCALE_TRANSLATE =
-> { [IS_FRACTION, "full", *SCALE_UNAMBIGUOUS_SPACING.call] }
- DEFAULTS =
{ cache_size: 500, prefix: nil, ignore_empty_cache: true, theme: { "animate" => ["spin", "ping", "pulse", "bounce"], "aspect" => ["video"], "blur" => [IS_TSHIRT_SIZE], "breakpoint" => [IS_TSHIRT_SIZE], "color" => [IS_ANY], "container" => [IS_TSHIRT_SIZE], "drop-shadow" => [IS_TSHIRT_SIZE], "ease" => ["in", "out", "in-out"], "font" => [IS_ANY_NON_ARBITRARY], "font-weight" => [ "thin", "extralight", "light", "normal", "medium", "semibold", "bold", "extrabold", "black", ], "inset-shadow" => [IS_TSHIRT_SIZE], "leading" => ["none", "tight", "snug", "normal", "relaxed", "loose"], "perspective" => ["dramatic", "near", "normal", "midrange", "distant", "none"], "radius" => [IS_TSHIRT_SIZE], "shadow" => [IS_TSHIRT_SIZE], "spacing" => ["px", IS_NUMBER], "text" => [IS_TSHIRT_SIZE], "text-shadow" => [IS_TSHIRT_SIZE], "tracking" => ["tighter", "tight", "normal", "wide", "wider", "widest"], }, class_groups: { ########## # Layout ########## ## # Aspect Ratio # @see https://tailwindcss.com/docs/aspect-ratio ## "aspect" => [ { "aspect" => [ "auto", "square", IS_FRACTION, IS_ARBITRARY_VALUE, IS_ARBITRARY_VARIABLE, THEME_ASPECT, ], }, ], ## # Container # @see https://tailwindcss.com/docs/container # @deprecated since Tailwind CSS v4.0.0 ## "container" => ["container"], ## # Columns # @see https://tailwindcss.com/docs/columns ## "columns" => [{ "columns" => [IS_TSHIRT_SIZE] }], ## # Break After # @see https://tailwindcss.com/docs/break-after ## "break-after" => [{ "break-after" => SCALE_BREAK.call }], ## # Break Before # @see https://tailwindcss.com/docs/break-before ## "break-before" => [{ "break-before" => SCALE_BREAK.call }], ## # Break Inside # @see https://tailwindcss.com/docs/break-inside ## "break-inside" => [{ "break-inside" => ["auto", "avoid", "avoid-page", "avoid-column"] }], ## # Box Decoration Break # @see https://tailwindcss.com/docs/box-decoration-break ## "box-decoration" => [{ "box-decoration" => ["slice", "clone"] }], ## # Box Sizing # @see https://tailwindcss.com/docs/box-sizing ## "box" => [{ "box" => ["border", "content"] }], ## # Display # @see https://tailwindcss.com/docs/display ## "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", ], ## # Screen Reader Only # @see https://tailwindcss.com/docs/display#screen-reader-only ## "sr" => ["sr-only", "not-sr-only"], ## # Floats # @see https://tailwindcss.com/docs/float ## "float" => [{ "float" => ["right", "left", "none", "start", "end"] }], ## # Clear # @see https://tailwindcss.com/docs/clear ## "clear" => [{ "clear" => ["left", "right", "both", "none", "start", "end"] }], ## # Isolation # @see https://tailwindcss.com/docs/isolation ## "isolation" => ["isolate", "isolation-auto"], ## # Object Fit # @see https://tailwindcss.com/docs/object-fit ## "object-fit" => [{ "object" => ["contain", "cover", "fill", "none", "scale-down"] }], ## # Object Position # @see https://tailwindcss.com/docs/object-position ## "object-position" => [{ "object" => SCALE_POSITION_WITH_ARBITRARY.call }], ## # Overflow # @see https://tailwindcss.com/docs/overflow ## "overflow" => [{ "overflow" => SCALE_OVERFLOW.call }], ## # Overflow X # @see https://tailwindcss.com/docs/overflow ## "overflow-x" => [{ "overflow-x" => SCALE_OVERFLOW.call }], ## # Overflow Y # @see https://tailwindcss.com/docs/overflow ## "overflow-y" => [{ "overflow-y" => SCALE_OVERSCROLL.call }], ## # Overscroll Behavior # @see https://tailwindcss.com/docs/overscroll-behavior ## "overscroll" => [{ "overscroll" => SCALE_OVERSCROLL.call }], ## # Overscroll Behavior X # @see https://tailwindcss.com/docs/overscroll-behavior ## "overscroll-x" => [{ "overscroll-x" => SCALE_OVERSCROLL.call }], ## # Overscroll Behavior Y # @see https://tailwindcss.com/docs/overscroll-behavior ## "overscroll-y" => [{ "overscroll-y" => SCALE_OVERSCROLL.call }], ## # Position # @see https://tailwindcss.com/docs/position ## "position" => ["static", "fixed", "absolute", "relative", "sticky"], ## # Top / Right / Bottom / Left # @see https://tailwindcss.com/docs/top-right-bottom-left ## "inset" => [{ "inset" => [SCALE_INSET] }], ## # Right / Left # @see https://tailwindcss.com/docs/top-right-bottom-left ## "inset-x" => [{ "inset-x" => [SCALE_INSET] }], ## # Top / Bottom # @see https://tailwindcss.com/docs/top-right-bottom-left ## "inset-y" => [{ "inset-y" => [SCALE_INSET] }], # # Start # @see https://tailwindcss.com/docs/top-right-bottom-left # "start" => [{ "start" => [SCALE_INSET] }], # # End # @see https://tailwindcss.com/docs/top-right-bottom-left # "end" => [{ "end" => [SCALE_INSET] }], ## # Top # @see https://tailwindcss.com/docs/top-right-bottom-left ## "top" => [{ "top" => [SCALE_INSET] }], ## # Right # @see https://tailwindcss.com/docs/top-right-bottom-left ## "right" => [{ "right" => [SCALE_INSET] }], ## # Bottom # @see https://tailwindcss.com/docs/top-right-bottom-left ## "bottom" => [{ "bottom" => [SCALE_INSET] }], ## # Left # @see https://tailwindcss.com/docs/top-right-bottom-left ## "left" => [{ "left" => [SCALE_INSET] }], ## # Visibility # @see https://tailwindcss.com/docs/visibility ## "visibility" => ["visible", "invisible", "collapse"], ## # Z-Index # @see https://tailwindcss.com/docs/z-index ## "z" => [{ "z" => [IS_INTEGER, "auto", IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ########## # Flexbox and Grid ########## # Flex Basis # @see https://tailwindcss.com/docs/flex-basis ## "basis" => [{ "basis" => [ IS_FRACTION, "full", "auto", THEME_CONTAINER, *SCALE_UNAMBIGUOUS_SPACING.call, ], }], ## # Flex Direction # @see https://tailwindcss.com/docs/flex-direction ## "flex-direction" => [{ "flex" => ["row", "row-reverse", "col", "col-reverse"] }], ## # Flex Wrap # @see https://tailwindcss.com/docs/flex-wrap ## "flex-wrap" => [{ "flex" => ["nowrap", "wrap", "wrap-reverse"] }], ## # Flex # @see https://tailwindcss.com/docs/flex ## "flex" => [{ "flex" => [IS_NUMBER, IS_FRACTION, "auto", "initial", "none", Validators::IS_ARBITRARY_VALUE] }], ## # Flex Grow # @see https://tailwindcss.com/docs/flex-grow ## "grow" => [{ "grow" => ["", IS_NUMBER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ## # Flex Shrink # @see https://tailwindcss.com/docs/flex-shrink ## "shrink" => [{ "shrink" => ["", IS_NUMBER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ## # Order # @see https://tailwindcss.com/docs/order ## "order" => [{ "order" => [ IS_INTEGER, "first", "last", "none", IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE, ], }], ## # Grid Template Columns # @see https://tailwindcss.com/docs/grid-template-columns ## "grid-cols" => [{ "grid-cols" => SCALE_GRID_TEMPLATE_COLS_ROWS.call }], ## # Grid Column Start / End # @see https://tailwindcss.com/docs/grid-column ## "col-start-end" => [{ "col" => SCALE_GRID_COL_ROW_START_AND_END.call }], ## # Grid Column Start # @see https://tailwindcss.com/docs/grid-column ## "col-start" => [{ "col-start" => SCALE_GRID_COL_ROW_START_OR_END.call }], ## # Grid Column End # @see https://tailwindcss.com/docs/grid-column ## "col-end" => [{ "col-end" => SCALE_GRID_COL_ROW_START_OR_END.call }], ## # Grid Template Rows # @see https://tailwindcss.com/docs/grid-template-rows ## "grid-rows" => [{ "grid-rows" => SCALE_GRID_TEMPLATE_COLS_ROWS.call }], ## # Grid Row Start / End # @see https://tailwindcss.com/docs/grid-row ## "row-start-end" => [{ "row" => SCALE_GRID_COL_ROW_START_AND_END.call }], ## # Grid Row Start # @see https://tailwindcss.com/docs/grid-row ## "row-start" => [{ "row-start" => SCALE_GRID_COL_ROW_START_OR_END.call }], ## # Grid Row End # @see https://tailwindcss.com/docs/grid-row ## "row-end" => [{ "row-end" => SCALE_GRID_COL_ROW_START_OR_END.call }], ## # Grid Auto Flow # @see https://tailwindcss.com/docs/grid-auto-flow ## "grid-flow" => [{ "grid-flow" => ["row", "col", "dense", "row-dense", "col-dense"] }], ## # Grid Auto Columns # @see https://tailwindcss.com/docs/grid-auto-columns ## "auto-cols" => [{ "auto-cols" => SCALE_GRID_AUTO_COLS_ROWS.call }], ## # Grid Auto Rows # @see https://tailwindcss.com/docs/grid-auto-rows ## "auto-rows" => [{ "auto-rows" => SCALE_GRID_AUTO_COLS_ROWS.call }], ## # Gap # @see https://tailwindcss.com/docs/gap ## "gap" => [{ "gap" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Gap X # @see https://tailwindcss.com/docs/gap ## "gap-x" => [{ "gap-x" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Gap Y # @see https://tailwindcss.com/docs/gap ## "gap-y" => [{ "gap-y" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Justify Content # @see https://tailwindcss.com/docs/justify-content ## "justify-content" => [{ "justify" => [*SCALE_ALIGN_PRIMARY_AXIS.call, "normal"] }], ## # Justify Items # @see https://tailwindcss.com/docs/justify-items ## "justify-items" => [{ "justify-items" => [*SCALE_ALIGN_SECONDARY_AXIS.call, "normal"] }], ## # Justify Self # @see https://tailwindcss.com/docs/justify-self ## "justify-self" => [{ "justify-self" => ["auto", *SCALE_ALIGN_SECONDARY_AXIS.call] }], ## # Align Content # @see https://tailwindcss.com/docs/align-content ## "align-content" => [{ "content" => ["normal", *SCALE_ALIGN_PRIMARY_AXIS.call] }], ## # Align Items # @see https://tailwindcss.com/docs/align-items ## "align-items" => [{ "items" => [*SCALE_ALIGN_SECONDARY_AXIS.call, "baseline" => ["", "last"]] }], ## # Align Self # @see https://tailwindcss.com/docs/align-self ## "align-self" => [{ "self" => ["auto", *SCALE_ALIGN_SECONDARY_AXIS.call, { "baseline" => ["", "last"] }] }], ## # Place Content # @see https://tailwindcss.com/docs/place-content ## "place-content" => [{ "place-content" => SCALE_ALIGN_PRIMARY_AXIS.call }], ## # Place Items # @see https://tailwindcss.com/docs/place-items ## "place-items" => [{ "place-items" => [*SCALE_ALIGN_SECONDARY_AXIS.call, "baseline"] }], ## # Place Self # @see https://tailwindcss.com/docs/place-self ## "place-self" => [{ "place-self" => ["auto", *SCALE_ALIGN_SECONDARY_AXIS.call] }], # Spacing ## # Padding # @see https://tailwindcss.com/docs/padding ## "p" => [{ "p" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Padding X # @see https://tailwindcss.com/docs/padding ## "px" => [{ "px" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Padding Y # @see https://tailwindcss.com/docs/padding ## "py" => [{ "py" => SCALE_UNAMBIGUOUS_SPACING.call }], # # Padding Start # @see https://tailwindcss.com/docs/padding # "ps" => [{ "ps" => SCALE_UNAMBIGUOUS_SPACING.call }], # # Padding End # @see https://tailwindcss.com/docs/padding # "pe" => [{ "pe" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Padding Top # @see https://tailwindcss.com/docs/padding ## "pt" => [{ "pt" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Padding Right # @see https://tailwindcss.com/docs/padding ## "pr" => [{ "pr" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Padding Bottom # @see https://tailwindcss.com/docs/padding ## "pb" => [{ "pb" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Padding Left # @see https://tailwindcss.com/docs/padding ## "pl" => [{ "pl" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Margin # @see https://tailwindcss.com/docs/margin ## "m" => [{ "m" => SCALE_MARGIN.call }], ## # Margin X # @see https://tailwindcss.com/docs/margin ## "mx" => [{ "mx" => SCALE_MARGIN.call }], ## # Margin Y # @see https://tailwindcss.com/docs/margin ## "my" => [{ "my" => SCALE_MARGIN.call }], # # Margin Start # @see https://tailwindcss.com/docs/margin # "ms" => [{ "ms" => SCALE_MARGIN.call }], # # Margin End # @see https://tailwindcss.com/docs/margin # "me" => [{ "me" => SCALE_MARGIN.call }], ## # Margin Top # @see https://tailwindcss.com/docs/margin ## "mt" => [{ "mt" => SCALE_MARGIN.call }], ## # Margin Right # @see https://tailwindcss.com/docs/margin ## "mr" => [{ "mr" => SCALE_MARGIN.call }], ## # Margin Bottom # @see https://tailwindcss.com/docs/margin ## "mb" => [{ "mb" => SCALE_MARGIN.call }], ## # Margin Left # @see https://tailwindcss.com/docs/margin ## "ml" => [{ "ml" => SCALE_MARGIN.call }], ## # Space Between X # @see https://tailwindcss.com/docs/margin#adding-space-between-children ## "space-x" => [{ "space-x" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Space Between X Reverse # @see https://tailwindcss.com/docs/margin#adding-space-between-children ## "space-x-reverse" => ["space-x-reverse"], ## # Space Between Y # @see https://tailwindcss.com/docs/margin#adding-space-between-children ## "space-y" => [{ "space-y" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Space Between Y Reverse # @see https://tailwindcss.com/docs/margin#adding-space-between-children ## "space-y-reverse" => ["space-y-reverse"], ########## # Sizing ########## ## # Size # @see https://tailwindcss.com/docs/width#setting-both-width-and-height ## "size" => [{ "size" => SCALE_SIZING.call }], # Width # @see https://tailwindcss.com/docs/width ## "w" => [{ "w" => [ THEME_CONTAINER, "screen", *SCALE_SIZING.call, ], }], ## # Min-Width # @see https://tailwindcss.com/docs/min-width ## "min-w" => [{ "min-w" => [ THEME_CONTAINER, "screen", # Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 ## "none", *SCALE_SIZING.call, ], }], ## # Max-Width # @see https://tailwindcss.com/docs/max-width ## "max-w" => [ { "max-w" => [ THEME_CONTAINER, "screen", "none", # Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 ## "prose", # Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 ## { "screen" => [THEME_BREAKPOINT] }, *SCALE_SIZING.call, ], }, ], ## # Height # @see https://tailwindcss.com/docs/height ## "h" => [{ "h" => ["screen", "lh", *SCALE_SIZING.call] }], ## # Min-Height # @see https://tailwindcss.com/docs/min-height ## "min-h" => [{ "min-h" => ["screen", "none", "lh", *SCALE_SIZING.call] }], ## # Max-Height # @see https://tailwindcss.com/docs/max-height ## "max-h" => [{ "max-h" => ["screen", "lh", *SCALE_SIZING.call] }], ############ # Typography ############ # Font Size # @see https://tailwindcss.com/docs/font-size ## "font-size" => [{ "text" => ["base", THEME_TEXT, IS_ARBITRARY_VARIABLE_LENGTH, IS_ARBITRARY_LENGTH] }], ## # Font Smoothing # @see https://tailwindcss.com/docs/font-smoothing ## "font-smoothing" => ["antialiased", "subpixel-antialiased"], ## # Font Style # @see https://tailwindcss.com/docs/font-style ## "font-style" => ["italic", "not-italic"], ## # Font Weight # @see https://tailwindcss.com/docs/font-weight ## "font-weight" => [ { "font" => [ THEME_FONT_WEIGHT, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_NUMBER, ], }, ], ## # Font Stretch # @see https://tailwindcss.com/docs/font-stretch ## "font-stretch" => [ { "font-stretch" => [ "ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "normal", "semi-expanded", "expanded", "extra-expanded", "ultra-expanded", IS_PERCENT, IS_ARBITRARY_VALUE, ], }, ], ## # Font Family # @see https://tailwindcss.com/docs/font-family ## "font-family" => [{ "font" => [IS_ARBITRARY_VARIABLE_FAMILY_NAME, IS_ARBITRARY_VALUE, THEME_FONT] }], ## # Font Variant Numeric # @see https://tailwindcss.com/docs/font-variant-numeric ## "fvn-normal" => ["normal-nums"], ## # Font Variant Numeric # @see https://tailwindcss.com/docs/font-variant-numeric ## "fvn-ordinal" => ["ordinal"], ## # Font Variant Numeric # @see https://tailwindcss.com/docs/font-variant-numeric ## "fvn-slashed-zero" => ["slashed-zero"], ## # Font Variant Numeric # @see https://tailwindcss.com/docs/font-variant-numeric ## "fvn-figure" => ["lining-nums", "oldstyle-nums"], ## # Font Variant Numeric # @see https://tailwindcss.com/docs/font-variant-numeric ## "fvn-spacing" => ["proportional-nums", "tabular-nums"], ## # Font Variant Numeric # @see https://tailwindcss.com/docs/font-variant-numeric ## "fvn-fraction" => ["diagonal-fractions", "stacked-fractions"], ## # Letter Spacing # @see https://tailwindcss.com/docs/letter-spacing ## "tracking" => [ { "tracking" => [THEME_TRACKING, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE], }, ], # # Line Clamp # @see https://tailwindcss.com/docs/line-clamp # "line-clamp" => [{ "line-clamp" => [IS_NUMBER, "none", IS_ARBITRARY_VARIABLE, IS_ARBITRARY_NUMBER] }], ## # Line Height # @see https://tailwindcss.com/docs/line-height ## "leading" => [ { "leading" => [ # Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 ## THEME_LEADING, *SCALE_UNAMBIGUOUS_SPACING.call, ], }, ], # # List Style Image # @see https://tailwindcss.com/docs/list-style-image # "list-image" => [{ "list-image" => ["none", IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], # List Style Position # @see https://tailwindcss.com/docs/list-style-position ## "list-style-position" => [{ "list" => ["inside", "outside"] }], ## # List Style Type # @see https://tailwindcss.com/docs/list-style-type ## "list-style-type" => [{ "list" => ["disc", "decimal", "none", IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ## # Text Alignment # @see https://tailwindcss.com/docs/text-align ## "text-alignment" => [{ "text" => ["left", "center", "right", "justify", "start", "end"] }], ## # Placeholder Color # @deprecated since Tailwind CSS v3.0.0 # @see https://tailwindcss.com/docs/placeholder-color ## "placeholder-color" => [{ "placeholder" => SCALE_COLOR.call }], ## # Text Color # @see https://tailwindcss.com/docs/text-color ## "text-color" => [{ "text" => SCALE_COLOR.call }], ## # Text Decoration # @see https://tailwindcss.com/docs/text-decoration ## "text-decoration" => ["underline", "overline", "line-through", "no-underline"], ## # Text Decoration Style # @see https://tailwindcss.com/docs/text-decoration-style ## "text-decoration-style" => [{ "decoration" => [*SCALE_LINE_STYLE.call, "wavy"] }], ## # Text Decoration Thickness # @see https://tailwindcss.com/docs/text-decoration-thickness ## "text-decoration-thickness" => [{ "decoration" => [IS_NUMBER, "from-font", "auto", IS_ARBITRARY_VARIABLE, IS_ARBITRARY_LENGTH] }], ## # Text Decoration Color # @see https://tailwindcss.com/docs/text-decoration-color ## "text-decoration-color" => [{ "decoration" => SCALE_COLOR.call }], ## # Text Underline Offset # @see https://tailwindcss.com/docs/text-underline-offset ## "underline-offset" => [{ "underline-offset" => [IS_NUMBER, "auto", IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ## # Text Transform # @see https://tailwindcss.com/docs/text-transform ## "text-transform" => ["uppercase", "lowercase", "capitalize", "normal-case"], ## # Text Overflow # @see https://tailwindcss.com/docs/text-overflow ## "text-overflow" => ["truncate", "text-ellipsis", "text-clip"], ## # Text Wrap # @see https://tailwindcss.com/docs/text-wrap ## "text-wrap" => [{ "text" => ["wrap", "nowrap", "balance", "pretty"] }], ## # Text Indent # @see https://tailwindcss.com/docs/text-indent ## "indent" => [{ "indent" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Vertical Alignment # @see https://tailwindcss.com/docs/vertical-align ## "vertical-align" => [ { "align" => [ "baseline", "top", "middle", "bottom", "text-top", "text-bottom", "sub", "super", IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE, ], }, ], ## # Whitespace # @see https://tailwindcss.com/docs/whitespace ## "whitespace" => [{ "whitespace" => ["normal", "nowrap", "pre", "pre-line", "pre-wrap", "break-spaces"] }], ## # Word Break # @see https://tailwindcss.com/docs/word-break ## "break" => [{ "break" => ["normal", "words", "all", "keep"] }], ## # Overflow Wrap # @see https://tailwindcss.com/docs/overflow-wrap ## "wrap" => [{ "wrap" => ["break-word", "anywhere", "normal"] }], # # Hyphens # @see https://tailwindcss.com/docs/hyphens # "hyphens" => [{ "hyphens" => ["none", "manual", "auto"] }], ## # Content # @see https://tailwindcss.com/docs/content ## "content" => [{ "content" => ["none", IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ############# # Backgrounds ############# # Background Attachment # @see https://tailwindcss.com/docs/background-attachment ## "bg-attachment" => [{ "bg" => ["fixed", "local", "scroll"] }], ## # Background Clip # @see https://tailwindcss.com/docs/background-clip ## "bg-clip" => [{ "bg-clip" => ["border", "padding", "content", "text"] }], ## # Background Origin # @see https://tailwindcss.com/docs/background-origin ## "bg-origin" => [{ "bg-origin" => ["border", "padding", "content"] }], ## # Background Position # @see https://tailwindcss.com/docs/background-position ## "bg-position" => [{ "bg" => SCALE_BG_POSITION.call }], ## # Background Repeat # @see https://tailwindcss.com/docs/background-repeat ## "bg-repeat" => [{ "bg" => SCALE_BG_REPEAT.call }], ## # Background Size # @see https://tailwindcss.com/docs/background-size ## "bg-size" => [{ "bg" => SCALE_BG_SIZE.call }], ## # Background Image # @see https://tailwindcss.com/docs/background-image ## "bg-image" => [ { "bg" => [ "none", { "linear" => [ { "to" => ["t", "tr", "r", "br", "b", "bl", "l", "tl"] }, IS_INTEGER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE, ], "radial" => ["", IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE], "conic" => [IS_INTEGER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE], }, IS_ARBITRARY_VARIABLE_IMAGE, IS_ARBITRARY_IMAGE, ], }, ], ## # Background Color # @see https://tailwindcss.com/docs/background-color ## "bg-color" => [{ "bg" => SCALE_COLOR.call }], # # Gradient Color Stops From Position # @see https://tailwindcss.com/docs/gradient-color-stops # "gradient-from-pos" => [{ "from" => SCALE_GRADIENT_STOP_POSITION.call }], # # Gradient Color Stops Via Position # @see https://tailwindcss.com/docs/gradient-color-stops # "gradient-via-pos" => [{ "via" => SCALE_GRADIENT_STOP_POSITION.call }], # # Gradient Color Stops To Position # @see https://tailwindcss.com/docs/gradient-color-stops # "gradient-to-pos" => [{ "to" => SCALE_GRADIENT_STOP_POSITION.call }], ## # Gradient Color Stops From # @see https://tailwindcss.com/docs/gradient-color-stops ## "gradient-from" => [{ "from" => SCALE_COLOR.call }], ## # Gradient Color Stops Via # @see https://tailwindcss.com/docs/gradient-color-stops ## "gradient-via" => [{ "via" => SCALE_COLOR.call }], ## # Gradient Color Stops To # @see https://tailwindcss.com/docs/gradient-color-stops ## "gradient-to" => [{ "to" => SCALE_COLOR.call }], ########### # Borders ########### # Border Radius # @see https://tailwindcss.com/docs/border-radius ## "rounded" => [{ "rounded" => SCALE_RADIUS.call }], # # Border Radius Start # @see https://tailwindcss.com/docs/border-radius # "rounded-s" => [{ "rounded-s" => SCALE_RADIUS.call }], # # Border Radius End # @see https://tailwindcss.com/docs/border-radius # "rounded-e" => [{ "rounded-e" => SCALE_RADIUS.call }], ## # Border Radius Top # @see https://tailwindcss.com/docs/border-radius ## "rounded-t" => [{ "rounded-t" => SCALE_RADIUS.call }], ## # Border Radius Right # @see https://tailwindcss.com/docs/border-radius ## "rounded-r" => [{ "rounded-r" => SCALE_RADIUS.call }], ## # Border Radius Bottom # @see https://tailwindcss.com/docs/border-radius ## "rounded-b" => [{ "rounded-b" => SCALE_RADIUS.call }], ## # Border Radius Left # @see https://tailwindcss.com/docs/border-radius ## "rounded-l" => [{ "rounded-l" => SCALE_RADIUS.call }], # # Border Radius Start Start # @see https://tailwindcss.com/docs/border-radius # "rounded-ss" => [{ "rounded-ss" => SCALE_RADIUS.call }], # # Border Radius Start End # @see https://tailwindcss.com/docs/border-radius # "rounded-se" => [{ "rounded-se" => SCALE_RADIUS.call }], # # Border Radius End End # @see https://tailwindcss.com/docs/border-radius # "rounded-ee" => [{ "rounded-ee" => SCALE_RADIUS.call }], # # Border Radius End Start # @see https://tailwindcss.com/docs/border-radius # "rounded-es" => [{ "rounded-es" => SCALE_RADIUS.call }], ## # Border Radius Top Left # @see https://tailwindcss.com/docs/border-radius ## "rounded-tl" => [{ "rounded-tl" => SCALE_RADIUS.call }], ## # Border Radius Top Right # @see https://tailwindcss.com/docs/border-radius ## "rounded-tr" => [{ "rounded-tr" => SCALE_RADIUS.call }], ## # Border Radius Bottom Right # @see https://tailwindcss.com/docs/border-radius ## "rounded-br" => [{ "rounded-br" => SCALE_RADIUS.call }], ## # Border Radius Bottom Left # @see https://tailwindcss.com/docs/border-radius ## "rounded-bl" => [{ "rounded-bl" => SCALE_RADIUS.call }], ## # Border Width # @see https://tailwindcss.com/docs/border-width ## "border-w" => [{ "border" => SCALE_BORDER_WIDTH.call }], ## # Border Width X # @see https://tailwindcss.com/docs/border-width ## "border-w-x" => [{ "border-x" => SCALE_BORDER_WIDTH.call }], ## # Border Width Y # @see https://tailwindcss.com/docs/border-width ## "border-w-y" => [{ "border-y" => SCALE_BORDER_WIDTH.call }], # # Border Width Start # @see https://tailwindcss.com/docs/border-width # "border-w-s" => [{ "border-s" => SCALE_BORDER_WIDTH.call }], # # Border Width End # @see https://tailwindcss.com/docs/border-width # "border-w-e" => [{ "border-e" => SCALE_BORDER_WIDTH.call }], ## # Border Width Top # @see https://tailwindcss.com/docs/border-width ## "border-w-t" => [{ "border-t" => SCALE_BORDER_WIDTH.call }], ## # Border Width Right # @see https://tailwindcss.com/docs/border-width ## "border-w-r" => [{ "border-r" => SCALE_BORDER_WIDTH.call }], ## # Border Width Bottom # @see https://tailwindcss.com/docs/border-width ## "border-w-b" => [{ "border-b" => SCALE_BORDER_WIDTH.call }], ## # Border Width Left # @see https://tailwindcss.com/docs/border-width ## "border-w-l" => [{ "border-l" => SCALE_BORDER_WIDTH.call }], ## # Divide Width X # @see https://tailwindcss.com/docs/border-width#between-children ## "divide-x" => [{ "divide-x" => SCALE_BORDER_WIDTH.call }], ## # Divide Width X Reverse # @see https://tailwindcss.com/docs/divide-width ## "divide-x-reverse" => ["divide-x-reverse"], ## # Divide Width Y # @see https://tailwindcss.com/docs/divide-width ## "divide-y" => [{ "divide-y" => SCALE_BORDER_WIDTH.call }], ## # Divide Width Y Reverse # @see https://tailwindcss.com/docs/divide-width ## "divide-y-reverse" => ["divide-y-reverse"], ## # Border Style # @see https://tailwindcss.com/docs/border-style ## "border-style" => [{ "border" => [*SCALE_LINE_STYLE.call, "hidden", "none"] }], ## # Divide Style # @see https://tailwindcss.com/docs/divide-style ## "divide-style" => [{ "divide" => [*SCALE_LINE_STYLE.call, "hidden", "none"] }], ## # Border Color # @see https://tailwindcss.com/docs/border-color ## "border-color" => [{ "border" => SCALE_COLOR.call }], ## # Border Color X # @see https://tailwindcss.com/docs/border-color ## "border-color-x" => [{ "border-x" => SCALE_COLOR.call }], ## # Border Color Y # @see https://tailwindcss.com/docs/border-color ## "border-color-y" => [{ "border-y" => SCALE_COLOR.call }], ## # Border Color S # @see https://tailwindcss.com/docs/border-color ## "border-color-s" => [{ "border-s" => SCALE_COLOR.call }], ## # Border Color E # @see https://tailwindcss.com/docs/border-color ## "border-color-e" => [{ "border-e" => SCALE_COLOR.call }], ## # Border Color Top # @see https://tailwindcss.com/docs/border-color ## "border-color-t" => [{ "border-t" => SCALE_COLOR.call }], ## # Border Color Right # @see https://tailwindcss.com/docs/border-color ## "border-color-r" => [{ "border-r" => SCALE_COLOR.call }], ## # Border Color Bottom # @see https://tailwindcss.com/docs/border-color ## "border-color-b" => [{ "border-b" => SCALE_COLOR.call }], ## # Border Color Left # @see https://tailwindcss.com/docs/border-color ## "border-color-l" => [{ "border-l" => SCALE_COLOR.call }], ## # Divide Color # @see https://tailwindcss.com/docs/divide-color ## "divide-color" => [{ "divide" => SCALE_COLOR.call }], ## # Outline Style # @see https://tailwindcss.com/docs/outline-style ## "outline-style" => [{ "outline" => [*SCALE_LINE_STYLE.call, "none", "hidden"] }], ## # Outline Offset # @see https://tailwindcss.com/docs/outline-offset ## "outline-offset" => [{ "outline-offset" => [IS_NUMBER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ## # Outline Width # @see https://tailwindcss.com/docs/outline-width ## "outline-w" => [{ "outline" => ["", IS_NUMBER, IS_ARBITRARY_VARIABLE_LENGTH, IS_ARBITRARY_LENGTH] }], ## # Outline Color # @see https://tailwindcss.com/docs/outline-color ## "outline-color" => [{ "outline" => SCALE_COLOR.call }], ######### # Effects ######### ## # Box Shadow # @see https://tailwindcss.com/docs/box-shadow ## "shadow" => [ { "shadow" => [ # Deprecated since Tailwind CSS v4.0.0 "", "none", THEME_SHADOW, IS_ARBITRARY_VARIABLE_SHADOW, IS_ARBITRARY_SHADOW, ], }, ], ## # Box Shadow Color # @see https://tailwindcss.com/docs/box-shadow-color ## "shadow-color" => [{ "shadow" => SCALE_COLOR.call }], ## # Inset Box Shadow # @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow ## "inset-shadow" => [ { "inset-shadow" => [ "none", THEME_INSET_SHADOW, IS_ARBITRARY_VARIABLE_SHADOW, IS_ARBITRARY_SHADOW, ], }, ], ## # Inset Box Shadow Color # @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color ## "inset-shadow-color" => [{ "inset-shadow" => SCALE_COLOR.call }], ## # Ring Width # @see https://tailwindcss.com/docs/ring-width ## "ring-w" => [{ "ring" => SCALE_BORDER_WIDTH.call }], ## # Ring Width Inset # @see https://tailwindcss.com/docs/ring-width ## "ring-w-inset" => ["ring-inset"], ## # Ring Color # @see https://tailwindcss.com/docs/ring-color ## "ring-color" => [{ "ring" => SCALE_COLOR.call }], ## # Ring Offset Width # @see https://v3.tailwindcss.com/docs/ring-offset-width # @deprecated since Tailwind CSS v4.0.0 # @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158 ## "ring-offset-w" => [{ "ring-offset" => [IS_NUMBER, IS_ARBITRARY_LENGTH] }], ## # Ring Offset Color # @see https://v3.tailwindcss.com/docs/ring-offset-color # @deprecated since Tailwind CSS v4.0.0 # @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158 ## "ring-offset-color" => [{ "ring-offset" => SCALE_COLOR.call }], ## # Inset Ring Width # @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring ## "inset-ring-w" => [{ "inset-ring" => SCALE_BORDER_WIDTH.call }], ## # Inset Ring Color # @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color ## "inset-ring-color" => [{ "inset-ring" => SCALE_COLOR.call }], ## # Text Shadow # @see https://tailwindcss.com/docs/text-shadow ## "text-shadow" => [ { "text-shadow" => [ "none", THEME_TEXT_SHADOW, IS_ARBITRARY_VARIABLE_SHADOW, IS_ARBITRARY_SHADOW, ], }, ], ## # Text Shadow Color # @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color ## "text-shadow-color" => [{ "text-shadow": SCALE_COLOR.call }], ## # Opacity # @see https://tailwindcss.com/docs/opacity ## "opacity" => [{ "opacity" => [IS_NUMBER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ## # Mix Blend Mode # @see https://tailwindcss.com/docs/mix-blend-mode ## "mix-blend" => [{ "mix-blend" => [*SCALE_BLEND_MODE.call, "plus-darker", "plus-lighter"] }], ## # Background Blend Mode # @see https://tailwindcss.com/docs/background-blend-mode ## "bg-blend" => [{ "bg-blend" => SCALE_BLEND_MODE.call }], ## # Mask Clip # @see https://tailwindcss.com/docs/mask-clip ## "mask-clip" => [ { "mask-clip" => ["border", "padding", "content", "fill", "stroke", "view"] }, "mask-no-clip", ], ## # Mask Composite # @see https://tailwindcss.com/docs/mask-composite ## "mask-composite" => [{ "mask" => ["add", "subtract", "intersect", "exclude"] }], ## # Mask Image # @see https://tailwindcss.com/docs/mask-image ## "mask-image-linear-pos" => [{ "mask-linear" => [Validators::IS_NUMBER] }], "mask-image-linear-from-pos" => [{ "mask-linear-from": SCALE_MASK_IMAGE_POSITION.call }], "mask-image-linear-to-pos" => [{ "mask-linear-to": SCALE_MASK_IMAGE_POSITION.call }], "mask-image-linear-from-color" => [{ "mask-linear-from": SCALE_COLOR.call }], "mask-image-linear-to-color" => [{ "mask-linear-to": SCALE_COLOR.call }], "mask-image-t-from-pos" => [{ "mask-t-from": SCALE_MASK_IMAGE_POSITION.call }], "mask-image-t-to-pos" => [{ "mask-t-to": SCALE_MASK_IMAGE_POSITION.call }], "mask-image-t-from-color" => [{ "mask-t-from": SCALE_COLOR.call }], "mask-image-t-to-color" => [{ "mask-t-to": SCALE_COLOR.call }], "mask-image-r-from-pos" => [{ "mask-r-from": SCALE_MASK_IMAGE_POSITION.call }], "mask-image-r-to-pos" => [{ "mask-r-to": SCALE_MASK_IMAGE_POSITION.call }], "mask-image-r-from-color" => [{ "mask-r-from": SCALE_COLOR.call }], "mask-image-r-to-color" => [{ "mask-r-to": SCALE_COLOR.call }], "mask-image-b-from-pos" => [{ "mask-b-from": SCALE_MASK_IMAGE_POSITION.call }], "mask-image-b-to-pos" => [{ "mask-b-to": SCALE_MASK_IMAGE_POSITION.call }], "mask-image-b-from-color" => [{ "mask-b-from": SCALE_COLOR.call }], "mask-image-b-to-color" => [{ "mask-b-to": SCALE_COLOR.call }], "mask-image-l-from-pos" => [{ "mask-l-from": SCALE_MASK_IMAGE_POSITION.call }], "mask-image-l-to-pos" => [{ "mask-l-to": SCALE_MASK_IMAGE_POSITION.call }], "mask-image-l-from-color" => [{ "mask-l-from": SCALE_COLOR.call }], "mask-image-l-to-color" => [{ "mask-l-to": SCALE_COLOR.call }], "mask-image-x-from-pos" => [{ "mask-x-from": SCALE_MASK_IMAGE_POSITION.call }], "mask-image-x-to-pos" => [{ "mask-x-to": SCALE_MASK_IMAGE_POSITION.call }], "mask-image-x-from-color" => [{ "mask-x-from": SCALE_COLOR.call }], "mask-image-x-to-color" => [{ "mask-x-to": SCALE_COLOR.call }], "mask-image-y-from-pos" => [{ "mask-y-from": SCALE_MASK_IMAGE_POSITION.call }], "mask-image-y-to-pos" => [{ "mask-y-to": SCALE_MASK_IMAGE_POSITION.call }], "mask-image-y-from-color" => [{ "mask-y-from": SCALE_COLOR.call }], "mask-image-y-to-color" => [{ "mask-y-to": SCALE_COLOR.call }], "mask-image-radial" => [{ "mask-radial" => [IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], "mask-image-radial-from-pos" => [{ "mask-radial-from": SCALE_MASK_IMAGE_POSITION.call }], "mask-image-radial-to-pos" => [{ "mask-radial-to": SCALE_MASK_IMAGE_POSITION.call }], "mask-image-radial-from-color" => [{ "mask-radial-from": SCALE_COLOR.call }], "mask-image-radial-to-color" => [{ "mask-radial-to": SCALE_COLOR.call }], "mask-image-radial-shape" => [{ "mask-radial" => ["circle", "ellipse"] }], "mask-image-radial-size" => [ { "mask-radial" => [{ "closest" => ["side", "corner"], "farthest" => ["side", "corner"] }] }, ], "mask-image-radial-pos" => [{ "mask-radial-at": SCALE_POSITION.call }], "mask-image-conic-pos" => [{ "mask-conic" => [IS_NUMBER] }], "mask-image-conic-from-pos" => [{ "mask-conic-from": SCALE_MASK_IMAGE_POSITION.call }], "mask-image-conic-to-pos" => [{ "mask-conic-to": SCALE_MASK_IMAGE_POSITION.call }], "mask-image-conic-from-color" => [{ "mask-conic-from": SCALE_COLOR.call }], "mask-image-conic-to-color" => [{ "mask-conic-to": SCALE_COLOR.call }], ## # Mask Mode # @see https://tailwindcss.com/docs/mask-mode ## "mask-mode" => [{ "mask" => ["alpha", "luminance", "match"] }], ## # Mask Origin # @see https://tailwindcss.com/docs/mask-origin ## "mask-origin" => [ { "mask-origin" => ["border", "padding", "content", "fill", "stroke", "view"] }, ], ## # Mask Position # @see https://tailwindcss.com/docs/mask-position ## "mask-position" => [{ "mask" => SCALE_BG_POSITION.call }], ## # Mask Repeat # @see https://tailwindcss.com/docs/mask-repeat ## "mask-repeat" => [{ "mask" => SCALE_BG_REPEAT.call }], ## # Mask Size # @see https://tailwindcss.com/docs/mask-size ## "mask-size" => [{ "mask" => SCALE_BG_SIZE.call }], ## # Mask Type # @see https://tailwindcss.com/docs/mask-type ## "mask-type" => [{ "mask-type" => ["alpha", "luminance"] }], ## # Mask Image # @see https://tailwindcss.com/docs/mask-image ## "mask-image" => [{ "mask" => ["none", IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ######### # Filters ######### ## # Filter # @deprecated since Tailwind CSS v3.0.0 # @see https://tailwindcss.com/docs/filter ## "filter" => [ { "filter" => [ # Deprecated since Tailwind CSS v3.0.0 "", "none", IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE, ], }, ], ## # Blur # @see https://tailwindcss.com/docs/blur ## "blur" => [{ "blur" => SCALE_BLUR.call }], ## # Brightness # @see https://tailwindcss.com/docs/brightness ## "brightness" => [{ "brightness" => [IS_NUMBER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ## # Contrast # @see https://tailwindcss.com/docs/contrast ## "contrast" => [{ "contrast" => [IS_NUMBER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ## # Drop Shadow # @see https://tailwindcss.com/docs/drop-shadow ## "drop-shadow" => [{ "drop-shadow" => [ # Deprecated since Tailwind CSS v4.0.0 "", "none", THEME_DROP_SHADOW, IS_ARBITRARY_VARIABLE_SHADOW, IS_ARBITRARY_SHADOW, ], }], ## # Drop Shadow Color # @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color ## "drop-shadow-color" => [{ "drop-shadow": SCALE_COLOR.call }], ## # Grayscale # @see https://tailwindcss.com/docs/grayscale ## "grayscale" => [{ "grayscale" => ["", IS_NUMBER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ## # Hue Rotate # @see https://tailwindcss.com/docs/hue-rotate ## "hue-rotate" => [{ "hue-rotate" => [IS_NUMBER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ## # Invert # @see https://tailwindcss.com/docs/invert ## "invert" => [{ "invert" => ["", IS_NUMBER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ## # Saturate # @see https://tailwindcss.com/docs/saturate ## "saturate" => [{ "saturate" => [IS_NUMBER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ## # Sepia # @see https://tailwindcss.com/docs/sepia ## "sepia" => [{ "sepia" => ["", IS_NUMBER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ## # Backdrop Filter # @see https://tailwindcss.com/docs/backdrop-filter ## "backdrop-filter" => [{ "backdrop-filter" => [ # Deprecated since Tailwind CSS v3.0.0 "", "none", IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE, ], }], ## # Backdrop Blur # @see https://tailwindcss.com/docs/backdrop-blur ## "backdrop-blur" => [{ "backdrop-blur" => SCALE_BLUR.call }], ## # Backdrop Brightness # @see https://tailwindcss.com/docs/backdrop-brightness ## "backdrop-brightness" => [{ "backdrop-brightness" => [IS_NUMBER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE], }], ## # Backdrop Contrast # @see https://tailwindcss.com/docs/backdrop-contrast ## "backdrop-contrast" => [{ "backdrop-contrast" => [IS_NUMBER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ## # Backdrop Grayscale # @see https://tailwindcss.com/docs/backdrop-grayscale ## "backdrop-grayscale" => [{ "backdrop-grayscale" => ["", IS_NUMBER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ## # Backdrop Hue Rotate # @see https://tailwindcss.com/docs/backdrop-hue-rotate ## "backdrop-hue-rotate" => [{ "backdrop-hue-rotate" => [IS_NUMBER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ## # Backdrop Invert # @see https://tailwindcss.com/docs/backdrop-invert ## "backdrop-invert" => [{ "backdrop-invert" => ["", IS_NUMBER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ## # Backdrop Opacity # @see https://tailwindcss.com/docs/backdrop-opacity ## "backdrop-opacity" => [{ "backdrop-opacity" => [IS_NUMBER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ## # Backdrop Saturate # @see https://tailwindcss.com/docs/backdrop-saturate ## "backdrop-saturate" => [{ "backdrop-saturate" => [IS_NUMBER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ## # Backdrop Sepia # @see https://tailwindcss.com/docs/backdrop-sepia ## "backdrop-sepia" => [{ "backdrop-sepia" => ["", IS_NUMBER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ######## # Tables ######## # Border Collapse # @see https://tailwindcss.com/docs/border-collapse ## "border-collapse" => [{ "border" => ["collapse", "separate"] }], ## # Border Spacing # @see https://tailwindcss.com/docs/border-spacing ## "border-spacing" => [{ "border-spacing" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Border Spacing X # @see https://tailwindcss.com/docs/border-spacing ## "border-spacing-x" => [{ "border-spacing-x" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Border Spacing Y # @see https://tailwindcss.com/docs/border-spacing ## "border-spacing-y" => [{ "border-spacing-y" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Table Layout # @see https://tailwindcss.com/docs/table-layout ## "table-layout" => [{ "table" => ["auto", "fixed"] }], # # Caption Side # @see https://tailwindcss.com/docs/caption-side # "caption" => [{ "caption" => ["top", "bottom"] }], ############################# # Transitions and Animation ############################# # Tranisition Property # @see https://tailwindcss.com/docs/transition-property ## "transition" => [ { "transition" => [ "", "all", "colors", "opacity", "shadow", "transform", "none", IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE, ], }, ], ## # Transition Behavior # @see https://tailwindcss.com/docs/transition-behavior ## "transition-behavior" => [{ "transition" => ["normal", "discrete"] }], ## # Transition Duration # @see https://tailwindcss.com/docs/transition-duration ## "duration" => [{ "duration" => [IS_NUMBER, "initial", IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ## # Transition Timing Function # @see https://tailwindcss.com/docs/transition-timing-function ## "ease" => [{ "ease" => ["linear", "initial", THEME_EASE, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ## # Transition Delay # @see https://tailwindcss.com/docs/transition-delay ## "delay" => [{ "delay" => [IS_NUMBER, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ## # Animation # @see https://tailwindcss.com/docs/animation ## "animate" => [{ "animate" => ["none", THEME_ANIMATE, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }], ############# # Transforms ############# ## # Backface Visibility # @see https://tailwindcss.com/docs/backface-visibility ## "backface" => [{ "backface" => ["hidden", "visible"] }], ## # Perspective # @see https://tailwindcss.com/docs/perspective ## "perspective" => [ { "perspective" => [THEME_PERSPECTIVE, IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }, ], ## # Perspective Origin # @see https://tailwindcss.com/docs/perspective-origin ## "perspective-origin" => [{ "perspective-origin" => SCALE_POSITION_WITH_ARBITRARY.call }], ## # Rotate # @see https://tailwindcss.com/docs/rotate ## "rotate" => [{ "rotate" => SCALE_ROTATE.call }], ## # Rotate X # @see https://tailwindcss.com/docs/rotate ## "rotate-x" => [{ "rotate-x": SCALE_ROTATE.call }], ## # Rotate Y # @see https://tailwindcss.com/docs/rotate ## "rotate-y" => [{ "rotate-y": SCALE_ROTATE.call }], ## # Rotate Z # @see https://tailwindcss.com/docs/rotate ## "rotate-z" => [{ "rotate-z": SCALE_ROTATE.call }], ## # Scale # @see https://tailwindcss.com/docs/scale ## "scale" => [{ "scale" => SCALE_SCALE.call }], ## # Scale X # @see https://tailwindcss.com/docs/scale ## "scale-x" => [{ "scale-x" => SCALE_SCALE.call }], ## # Scale Y # @see https://tailwindcss.com/docs/scale ## "scale-y" => [{ "scale-y" => SCALE_SCALE.call }], ## # Scale Z # @see https://tailwindcss.com/docs/scale ## "scale-z" => [{ "scale-z" => SCALE_SCALE.call }], ## # Scale 3D # @see https://tailwindcss.com/docs/scale ## "scale-3d" => ["scale-3d"], ## # Skew # @see https://tailwindcss.com/docs/skew ## "skew" => [{ "skew" => SCALE_SKEW.call }], ## # Skew X # @see https://tailwindcss.com/docs/skew ## "skew-x" => [{ "skew-x": SCALE_SKEW.call }], ## # Skew Y # @see https://tailwindcss.com/docs/skew ## "skew-y" => [{ "skew-y": SCALE_SKEW.call }], # Transform # @see https://tailwindcss.com/docs/transform ## "transform" => [{ "transform" => [IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE, "", "none", "gpu", "cpu"] }], ## # Transform Origin # @see https://tailwindcss.com/docs/transform-origin ## "transform-origin" => [ { "origin" => SCALE_POSITION_WITH_ARBITRARY.call, }, ], ## # Transform Style # @see https://tailwindcss.com/docs/transform-style ## "transform-style" => [{ "transform" => ["3d", "flat"] }], ## # Translate # @see https://tailwindcss.com/docs/translate ## "translate" => [{ "translate" => SCALE_TRANSLATE.call }], ## # Translate X # @see https://tailwindcss.com/docs/translate ## "translate-x" => [{ "translate-x" => SCALE_TRANSLATE.call }], ## # Translate Y # @see https://tailwindcss.com/docs/translate ## "translate-y" => [{ "translate-y" => SCALE_TRANSLATE.call }], ## # Translate Z # @see https://tailwindcss.com/docs/translate ## "translate-z" => [{ "translate-z" => SCALE_TRANSLATE.call }], ## # Translate None # @see https://tailwindcss.com/docs/translate ## "translate-none" => ["translate-none"], ############### # Interactivity ############### ## # Accent Color # @see https://tailwindcss.com/docs/accent-color ## "accent" => [{ "accent" => SCALE_COLOR.call }], ## # Appearance # @see https://tailwindcss.com/docs/appearance ## "appearance" => [{ "appearance" => ["none", "auto"] }], ## # Caret Color # @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities ## "caret-color" => [{ "caret" => SCALE_COLOR.call }], ## # Color Scheme # @see https://tailwindcss.com/docs/color-scheme ## "color-scheme" => [ { "scheme" => ["normal", "dark", "light", "light-dark", "only-dark", "only-light"] }, ], ## # Cursor # @see https://tailwindcss.com/docs/cursor ## "cursor" => [ { "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", IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE, ], }, ], ## # Field Sizing # @see https://tailwindcss.com/docs/field-sizing ## "field-sizing" => [{ "field-sizing" => ["fixed", "content"] }], ## # Pointer Events # @see https://tailwindcss.com/docs/pointer-events ## "pointer-events" => [{ "pointer-events" => ["none", "auto"] }], ## # Resize # @see https://tailwindcss.com/docs/resize ## "resize" => [{ "resize" => ["none", "", "y", "x"] }], ## # Scroll Behavior # @see https://tailwindcss.com/docs/scroll-behavior ## "scroll-behavior" => [{ "scroll" => ["auto", "smooth"] }], ## # Scroll Margin # @see https://tailwindcss.com/docs/scroll-margin ## "scroll-m" => [{ "scroll-m" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Scroll Margin X # @see https://tailwindcss.com/docs/scroll-margin ## "scroll-mx" => [{ "scroll-mx" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Scroll Margin Y # @see https://tailwindcss.com/docs/scroll-margin ## "scroll-my" => [{ "scroll-my" => SCALE_UNAMBIGUOUS_SPACING.call }], # # Scroll Margin Start # @see https://tailwindcss.com/docs/scroll-margin # "scroll-ms" => [{ "scroll-ms" => SCALE_UNAMBIGUOUS_SPACING.call }], # # Scroll Margin End # @see https://tailwindcss.com/docs/scroll-margin # "scroll-me" => [{ "scroll-me" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Scroll Margin Top # @see https://tailwindcss.com/docs/scroll-margin ## "scroll-mt" => [{ "scroll-mt" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Scroll Margin Right # @see https://tailwindcss.com/docs/scroll-margin ## "scroll-mr" => [{ "scroll-mr" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Scroll Margin Bottom # @see https://tailwindcss.com/docs/scroll-margin ## "scroll-mb" => [{ "scroll-mb" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Scroll Margin Left # @see https://tailwindcss.com/docs/scroll-margin ## "scroll-ml" => [{ "scroll-ml" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Scroll Padding # @see https://tailwindcss.com/docs/scroll-padding ## "scroll-p" => [{ "scroll-p" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Scroll Padding X # @see https://tailwindcss.com/docs/scroll-padding ## "scroll-px" => [{ "scroll-px" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Scroll Padding Y # @see https://tailwindcss.com/docs/scroll-padding ## "scroll-py" => [{ "scroll-py" => SCALE_UNAMBIGUOUS_SPACING.call }], # # Scroll Padding Start # @see https://tailwindcss.com/docs/scroll-padding # "scroll-ps" => [{ "scroll-ps" => SCALE_UNAMBIGUOUS_SPACING.call }], # # Scroll Padding End # @see https://tailwindcss.com/docs/scroll-padding # "scroll-pe" => [{ "scroll-pe" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Scroll Padding Top # @see https://tailwindcss.com/docs/scroll-padding ## "scroll-pt" => [{ "scroll-pt" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Scroll Padding Right # @see https://tailwindcss.com/docs/scroll-padding ## "scroll-pr" => [{ "scroll-pr" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Scroll Padding Bottom # @see https://tailwindcss.com/docs/scroll-padding ## "scroll-pb" => [{ "scroll-pb" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Scroll Padding Left # @see https://tailwindcss.com/docs/scroll-padding ## "scroll-pl" => [{ "scroll-pl" => SCALE_UNAMBIGUOUS_SPACING.call }], ## # Scroll Snap Align # @see https://tailwindcss.com/docs/scroll-snap-align ## "snap-align" => [{ "snap" => ["start", "end", "center", "align-none"] }], ## # Scroll Snap Stop # @see https://tailwindcss.com/docs/scroll-snap-stop ## "snap-stop" => [{ "snap" => ["normal", "always"] }], ## # Scroll Snap Type # @see https://tailwindcss.com/docs/scroll-snap-type ## "snap-type" => [{ "snap" => ["none", "x", "y", "both"] }], ## # Scroll Snap Type Strictness # @see https://tailwindcss.com/docs/scroll-snap-type ## "snap-strictness" => [{ "snap" => ["mandatory", "proximity"] }], ## # Touch Action # @see https://tailwindcss.com/docs/touch-action ## "touch" => [ { "touch" => ["auto", "none", "manipulation"], }, ], ## # Touch Action X # @see https://tailwindcss.com/docs/touch-action ## "touch-x" => [ { "touch-pan" => ["x", "left", "right"], }, ], ## # Touch Action Y # @see https://tailwindcss.com/docs/touch-action ## "touch-y" => [ { "touch-pan" => ["y", "up", "down"], }, ], ## # Touch Action Pinch Zoom # @see https://tailwindcss.com/docs/touch-action ## "touch-pz" => ["touch-pinch-zoom"], ## # User Select # @see https://tailwindcss.com/docs/user-select ## "select" => [{ "select" => ["none", "text", "all", "auto"] }], ## # Will Change # @see https://tailwindcss.com/docs/will-change ## "will-change" => [ { "will-change" => ["auto", "scroll", "contents", "transform", IS_ARBITRARY_VARIABLE, IS_ARBITRARY_VALUE] }, ], ###### # SVG ###### ## # Fill # @see https://tailwindcss.com/docs/fill ## "fill" => [{ "fill" => ["none", *SCALE_COLOR.call] }], ## # Stroke Width # @see https://tailwindcss.com/docs/stroke-width ## "stroke-w" => [{ "stroke" => [IS_NUMBER, IS_ARBITRARY_VARIABLE_LENGTH, IS_ARBITRARY_LENGTH, IS_ARBITRARY_NUMBER] }], ## # Stroke # @see https://tailwindcss.com/docs/stroke ## "stroke" => [{ "stroke" => ["none", *SCALE_COLOR.call] }], ################ # Accessibility ################ ## # Forced Color Adjust # @see https://tailwindcss.com/docs/forced-color-adjust ## "forced-color-adjust" => [{ "forced-color-adjust" => ["auto", "none"] }], }, conflicting_class_groups: { "overflow" => ["overflow-x", "overflow-y"], "overscroll" => ["overscroll-x", "overscroll-y"], "inset" => ["inset-x", "inset-y", "start", "end", "top", "right", "bottom", "left"], "inset-x" => ["right", "left"], "inset-y" => ["top", "bottom"], "flex" => ["basis", "grow", "shrink"], "gap" => ["gap-x", "gap-y"], "p" => ["px", "py", "ps", "pe", "pt", "pr", "pb", "pl"], "px" => ["pr", "pl"], "py" => ["pt", "pb"], "m" => ["mx", "my", "ms", "me", "mt", "mr", "mb", "ml"], "mx" => ["mr", "ml"], "my" => ["mt", "mb"], "size" => ["w", "h"], "font-size" => ["leading"], "fvn-normal" => [ "fvn-ordinal", "fvn-slashed-zero", "fvn-figure", "fvn-spacing", "fvn-fraction", ], "fvn-ordinal" => ["fvn-normal"], "fvn-slashed-zero" => ["fvn-normal"], "fvn-figure" => ["fvn-normal"], "fvn-spacing" => ["fvn-normal"], "fvn-fraction" => ["fvn-normal"], "line-clamp" => ["display", "overflow"], "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", ], "rounded-s" => ["rounded-ss", "rounded-es"], "rounded-e" => ["rounded-se", "rounded-ee"], "rounded-t" => ["rounded-tl", "rounded-tr"], "rounded-r" => ["rounded-tr", "rounded-br"], "rounded-b" => ["rounded-br", "rounded-bl"], "rounded-l" => ["rounded-tl", "rounded-bl"], "border-spacing" => ["border-spacing-x", "border-spacing-y"], "border-w" => [ "border-w-x", "border-w-y", "border-w-s", "border-w-e", "border-w-t", "border-w-r", "border-w-b", "border-w-l", ], "border-w-x" => ["border-w-r", "border-w-l"], "border-w-y" => ["border-w-t", "border-w-b"], "border-color" => [ "border-color-x", "border-color-y", "border-color-s", "border-color-e", "border-color-t", "border-color-r", "border-color-b", "border-color-l", ], "border-color-x" => ["border-color-r", "border-color-l"], "border-color-y" => ["border-color-t", "border-color-b"], "translate" => ["translate-x", "translate-y", "translate-none"], "translate-none" => ["translate", "translate-x", "translate-y", "translate-z"], "scroll-m" => [ "scroll-mx", "scroll-my", "scroll-ms", "scroll-me", "scroll-mt", "scroll-mr", "scroll-mb", "scroll-ml", ], "scroll-mx" => ["scroll-mr", "scroll-ml"], "scroll-my" => ["scroll-mt", "scroll-mb"], "scroll-p" => [ "scroll-px", "scroll-py", "scroll-ps", "scroll-pe", "scroll-pt", "scroll-pr", "scroll-pb", "scroll-pl", ], "scroll-px" => ["scroll-pr", "scroll-pl"], "scroll-py" => ["scroll-pt", "scroll-pb"], "touch" => ["touch-x", "touch-y", "touch-pz"], "touch-x" => ["touch"], "touch-y" => ["touch"], "touch-pz" => ["touch"], }, conflicting_class_group_modifiers: { "font-size" => ["leading"], }, order_sensitive_modifiers: [ "*", "**", "after", "backdrop", "before", "details-content", "file", "first-letter", "first-line", "marker", "placeholder", "selection", ], }.freeze
Constants included from Validators
Validators::ARBITRARY_VALUE_REGEX, Validators::ARBITRARY_VARIABLE_REGEX, Validators::COLOR_FUNCTION_REGEX, Validators::FRACTION_REGEX, Validators::IMAGE_REGEX, Validators::IS_ANY, Validators::IS_ANY_NON_ARBITRARY, Validators::IS_ARBITRARY_IMAGE, Validators::IS_ARBITRARY_LENGTH, Validators::IS_ARBITRARY_NUMBER, Validators::IS_ARBITRARY_POSITION, Validators::IS_ARBITRARY_SHADOW, Validators::IS_ARBITRARY_SIZE, Validators::IS_ARBITRARY_VALUE, Validators::IS_ARBITRARY_VARIABLE, Validators::IS_ARBITRARY_VARIABLE_FAMILY_NAME, Validators::IS_ARBITRARY_VARIABLE_IMAGE, Validators::IS_ARBITRARY_VARIABLE_LENGTH, Validators::IS_ARBITRARY_VARIABLE_POSITION, Validators::IS_ARBITRARY_VARIABLE_SHADOW, Validators::IS_ARBITRARY_VARIABLE_SIZE, Validators::IS_FRACTION, Validators::IS_IMAGE, Validators::IS_INTEGER, Validators::IS_LABEL_FAMILY_NAME, Validators::IS_LABEL_IMAGE, Validators::IS_LABEL_LENGTH, Validators::IS_LABEL_NUMBER, Validators::IS_LABEL_POSITION, Validators::IS_LABEL_SHADOW, Validators::IS_LABEL_SIZE, Validators::IS_LENGTH_ONLY, Validators::IS_NEVER, Validators::IS_NUMBER, Validators::IS_PERCENT, Validators::IS_SHADOW, Validators::IS_TSHIRT_SIZE, Validators::LENGTH_UNIT_REGEX, Validators::SHADOW_REGEX, Validators::TSHIRT_UNIT_REGEX
Instance Method Summary collapse
Methods included from Validators
arbitrary_value?, arbitrary_variable?, integer?, numeric?
Instance Method Details
#merge_config(incoming_config) ⇒ Object
2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 |
# File 'lib/tailwind_merge/config.rb', line 2267 def merge_config(incoming_config) extended_config = TailwindMerge::Config::DEFAULTS.dup incoming_theme = incoming_config.delete(:theme) || {} # if the incoming config has a theme, we... incoming_theme.each_pair do |key, scales| # ...add new scales to the existing ones extended_config[:theme][key] << ->(klass) { scales.include?(klass) } end extended_config.merge(incoming_config) end |