tailwind_merge 0.8.0 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -0
- data/README.md +3 -3
- data/lib/tailwind_merge/config.rb +44 -23
- data/lib/tailwind_merge/validators.rb +19 -20
- data/lib/tailwind_merge/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d905f5929fbbcbe4a1b9b1f23360ca7d1e74fc388ad652c4a4e31b4bcb6443f
|
4
|
+
data.tar.gz: 4e8958d9d569b65a6426a3c1bf261fccc70e887f7ff9c776d3c2b14d30711221
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 81befe07862ea9726ab174d4a5cc95c276166b35580250a495313ec670a49ffdf920d9143a05167578cf695f4a5b3b765783669e63c67339cd7c3e09ba9ee488
|
7
|
+
data.tar.gz: 29a9d62e4ed4ed10baed3fddf1feb66090008a6a5713733bb1cffb504c3942632a276138913c985a7a734b0be1e07ea3460556bc9cb9206321ad0ceab8612f2b
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
## [v0.8.1] - 19-09-2023
|
2
|
+
**Full Changelog**: https://github.com/gjtorikian/tailwind_merge/compare/v0.8.0...v0.8.1
|
3
|
+
## [v0.8.0] - 19-09-2023
|
4
|
+
## What's Changed
|
5
|
+
* Add clarifications to README by @borama in https://github.com/gjtorikian/tailwind_merge/pull/17
|
6
|
+
* Bump actions/checkout from 3 to 4 by @dependabot in https://github.com/gjtorikian/tailwind_merge/pull/18
|
7
|
+
* Update What's it for example in README by @borama in https://github.com/gjtorikian/tailwind_merge/pull/19
|
8
|
+
* Swap to using IMAGE, not URL by @gjtorikian in https://github.com/gjtorikian/tailwind_merge/pull/20
|
9
|
+
|
10
|
+
## New Contributors
|
11
|
+
* @borama made their first contribution in https://github.com/gjtorikian/tailwind_merge/pull/17
|
12
|
+
* @dependabot made their first contribution in https://github.com/gjtorikian/tailwind_merge/pull/18
|
13
|
+
|
14
|
+
**Full Changelog**: https://github.com/gjtorikian/tailwind_merge/compare/v0.7.4...v0.8.0
|
1
15
|
## [v0.7.4] - 03-07-2023
|
2
16
|
null
|
3
17
|
## [v0.7.3] - 26-06-2023
|
data/README.md
CHANGED
@@ -51,7 +51,7 @@ tailwind-merge overrides conflicting classes and keeps everything else untouched
|
|
51
51
|
|
52
52
|
### Merging behavior
|
53
53
|
|
54
|
-
`tailwind_merge` is
|
54
|
+
`tailwind_merge` is built to be intuitive. It follows a set of rules to determine which class wins when there are conflicts. Here is a brief overview of its conflict resolution.
|
55
55
|
|
56
56
|
### Last conflicting class wins
|
57
57
|
|
@@ -305,9 +305,9 @@ If you modified one of these theme scales in your Tailwind config, you can add a
|
|
305
305
|
|
306
306
|
Here's a brief summary for each validator:
|
307
307
|
|
308
|
-
- `IS_LENGTH` checks whether a class part is a number (`3`, `1.5`), a fraction (`3/4`),
|
308
|
+
- `IS_LENGTH` checks whether a class part is a number (`3`, `1.5`), a fraction (`3/4`), or one of the strings `px`, `full` or `screen`.
|
309
309
|
- `IS_ARBITRARY_LENGTH` checks for arbitrary length values (`[3%]`, `[4px]`, `[length:var(--my-var)]`).
|
310
|
-
- `IS_INTEGER` checks for integer values (`3`)
|
310
|
+
- `IS_INTEGER` checks for integer values (`3`).
|
311
311
|
- `IS_PERCENT` checks for percent values (`12.5%`) which is used for color stop positions.
|
312
312
|
- `IS_ARBITRARY_VALUE` checks whether the class part is enclosed in brackets (`[something]`)
|
313
313
|
- `IS_TSHIRT_SIZE`checks whether class part is a T-shirt size (`sm`, `xl`), optionally with a preceding number (`2xl`).
|
@@ -66,7 +66,7 @@ module TailwindMerge
|
|
66
66
|
OVERFLOW = -> { ["auto", "hidden", "clip", "visible", "scroll"] }
|
67
67
|
SPACING_WITH_AUTO_AND_ARBITRARY = -> { ["auto", IS_ARBITRARY_VALUE, SPACING] }
|
68
68
|
SPACING_WITH_ARBITRARY = -> { [IS_ARBITRARY_VALUE, SPACING] }
|
69
|
-
|
69
|
+
LENGTH_WITH_EMPTY_AND_ARBITRARY = -> { ["", IS_LENGTH, IS_ARBITRARY_LENGTH] }
|
70
70
|
NUMBER_WITH_AUTO_AND_ARBITRARY = -> { ["auto", IS_NUMBER, IS_ARBITRARY_VALUE] }
|
71
71
|
POSITIONS = -> {
|
72
72
|
[
|
@@ -114,13 +114,13 @@ module TailwindMerge
|
|
114
114
|
separator: ":",
|
115
115
|
theme: {
|
116
116
|
"colors" => [IS_ANY],
|
117
|
-
"spacing" => [IS_LENGTH],
|
117
|
+
"spacing" => [IS_LENGTH, IS_ARBITRARY_LENGTH],
|
118
118
|
"blur" => ["none", "", IS_TSHIRT_SIZE, IS_ARBITRARY_VALUE],
|
119
119
|
"brightness" => NUMBER.call,
|
120
120
|
"border-color" => [COLORS],
|
121
121
|
"border-radius" => ["none", "", "full", IS_TSHIRT_SIZE, IS_ARBITRARY_VALUE],
|
122
122
|
"border-spacing" => SPACING_WITH_ARBITRARY.call,
|
123
|
-
"border-width" =>
|
123
|
+
"border-width" => LENGTH_WITH_EMPTY_AND_ARBITRARY.call,
|
124
124
|
"contrast" => NUMBER.call,
|
125
125
|
"grayscale" => ZERO_AND_EMPTY.call,
|
126
126
|
"hue-rotate" => NUMBER_AND_ARBITRARY.call,
|
@@ -322,7 +322,7 @@ module TailwindMerge
|
|
322
322
|
# Z-Index
|
323
323
|
# @see https://tailwindcss.com/docs/z-index
|
324
324
|
##
|
325
|
-
"z" => [{ "z" => ["auto", IS_INTEGER] }],
|
325
|
+
"z" => [{ "z" => ["auto", IS_INTEGER, IS_ARBITRARY_VALUE] }],
|
326
326
|
# Flexbox and Grid
|
327
327
|
##
|
328
328
|
# Flex Basis
|
@@ -358,7 +358,7 @@ module TailwindMerge
|
|
358
358
|
# Order
|
359
359
|
# @see https://tailwindcss.com/docs/order
|
360
360
|
##
|
361
|
-
"order" => [{ "order" => ["first", "last", "none", IS_INTEGER] }],
|
361
|
+
"order" => [{ "order" => ["first", "last", "none", IS_INTEGER, IS_ARBITRARY_VALUE] }],
|
362
362
|
##
|
363
363
|
# Grid Template Columns
|
364
364
|
# @see https://tailwindcss.com/docs/grid-template-columns
|
@@ -368,7 +368,7 @@ module TailwindMerge
|
|
368
368
|
# Grid Column Start / End
|
369
369
|
# @see https://tailwindcss.com/docs/grid-column
|
370
370
|
##
|
371
|
-
"col-start-end" => [{ "col" => ["auto", { "span" => ["full", IS_INTEGER] }, IS_ARBITRARY_VALUE] }],
|
371
|
+
"col-start-end" => [{ "col" => ["auto", { "span" => ["full", IS_INTEGER, IS_ARBITRARY_VALUE] }, IS_ARBITRARY_VALUE] }],
|
372
372
|
|
373
373
|
##
|
374
374
|
# Grid Column Start
|
@@ -389,7 +389,7 @@ module TailwindMerge
|
|
389
389
|
# Grid Row Start / End
|
390
390
|
# @see https://tailwindcss.com/docs/grid-row
|
391
391
|
##
|
392
|
-
"row-start-end" => [{ "row" => ["auto", { "span" => [IS_INTEGER] }] }],
|
392
|
+
"row-start-end" => [{ "row" => ["auto", { "span" => [IS_INTEGER, IS_ARBITRARY_VALUE] }, IS_ARBITRARY_VALUE] }],
|
393
393
|
##
|
394
394
|
# Grid Row Start
|
395
395
|
# @see https://tailwindcss.com/docs/grid-row
|
@@ -626,7 +626,7 @@ module TailwindMerge
|
|
626
626
|
# Min-Height
|
627
627
|
# @see https://tailwindcss.com/docs/min-height
|
628
628
|
##
|
629
|
-
"min-h" => [{ "min-h" => ["min", "max", "fit",
|
629
|
+
"min-h" => [{ "min-h" => ["min", "max", "fit", IS_LENGTH, IS_ARBITRARY_VALUE] }],
|
630
630
|
##
|
631
631
|
# Max-Height
|
632
632
|
# @see https://tailwindcss.com/docs/max-height
|
@@ -730,7 +730,7 @@ module TailwindMerge
|
|
730
730
|
# @see https://tailwindcss.com/docs/line-height
|
731
731
|
##
|
732
732
|
"leading" => [
|
733
|
-
{ "leading" => ["none", "tight", "snug", "normal", "relaxed", "loose",
|
733
|
+
{ "leading" => ["none", "tight", "snug", "normal", "relaxed", "loose", IS_LENGTH, IS_ARBITRARY_VALUE] },
|
734
734
|
],
|
735
735
|
#
|
736
736
|
# List Style Image
|
@@ -787,12 +787,12 @@ module TailwindMerge
|
|
787
787
|
# Text Decoration Thickness
|
788
788
|
# @see https://tailwindcss.com/docs/text-decoration-thickness
|
789
789
|
##
|
790
|
-
"text-decoration-thickness" => [{ "decoration" => ["auto", "from-font", IS_LENGTH] }],
|
790
|
+
"text-decoration-thickness" => [{ "decoration" => ["auto", "from-font", IS_LENGTH, IS_ARBITRARY_LENGTH] }],
|
791
791
|
##
|
792
792
|
# Text Underline Offset
|
793
793
|
# @see https://tailwindcss.com/docs/text-underline-offset
|
794
794
|
##
|
795
|
-
"underline-offset" => [{ "underline-offset" => ["auto",
|
795
|
+
"underline-offset" => [{ "underline-offset" => ["auto", IS_LENGTH, IS_ARBITRARY_VALUE] }],
|
796
796
|
##
|
797
797
|
# Text Decoration Color
|
798
798
|
# @see https://tailwindcss.com/docs/text-decoration-color
|
@@ -1147,12 +1147,12 @@ module TailwindMerge
|
|
1147
1147
|
# Outline Offset
|
1148
1148
|
# @see https://tailwindcss.com/docs/outline-offset
|
1149
1149
|
##
|
1150
|
-
"outline-offset" => [{ "outline-offset" => [
|
1150
|
+
"outline-offset" => [{ "outline-offset" => [IS_LENGTH, IS_ARBITRARY_VALUE] }],
|
1151
1151
|
##
|
1152
1152
|
# Outline Width
|
1153
1153
|
# @see https://tailwindcss.com/docs/outline-width
|
1154
1154
|
##
|
1155
|
-
"outline-w" => [{ "outline" => [IS_LENGTH] }],
|
1155
|
+
"outline-w" => [{ "outline" => [IS_LENGTH, IS_ARBITRARY_LENGTH] }],
|
1156
1156
|
##
|
1157
1157
|
# Outline Color
|
1158
1158
|
# @see https://tailwindcss.com/docs/outline-color
|
@@ -1162,7 +1162,7 @@ module TailwindMerge
|
|
1162
1162
|
# Ring Width
|
1163
1163
|
# @see https://tailwindcss.com/docs/ring-width
|
1164
1164
|
##
|
1165
|
-
"ring-w" => [{ "ring" =>
|
1165
|
+
"ring-w" => [{ "ring" => LENGTH_WITH_EMPTY_AND_ARBITRARY.call }],
|
1166
1166
|
##
|
1167
1167
|
# Ring Width Inset
|
1168
1168
|
# @see https://tailwindcss.com/docs/ring-width
|
@@ -1182,7 +1182,7 @@ module TailwindMerge
|
|
1182
1182
|
# Ring Offset Width
|
1183
1183
|
# @see https://tailwindcss.com/docs/ring-offset-width
|
1184
1184
|
##
|
1185
|
-
"ring-offset-w" => [{ "ring-offset" => [IS_LENGTH] }],
|
1185
|
+
"ring-offset-w" => [{ "ring-offset" => [IS_LENGTH, IS_ARBITRARY_LENGTH] }],
|
1186
1186
|
##
|
1187
1187
|
# Ring Offset Color
|
1188
1188
|
# @see https://tailwindcss.com/docs/ring-offset-color
|
@@ -1647,16 +1647,33 @@ module TailwindMerge
|
|
1647
1647
|
##
|
1648
1648
|
"touch" => [
|
1649
1649
|
{
|
1650
|
-
"touch" => [
|
1651
|
-
|
1652
|
-
|
1653
|
-
|
1654
|
-
|
1655
|
-
|
1656
|
-
|
1650
|
+
"touch" => ["auto", "none", "manipulation"],
|
1651
|
+
},
|
1652
|
+
],
|
1653
|
+
##
|
1654
|
+
# Touch Action X
|
1655
|
+
# @see https://tailwindcss.com/docs/touch-action
|
1656
|
+
##
|
1657
|
+
"touch-x" => [
|
1658
|
+
{
|
1659
|
+
"touch-pan" => ["x", "left", "right"],
|
1657
1660
|
},
|
1658
1661
|
],
|
1659
1662
|
##
|
1663
|
+
# Touch Action Y
|
1664
|
+
# @see https://tailwindcss.com/docs/touch-action
|
1665
|
+
##
|
1666
|
+
"touch-y" => [
|
1667
|
+
{
|
1668
|
+
"touch-pan" => ["y", "up", "down"],
|
1669
|
+
},
|
1670
|
+
],
|
1671
|
+
##
|
1672
|
+
# Touch Action Pinch Zoom
|
1673
|
+
# @see https://tailwindcss.com/docs/touch-action
|
1674
|
+
##
|
1675
|
+
"touch-pz" => ["touch-pinch-zoom"],
|
1676
|
+
##
|
1660
1677
|
# User Select
|
1661
1678
|
# @see https://tailwindcss.com/docs/user-select
|
1662
1679
|
##
|
@@ -1678,7 +1695,7 @@ module TailwindMerge
|
|
1678
1695
|
# Stroke Width
|
1679
1696
|
# @see https://tailwindcss.com/docs/stroke-width
|
1680
1697
|
##
|
1681
|
-
"stroke-w" => [{ "stroke" => [IS_LENGTH, IS_ARBITRARY_NUMBER] }],
|
1698
|
+
"stroke-w" => [{ "stroke" => [IS_LENGTH, IS_ARBITRARY_LENGTH, IS_ARBITRARY_NUMBER] }],
|
1682
1699
|
##
|
1683
1700
|
# Stroke
|
1684
1701
|
# @see https://tailwindcss.com/docs/stroke
|
@@ -1783,6 +1800,10 @@ module TailwindMerge
|
|
1783
1800
|
],
|
1784
1801
|
"scroll-px" => ["scroll-pr", "scroll-pl"],
|
1785
1802
|
"scroll-py" => ["scroll-pt", "scroll-pb"],
|
1803
|
+
"touch" => ["touch-x", "touch-y", "touch-pz"],
|
1804
|
+
"touch-x" => ["touch"],
|
1805
|
+
"touch-y" => ["touch"],
|
1806
|
+
"touch-pz" => ["touch"],
|
1786
1807
|
},
|
1787
1808
|
conflicting_class_group_modifiers: {
|
1788
1809
|
"font-size": ["leading"],
|
@@ -63,26 +63,13 @@ module TailwindMerge
|
|
63
63
|
IS_LENGTH = ->(value) {
|
64
64
|
numeric?(value) ||
|
65
65
|
STRING_LENGTHS.include?(value) ||
|
66
|
-
FRACTION_REGEX.match?(value)
|
67
|
-
IS_ARBITRARY_LENGTH.call(value)
|
66
|
+
FRACTION_REGEX.match?(value)
|
68
67
|
}
|
69
68
|
|
70
69
|
IS_ARBITRARY_LENGTH = ->(value) {
|
71
70
|
arbitrary_value?(value, "length", is_length_only)
|
72
71
|
}
|
73
72
|
|
74
|
-
IS_ARBITRARY_SIZE = ->(value) {
|
75
|
-
arbitrary_value?(value, SIZE_LABELS, is_never)
|
76
|
-
}
|
77
|
-
|
78
|
-
IS_ARBITRARY_POSITION = ->(value) {
|
79
|
-
arbitrary_value?(value, "position", is_never)
|
80
|
-
}
|
81
|
-
|
82
|
-
IS_ARBITRARY_IMAGE = ->(value) {
|
83
|
-
arbitrary_value?(value, IMAGE_LABELS, is_image)
|
84
|
-
}
|
85
|
-
|
86
73
|
IS_ARBITRARY_NUMBER = ->(value) {
|
87
74
|
arbitrary_value?(value, "number", is_number)
|
88
75
|
}
|
@@ -91,26 +78,38 @@ module TailwindMerge
|
|
91
78
|
is_number.call(value)
|
92
79
|
}
|
93
80
|
|
94
|
-
|
95
|
-
|
81
|
+
IS_INTEGER = ->(value) {
|
82
|
+
is_integer_only.call(value)
|
96
83
|
}
|
97
84
|
|
98
|
-
|
99
|
-
|
85
|
+
IS_PERCENT = ->(value) {
|
86
|
+
value.end_with?("%") && is_number.call(value[0..-2])
|
100
87
|
}
|
101
88
|
|
102
89
|
IS_ARBITRARY_VALUE = ->(value) {
|
103
90
|
ARBITRARY_VALUE_REGEX.match(value)
|
104
91
|
}
|
105
92
|
|
106
|
-
IS_ANY = ->(_) { return true }
|
107
|
-
|
108
93
|
IS_TSHIRT_SIZE = ->(value) {
|
109
94
|
TSHIRT_UNIT_REGEX.match?(value)
|
110
95
|
}
|
111
96
|
|
97
|
+
IS_ARBITRARY_SIZE = ->(value) {
|
98
|
+
arbitrary_value?(value, SIZE_LABELS, is_never)
|
99
|
+
}
|
100
|
+
|
101
|
+
IS_ARBITRARY_POSITION = ->(value) {
|
102
|
+
arbitrary_value?(value, "position", is_never)
|
103
|
+
}
|
104
|
+
|
105
|
+
IS_ARBITRARY_IMAGE = ->(value) {
|
106
|
+
arbitrary_value?(value, IMAGE_LABELS, is_image)
|
107
|
+
}
|
108
|
+
|
112
109
|
IS_ARBITRARY_SHADOW = ->(value) {
|
113
110
|
arbitrary_value?(value, "", is_shadow)
|
114
111
|
}
|
112
|
+
|
113
|
+
IS_ANY = ->(_) { return true }
|
115
114
|
end
|
116
115
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tailwind_merge
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Garen J. Torikian
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-11-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lru_redux
|
@@ -99,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
99
99
|
- !ruby/object:Gem::Version
|
100
100
|
version: '0'
|
101
101
|
requirements: []
|
102
|
-
rubygems_version: 3.4.
|
102
|
+
rubygems_version: 3.4.21
|
103
103
|
signing_key:
|
104
104
|
specification_version: 4
|
105
105
|
summary: Utility function to efficiently merge Tailwind CSS classes without style
|