tailwind-softpop-plugin 0.0.7 → 0.0.9

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.9",
4
4
  "description": "Tailwind CSS plugin for softpop design system",
5
5
  "style": "./src/index.css",
6
6
  "exports": {
package/src/index.css CHANGED
@@ -1,6 +1,8 @@
1
1
  @import "./fonts/nunito/index.css";
2
2
  @import "./fonts/mulish/index.css";
3
3
 
4
+ @plugin "./scrollbar/index.js";
5
+
4
6
  @theme {
5
7
  --font-heading: "Nunito", sans-serif;
6
8
  --font-body: "Mulish", sans-serif;
@@ -122,6 +124,9 @@
122
124
  }
123
125
 
124
126
  @layer base {
127
+ html {
128
+ @apply scrollbar-thin scrollbar-thumb-primary-500 scrollbar-track-primary-100 scrollbar-thumb-rounded-full scrollbar-track-rounded-full scroll-smooth;
129
+ }
125
130
  body {
126
131
  background-color: var(--color-base-50);
127
132
  color: var(--color-neutral-700);
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
+ };