├── .gitignore
├── .npmignore
├── LICENSE.md
├── README.md
├── index.js
├── package-lock.json
├── package.json
└── screenshot.png
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | *.png
2 | node_modules
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 | Copyright © 2020 Juhana Jauhiainen
3 |
4 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
5 |
6 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
7 |
8 | THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Gradient Mask plugin for Tailwind CSS
2 |
3 | Tailwind CSS plugin for adding `mask-image` with a `linear-gradient` on a HTML element.
4 |
5 |
6 |
7 | Try it out in [Tailwind CSS Playground](https://play.tailwindcss.com/HgR0n92v0H)
8 | [MDN docs on mask-image](https://developer.mozilla.org/en-US/docs/Web/CSS/mask-image)
9 |
10 | ## Installation
11 |
12 | With npm
13 | ```bash
14 | npm install tailwind-gradient-mask-image
15 | ```
16 |
17 | With yarn
18 | ```bash
19 | yarn add tailwind-gradient-mask-image
20 | ```
21 |
22 | ## Configuration
23 |
24 | Add the plugin to your `tailwind.config.js`
25 |
26 | ```js
27 | {
28 | plugins: [require("tailwind-gradient-mask-image")]
29 | }
30 | ```
31 |
32 | ## Usage
33 |
34 | ```html
35 |
36 | ...
37 |
38 | ```
39 |
40 | The plugin creates classes with prefix `gradient-mask-`. After the prefix follows a direction shorthand and the gradient start percentage.
41 |
42 | The class above matches the css
43 | ```css
44 | .class {
45 | mask-image: linear-gradient(to top, rgba(0, 0, 0, 1.0) 0%, transparent 100%);
46 | }
47 | ```
48 |
49 | > Using `gradient-mask-none` will set the CSS property to `mask-image: none`. This can be used in combination of breakpoints for device-specific behaviors
50 |
51 | ## Variations
52 |
53 | Direction shorthands
54 | ```js
55 | {
56 | t: "to top",
57 | tr: "to top right",
58 | r: "to right",
59 | br: "to bottom right",
60 | b: "to bottom",
61 | bl: "to bottom left",
62 | l: "to left",
63 | tl: "to top left",
64 | }
65 | ```
66 |
67 | The gradient start percentages go from 0% to 100% with 10% gaps.
68 |
69 |
70 | ## Arbitrary values
71 |
72 | You can use arbitrary values to specify unique steps towards a specific direction
73 |
74 | ```html
75 |
76 | ...
77 |
78 | ```
79 |
80 | The class above matches the following css
81 |
82 | ```css
83 | .class {
84 | mask-image: linear-gradient(to top, transparent, rgba(0,0,0,1.0) 30px, rgba(0,0,0,0.5) 40%, transparent 100%)
85 | }
86 | ```
87 |
88 | > A transparent at 100% will always be set to keep a specific direction
89 | >
90 | > You can always add `transparent_80%` at the end of your abitrary value to have the last 20% fully masked
91 |
92 |
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | const plugin = require("tailwindcss/plugin");
2 |
3 | const directions = {
4 | t: "to top",
5 | tr: "to top right",
6 | r: "to right",
7 | br: "to bottom right",
8 | b: "to bottom",
9 | bl: "to bottom left",
10 | l: "to left",
11 | tl: "to top left",
12 | };
13 |
14 | const BASE_CLASS = "gradient-mask"
15 | const steps = ["0", "10", "20", "30", "40", "50", "60", "70", "80", "90", "50-d", "60-d", "70-d", "80-d", "90-d"];
16 |
17 | function generateMaskImage(direction, steps) {
18 | return {
19 | maskImage: `linear-gradient(${direction}, ${steps.join(', ')}, transparent 100%)`
20 | }
21 | }
22 |
23 | function generateBaseUtilities() {
24 | return Object.entries(directions).reduce(
25 | (result, [shorthand, direction]) => {
26 | const variants = steps.map((step) => {
27 | const className = `.${BASE_CLASS}-${shorthand}-${step}`;
28 | if (step.includes("-")) {
29 | const substep = Number(step.split("-")[0]);
30 | return {
31 | [className]: generateMaskImage(direction, ['transparent', `rgba(0, 0, 0, 1.0) ${100-substep}%`, `rgba(0, 0, 0, 1.0) ${substep}%`]),
32 | };
33 | };
34 | return {
35 | [className]: generateMaskImage(direction, [`rgba(0, 0, 0, 1.0) ${step}%`]),
36 | };
37 | });
38 |
39 | const stepClasses = Object.assign(...variants);
40 | return {
41 | ...result,
42 | ...stepClasses,
43 | };
44 | },
45 | {
46 | [`.${BASE_CLASS}-none`]: {
47 | maskImage: 'none'
48 | }
49 | }
50 | );
51 | }
52 |
53 | function generateArbitraryUtilities() {
54 | const matchingComponents = {}
55 |
56 | Object.entries(directions).forEach(([shorthand, direction]) => {
57 | const className = `${BASE_CLASS}-${shorthand}`
58 |
59 | matchingComponents[className] = (value) => generateMaskImage(direction, [value])
60 | })
61 |
62 | return matchingComponents
63 | }
64 |
65 | module.exports = plugin(function ({ addUtilities, matchUtilities }) {
66 | const baseUtilities = generateBaseUtilities()
67 | const arbitraryUtilities = generateArbitraryUtilities()
68 |
69 | addUtilities(baseUtilities);
70 | matchUtilities(arbitraryUtilities)
71 | });
72 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "tailwind-gradient-mask-image",
3 | "version": "1.2.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "tailwind-gradient-mask-image",
9 | "version": "1.2.0",
10 | "license": "MIT",
11 | "devDependencies": {
12 | "tailwindcss": "^3.3.3"
13 | }
14 | },
15 | "node_modules/@alloc/quick-lru": {
16 | "version": "5.2.0",
17 | "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
18 | "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
19 | "dev": true,
20 | "engines": {
21 | "node": ">=10"
22 | },
23 | "funding": {
24 | "url": "https://github.com/sponsors/sindresorhus"
25 | }
26 | },
27 | "node_modules/@isaacs/cliui": {
28 | "version": "8.0.2",
29 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
30 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
31 | "dev": true,
32 | "dependencies": {
33 | "string-width": "^5.1.2",
34 | "string-width-cjs": "npm:string-width@^4.2.0",
35 | "strip-ansi": "^7.0.1",
36 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
37 | "wrap-ansi": "^8.1.0",
38 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
39 | },
40 | "engines": {
41 | "node": ">=12"
42 | }
43 | },
44 | "node_modules/@jridgewell/gen-mapping": {
45 | "version": "0.3.3",
46 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
47 | "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
48 | "dev": true,
49 | "dependencies": {
50 | "@jridgewell/set-array": "^1.0.1",
51 | "@jridgewell/sourcemap-codec": "^1.4.10",
52 | "@jridgewell/trace-mapping": "^0.3.9"
53 | },
54 | "engines": {
55 | "node": ">=6.0.0"
56 | }
57 | },
58 | "node_modules/@jridgewell/resolve-uri": {
59 | "version": "3.1.1",
60 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
61 | "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
62 | "dev": true,
63 | "engines": {
64 | "node": ">=6.0.0"
65 | }
66 | },
67 | "node_modules/@jridgewell/set-array": {
68 | "version": "1.1.2",
69 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
70 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
71 | "dev": true,
72 | "engines": {
73 | "node": ">=6.0.0"
74 | }
75 | },
76 | "node_modules/@jridgewell/sourcemap-codec": {
77 | "version": "1.4.15",
78 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
79 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
80 | "dev": true
81 | },
82 | "node_modules/@jridgewell/trace-mapping": {
83 | "version": "0.3.22",
84 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz",
85 | "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==",
86 | "dev": true,
87 | "dependencies": {
88 | "@jridgewell/resolve-uri": "^3.1.0",
89 | "@jridgewell/sourcemap-codec": "^1.4.14"
90 | }
91 | },
92 | "node_modules/@nodelib/fs.scandir": {
93 | "version": "2.1.5",
94 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
95 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
96 | "dev": true,
97 | "dependencies": {
98 | "@nodelib/fs.stat": "2.0.5",
99 | "run-parallel": "^1.1.9"
100 | },
101 | "engines": {
102 | "node": ">= 8"
103 | }
104 | },
105 | "node_modules/@nodelib/fs.stat": {
106 | "version": "2.0.5",
107 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
108 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
109 | "dev": true,
110 | "engines": {
111 | "node": ">= 8"
112 | }
113 | },
114 | "node_modules/@nodelib/fs.walk": {
115 | "version": "1.2.8",
116 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
117 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
118 | "dev": true,
119 | "dependencies": {
120 | "@nodelib/fs.scandir": "2.1.5",
121 | "fastq": "^1.6.0"
122 | },
123 | "engines": {
124 | "node": ">= 8"
125 | }
126 | },
127 | "node_modules/@pkgjs/parseargs": {
128 | "version": "0.11.0",
129 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
130 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
131 | "dev": true,
132 | "optional": true,
133 | "engines": {
134 | "node": ">=14"
135 | }
136 | },
137 | "node_modules/ansi-regex": {
138 | "version": "6.0.1",
139 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
140 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
141 | "dev": true,
142 | "engines": {
143 | "node": ">=12"
144 | },
145 | "funding": {
146 | "url": "https://github.com/chalk/ansi-regex?sponsor=1"
147 | }
148 | },
149 | "node_modules/ansi-styles": {
150 | "version": "6.2.1",
151 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
152 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
153 | "dev": true,
154 | "engines": {
155 | "node": ">=12"
156 | },
157 | "funding": {
158 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
159 | }
160 | },
161 | "node_modules/any-promise": {
162 | "version": "1.3.0",
163 | "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
164 | "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
165 | "dev": true
166 | },
167 | "node_modules/anymatch": {
168 | "version": "3.1.3",
169 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
170 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
171 | "dev": true,
172 | "dependencies": {
173 | "normalize-path": "^3.0.0",
174 | "picomatch": "^2.0.4"
175 | },
176 | "engines": {
177 | "node": ">= 8"
178 | }
179 | },
180 | "node_modules/arg": {
181 | "version": "5.0.2",
182 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
183 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
184 | "dev": true
185 | },
186 | "node_modules/balanced-match": {
187 | "version": "1.0.2",
188 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
189 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
190 | "dev": true
191 | },
192 | "node_modules/binary-extensions": {
193 | "version": "2.2.0",
194 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
195 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
196 | "dev": true,
197 | "engines": {
198 | "node": ">=8"
199 | }
200 | },
201 | "node_modules/brace-expansion": {
202 | "version": "2.0.1",
203 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
204 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
205 | "dev": true,
206 | "dependencies": {
207 | "balanced-match": "^1.0.0"
208 | }
209 | },
210 | "node_modules/braces": {
211 | "version": "3.0.2",
212 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
213 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
214 | "dev": true,
215 | "dependencies": {
216 | "fill-range": "^7.0.1"
217 | },
218 | "engines": {
219 | "node": ">=8"
220 | }
221 | },
222 | "node_modules/camelcase-css": {
223 | "version": "2.0.1",
224 | "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
225 | "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
226 | "dev": true,
227 | "engines": {
228 | "node": ">= 6"
229 | }
230 | },
231 | "node_modules/chokidar": {
232 | "version": "3.5.3",
233 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
234 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
235 | "dev": true,
236 | "funding": [
237 | {
238 | "type": "individual",
239 | "url": "https://paulmillr.com/funding/"
240 | }
241 | ],
242 | "dependencies": {
243 | "anymatch": "~3.1.2",
244 | "braces": "~3.0.2",
245 | "glob-parent": "~5.1.2",
246 | "is-binary-path": "~2.1.0",
247 | "is-glob": "~4.0.1",
248 | "normalize-path": "~3.0.0",
249 | "readdirp": "~3.6.0"
250 | },
251 | "engines": {
252 | "node": ">= 8.10.0"
253 | },
254 | "optionalDependencies": {
255 | "fsevents": "~2.3.2"
256 | }
257 | },
258 | "node_modules/chokidar/node_modules/glob-parent": {
259 | "version": "5.1.2",
260 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
261 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
262 | "dev": true,
263 | "dependencies": {
264 | "is-glob": "^4.0.1"
265 | },
266 | "engines": {
267 | "node": ">= 6"
268 | }
269 | },
270 | "node_modules/color-convert": {
271 | "version": "2.0.1",
272 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
273 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
274 | "dev": true,
275 | "dependencies": {
276 | "color-name": "~1.1.4"
277 | },
278 | "engines": {
279 | "node": ">=7.0.0"
280 | }
281 | },
282 | "node_modules/color-name": {
283 | "version": "1.1.4",
284 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
285 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
286 | "dev": true
287 | },
288 | "node_modules/commander": {
289 | "version": "4.1.1",
290 | "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
291 | "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
292 | "dev": true,
293 | "engines": {
294 | "node": ">= 6"
295 | }
296 | },
297 | "node_modules/cross-spawn": {
298 | "version": "7.0.3",
299 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
300 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
301 | "dev": true,
302 | "dependencies": {
303 | "path-key": "^3.1.0",
304 | "shebang-command": "^2.0.0",
305 | "which": "^2.0.1"
306 | },
307 | "engines": {
308 | "node": ">= 8"
309 | }
310 | },
311 | "node_modules/cssesc": {
312 | "version": "3.0.0",
313 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
314 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
315 | "dev": true,
316 | "bin": {
317 | "cssesc": "bin/cssesc"
318 | },
319 | "engines": {
320 | "node": ">=4"
321 | }
322 | },
323 | "node_modules/didyoumean": {
324 | "version": "1.2.2",
325 | "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
326 | "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
327 | "dev": true
328 | },
329 | "node_modules/dlv": {
330 | "version": "1.1.3",
331 | "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
332 | "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
333 | "dev": true
334 | },
335 | "node_modules/eastasianwidth": {
336 | "version": "0.2.0",
337 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
338 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
339 | "dev": true
340 | },
341 | "node_modules/emoji-regex": {
342 | "version": "9.2.2",
343 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
344 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
345 | "dev": true
346 | },
347 | "node_modules/fast-glob": {
348 | "version": "3.3.2",
349 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
350 | "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
351 | "dev": true,
352 | "dependencies": {
353 | "@nodelib/fs.stat": "^2.0.2",
354 | "@nodelib/fs.walk": "^1.2.3",
355 | "glob-parent": "^5.1.2",
356 | "merge2": "^1.3.0",
357 | "micromatch": "^4.0.4"
358 | },
359 | "engines": {
360 | "node": ">=8.6.0"
361 | }
362 | },
363 | "node_modules/fast-glob/node_modules/glob-parent": {
364 | "version": "5.1.2",
365 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
366 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
367 | "dev": true,
368 | "dependencies": {
369 | "is-glob": "^4.0.1"
370 | },
371 | "engines": {
372 | "node": ">= 6"
373 | }
374 | },
375 | "node_modules/fastq": {
376 | "version": "1.17.0",
377 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.0.tgz",
378 | "integrity": "sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==",
379 | "dev": true,
380 | "dependencies": {
381 | "reusify": "^1.0.4"
382 | }
383 | },
384 | "node_modules/fill-range": {
385 | "version": "7.0.1",
386 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
387 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
388 | "dev": true,
389 | "dependencies": {
390 | "to-regex-range": "^5.0.1"
391 | },
392 | "engines": {
393 | "node": ">=8"
394 | }
395 | },
396 | "node_modules/foreground-child": {
397 | "version": "3.1.1",
398 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
399 | "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
400 | "dev": true,
401 | "dependencies": {
402 | "cross-spawn": "^7.0.0",
403 | "signal-exit": "^4.0.1"
404 | },
405 | "engines": {
406 | "node": ">=14"
407 | },
408 | "funding": {
409 | "url": "https://github.com/sponsors/isaacs"
410 | }
411 | },
412 | "node_modules/fsevents": {
413 | "version": "2.3.3",
414 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
415 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
416 | "dev": true,
417 | "hasInstallScript": true,
418 | "optional": true,
419 | "os": [
420 | "darwin"
421 | ],
422 | "engines": {
423 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
424 | }
425 | },
426 | "node_modules/function-bind": {
427 | "version": "1.1.2",
428 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
429 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
430 | "dev": true,
431 | "funding": {
432 | "url": "https://github.com/sponsors/ljharb"
433 | }
434 | },
435 | "node_modules/glob": {
436 | "version": "10.3.10",
437 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
438 | "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
439 | "dev": true,
440 | "dependencies": {
441 | "foreground-child": "^3.1.0",
442 | "jackspeak": "^2.3.5",
443 | "minimatch": "^9.0.1",
444 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0",
445 | "path-scurry": "^1.10.1"
446 | },
447 | "bin": {
448 | "glob": "dist/esm/bin.mjs"
449 | },
450 | "engines": {
451 | "node": ">=16 || 14 >=14.17"
452 | },
453 | "funding": {
454 | "url": "https://github.com/sponsors/isaacs"
455 | }
456 | },
457 | "node_modules/glob-parent": {
458 | "version": "6.0.2",
459 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
460 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
461 | "dev": true,
462 | "dependencies": {
463 | "is-glob": "^4.0.3"
464 | },
465 | "engines": {
466 | "node": ">=10.13.0"
467 | }
468 | },
469 | "node_modules/hasown": {
470 | "version": "2.0.0",
471 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz",
472 | "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
473 | "dev": true,
474 | "dependencies": {
475 | "function-bind": "^1.1.2"
476 | },
477 | "engines": {
478 | "node": ">= 0.4"
479 | }
480 | },
481 | "node_modules/is-binary-path": {
482 | "version": "2.1.0",
483 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
484 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
485 | "dev": true,
486 | "dependencies": {
487 | "binary-extensions": "^2.0.0"
488 | },
489 | "engines": {
490 | "node": ">=8"
491 | }
492 | },
493 | "node_modules/is-core-module": {
494 | "version": "2.13.1",
495 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz",
496 | "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==",
497 | "dev": true,
498 | "dependencies": {
499 | "hasown": "^2.0.0"
500 | },
501 | "funding": {
502 | "url": "https://github.com/sponsors/ljharb"
503 | }
504 | },
505 | "node_modules/is-extglob": {
506 | "version": "2.1.1",
507 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
508 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
509 | "dev": true,
510 | "engines": {
511 | "node": ">=0.10.0"
512 | }
513 | },
514 | "node_modules/is-fullwidth-code-point": {
515 | "version": "3.0.0",
516 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
517 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
518 | "dev": true,
519 | "engines": {
520 | "node": ">=8"
521 | }
522 | },
523 | "node_modules/is-glob": {
524 | "version": "4.0.3",
525 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
526 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
527 | "dev": true,
528 | "dependencies": {
529 | "is-extglob": "^2.1.1"
530 | },
531 | "engines": {
532 | "node": ">=0.10.0"
533 | }
534 | },
535 | "node_modules/is-number": {
536 | "version": "7.0.0",
537 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
538 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
539 | "dev": true,
540 | "engines": {
541 | "node": ">=0.12.0"
542 | }
543 | },
544 | "node_modules/isexe": {
545 | "version": "2.0.0",
546 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
547 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
548 | "dev": true
549 | },
550 | "node_modules/jackspeak": {
551 | "version": "2.3.6",
552 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
553 | "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
554 | "dev": true,
555 | "dependencies": {
556 | "@isaacs/cliui": "^8.0.2"
557 | },
558 | "engines": {
559 | "node": ">=14"
560 | },
561 | "funding": {
562 | "url": "https://github.com/sponsors/isaacs"
563 | },
564 | "optionalDependencies": {
565 | "@pkgjs/parseargs": "^0.11.0"
566 | }
567 | },
568 | "node_modules/jiti": {
569 | "version": "1.21.0",
570 | "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz",
571 | "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==",
572 | "dev": true,
573 | "bin": {
574 | "jiti": "bin/jiti.js"
575 | }
576 | },
577 | "node_modules/lilconfig": {
578 | "version": "2.1.0",
579 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
580 | "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
581 | "dev": true,
582 | "engines": {
583 | "node": ">=10"
584 | }
585 | },
586 | "node_modules/lines-and-columns": {
587 | "version": "1.2.4",
588 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
589 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
590 | "dev": true
591 | },
592 | "node_modules/lru-cache": {
593 | "version": "10.2.0",
594 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
595 | "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
596 | "dev": true,
597 | "engines": {
598 | "node": "14 || >=16.14"
599 | }
600 | },
601 | "node_modules/merge2": {
602 | "version": "1.4.1",
603 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
604 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
605 | "dev": true,
606 | "engines": {
607 | "node": ">= 8"
608 | }
609 | },
610 | "node_modules/micromatch": {
611 | "version": "4.0.5",
612 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
613 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
614 | "dev": true,
615 | "dependencies": {
616 | "braces": "^3.0.2",
617 | "picomatch": "^2.3.1"
618 | },
619 | "engines": {
620 | "node": ">=8.6"
621 | }
622 | },
623 | "node_modules/minimatch": {
624 | "version": "9.0.3",
625 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
626 | "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
627 | "dev": true,
628 | "dependencies": {
629 | "brace-expansion": "^2.0.1"
630 | },
631 | "engines": {
632 | "node": ">=16 || 14 >=14.17"
633 | },
634 | "funding": {
635 | "url": "https://github.com/sponsors/isaacs"
636 | }
637 | },
638 | "node_modules/minipass": {
639 | "version": "7.0.4",
640 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz",
641 | "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==",
642 | "dev": true,
643 | "engines": {
644 | "node": ">=16 || 14 >=14.17"
645 | }
646 | },
647 | "node_modules/mz": {
648 | "version": "2.7.0",
649 | "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
650 | "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
651 | "dev": true,
652 | "dependencies": {
653 | "any-promise": "^1.0.0",
654 | "object-assign": "^4.0.1",
655 | "thenify-all": "^1.0.0"
656 | }
657 | },
658 | "node_modules/nanoid": {
659 | "version": "3.3.7",
660 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
661 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
662 | "dev": true,
663 | "funding": [
664 | {
665 | "type": "github",
666 | "url": "https://github.com/sponsors/ai"
667 | }
668 | ],
669 | "bin": {
670 | "nanoid": "bin/nanoid.cjs"
671 | },
672 | "engines": {
673 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
674 | }
675 | },
676 | "node_modules/normalize-path": {
677 | "version": "3.0.0",
678 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
679 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
680 | "dev": true,
681 | "engines": {
682 | "node": ">=0.10.0"
683 | }
684 | },
685 | "node_modules/object-assign": {
686 | "version": "4.1.1",
687 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
688 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
689 | "dev": true,
690 | "engines": {
691 | "node": ">=0.10.0"
692 | }
693 | },
694 | "node_modules/object-hash": {
695 | "version": "3.0.0",
696 | "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
697 | "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
698 | "dev": true,
699 | "engines": {
700 | "node": ">= 6"
701 | }
702 | },
703 | "node_modules/path-key": {
704 | "version": "3.1.1",
705 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
706 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
707 | "dev": true,
708 | "engines": {
709 | "node": ">=8"
710 | }
711 | },
712 | "node_modules/path-parse": {
713 | "version": "1.0.7",
714 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
715 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
716 | "dev": true
717 | },
718 | "node_modules/path-scurry": {
719 | "version": "1.10.1",
720 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz",
721 | "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==",
722 | "dev": true,
723 | "dependencies": {
724 | "lru-cache": "^9.1.1 || ^10.0.0",
725 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
726 | },
727 | "engines": {
728 | "node": ">=16 || 14 >=14.17"
729 | },
730 | "funding": {
731 | "url": "https://github.com/sponsors/isaacs"
732 | }
733 | },
734 | "node_modules/picocolors": {
735 | "version": "1.0.0",
736 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
737 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
738 | "dev": true
739 | },
740 | "node_modules/picomatch": {
741 | "version": "2.3.1",
742 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
743 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
744 | "dev": true,
745 | "engines": {
746 | "node": ">=8.6"
747 | },
748 | "funding": {
749 | "url": "https://github.com/sponsors/jonschlinkert"
750 | }
751 | },
752 | "node_modules/pify": {
753 | "version": "2.3.0",
754 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
755 | "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
756 | "dev": true,
757 | "engines": {
758 | "node": ">=0.10.0"
759 | }
760 | },
761 | "node_modules/pirates": {
762 | "version": "4.0.6",
763 | "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
764 | "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
765 | "dev": true,
766 | "engines": {
767 | "node": ">= 6"
768 | }
769 | },
770 | "node_modules/postcss": {
771 | "version": "8.4.33",
772 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz",
773 | "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==",
774 | "dev": true,
775 | "funding": [
776 | {
777 | "type": "opencollective",
778 | "url": "https://opencollective.com/postcss/"
779 | },
780 | {
781 | "type": "tidelift",
782 | "url": "https://tidelift.com/funding/github/npm/postcss"
783 | },
784 | {
785 | "type": "github",
786 | "url": "https://github.com/sponsors/ai"
787 | }
788 | ],
789 | "dependencies": {
790 | "nanoid": "^3.3.7",
791 | "picocolors": "^1.0.0",
792 | "source-map-js": "^1.0.2"
793 | },
794 | "engines": {
795 | "node": "^10 || ^12 || >=14"
796 | }
797 | },
798 | "node_modules/postcss-import": {
799 | "version": "15.1.0",
800 | "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
801 | "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
802 | "dev": true,
803 | "dependencies": {
804 | "postcss-value-parser": "^4.0.0",
805 | "read-cache": "^1.0.0",
806 | "resolve": "^1.1.7"
807 | },
808 | "engines": {
809 | "node": ">=14.0.0"
810 | },
811 | "peerDependencies": {
812 | "postcss": "^8.0.0"
813 | }
814 | },
815 | "node_modules/postcss-js": {
816 | "version": "4.0.1",
817 | "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
818 | "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
819 | "dev": true,
820 | "dependencies": {
821 | "camelcase-css": "^2.0.1"
822 | },
823 | "engines": {
824 | "node": "^12 || ^14 || >= 16"
825 | },
826 | "funding": {
827 | "type": "opencollective",
828 | "url": "https://opencollective.com/postcss/"
829 | },
830 | "peerDependencies": {
831 | "postcss": "^8.4.21"
832 | }
833 | },
834 | "node_modules/postcss-load-config": {
835 | "version": "4.0.2",
836 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
837 | "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
838 | "dev": true,
839 | "funding": [
840 | {
841 | "type": "opencollective",
842 | "url": "https://opencollective.com/postcss/"
843 | },
844 | {
845 | "type": "github",
846 | "url": "https://github.com/sponsors/ai"
847 | }
848 | ],
849 | "dependencies": {
850 | "lilconfig": "^3.0.0",
851 | "yaml": "^2.3.4"
852 | },
853 | "engines": {
854 | "node": ">= 14"
855 | },
856 | "peerDependencies": {
857 | "postcss": ">=8.0.9",
858 | "ts-node": ">=9.0.0"
859 | },
860 | "peerDependenciesMeta": {
861 | "postcss": {
862 | "optional": true
863 | },
864 | "ts-node": {
865 | "optional": true
866 | }
867 | }
868 | },
869 | "node_modules/postcss-load-config/node_modules/lilconfig": {
870 | "version": "3.0.0",
871 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz",
872 | "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==",
873 | "dev": true,
874 | "engines": {
875 | "node": ">=14"
876 | }
877 | },
878 | "node_modules/postcss-nested": {
879 | "version": "6.0.1",
880 | "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz",
881 | "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==",
882 | "dev": true,
883 | "dependencies": {
884 | "postcss-selector-parser": "^6.0.11"
885 | },
886 | "engines": {
887 | "node": ">=12.0"
888 | },
889 | "funding": {
890 | "type": "opencollective",
891 | "url": "https://opencollective.com/postcss/"
892 | },
893 | "peerDependencies": {
894 | "postcss": "^8.2.14"
895 | }
896 | },
897 | "node_modules/postcss-selector-parser": {
898 | "version": "6.0.15",
899 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz",
900 | "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==",
901 | "dev": true,
902 | "dependencies": {
903 | "cssesc": "^3.0.0",
904 | "util-deprecate": "^1.0.2"
905 | },
906 | "engines": {
907 | "node": ">=4"
908 | }
909 | },
910 | "node_modules/postcss-value-parser": {
911 | "version": "4.2.0",
912 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
913 | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
914 | "dev": true
915 | },
916 | "node_modules/queue-microtask": {
917 | "version": "1.2.3",
918 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
919 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
920 | "dev": true,
921 | "funding": [
922 | {
923 | "type": "github",
924 | "url": "https://github.com/sponsors/feross"
925 | },
926 | {
927 | "type": "patreon",
928 | "url": "https://www.patreon.com/feross"
929 | },
930 | {
931 | "type": "consulting",
932 | "url": "https://feross.org/support"
933 | }
934 | ]
935 | },
936 | "node_modules/read-cache": {
937 | "version": "1.0.0",
938 | "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
939 | "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
940 | "dev": true,
941 | "dependencies": {
942 | "pify": "^2.3.0"
943 | }
944 | },
945 | "node_modules/readdirp": {
946 | "version": "3.6.0",
947 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
948 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
949 | "dev": true,
950 | "dependencies": {
951 | "picomatch": "^2.2.1"
952 | },
953 | "engines": {
954 | "node": ">=8.10.0"
955 | }
956 | },
957 | "node_modules/resolve": {
958 | "version": "1.22.8",
959 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
960 | "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==",
961 | "dev": true,
962 | "dependencies": {
963 | "is-core-module": "^2.13.0",
964 | "path-parse": "^1.0.7",
965 | "supports-preserve-symlinks-flag": "^1.0.0"
966 | },
967 | "bin": {
968 | "resolve": "bin/resolve"
969 | },
970 | "funding": {
971 | "url": "https://github.com/sponsors/ljharb"
972 | }
973 | },
974 | "node_modules/reusify": {
975 | "version": "1.0.4",
976 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
977 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
978 | "dev": true,
979 | "engines": {
980 | "iojs": ">=1.0.0",
981 | "node": ">=0.10.0"
982 | }
983 | },
984 | "node_modules/run-parallel": {
985 | "version": "1.2.0",
986 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
987 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
988 | "dev": true,
989 | "funding": [
990 | {
991 | "type": "github",
992 | "url": "https://github.com/sponsors/feross"
993 | },
994 | {
995 | "type": "patreon",
996 | "url": "https://www.patreon.com/feross"
997 | },
998 | {
999 | "type": "consulting",
1000 | "url": "https://feross.org/support"
1001 | }
1002 | ],
1003 | "dependencies": {
1004 | "queue-microtask": "^1.2.2"
1005 | }
1006 | },
1007 | "node_modules/shebang-command": {
1008 | "version": "2.0.0",
1009 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
1010 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
1011 | "dev": true,
1012 | "dependencies": {
1013 | "shebang-regex": "^3.0.0"
1014 | },
1015 | "engines": {
1016 | "node": ">=8"
1017 | }
1018 | },
1019 | "node_modules/shebang-regex": {
1020 | "version": "3.0.0",
1021 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
1022 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
1023 | "dev": true,
1024 | "engines": {
1025 | "node": ">=8"
1026 | }
1027 | },
1028 | "node_modules/signal-exit": {
1029 | "version": "4.1.0",
1030 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
1031 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
1032 | "dev": true,
1033 | "engines": {
1034 | "node": ">=14"
1035 | },
1036 | "funding": {
1037 | "url": "https://github.com/sponsors/isaacs"
1038 | }
1039 | },
1040 | "node_modules/source-map-js": {
1041 | "version": "1.0.2",
1042 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
1043 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
1044 | "dev": true,
1045 | "engines": {
1046 | "node": ">=0.10.0"
1047 | }
1048 | },
1049 | "node_modules/string-width": {
1050 | "version": "5.1.2",
1051 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
1052 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
1053 | "dev": true,
1054 | "dependencies": {
1055 | "eastasianwidth": "^0.2.0",
1056 | "emoji-regex": "^9.2.2",
1057 | "strip-ansi": "^7.0.1"
1058 | },
1059 | "engines": {
1060 | "node": ">=12"
1061 | },
1062 | "funding": {
1063 | "url": "https://github.com/sponsors/sindresorhus"
1064 | }
1065 | },
1066 | "node_modules/string-width-cjs": {
1067 | "name": "string-width",
1068 | "version": "4.2.3",
1069 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
1070 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
1071 | "dev": true,
1072 | "dependencies": {
1073 | "emoji-regex": "^8.0.0",
1074 | "is-fullwidth-code-point": "^3.0.0",
1075 | "strip-ansi": "^6.0.1"
1076 | },
1077 | "engines": {
1078 | "node": ">=8"
1079 | }
1080 | },
1081 | "node_modules/string-width-cjs/node_modules/ansi-regex": {
1082 | "version": "5.0.1",
1083 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1084 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1085 | "dev": true,
1086 | "engines": {
1087 | "node": ">=8"
1088 | }
1089 | },
1090 | "node_modules/string-width-cjs/node_modules/emoji-regex": {
1091 | "version": "8.0.0",
1092 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
1093 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
1094 | "dev": true
1095 | },
1096 | "node_modules/string-width-cjs/node_modules/strip-ansi": {
1097 | "version": "6.0.1",
1098 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1099 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1100 | "dev": true,
1101 | "dependencies": {
1102 | "ansi-regex": "^5.0.1"
1103 | },
1104 | "engines": {
1105 | "node": ">=8"
1106 | }
1107 | },
1108 | "node_modules/strip-ansi": {
1109 | "version": "7.1.0",
1110 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
1111 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
1112 | "dev": true,
1113 | "dependencies": {
1114 | "ansi-regex": "^6.0.1"
1115 | },
1116 | "engines": {
1117 | "node": ">=12"
1118 | },
1119 | "funding": {
1120 | "url": "https://github.com/chalk/strip-ansi?sponsor=1"
1121 | }
1122 | },
1123 | "node_modules/strip-ansi-cjs": {
1124 | "name": "strip-ansi",
1125 | "version": "6.0.1",
1126 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1127 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1128 | "dev": true,
1129 | "dependencies": {
1130 | "ansi-regex": "^5.0.1"
1131 | },
1132 | "engines": {
1133 | "node": ">=8"
1134 | }
1135 | },
1136 | "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
1137 | "version": "5.0.1",
1138 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1139 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1140 | "dev": true,
1141 | "engines": {
1142 | "node": ">=8"
1143 | }
1144 | },
1145 | "node_modules/sucrase": {
1146 | "version": "3.35.0",
1147 | "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
1148 | "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
1149 | "dev": true,
1150 | "dependencies": {
1151 | "@jridgewell/gen-mapping": "^0.3.2",
1152 | "commander": "^4.0.0",
1153 | "glob": "^10.3.10",
1154 | "lines-and-columns": "^1.1.6",
1155 | "mz": "^2.7.0",
1156 | "pirates": "^4.0.1",
1157 | "ts-interface-checker": "^0.1.9"
1158 | },
1159 | "bin": {
1160 | "sucrase": "bin/sucrase",
1161 | "sucrase-node": "bin/sucrase-node"
1162 | },
1163 | "engines": {
1164 | "node": ">=16 || 14 >=14.17"
1165 | }
1166 | },
1167 | "node_modules/supports-preserve-symlinks-flag": {
1168 | "version": "1.0.0",
1169 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
1170 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
1171 | "dev": true,
1172 | "engines": {
1173 | "node": ">= 0.4"
1174 | },
1175 | "funding": {
1176 | "url": "https://github.com/sponsors/ljharb"
1177 | }
1178 | },
1179 | "node_modules/tailwindcss": {
1180 | "version": "3.4.1",
1181 | "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz",
1182 | "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==",
1183 | "dev": true,
1184 | "dependencies": {
1185 | "@alloc/quick-lru": "^5.2.0",
1186 | "arg": "^5.0.2",
1187 | "chokidar": "^3.5.3",
1188 | "didyoumean": "^1.2.2",
1189 | "dlv": "^1.1.3",
1190 | "fast-glob": "^3.3.0",
1191 | "glob-parent": "^6.0.2",
1192 | "is-glob": "^4.0.3",
1193 | "jiti": "^1.19.1",
1194 | "lilconfig": "^2.1.0",
1195 | "micromatch": "^4.0.5",
1196 | "normalize-path": "^3.0.0",
1197 | "object-hash": "^3.0.0",
1198 | "picocolors": "^1.0.0",
1199 | "postcss": "^8.4.23",
1200 | "postcss-import": "^15.1.0",
1201 | "postcss-js": "^4.0.1",
1202 | "postcss-load-config": "^4.0.1",
1203 | "postcss-nested": "^6.0.1",
1204 | "postcss-selector-parser": "^6.0.11",
1205 | "resolve": "^1.22.2",
1206 | "sucrase": "^3.32.0"
1207 | },
1208 | "bin": {
1209 | "tailwind": "lib/cli.js",
1210 | "tailwindcss": "lib/cli.js"
1211 | },
1212 | "engines": {
1213 | "node": ">=14.0.0"
1214 | }
1215 | },
1216 | "node_modules/thenify": {
1217 | "version": "3.3.1",
1218 | "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
1219 | "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
1220 | "dev": true,
1221 | "dependencies": {
1222 | "any-promise": "^1.0.0"
1223 | }
1224 | },
1225 | "node_modules/thenify-all": {
1226 | "version": "1.6.0",
1227 | "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
1228 | "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
1229 | "dev": true,
1230 | "dependencies": {
1231 | "thenify": ">= 3.1.0 < 4"
1232 | },
1233 | "engines": {
1234 | "node": ">=0.8"
1235 | }
1236 | },
1237 | "node_modules/to-regex-range": {
1238 | "version": "5.0.1",
1239 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1240 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1241 | "dev": true,
1242 | "dependencies": {
1243 | "is-number": "^7.0.0"
1244 | },
1245 | "engines": {
1246 | "node": ">=8.0"
1247 | }
1248 | },
1249 | "node_modules/ts-interface-checker": {
1250 | "version": "0.1.13",
1251 | "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
1252 | "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
1253 | "dev": true
1254 | },
1255 | "node_modules/util-deprecate": {
1256 | "version": "1.0.2",
1257 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
1258 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
1259 | "dev": true
1260 | },
1261 | "node_modules/which": {
1262 | "version": "2.0.2",
1263 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
1264 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
1265 | "dev": true,
1266 | "dependencies": {
1267 | "isexe": "^2.0.0"
1268 | },
1269 | "bin": {
1270 | "node-which": "bin/node-which"
1271 | },
1272 | "engines": {
1273 | "node": ">= 8"
1274 | }
1275 | },
1276 | "node_modules/wrap-ansi": {
1277 | "version": "8.1.0",
1278 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
1279 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
1280 | "dev": true,
1281 | "dependencies": {
1282 | "ansi-styles": "^6.1.0",
1283 | "string-width": "^5.0.1",
1284 | "strip-ansi": "^7.0.1"
1285 | },
1286 | "engines": {
1287 | "node": ">=12"
1288 | },
1289 | "funding": {
1290 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
1291 | }
1292 | },
1293 | "node_modules/wrap-ansi-cjs": {
1294 | "name": "wrap-ansi",
1295 | "version": "7.0.0",
1296 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
1297 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
1298 | "dev": true,
1299 | "dependencies": {
1300 | "ansi-styles": "^4.0.0",
1301 | "string-width": "^4.1.0",
1302 | "strip-ansi": "^6.0.0"
1303 | },
1304 | "engines": {
1305 | "node": ">=10"
1306 | },
1307 | "funding": {
1308 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
1309 | }
1310 | },
1311 | "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
1312 | "version": "5.0.1",
1313 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1314 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1315 | "dev": true,
1316 | "engines": {
1317 | "node": ">=8"
1318 | }
1319 | },
1320 | "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
1321 | "version": "4.3.0",
1322 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
1323 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
1324 | "dev": true,
1325 | "dependencies": {
1326 | "color-convert": "^2.0.1"
1327 | },
1328 | "engines": {
1329 | "node": ">=8"
1330 | },
1331 | "funding": {
1332 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
1333 | }
1334 | },
1335 | "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
1336 | "version": "8.0.0",
1337 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
1338 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
1339 | "dev": true
1340 | },
1341 | "node_modules/wrap-ansi-cjs/node_modules/string-width": {
1342 | "version": "4.2.3",
1343 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
1344 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
1345 | "dev": true,
1346 | "dependencies": {
1347 | "emoji-regex": "^8.0.0",
1348 | "is-fullwidth-code-point": "^3.0.0",
1349 | "strip-ansi": "^6.0.1"
1350 | },
1351 | "engines": {
1352 | "node": ">=8"
1353 | }
1354 | },
1355 | "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
1356 | "version": "6.0.1",
1357 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1358 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1359 | "dev": true,
1360 | "dependencies": {
1361 | "ansi-regex": "^5.0.1"
1362 | },
1363 | "engines": {
1364 | "node": ">=8"
1365 | }
1366 | },
1367 | "node_modules/yaml": {
1368 | "version": "2.3.4",
1369 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz",
1370 | "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==",
1371 | "dev": true,
1372 | "engines": {
1373 | "node": ">= 14"
1374 | }
1375 | }
1376 | }
1377 | }
1378 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "tailwind-gradient-mask-image",
3 | "version": "1.2.0",
4 | "description": "A plugin for Tailwind CSS for masking elements using mask-image and linear-gradient.",
5 | "main": "index.js",
6 | "scripts": {
7 | "test": "test"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "git+https://github.com/juhanakristian/tailwind-gradient-mask-image.git"
12 | },
13 | "keywords": [
14 | "tailwind",
15 | "tailwindcss",
16 | "css",
17 | "mask"
18 | ],
19 | "author": "Juhana Jauhiainen ",
20 | "license": "MIT",
21 | "bugs": {
22 | "url": "https://github.com/juhanakristian/tailwind-gradient-mask-image/issues"
23 | },
24 | "homepage": "https://github.com/juhanakristian/tailwind-gradient-mask-image#readme",
25 | "devDependencies": {
26 | "tailwindcss": "^3.3.3"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/juhanakristian/tailwind-gradient-mask-image/864436e068feedbc254ba22ce314044be03d12c7/screenshot.png
--------------------------------------------------------------------------------