tailwind-softpop-plugin 0.0.6 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/index.css +9 -0
- package/src/index.js +10 -0
- package/src/scrollbar/index.js +19 -0
- package/src/scrollbar/utilities.js +168 -0
- package/src/scrollbar/variants.js +12 -0
package/package.json
CHANGED
package/src/index.css
CHANGED
|
@@ -163,6 +163,15 @@
|
|
|
163
163
|
margin-bottom: 1.5em;
|
|
164
164
|
max-width: 75ch;
|
|
165
165
|
}
|
|
166
|
+
|
|
167
|
+
button {
|
|
168
|
+
@apply focus-visible:outline-none focus-visible:ring-4 focus-visible:ring-primary-500/60;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
a {
|
|
172
|
+
@apply focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500/60 focus-visible:rounded-sm;
|
|
173
|
+
}
|
|
166
174
|
}
|
|
167
175
|
|
|
168
176
|
@plugin "./index.js";
|
|
177
|
+
@plugin "./scrollbar/index.js";
|
package/src/index.js
CHANGED
|
@@ -58,6 +58,16 @@ module.exports = plugin(function ({ addComponents }) {
|
|
|
58
58
|
transform: "none",
|
|
59
59
|
boxShadow: "none",
|
|
60
60
|
},
|
|
61
|
+
"&:focus-visible": {
|
|
62
|
+
"--tw-outline-style": "none",
|
|
63
|
+
outlineStyle: "none",
|
|
64
|
+
"--tw-ring-shadow":
|
|
65
|
+
"var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor)",
|
|
66
|
+
boxShadow:
|
|
67
|
+
"var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)",
|
|
68
|
+
"--tw-ring-color":
|
|
69
|
+
"color-mix(in oklab, var(--color-primary-500) 60%, transparent)",
|
|
70
|
+
},
|
|
61
71
|
},
|
|
62
72
|
".btn-sm": {
|
|
63
73
|
padding: "0.5rem 1rem",
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const plugin = require("tailwindcss/plugin");
|
|
2
|
+
const {
|
|
3
|
+
addBaseStyles,
|
|
4
|
+
addBaseSizeUtilities,
|
|
5
|
+
addColorUtilities,
|
|
6
|
+
addRoundedUtilities,
|
|
7
|
+
addSizeUtilities,
|
|
8
|
+
} = require("./utilities");
|
|
9
|
+
const { addVariants } = require("./variants");
|
|
10
|
+
|
|
11
|
+
module.exports = plugin((tailwind) => {
|
|
12
|
+
addBaseStyles(tailwind, "standard");
|
|
13
|
+
addBaseSizeUtilities(tailwind, "standard");
|
|
14
|
+
addColorUtilities(tailwind);
|
|
15
|
+
addVariants(tailwind);
|
|
16
|
+
|
|
17
|
+
addRoundedUtilities(tailwind);
|
|
18
|
+
addSizeUtilities(tailwind);
|
|
19
|
+
});
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
const flattenColorPaletteImport = require("tailwindcss/lib/util/flattenColorPalette");
|
|
2
|
+
|
|
3
|
+
const importDefault = (mod) => (mod && mod.__esModule ? mod.default : mod);
|
|
4
|
+
|
|
5
|
+
const flattenColorPalette = importDefault(flattenColorPaletteImport);
|
|
6
|
+
|
|
7
|
+
const COMPONENTS = ["track", "thumb", "corner"];
|
|
8
|
+
|
|
9
|
+
const scrollbarProperties = (properties, preferPseudoElements) => {
|
|
10
|
+
if (preferPseudoElements) {
|
|
11
|
+
return {
|
|
12
|
+
"@supports (-moz-appearance:none)": properties,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return properties;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const addBaseStyles = ({ addBase }, preferredStrategy) => {
|
|
20
|
+
addBase({
|
|
21
|
+
"*": scrollbarProperties(
|
|
22
|
+
{
|
|
23
|
+
"scrollbar-color": "initial",
|
|
24
|
+
"scrollbar-width": "initial",
|
|
25
|
+
},
|
|
26
|
+
preferredStrategy === "pseudoelements",
|
|
27
|
+
),
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const generateBaseUtilities = () => ({
|
|
32
|
+
...Object.fromEntries(
|
|
33
|
+
COMPONENTS.map((component) => {
|
|
34
|
+
const base = `&::-webkit-scrollbar-${component}`;
|
|
35
|
+
|
|
36
|
+
return [
|
|
37
|
+
[
|
|
38
|
+
base,
|
|
39
|
+
{
|
|
40
|
+
"background-color": `var(--scrollbar-${component})`,
|
|
41
|
+
"border-radius": `var(--scrollbar-${component}-radius)`,
|
|
42
|
+
},
|
|
43
|
+
],
|
|
44
|
+
];
|
|
45
|
+
}).flat(),
|
|
46
|
+
),
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
const generateScrollbarSizeUtilities = ({ preferPseudoElements }) => ({
|
|
50
|
+
".scrollbar": {
|
|
51
|
+
...generateBaseUtilities(),
|
|
52
|
+
...scrollbarProperties(
|
|
53
|
+
{
|
|
54
|
+
"scrollbar-width": "auto",
|
|
55
|
+
"scrollbar-color":
|
|
56
|
+
"var(--scrollbar-thumb, initial) var(--scrollbar-track, initial)",
|
|
57
|
+
},
|
|
58
|
+
preferPseudoElements,
|
|
59
|
+
),
|
|
60
|
+
|
|
61
|
+
"&::-webkit-scrollbar": {
|
|
62
|
+
display: "block",
|
|
63
|
+
width: "var(--scrollbar-width, 16px)",
|
|
64
|
+
height: "var(--scrollbar-height, 16px)",
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
|
|
68
|
+
".scrollbar-thin": {
|
|
69
|
+
...generateBaseUtilities(),
|
|
70
|
+
...scrollbarProperties(
|
|
71
|
+
{
|
|
72
|
+
"scrollbar-width": "thin",
|
|
73
|
+
"scrollbar-color":
|
|
74
|
+
"var(--scrollbar-thumb, initial) var(--scrollbar-track, initial)",
|
|
75
|
+
},
|
|
76
|
+
preferPseudoElements,
|
|
77
|
+
),
|
|
78
|
+
|
|
79
|
+
"&::-webkit-scrollbar": {
|
|
80
|
+
display: "block",
|
|
81
|
+
width: "8px",
|
|
82
|
+
height: "8px",
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
|
|
86
|
+
".scrollbar-none": {
|
|
87
|
+
...scrollbarProperties(
|
|
88
|
+
{
|
|
89
|
+
"scrollbar-width": "none",
|
|
90
|
+
},
|
|
91
|
+
preferPseudoElements,
|
|
92
|
+
),
|
|
93
|
+
|
|
94
|
+
"&::-webkit-scrollbar": {
|
|
95
|
+
display: "none",
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
const toColorValue = (maybeFunction) =>
|
|
101
|
+
typeof maybeFunction === "function" ? maybeFunction({}) : maybeFunction;
|
|
102
|
+
|
|
103
|
+
const addColorUtilities = ({ matchUtilities, theme }) => {
|
|
104
|
+
const themeColors = flattenColorPalette(theme("colors"));
|
|
105
|
+
const colors = Object.fromEntries(
|
|
106
|
+
Object.entries(themeColors).map(([k, v]) => [k, toColorValue(v)]),
|
|
107
|
+
);
|
|
108
|
+
|
|
109
|
+
COMPONENTS.forEach((component) => {
|
|
110
|
+
matchUtilities(
|
|
111
|
+
{
|
|
112
|
+
[`scrollbar-${component}`]: (value) => ({
|
|
113
|
+
[`--scrollbar-${component}`]: toColorValue(value),
|
|
114
|
+
}),
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
values: colors,
|
|
118
|
+
type: "color",
|
|
119
|
+
},
|
|
120
|
+
);
|
|
121
|
+
});
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
const addRoundedUtilities = ({ theme, matchUtilities }) => {
|
|
125
|
+
COMPONENTS.forEach((component) => {
|
|
126
|
+
matchUtilities(
|
|
127
|
+
{
|
|
128
|
+
[`scrollbar-${component}-rounded`]: (value) => ({
|
|
129
|
+
[`--scrollbar-${component}-radius`]: value,
|
|
130
|
+
}),
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
values: theme("borderRadius"),
|
|
134
|
+
},
|
|
135
|
+
);
|
|
136
|
+
});
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
const addBaseSizeUtilities = ({ addUtilities }, preferredStrategy) => {
|
|
140
|
+
addUtilities(
|
|
141
|
+
generateScrollbarSizeUtilities({
|
|
142
|
+
preferPseudoElements: preferredStrategy === "pseudoelements",
|
|
143
|
+
}),
|
|
144
|
+
);
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
const addSizeUtilities = ({ matchUtilities, theme }) => {
|
|
148
|
+
["width", "height"].forEach((dimension) => {
|
|
149
|
+
matchUtilities(
|
|
150
|
+
{
|
|
151
|
+
[`scrollbar-${dimension[0]}`]: (value) => ({
|
|
152
|
+
[`--scrollbar-${dimension}`]: value,
|
|
153
|
+
}),
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
values: theme(dimension),
|
|
157
|
+
},
|
|
158
|
+
);
|
|
159
|
+
});
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
module.exports = {
|
|
163
|
+
addBaseStyles,
|
|
164
|
+
addBaseSizeUtilities,
|
|
165
|
+
addColorUtilities,
|
|
166
|
+
addRoundedUtilities,
|
|
167
|
+
addSizeUtilities,
|
|
168
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const addVariants = ({ addVariant }) => {
|
|
2
|
+
addVariant("scrollbar-hover", "&::-webkit-scrollbar-thumb:hover");
|
|
3
|
+
addVariant("scrollbar-track-hover", "&::-webkit-scrollbar-track:hover");
|
|
4
|
+
addVariant("scrollbar-corner-hover", "&::-webkit-scrollbar-corner:hover");
|
|
5
|
+
|
|
6
|
+
addVariant("scrollbar-active", "&::-webkit-scrollbar-thumb:active");
|
|
7
|
+
addVariant("scrollbar-track-active", "&::-webkit-scrollbar-track:active");
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
module.exports = {
|
|
11
|
+
addVariants,
|
|
12
|
+
};
|