tailwind-softpop-plugin 0.0.7 → 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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tailwind-softpop-plugin",
3
- "version": "0.0.7",
3
+ "version": "0.0.8",
4
4
  "description": "Tailwind CSS plugin for softpop design system",
5
5
  "style": "./src/index.css",
6
6
  "exports": {
package/src/index.css CHANGED
@@ -174,3 +174,4 @@
174
174
  }
175
175
 
176
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
+ };