├── .editorconfig
├── .github
└── logo.svg
├── .gitignore
├── LICENSE
├── README.md
├── index.html
├── package.json
├── pnpm-lock.yaml
├── src
├── abstracts
│ ├── _config.scss
│ ├── _core-functions.scss
│ ├── _helper-mixins.scss
│ ├── _mixins.scss
│ ├── _utils.scss
│ ├── _variables.scss
│ ├── config
│ │ ├── _border.scss
│ │ ├── _breakpoint.scss
│ │ ├── _button.scss
│ │ ├── _color.scss
│ │ ├── _container.scss
│ │ ├── _font.scss
│ │ ├── _heading.scss
│ │ └── _spacing.scss
│ ├── functions
│ │ ├── _convert-unit.scss
│ │ ├── _get.scss
│ │ ├── _grid-calc.scss
│ │ └── helpers
│ │ │ ├── _str-replace.scss
│ │ │ ├── _strip-unit.scss
│ │ │ └── _yiq.scss
│ └── mixins
│ │ ├── _border-radius.scss
│ │ ├── _color.scss
│ │ ├── _font-face.scss
│ │ ├── _grid-generator.scss
│ │ ├── _media-queries.scss
│ │ ├── _pseudo-states.scss
│ │ ├── _spacing.scss
│ │ └── helpers
│ │ ├── _button-sizes.scss
│ │ ├── _focus.scss
│ │ └── _input-sizes.scss
├── base
│ ├── _@reset.scss
│ ├── _animations.scss
│ ├── _container.scss
│ ├── _grid.scss
│ ├── _helpers.scss
│ ├── _print.scss
│ └── _typography.scss
├── components
│ ├── .gitkeep
│ ├── _action.scss
│ ├── _button.scss
│ └── _input.scss
└── differs.scss
└── stylelint.config.js
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | indent_style = space
5 | indent_size = 2
6 | end_of_line = lf
7 | charset = utf-8
8 | trim_trailing_whitespace = true
9 | insert_final_newline = true
10 |
11 | [*.md]
12 | trim_trailing_whitespace = false
13 |
--------------------------------------------------------------------------------
/.github/logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # OS specific
2 | ._*
3 | .DS_Store
4 | Thumbs.db
5 |
6 | # IDE/Code Editor
7 | .idea
8 |
9 | # Directories
10 | node_modules
11 | dist
12 | playground
13 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Nenad Novaković, dvlden.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | This project is currently a work in progress ...
9 | Any kind of help is appreciated! Also, if you could, please :star: this project
10 | if you want to support me and increase my motivation, thank you!
11 |
12 |
13 | > Made with :heart: by Nenad Novaković - dvlden.
14 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Differs
8 |
9 |
10 |
11 |
16 |
17 |
18 |
19 |
20 |
21 | Hello World
22 |
23 |
24 |
25 |
26 |
27 | Confirm
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
61 |
62 |
75 |
76 |
77 | Demo Button
78 |
79 |
80 |
81 |
82 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "differs",
3 | "description": "Differs is not just another CSS framework, it's different. It focuses on 3 important words with \"ity\" suffixes: simplicity, readability, flexibility.",
4 | "version": "0.1.0",
5 | "private": true,
6 | "main": "src/differs.scss",
7 | "license": "MIT",
8 | "homepage": "https://github.com/dvlden/differs#readme",
9 | "bugs": "https://github.com/dvlden/differs/issues",
10 | "repository": {
11 | "type": "git",
12 | "url": "https://github.com/dvlden/differs.git"
13 | },
14 | "author": {
15 | "name": "Nenad Novaković",
16 | "email": "n.dvlden@gmail.com",
17 | "url": "https://github.com/dvlden"
18 | },
19 | "keywords": [
20 | "differs",
21 | "framework",
22 | "css",
23 | "sass",
24 | "scss"
25 | ],
26 | "scripts": {
27 | "clean": "rimraf dist",
28 | "lint": "stylelint --custom-syntax=postcss-scss \"src/**/**.scss\"",
29 | "compile": "sass --style=expanded --source-map src/differs.scss dist/differs.css",
30 | "prefix": "postcss dist/differs.css --use=autoprefixer --map=false --output=dist/differs.css",
31 | "minify": "cleancss -O1 --source-map --source-map-inline-sources --output dist/differs.min.css dist/differs.css",
32 | "dev": "pnpm run compile --watch",
33 | "build": "pnpm run clean && pnpm run lint && pnpm run compile && pnpm run prefix && pnpm run minify"
34 | },
35 | "devDependencies": {
36 | "autoprefixer": "^10.4.14",
37 | "clean-css-cli": "^5.6.2",
38 | "postcss": "^8.4.23",
39 | "postcss-cli": "^10.1.0",
40 | "postcss-scss": "^4.0.6",
41 | "rimraf": "^5.0.0",
42 | "sass": "^1.62.1",
43 | "stylelint": "^15.6.0",
44 | "stylelint-order": "^6.0.3",
45 | "stylelint-scss": "^5.0.0"
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '6.0'
2 |
3 | devDependencies:
4 | autoprefixer:
5 | specifier: ^10.4.14
6 | version: 10.4.14(postcss@8.4.23)
7 | clean-css-cli:
8 | specifier: ^5.6.2
9 | version: 5.6.2
10 | postcss:
11 | specifier: ^8.4.23
12 | version: 8.4.23
13 | postcss-cli:
14 | specifier: ^10.1.0
15 | version: 10.1.0(postcss@8.4.23)
16 | postcss-scss:
17 | specifier: ^4.0.6
18 | version: 4.0.6(postcss@8.4.23)
19 | rimraf:
20 | specifier: ^5.0.0
21 | version: 5.0.0
22 | sass:
23 | specifier: ^1.62.1
24 | version: 1.62.1
25 | stylelint:
26 | specifier: ^15.6.0
27 | version: 15.6.0
28 | stylelint-order:
29 | specifier: ^6.0.3
30 | version: 6.0.3(stylelint@15.6.0)
31 | stylelint-scss:
32 | specifier: ^5.0.0
33 | version: 5.0.0(stylelint@15.6.0)
34 |
35 | packages:
36 |
37 | /@babel/code-frame@7.21.4:
38 | resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==}
39 | engines: {node: '>=6.9.0'}
40 | dependencies:
41 | '@babel/highlight': 7.18.6
42 | dev: true
43 |
44 | /@babel/helper-validator-identifier@7.19.1:
45 | resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==}
46 | engines: {node: '>=6.9.0'}
47 | dev: true
48 |
49 | /@babel/highlight@7.18.6:
50 | resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==}
51 | engines: {node: '>=6.9.0'}
52 | dependencies:
53 | '@babel/helper-validator-identifier': 7.19.1
54 | chalk: 2.4.2
55 | js-tokens: 4.0.0
56 | dev: true
57 |
58 | /@csstools/css-parser-algorithms@2.1.1(@csstools/css-tokenizer@2.1.1):
59 | resolution: {integrity: sha512-viRnRh02AgO4mwIQb2xQNJju0i+Fh9roNgmbR5xEuG7J3TGgxjnE95HnBLgsFJOJOksvcfxOUCgODcft6Y07cA==}
60 | engines: {node: ^14 || ^16 || >=18}
61 | peerDependencies:
62 | '@csstools/css-tokenizer': ^2.1.1
63 | dependencies:
64 | '@csstools/css-tokenizer': 2.1.1
65 | dev: true
66 |
67 | /@csstools/css-tokenizer@2.1.1:
68 | resolution: {integrity: sha512-GbrTj2Z8MCTUv+52GE0RbFGM527xuXZ0Xa5g0Z+YN573uveS4G0qi6WNOMyz3yrFM/jaILTTwJ0+umx81EzqfA==}
69 | engines: {node: ^14 || ^16 || >=18}
70 | dev: true
71 |
72 | /@csstools/media-query-list-parser@2.0.4(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1):
73 | resolution: {integrity: sha512-GyYot6jHgcSDZZ+tLSnrzkR7aJhF2ZW6d+CXH66mjy5WpAQhZD4HDke2OQ36SivGRWlZJpAz7TzbW6OKlEpxAA==}
74 | engines: {node: ^14 || ^16 || >=18}
75 | peerDependencies:
76 | '@csstools/css-parser-algorithms': ^2.1.1
77 | '@csstools/css-tokenizer': ^2.1.1
78 | dependencies:
79 | '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1)
80 | '@csstools/css-tokenizer': 2.1.1
81 | dev: true
82 |
83 | /@csstools/selector-specificity@2.2.0(postcss-selector-parser@6.0.12):
84 | resolution: {integrity: sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==}
85 | engines: {node: ^14 || ^16 || >=18}
86 | peerDependencies:
87 | postcss-selector-parser: ^6.0.10
88 | dependencies:
89 | postcss-selector-parser: 6.0.12
90 | dev: true
91 |
92 | /@nodelib/fs.scandir@2.1.5:
93 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
94 | engines: {node: '>= 8'}
95 | dependencies:
96 | '@nodelib/fs.stat': 2.0.5
97 | run-parallel: 1.2.0
98 | dev: true
99 |
100 | /@nodelib/fs.stat@2.0.5:
101 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
102 | engines: {node: '>= 8'}
103 | dev: true
104 |
105 | /@nodelib/fs.walk@1.2.8:
106 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
107 | engines: {node: '>= 8'}
108 | dependencies:
109 | '@nodelib/fs.scandir': 2.1.5
110 | fastq: 1.15.0
111 | dev: true
112 |
113 | /@pkgjs/parseargs@0.11.0:
114 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
115 | engines: {node: '>=14'}
116 | requiresBuild: true
117 | dev: true
118 | optional: true
119 |
120 | /@types/minimist@1.2.2:
121 | resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==}
122 | dev: true
123 |
124 | /@types/normalize-package-data@2.4.1:
125 | resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==}
126 | dev: true
127 |
128 | /ajv@8.12.0:
129 | resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==}
130 | dependencies:
131 | fast-deep-equal: 3.1.3
132 | json-schema-traverse: 1.0.0
133 | require-from-string: 2.0.2
134 | uri-js: 4.4.1
135 | dev: true
136 |
137 | /ansi-regex@5.0.1:
138 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
139 | engines: {node: '>=8'}
140 | dev: true
141 |
142 | /ansi-styles@3.2.1:
143 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
144 | engines: {node: '>=4'}
145 | dependencies:
146 | color-convert: 1.9.3
147 | dev: true
148 |
149 | /ansi-styles@4.3.0:
150 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
151 | engines: {node: '>=8'}
152 | dependencies:
153 | color-convert: 2.0.1
154 | dev: true
155 |
156 | /anymatch@3.1.3:
157 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
158 | engines: {node: '>= 8'}
159 | dependencies:
160 | normalize-path: 3.0.0
161 | picomatch: 2.3.1
162 | dev: true
163 |
164 | /argparse@2.0.1:
165 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
166 | dev: true
167 |
168 | /array-union@2.1.0:
169 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
170 | engines: {node: '>=8'}
171 | dev: true
172 |
173 | /arrify@1.0.1:
174 | resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==}
175 | engines: {node: '>=0.10.0'}
176 | dev: true
177 |
178 | /astral-regex@2.0.0:
179 | resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
180 | engines: {node: '>=8'}
181 | dev: true
182 |
183 | /autoprefixer@10.4.14(postcss@8.4.23):
184 | resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==}
185 | engines: {node: ^10 || ^12 || >=14}
186 | hasBin: true
187 | peerDependencies:
188 | postcss: ^8.1.0
189 | dependencies:
190 | browserslist: 4.21.5
191 | caniuse-lite: 1.0.30001482
192 | fraction.js: 4.2.0
193 | normalize-range: 0.1.2
194 | picocolors: 1.0.0
195 | postcss: 8.4.23
196 | postcss-value-parser: 4.2.0
197 | dev: true
198 |
199 | /balanced-match@1.0.2:
200 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
201 | dev: true
202 |
203 | /balanced-match@2.0.0:
204 | resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==}
205 | dev: true
206 |
207 | /binary-extensions@2.2.0:
208 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
209 | engines: {node: '>=8'}
210 | dev: true
211 |
212 | /brace-expansion@1.1.11:
213 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
214 | dependencies:
215 | balanced-match: 1.0.2
216 | concat-map: 0.0.1
217 | dev: true
218 |
219 | /brace-expansion@2.0.1:
220 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
221 | dependencies:
222 | balanced-match: 1.0.2
223 | dev: true
224 |
225 | /braces@3.0.2:
226 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
227 | engines: {node: '>=8'}
228 | dependencies:
229 | fill-range: 7.0.1
230 | dev: true
231 |
232 | /browserslist@4.21.5:
233 | resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==}
234 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
235 | hasBin: true
236 | dependencies:
237 | caniuse-lite: 1.0.30001482
238 | electron-to-chromium: 1.4.378
239 | node-releases: 2.0.10
240 | update-browserslist-db: 1.0.11(browserslist@4.21.5)
241 | dev: true
242 |
243 | /callsites@3.1.0:
244 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
245 | engines: {node: '>=6'}
246 | dev: true
247 |
248 | /camelcase-keys@6.2.2:
249 | resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==}
250 | engines: {node: '>=8'}
251 | dependencies:
252 | camelcase: 5.3.1
253 | map-obj: 4.3.0
254 | quick-lru: 4.0.1
255 | dev: true
256 |
257 | /camelcase@5.3.1:
258 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
259 | engines: {node: '>=6'}
260 | dev: true
261 |
262 | /caniuse-lite@1.0.30001482:
263 | resolution: {integrity: sha512-F1ZInsg53cegyjroxLNW9DmrEQ1SuGRTO1QlpA0o2/6OpQ0gFeDRoq1yFmnr8Sakn9qwwt9DmbxHB6w167OSuQ==}
264 | dev: true
265 |
266 | /chalk@2.4.2:
267 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
268 | engines: {node: '>=4'}
269 | dependencies:
270 | ansi-styles: 3.2.1
271 | escape-string-regexp: 1.0.5
272 | supports-color: 5.5.0
273 | dev: true
274 |
275 | /chokidar@3.5.3:
276 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
277 | engines: {node: '>= 8.10.0'}
278 | dependencies:
279 | anymatch: 3.1.3
280 | braces: 3.0.2
281 | glob-parent: 5.1.2
282 | is-binary-path: 2.1.0
283 | is-glob: 4.0.3
284 | normalize-path: 3.0.0
285 | readdirp: 3.6.0
286 | optionalDependencies:
287 | fsevents: 2.3.2
288 | dev: true
289 |
290 | /clean-css-cli@5.6.2:
291 | resolution: {integrity: sha512-GDQkr6zVqHJhO3yWTy3sA22sMCT6iUqaJuBdqZMW6oI25MtiJ2iZXDmWzErpjoRotsB+TYPTpuZSNSgaC1n4lA==}
292 | engines: {node: '>= 10.12.0'}
293 | hasBin: true
294 | dependencies:
295 | chokidar: 3.5.3
296 | clean-css: 5.3.2
297 | commander: 7.2.0
298 | glob: 7.2.3
299 | dev: true
300 |
301 | /clean-css@5.3.2:
302 | resolution: {integrity: sha512-JVJbM+f3d3Q704rF4bqQ5UUyTtuJ0JRKNbTKVEeujCCBoMdkEi+V+e8oktO9qGQNSvHrFTM6JZRXrUvGR1czww==}
303 | engines: {node: '>= 10.0'}
304 | dependencies:
305 | source-map: 0.6.1
306 | dev: true
307 |
308 | /cliui@8.0.1:
309 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
310 | engines: {node: '>=12'}
311 | dependencies:
312 | string-width: 4.2.3
313 | strip-ansi: 6.0.1
314 | wrap-ansi: 7.0.0
315 | dev: true
316 |
317 | /color-convert@1.9.3:
318 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
319 | dependencies:
320 | color-name: 1.1.3
321 | dev: true
322 |
323 | /color-convert@2.0.1:
324 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
325 | engines: {node: '>=7.0.0'}
326 | dependencies:
327 | color-name: 1.1.4
328 | dev: true
329 |
330 | /color-name@1.1.3:
331 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
332 | dev: true
333 |
334 | /color-name@1.1.4:
335 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
336 | dev: true
337 |
338 | /colord@2.9.3:
339 | resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==}
340 | dev: true
341 |
342 | /commander@7.2.0:
343 | resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
344 | engines: {node: '>= 10'}
345 | dev: true
346 |
347 | /concat-map@0.0.1:
348 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
349 | dev: true
350 |
351 | /cosmiconfig@8.1.3:
352 | resolution: {integrity: sha512-/UkO2JKI18b5jVMJUp0lvKFMpa/Gye+ZgZjKD+DGEN9y7NRcf/nK1A0sp67ONmKtnDCNMS44E6jrk0Yc3bDuUw==}
353 | engines: {node: '>=14'}
354 | dependencies:
355 | import-fresh: 3.3.0
356 | js-yaml: 4.1.0
357 | parse-json: 5.2.0
358 | path-type: 4.0.0
359 | dev: true
360 |
361 | /cross-spawn@7.0.3:
362 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
363 | engines: {node: '>= 8'}
364 | dependencies:
365 | path-key: 3.1.1
366 | shebang-command: 2.0.0
367 | which: 2.0.2
368 | dev: true
369 |
370 | /css-functions-list@3.1.0:
371 | resolution: {integrity: sha512-/9lCvYZaUbBGvYUgYGFJ4dcYiyqdhSjG7IPVluoV8A1ILjkF7ilmhp1OGUz8n+nmBcu0RNrQAzgD8B6FJbrt2w==}
372 | engines: {node: '>=12.22'}
373 | dev: true
374 |
375 | /css-tree@2.3.1:
376 | resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==}
377 | engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
378 | dependencies:
379 | mdn-data: 2.0.30
380 | source-map-js: 1.0.2
381 | dev: true
382 |
383 | /cssesc@3.0.0:
384 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
385 | engines: {node: '>=4'}
386 | hasBin: true
387 | dev: true
388 |
389 | /debug@4.3.4:
390 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
391 | engines: {node: '>=6.0'}
392 | peerDependencies:
393 | supports-color: '*'
394 | peerDependenciesMeta:
395 | supports-color:
396 | optional: true
397 | dependencies:
398 | ms: 2.1.2
399 | dev: true
400 |
401 | /decamelize-keys@1.1.1:
402 | resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==}
403 | engines: {node: '>=0.10.0'}
404 | dependencies:
405 | decamelize: 1.2.0
406 | map-obj: 1.0.1
407 | dev: true
408 |
409 | /decamelize@1.2.0:
410 | resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
411 | engines: {node: '>=0.10.0'}
412 | dev: true
413 |
414 | /dependency-graph@0.11.0:
415 | resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==}
416 | engines: {node: '>= 0.6.0'}
417 | dev: true
418 |
419 | /dir-glob@3.0.1:
420 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
421 | engines: {node: '>=8'}
422 | dependencies:
423 | path-type: 4.0.0
424 | dev: true
425 |
426 | /electron-to-chromium@1.4.378:
427 | resolution: {integrity: sha512-RfCD26kGStl6+XalfX3DGgt3z2DNwJS5DKRHCpkPq5T/PqpZMPB1moSRXuK9xhkt/sF57LlpzJgNoYl7mO7Z6w==}
428 | dev: true
429 |
430 | /emoji-regex@8.0.0:
431 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
432 | dev: true
433 |
434 | /error-ex@1.3.2:
435 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
436 | dependencies:
437 | is-arrayish: 0.2.1
438 | dev: true
439 |
440 | /escalade@3.1.1:
441 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
442 | engines: {node: '>=6'}
443 | dev: true
444 |
445 | /escape-string-regexp@1.0.5:
446 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
447 | engines: {node: '>=0.8.0'}
448 | dev: true
449 |
450 | /fast-deep-equal@3.1.3:
451 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
452 | dev: true
453 |
454 | /fast-glob@3.2.12:
455 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
456 | engines: {node: '>=8.6.0'}
457 | dependencies:
458 | '@nodelib/fs.stat': 2.0.5
459 | '@nodelib/fs.walk': 1.2.8
460 | glob-parent: 5.1.2
461 | merge2: 1.4.1
462 | micromatch: 4.0.5
463 | dev: true
464 |
465 | /fastest-levenshtein@1.0.16:
466 | resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==}
467 | engines: {node: '>= 4.9.1'}
468 | dev: true
469 |
470 | /fastq@1.15.0:
471 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
472 | dependencies:
473 | reusify: 1.0.4
474 | dev: true
475 |
476 | /file-entry-cache@6.0.1:
477 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
478 | engines: {node: ^10.12.0 || >=12.0.0}
479 | dependencies:
480 | flat-cache: 3.0.4
481 | dev: true
482 |
483 | /fill-range@7.0.1:
484 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
485 | engines: {node: '>=8'}
486 | dependencies:
487 | to-regex-range: 5.0.1
488 | dev: true
489 |
490 | /find-up@4.1.0:
491 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
492 | engines: {node: '>=8'}
493 | dependencies:
494 | locate-path: 5.0.0
495 | path-exists: 4.0.0
496 | dev: true
497 |
498 | /flat-cache@3.0.4:
499 | resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
500 | engines: {node: ^10.12.0 || >=12.0.0}
501 | dependencies:
502 | flatted: 3.2.7
503 | rimraf: 3.0.2
504 | dev: true
505 |
506 | /flatted@3.2.7:
507 | resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==}
508 | dev: true
509 |
510 | /foreground-child@3.1.1:
511 | resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==}
512 | engines: {node: '>=14'}
513 | dependencies:
514 | cross-spawn: 7.0.3
515 | signal-exit: 4.0.1
516 | dev: true
517 |
518 | /fraction.js@4.2.0:
519 | resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
520 | dev: true
521 |
522 | /fs-extra@11.1.1:
523 | resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==}
524 | engines: {node: '>=14.14'}
525 | dependencies:
526 | graceful-fs: 4.2.11
527 | jsonfile: 6.1.0
528 | universalify: 2.0.0
529 | dev: true
530 |
531 | /fs.realpath@1.0.0:
532 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
533 | dev: true
534 |
535 | /fsevents@2.3.2:
536 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
537 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
538 | os: [darwin]
539 | requiresBuild: true
540 | dev: true
541 | optional: true
542 |
543 | /function-bind@1.1.1:
544 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
545 | dev: true
546 |
547 | /get-caller-file@2.0.5:
548 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
549 | engines: {node: 6.* || 8.* || >= 10.*}
550 | dev: true
551 |
552 | /get-stdin@9.0.0:
553 | resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==}
554 | engines: {node: '>=12'}
555 | dev: true
556 |
557 | /glob-parent@5.1.2:
558 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
559 | engines: {node: '>= 6'}
560 | dependencies:
561 | is-glob: 4.0.3
562 | dev: true
563 |
564 | /glob@10.2.2:
565 | resolution: {integrity: sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==}
566 | engines: {node: '>=16 || 14 >=14.17'}
567 | hasBin: true
568 | dependencies:
569 | foreground-child: 3.1.1
570 | jackspeak: 2.1.1
571 | minimatch: 9.0.0
572 | minipass: 5.0.0
573 | path-scurry: 1.7.0
574 | dev: true
575 |
576 | /glob@7.2.3:
577 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
578 | dependencies:
579 | fs.realpath: 1.0.0
580 | inflight: 1.0.6
581 | inherits: 2.0.4
582 | minimatch: 3.1.2
583 | once: 1.4.0
584 | path-is-absolute: 1.0.1
585 | dev: true
586 |
587 | /global-modules@2.0.0:
588 | resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==}
589 | engines: {node: '>=6'}
590 | dependencies:
591 | global-prefix: 3.0.0
592 | dev: true
593 |
594 | /global-prefix@3.0.0:
595 | resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==}
596 | engines: {node: '>=6'}
597 | dependencies:
598 | ini: 1.3.8
599 | kind-of: 6.0.3
600 | which: 1.3.1
601 | dev: true
602 |
603 | /globby@11.1.0:
604 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
605 | engines: {node: '>=10'}
606 | dependencies:
607 | array-union: 2.1.0
608 | dir-glob: 3.0.1
609 | fast-glob: 3.2.12
610 | ignore: 5.2.4
611 | merge2: 1.4.1
612 | slash: 3.0.0
613 | dev: true
614 |
615 | /globby@13.1.4:
616 | resolution: {integrity: sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==}
617 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
618 | dependencies:
619 | dir-glob: 3.0.1
620 | fast-glob: 3.2.12
621 | ignore: 5.2.4
622 | merge2: 1.4.1
623 | slash: 4.0.0
624 | dev: true
625 |
626 | /globjoin@0.1.4:
627 | resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==}
628 | dev: true
629 |
630 | /graceful-fs@4.2.11:
631 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
632 | dev: true
633 |
634 | /hard-rejection@2.1.0:
635 | resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==}
636 | engines: {node: '>=6'}
637 | dev: true
638 |
639 | /has-flag@3.0.0:
640 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
641 | engines: {node: '>=4'}
642 | dev: true
643 |
644 | /has-flag@4.0.0:
645 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
646 | engines: {node: '>=8'}
647 | dev: true
648 |
649 | /has@1.0.3:
650 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
651 | engines: {node: '>= 0.4.0'}
652 | dependencies:
653 | function-bind: 1.1.1
654 | dev: true
655 |
656 | /hosted-git-info@2.8.9:
657 | resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
658 | dev: true
659 |
660 | /hosted-git-info@4.1.0:
661 | resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==}
662 | engines: {node: '>=10'}
663 | dependencies:
664 | lru-cache: 6.0.0
665 | dev: true
666 |
667 | /html-tags@3.3.1:
668 | resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==}
669 | engines: {node: '>=8'}
670 | dev: true
671 |
672 | /ignore@5.2.4:
673 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==}
674 | engines: {node: '>= 4'}
675 | dev: true
676 |
677 | /immutable@4.3.0:
678 | resolution: {integrity: sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==}
679 | dev: true
680 |
681 | /import-fresh@3.3.0:
682 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
683 | engines: {node: '>=6'}
684 | dependencies:
685 | parent-module: 1.0.1
686 | resolve-from: 4.0.0
687 | dev: true
688 |
689 | /import-lazy@4.0.0:
690 | resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==}
691 | engines: {node: '>=8'}
692 | dev: true
693 |
694 | /imurmurhash@0.1.4:
695 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
696 | engines: {node: '>=0.8.19'}
697 | dev: true
698 |
699 | /indent-string@4.0.0:
700 | resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
701 | engines: {node: '>=8'}
702 | dev: true
703 |
704 | /inflight@1.0.6:
705 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
706 | dependencies:
707 | once: 1.4.0
708 | wrappy: 1.0.2
709 | dev: true
710 |
711 | /inherits@2.0.4:
712 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
713 | dev: true
714 |
715 | /ini@1.3.8:
716 | resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
717 | dev: true
718 |
719 | /is-arrayish@0.2.1:
720 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
721 | dev: true
722 |
723 | /is-binary-path@2.1.0:
724 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
725 | engines: {node: '>=8'}
726 | dependencies:
727 | binary-extensions: 2.2.0
728 | dev: true
729 |
730 | /is-core-module@2.12.0:
731 | resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==}
732 | dependencies:
733 | has: 1.0.3
734 | dev: true
735 |
736 | /is-extglob@2.1.1:
737 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
738 | engines: {node: '>=0.10.0'}
739 | dev: true
740 |
741 | /is-fullwidth-code-point@3.0.0:
742 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
743 | engines: {node: '>=8'}
744 | dev: true
745 |
746 | /is-glob@4.0.3:
747 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
748 | engines: {node: '>=0.10.0'}
749 | dependencies:
750 | is-extglob: 2.1.1
751 | dev: true
752 |
753 | /is-number@7.0.0:
754 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
755 | engines: {node: '>=0.12.0'}
756 | dev: true
757 |
758 | /is-plain-obj@1.1.0:
759 | resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
760 | engines: {node: '>=0.10.0'}
761 | dev: true
762 |
763 | /is-plain-object@5.0.0:
764 | resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
765 | engines: {node: '>=0.10.0'}
766 | dev: true
767 |
768 | /isexe@2.0.0:
769 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
770 | dev: true
771 |
772 | /jackspeak@2.1.1:
773 | resolution: {integrity: sha512-juf9stUEwUaILepraGOWIJTLwg48bUnBmRqd2ln2Os1sW987zeoj/hzhbvRB95oMuS2ZTpjULmdwHNX4rzZIZw==}
774 | engines: {node: '>=14'}
775 | dependencies:
776 | cliui: 8.0.1
777 | optionalDependencies:
778 | '@pkgjs/parseargs': 0.11.0
779 | dev: true
780 |
781 | /js-tokens@4.0.0:
782 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
783 | dev: true
784 |
785 | /js-yaml@4.1.0:
786 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
787 | hasBin: true
788 | dependencies:
789 | argparse: 2.0.1
790 | dev: true
791 |
792 | /json-parse-even-better-errors@2.3.1:
793 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
794 | dev: true
795 |
796 | /json-schema-traverse@1.0.0:
797 | resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
798 | dev: true
799 |
800 | /jsonfile@6.1.0:
801 | resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
802 | dependencies:
803 | universalify: 2.0.0
804 | optionalDependencies:
805 | graceful-fs: 4.2.11
806 | dev: true
807 |
808 | /kind-of@6.0.3:
809 | resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
810 | engines: {node: '>=0.10.0'}
811 | dev: true
812 |
813 | /known-css-properties@0.27.0:
814 | resolution: {integrity: sha512-uMCj6+hZYDoffuvAJjFAPz56E9uoowFHmTkqRtRq5WyC5Q6Cu/fTZKNQpX/RbzChBYLLl3lo8CjFZBAZXq9qFg==}
815 | dev: true
816 |
817 | /lilconfig@2.1.0:
818 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
819 | engines: {node: '>=10'}
820 | dev: true
821 |
822 | /lines-and-columns@1.2.4:
823 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
824 | dev: true
825 |
826 | /locate-path@5.0.0:
827 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
828 | engines: {node: '>=8'}
829 | dependencies:
830 | p-locate: 4.1.0
831 | dev: true
832 |
833 | /lodash.truncate@4.4.2:
834 | resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==}
835 | dev: true
836 |
837 | /lru-cache@6.0.0:
838 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
839 | engines: {node: '>=10'}
840 | dependencies:
841 | yallist: 4.0.0
842 | dev: true
843 |
844 | /lru-cache@9.1.1:
845 | resolution: {integrity: sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==}
846 | engines: {node: 14 || >=16.14}
847 | dev: true
848 |
849 | /map-obj@1.0.1:
850 | resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==}
851 | engines: {node: '>=0.10.0'}
852 | dev: true
853 |
854 | /map-obj@4.3.0:
855 | resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==}
856 | engines: {node: '>=8'}
857 | dev: true
858 |
859 | /mathml-tag-names@2.1.3:
860 | resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==}
861 | dev: true
862 |
863 | /mdn-data@2.0.30:
864 | resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
865 | dev: true
866 |
867 | /meow@9.0.0:
868 | resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==}
869 | engines: {node: '>=10'}
870 | dependencies:
871 | '@types/minimist': 1.2.2
872 | camelcase-keys: 6.2.2
873 | decamelize: 1.2.0
874 | decamelize-keys: 1.1.1
875 | hard-rejection: 2.1.0
876 | minimist-options: 4.1.0
877 | normalize-package-data: 3.0.3
878 | read-pkg-up: 7.0.1
879 | redent: 3.0.0
880 | trim-newlines: 3.0.1
881 | type-fest: 0.18.1
882 | yargs-parser: 20.2.9
883 | dev: true
884 |
885 | /merge2@1.4.1:
886 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
887 | engines: {node: '>= 8'}
888 | dev: true
889 |
890 | /micromatch@4.0.5:
891 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
892 | engines: {node: '>=8.6'}
893 | dependencies:
894 | braces: 3.0.2
895 | picomatch: 2.3.1
896 | dev: true
897 |
898 | /min-indent@1.0.1:
899 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
900 | engines: {node: '>=4'}
901 | dev: true
902 |
903 | /minimatch@3.1.2:
904 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
905 | dependencies:
906 | brace-expansion: 1.1.11
907 | dev: true
908 |
909 | /minimatch@9.0.0:
910 | resolution: {integrity: sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==}
911 | engines: {node: '>=16 || 14 >=14.17'}
912 | dependencies:
913 | brace-expansion: 2.0.1
914 | dev: true
915 |
916 | /minimist-options@4.1.0:
917 | resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
918 | engines: {node: '>= 6'}
919 | dependencies:
920 | arrify: 1.0.1
921 | is-plain-obj: 1.1.0
922 | kind-of: 6.0.3
923 | dev: true
924 |
925 | /minipass@5.0.0:
926 | resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
927 | engines: {node: '>=8'}
928 | dev: true
929 |
930 | /ms@2.1.2:
931 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
932 | dev: true
933 |
934 | /nanoid@3.3.6:
935 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
936 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
937 | hasBin: true
938 | dev: true
939 |
940 | /node-releases@2.0.10:
941 | resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==}
942 | dev: true
943 |
944 | /normalize-package-data@2.5.0:
945 | resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
946 | dependencies:
947 | hosted-git-info: 2.8.9
948 | resolve: 1.22.2
949 | semver: 5.7.1
950 | validate-npm-package-license: 3.0.4
951 | dev: true
952 |
953 | /normalize-package-data@3.0.3:
954 | resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==}
955 | engines: {node: '>=10'}
956 | dependencies:
957 | hosted-git-info: 4.1.0
958 | is-core-module: 2.12.0
959 | semver: 7.5.0
960 | validate-npm-package-license: 3.0.4
961 | dev: true
962 |
963 | /normalize-path@3.0.0:
964 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
965 | engines: {node: '>=0.10.0'}
966 | dev: true
967 |
968 | /normalize-range@0.1.2:
969 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
970 | engines: {node: '>=0.10.0'}
971 | dev: true
972 |
973 | /once@1.4.0:
974 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
975 | dependencies:
976 | wrappy: 1.0.2
977 | dev: true
978 |
979 | /p-limit@2.3.0:
980 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
981 | engines: {node: '>=6'}
982 | dependencies:
983 | p-try: 2.2.0
984 | dev: true
985 |
986 | /p-locate@4.1.0:
987 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
988 | engines: {node: '>=8'}
989 | dependencies:
990 | p-limit: 2.3.0
991 | dev: true
992 |
993 | /p-try@2.2.0:
994 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
995 | engines: {node: '>=6'}
996 | dev: true
997 |
998 | /parent-module@1.0.1:
999 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
1000 | engines: {node: '>=6'}
1001 | dependencies:
1002 | callsites: 3.1.0
1003 | dev: true
1004 |
1005 | /parse-json@5.2.0:
1006 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
1007 | engines: {node: '>=8'}
1008 | dependencies:
1009 | '@babel/code-frame': 7.21.4
1010 | error-ex: 1.3.2
1011 | json-parse-even-better-errors: 2.3.1
1012 | lines-and-columns: 1.2.4
1013 | dev: true
1014 |
1015 | /path-exists@4.0.0:
1016 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
1017 | engines: {node: '>=8'}
1018 | dev: true
1019 |
1020 | /path-is-absolute@1.0.1:
1021 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
1022 | engines: {node: '>=0.10.0'}
1023 | dev: true
1024 |
1025 | /path-key@3.1.1:
1026 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1027 | engines: {node: '>=8'}
1028 | dev: true
1029 |
1030 | /path-parse@1.0.7:
1031 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1032 | dev: true
1033 |
1034 | /path-scurry@1.7.0:
1035 | resolution: {integrity: sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==}
1036 | engines: {node: '>=16 || 14 >=14.17'}
1037 | dependencies:
1038 | lru-cache: 9.1.1
1039 | minipass: 5.0.0
1040 | dev: true
1041 |
1042 | /path-type@4.0.0:
1043 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
1044 | engines: {node: '>=8'}
1045 | dev: true
1046 |
1047 | /picocolors@1.0.0:
1048 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
1049 | dev: true
1050 |
1051 | /picomatch@2.3.1:
1052 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1053 | engines: {node: '>=8.6'}
1054 | dev: true
1055 |
1056 | /pify@2.3.0:
1057 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
1058 | engines: {node: '>=0.10.0'}
1059 | dev: true
1060 |
1061 | /postcss-cli@10.1.0(postcss@8.4.23):
1062 | resolution: {integrity: sha512-Zu7PLORkE9YwNdvOeOVKPmWghprOtjFQU3srMUGbdz3pHJiFh7yZ4geiZFMkjMfB0mtTFR3h8RemR62rPkbOPA==}
1063 | engines: {node: '>=14'}
1064 | hasBin: true
1065 | peerDependencies:
1066 | postcss: ^8.0.0
1067 | dependencies:
1068 | chokidar: 3.5.3
1069 | dependency-graph: 0.11.0
1070 | fs-extra: 11.1.1
1071 | get-stdin: 9.0.0
1072 | globby: 13.1.4
1073 | picocolors: 1.0.0
1074 | postcss: 8.4.23
1075 | postcss-load-config: 4.0.1(postcss@8.4.23)
1076 | postcss-reporter: 7.0.5(postcss@8.4.23)
1077 | pretty-hrtime: 1.0.3
1078 | read-cache: 1.0.0
1079 | slash: 5.0.1
1080 | yargs: 17.7.2
1081 | transitivePeerDependencies:
1082 | - ts-node
1083 | dev: true
1084 |
1085 | /postcss-load-config@4.0.1(postcss@8.4.23):
1086 | resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==}
1087 | engines: {node: '>= 14'}
1088 | peerDependencies:
1089 | postcss: '>=8.0.9'
1090 | ts-node: '>=9.0.0'
1091 | peerDependenciesMeta:
1092 | postcss:
1093 | optional: true
1094 | ts-node:
1095 | optional: true
1096 | dependencies:
1097 | lilconfig: 2.1.0
1098 | postcss: 8.4.23
1099 | yaml: 2.2.2
1100 | dev: true
1101 |
1102 | /postcss-media-query-parser@0.2.3:
1103 | resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==}
1104 | dev: true
1105 |
1106 | /postcss-reporter@7.0.5(postcss@8.4.23):
1107 | resolution: {integrity: sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==}
1108 | engines: {node: '>=10'}
1109 | peerDependencies:
1110 | postcss: ^8.1.0
1111 | dependencies:
1112 | picocolors: 1.0.0
1113 | postcss: 8.4.23
1114 | thenby: 1.3.4
1115 | dev: true
1116 |
1117 | /postcss-resolve-nested-selector@0.1.1:
1118 | resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==}
1119 | dev: true
1120 |
1121 | /postcss-safe-parser@6.0.0(postcss@8.4.23):
1122 | resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==}
1123 | engines: {node: '>=12.0'}
1124 | peerDependencies:
1125 | postcss: ^8.3.3
1126 | dependencies:
1127 | postcss: 8.4.23
1128 | dev: true
1129 |
1130 | /postcss-scss@4.0.6(postcss@8.4.23):
1131 | resolution: {integrity: sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==}
1132 | engines: {node: '>=12.0'}
1133 | peerDependencies:
1134 | postcss: ^8.4.19
1135 | dependencies:
1136 | postcss: 8.4.23
1137 | dev: true
1138 |
1139 | /postcss-selector-parser@6.0.12:
1140 | resolution: {integrity: sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg==}
1141 | engines: {node: '>=4'}
1142 | dependencies:
1143 | cssesc: 3.0.0
1144 | util-deprecate: 1.0.2
1145 | dev: true
1146 |
1147 | /postcss-sorting@8.0.2(postcss@8.4.23):
1148 | resolution: {integrity: sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==}
1149 | peerDependencies:
1150 | postcss: ^8.4.20
1151 | dependencies:
1152 | postcss: 8.4.23
1153 | dev: true
1154 |
1155 | /postcss-value-parser@4.2.0:
1156 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
1157 | dev: true
1158 |
1159 | /postcss@8.4.23:
1160 | resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==}
1161 | engines: {node: ^10 || ^12 || >=14}
1162 | dependencies:
1163 | nanoid: 3.3.6
1164 | picocolors: 1.0.0
1165 | source-map-js: 1.0.2
1166 | dev: true
1167 |
1168 | /pretty-hrtime@1.0.3:
1169 | resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==}
1170 | engines: {node: '>= 0.8'}
1171 | dev: true
1172 |
1173 | /punycode@2.3.0:
1174 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
1175 | engines: {node: '>=6'}
1176 | dev: true
1177 |
1178 | /queue-microtask@1.2.3:
1179 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1180 | dev: true
1181 |
1182 | /quick-lru@4.0.1:
1183 | resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==}
1184 | engines: {node: '>=8'}
1185 | dev: true
1186 |
1187 | /read-cache@1.0.0:
1188 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
1189 | dependencies:
1190 | pify: 2.3.0
1191 | dev: true
1192 |
1193 | /read-pkg-up@7.0.1:
1194 | resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
1195 | engines: {node: '>=8'}
1196 | dependencies:
1197 | find-up: 4.1.0
1198 | read-pkg: 5.2.0
1199 | type-fest: 0.8.1
1200 | dev: true
1201 |
1202 | /read-pkg@5.2.0:
1203 | resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==}
1204 | engines: {node: '>=8'}
1205 | dependencies:
1206 | '@types/normalize-package-data': 2.4.1
1207 | normalize-package-data: 2.5.0
1208 | parse-json: 5.2.0
1209 | type-fest: 0.6.0
1210 | dev: true
1211 |
1212 | /readdirp@3.6.0:
1213 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
1214 | engines: {node: '>=8.10.0'}
1215 | dependencies:
1216 | picomatch: 2.3.1
1217 | dev: true
1218 |
1219 | /redent@3.0.0:
1220 | resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
1221 | engines: {node: '>=8'}
1222 | dependencies:
1223 | indent-string: 4.0.0
1224 | strip-indent: 3.0.0
1225 | dev: true
1226 |
1227 | /require-directory@2.1.1:
1228 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
1229 | engines: {node: '>=0.10.0'}
1230 | dev: true
1231 |
1232 | /require-from-string@2.0.2:
1233 | resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
1234 | engines: {node: '>=0.10.0'}
1235 | dev: true
1236 |
1237 | /resolve-from@4.0.0:
1238 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
1239 | engines: {node: '>=4'}
1240 | dev: true
1241 |
1242 | /resolve-from@5.0.0:
1243 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
1244 | engines: {node: '>=8'}
1245 | dev: true
1246 |
1247 | /resolve@1.22.2:
1248 | resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==}
1249 | hasBin: true
1250 | dependencies:
1251 | is-core-module: 2.12.0
1252 | path-parse: 1.0.7
1253 | supports-preserve-symlinks-flag: 1.0.0
1254 | dev: true
1255 |
1256 | /reusify@1.0.4:
1257 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
1258 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1259 | dev: true
1260 |
1261 | /rimraf@3.0.2:
1262 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
1263 | hasBin: true
1264 | dependencies:
1265 | glob: 7.2.3
1266 | dev: true
1267 |
1268 | /rimraf@5.0.0:
1269 | resolution: {integrity: sha512-Jf9llaP+RvaEVS5nPShYFhtXIrb3LRKP281ib3So0KkeZKo2wIKyq0Re7TOSwanasA423PSr6CCIL4bP6T040g==}
1270 | engines: {node: '>=14'}
1271 | hasBin: true
1272 | dependencies:
1273 | glob: 10.2.2
1274 | dev: true
1275 |
1276 | /run-parallel@1.2.0:
1277 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1278 | dependencies:
1279 | queue-microtask: 1.2.3
1280 | dev: true
1281 |
1282 | /sass@1.62.1:
1283 | resolution: {integrity: sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==}
1284 | engines: {node: '>=14.0.0'}
1285 | hasBin: true
1286 | dependencies:
1287 | chokidar: 3.5.3
1288 | immutable: 4.3.0
1289 | source-map-js: 1.0.2
1290 | dev: true
1291 |
1292 | /semver@5.7.1:
1293 | resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==}
1294 | hasBin: true
1295 | dev: true
1296 |
1297 | /semver@7.5.0:
1298 | resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==}
1299 | engines: {node: '>=10'}
1300 | hasBin: true
1301 | dependencies:
1302 | lru-cache: 6.0.0
1303 | dev: true
1304 |
1305 | /shebang-command@2.0.0:
1306 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
1307 | engines: {node: '>=8'}
1308 | dependencies:
1309 | shebang-regex: 3.0.0
1310 | dev: true
1311 |
1312 | /shebang-regex@3.0.0:
1313 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
1314 | engines: {node: '>=8'}
1315 | dev: true
1316 |
1317 | /signal-exit@4.0.1:
1318 | resolution: {integrity: sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==}
1319 | engines: {node: '>=14'}
1320 | dev: true
1321 |
1322 | /slash@3.0.0:
1323 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
1324 | engines: {node: '>=8'}
1325 | dev: true
1326 |
1327 | /slash@4.0.0:
1328 | resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==}
1329 | engines: {node: '>=12'}
1330 | dev: true
1331 |
1332 | /slash@5.0.1:
1333 | resolution: {integrity: sha512-ywNzUOiXwetmLvTUiCBZpLi+vxqN3i+zDqjs2HHfUSV3wN4UJxVVKWrS1JZDeiJIeBFNgB5pmioC2g0IUTL+rQ==}
1334 | engines: {node: '>=14.16'}
1335 | dev: true
1336 |
1337 | /slice-ansi@4.0.0:
1338 | resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==}
1339 | engines: {node: '>=10'}
1340 | dependencies:
1341 | ansi-styles: 4.3.0
1342 | astral-regex: 2.0.0
1343 | is-fullwidth-code-point: 3.0.0
1344 | dev: true
1345 |
1346 | /source-map-js@1.0.2:
1347 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
1348 | engines: {node: '>=0.10.0'}
1349 | dev: true
1350 |
1351 | /source-map@0.6.1:
1352 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
1353 | engines: {node: '>=0.10.0'}
1354 | dev: true
1355 |
1356 | /spdx-correct@3.2.0:
1357 | resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
1358 | dependencies:
1359 | spdx-expression-parse: 3.0.1
1360 | spdx-license-ids: 3.0.13
1361 | dev: true
1362 |
1363 | /spdx-exceptions@2.3.0:
1364 | resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==}
1365 | dev: true
1366 |
1367 | /spdx-expression-parse@3.0.1:
1368 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
1369 | dependencies:
1370 | spdx-exceptions: 2.3.0
1371 | spdx-license-ids: 3.0.13
1372 | dev: true
1373 |
1374 | /spdx-license-ids@3.0.13:
1375 | resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==}
1376 | dev: true
1377 |
1378 | /string-width@4.2.3:
1379 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
1380 | engines: {node: '>=8'}
1381 | dependencies:
1382 | emoji-regex: 8.0.0
1383 | is-fullwidth-code-point: 3.0.0
1384 | strip-ansi: 6.0.1
1385 | dev: true
1386 |
1387 | /strip-ansi@6.0.1:
1388 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
1389 | engines: {node: '>=8'}
1390 | dependencies:
1391 | ansi-regex: 5.0.1
1392 | dev: true
1393 |
1394 | /strip-indent@3.0.0:
1395 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
1396 | engines: {node: '>=8'}
1397 | dependencies:
1398 | min-indent: 1.0.1
1399 | dev: true
1400 |
1401 | /style-search@0.1.0:
1402 | resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==}
1403 | dev: true
1404 |
1405 | /stylelint-order@6.0.3(stylelint@15.6.0):
1406 | resolution: {integrity: sha512-1j1lOb4EU/6w49qZeT2SQVJXm0Ht+Qnq9GMfUa3pMwoyojIWfuA+JUDmoR97Bht1RLn4ei0xtLGy87M7d29B1w==}
1407 | peerDependencies:
1408 | stylelint: ^14.0.0 || ^15.0.0
1409 | dependencies:
1410 | postcss: 8.4.23
1411 | postcss-sorting: 8.0.2(postcss@8.4.23)
1412 | stylelint: 15.6.0
1413 | dev: true
1414 |
1415 | /stylelint-scss@5.0.0(stylelint@15.6.0):
1416 | resolution: {integrity: sha512-5Ee5kG3JIcP2jk2PMoFMiNmW/815V+wK5o37X5ke90ihWMpPXI9iyqeA6zEWipWSRXeQc0kqbd7hKqiR+wPKNA==}
1417 | peerDependencies:
1418 | stylelint: ^14.5.1 || ^15.0.0
1419 | dependencies:
1420 | postcss-media-query-parser: 0.2.3
1421 | postcss-resolve-nested-selector: 0.1.1
1422 | postcss-selector-parser: 6.0.12
1423 | postcss-value-parser: 4.2.0
1424 | stylelint: 15.6.0
1425 | dev: true
1426 |
1427 | /stylelint@15.6.0:
1428 | resolution: {integrity: sha512-Cqzpc8tvJm77KaM8qUbhpJ/UYK55Ia0whQXj4b9IId9dlPICO7J8Lyo15SZWiHxKjlvy3p5FQor/3n6i8ignXg==}
1429 | engines: {node: ^14.13.1 || >=16.0.0}
1430 | hasBin: true
1431 | dependencies:
1432 | '@csstools/css-parser-algorithms': 2.1.1(@csstools/css-tokenizer@2.1.1)
1433 | '@csstools/css-tokenizer': 2.1.1
1434 | '@csstools/media-query-list-parser': 2.0.4(@csstools/css-parser-algorithms@2.1.1)(@csstools/css-tokenizer@2.1.1)
1435 | '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.0.12)
1436 | balanced-match: 2.0.0
1437 | colord: 2.9.3
1438 | cosmiconfig: 8.1.3
1439 | css-functions-list: 3.1.0
1440 | css-tree: 2.3.1
1441 | debug: 4.3.4
1442 | fast-glob: 3.2.12
1443 | fastest-levenshtein: 1.0.16
1444 | file-entry-cache: 6.0.1
1445 | global-modules: 2.0.0
1446 | globby: 11.1.0
1447 | globjoin: 0.1.4
1448 | html-tags: 3.3.1
1449 | ignore: 5.2.4
1450 | import-lazy: 4.0.0
1451 | imurmurhash: 0.1.4
1452 | is-plain-object: 5.0.0
1453 | known-css-properties: 0.27.0
1454 | mathml-tag-names: 2.1.3
1455 | meow: 9.0.0
1456 | micromatch: 4.0.5
1457 | normalize-path: 3.0.0
1458 | picocolors: 1.0.0
1459 | postcss: 8.4.23
1460 | postcss-media-query-parser: 0.2.3
1461 | postcss-resolve-nested-selector: 0.1.1
1462 | postcss-safe-parser: 6.0.0(postcss@8.4.23)
1463 | postcss-selector-parser: 6.0.12
1464 | postcss-value-parser: 4.2.0
1465 | resolve-from: 5.0.0
1466 | string-width: 4.2.3
1467 | strip-ansi: 6.0.1
1468 | style-search: 0.1.0
1469 | supports-hyperlinks: 3.0.0
1470 | svg-tags: 1.0.0
1471 | table: 6.8.1
1472 | v8-compile-cache: 2.3.0
1473 | write-file-atomic: 5.0.1
1474 | transitivePeerDependencies:
1475 | - supports-color
1476 | dev: true
1477 |
1478 | /supports-color@5.5.0:
1479 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
1480 | engines: {node: '>=4'}
1481 | dependencies:
1482 | has-flag: 3.0.0
1483 | dev: true
1484 |
1485 | /supports-color@7.2.0:
1486 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
1487 | engines: {node: '>=8'}
1488 | dependencies:
1489 | has-flag: 4.0.0
1490 | dev: true
1491 |
1492 | /supports-hyperlinks@3.0.0:
1493 | resolution: {integrity: sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==}
1494 | engines: {node: '>=14.18'}
1495 | dependencies:
1496 | has-flag: 4.0.0
1497 | supports-color: 7.2.0
1498 | dev: true
1499 |
1500 | /supports-preserve-symlinks-flag@1.0.0:
1501 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1502 | engines: {node: '>= 0.4'}
1503 | dev: true
1504 |
1505 | /svg-tags@1.0.0:
1506 | resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==}
1507 | dev: true
1508 |
1509 | /table@6.8.1:
1510 | resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==}
1511 | engines: {node: '>=10.0.0'}
1512 | dependencies:
1513 | ajv: 8.12.0
1514 | lodash.truncate: 4.4.2
1515 | slice-ansi: 4.0.0
1516 | string-width: 4.2.3
1517 | strip-ansi: 6.0.1
1518 | dev: true
1519 |
1520 | /thenby@1.3.4:
1521 | resolution: {integrity: sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==}
1522 | dev: true
1523 |
1524 | /to-regex-range@5.0.1:
1525 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1526 | engines: {node: '>=8.0'}
1527 | dependencies:
1528 | is-number: 7.0.0
1529 | dev: true
1530 |
1531 | /trim-newlines@3.0.1:
1532 | resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==}
1533 | engines: {node: '>=8'}
1534 | dev: true
1535 |
1536 | /type-fest@0.18.1:
1537 | resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==}
1538 | engines: {node: '>=10'}
1539 | dev: true
1540 |
1541 | /type-fest@0.6.0:
1542 | resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==}
1543 | engines: {node: '>=8'}
1544 | dev: true
1545 |
1546 | /type-fest@0.8.1:
1547 | resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
1548 | engines: {node: '>=8'}
1549 | dev: true
1550 |
1551 | /universalify@2.0.0:
1552 | resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==}
1553 | engines: {node: '>= 10.0.0'}
1554 | dev: true
1555 |
1556 | /update-browserslist-db@1.0.11(browserslist@4.21.5):
1557 | resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==}
1558 | hasBin: true
1559 | peerDependencies:
1560 | browserslist: '>= 4.21.0'
1561 | dependencies:
1562 | browserslist: 4.21.5
1563 | escalade: 3.1.1
1564 | picocolors: 1.0.0
1565 | dev: true
1566 |
1567 | /uri-js@4.4.1:
1568 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
1569 | dependencies:
1570 | punycode: 2.3.0
1571 | dev: true
1572 |
1573 | /util-deprecate@1.0.2:
1574 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
1575 | dev: true
1576 |
1577 | /v8-compile-cache@2.3.0:
1578 | resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==}
1579 | dev: true
1580 |
1581 | /validate-npm-package-license@3.0.4:
1582 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
1583 | dependencies:
1584 | spdx-correct: 3.2.0
1585 | spdx-expression-parse: 3.0.1
1586 | dev: true
1587 |
1588 | /which@1.3.1:
1589 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
1590 | hasBin: true
1591 | dependencies:
1592 | isexe: 2.0.0
1593 | dev: true
1594 |
1595 | /which@2.0.2:
1596 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1597 | engines: {node: '>= 8'}
1598 | hasBin: true
1599 | dependencies:
1600 | isexe: 2.0.0
1601 | dev: true
1602 |
1603 | /wrap-ansi@7.0.0:
1604 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
1605 | engines: {node: '>=10'}
1606 | dependencies:
1607 | ansi-styles: 4.3.0
1608 | string-width: 4.2.3
1609 | strip-ansi: 6.0.1
1610 | dev: true
1611 |
1612 | /wrappy@1.0.2:
1613 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
1614 | dev: true
1615 |
1616 | /write-file-atomic@5.0.1:
1617 | resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==}
1618 | engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
1619 | dependencies:
1620 | imurmurhash: 0.1.4
1621 | signal-exit: 4.0.1
1622 | dev: true
1623 |
1624 | /y18n@5.0.8:
1625 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
1626 | engines: {node: '>=10'}
1627 | dev: true
1628 |
1629 | /yallist@4.0.0:
1630 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
1631 | dev: true
1632 |
1633 | /yaml@2.2.2:
1634 | resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==}
1635 | engines: {node: '>= 14'}
1636 | dev: true
1637 |
1638 | /yargs-parser@20.2.9:
1639 | resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
1640 | engines: {node: '>=10'}
1641 | dev: true
1642 |
1643 | /yargs-parser@21.1.1:
1644 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
1645 | engines: {node: '>=12'}
1646 | dev: true
1647 |
1648 | /yargs@17.7.2:
1649 | resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
1650 | engines: {node: '>=12'}
1651 | dependencies:
1652 | cliui: 8.0.1
1653 | escalade: 3.1.1
1654 | get-caller-file: 2.0.5
1655 | require-directory: 2.1.1
1656 | string-width: 4.2.3
1657 | y18n: 5.0.8
1658 | yargs-parser: 21.1.1
1659 | dev: true
1660 |
--------------------------------------------------------------------------------
/src/abstracts/_config.scss:
--------------------------------------------------------------------------------
1 | $dfr-config: () !default;
2 |
3 | @import 'config/border';
4 | @import 'config/breakpoint';
5 | @import 'config/button';
6 | @import 'config/color';
7 | @import 'config/container';
8 | @import 'config/font';
9 | @import 'config/heading';
10 | @import 'config/spacing';
11 |
--------------------------------------------------------------------------------
/src/abstracts/_core-functions.scss:
--------------------------------------------------------------------------------
1 | @import 'functions/convert-unit';
2 | @import 'functions/get';
3 | @import 'functions/grid-calc';
4 |
--------------------------------------------------------------------------------
/src/abstracts/_helper-mixins.scss:
--------------------------------------------------------------------------------
1 | @import 'mixins/helpers/button-sizes';
2 | @import 'mixins/helpers/focus';
3 | @import 'mixins/helpers/input-sizes';
4 |
--------------------------------------------------------------------------------
/src/abstracts/_mixins.scss:
--------------------------------------------------------------------------------
1 | @import 'mixins/border-radius';
2 | @import 'mixins/color';
3 | @import 'mixins/font-face';
4 | @import 'mixins/grid-generator';
5 | @import 'mixins/media-queries';
6 | @import 'mixins/pseudo-states';
7 | @import 'mixins/spacing';
8 |
--------------------------------------------------------------------------------
/src/abstracts/_utils.scss:
--------------------------------------------------------------------------------
1 | @forward 'functions/helpers/str-replace';
2 | @forward 'functions/helpers/strip-unit';
3 | @forward 'functions/helpers/yiq';
4 |
--------------------------------------------------------------------------------
/src/abstracts/_variables.scss:
--------------------------------------------------------------------------------
1 | $dfr--base-color-dark: #000 !default;
2 | $dfr--base-color-light: #fff !default;
3 |
4 | $dfr--base-lineHeight: 1.5 !default;
5 | $dfr--base-fontSize: 16px !default;
6 | $dfr--root-fontSize-small: ($dfr--base-fontSize - 2) !default;
7 | $dfr--root-fontSize-large: $dfr--base-fontSize !default;
8 |
9 | $dfr--base-borderRadius: 4px !default;
10 |
11 | $dfr--base-spacing: 15px !default;
12 | $dfr--x-spacing: $dfr--base-spacing !default;
13 | $dfr--y-spacing: $dfr--base-spacing / 2 !default;
14 |
15 | $dfr-grid-columns: 12 !default;
16 | $dfr-grid-gutter: 15px !default;
17 |
18 | $dfr-yiq-threshold: 180 !default; // 128 is common default, but looks odd
19 | $dfr-yiq-color-dark: $dfr--base-color-dark !default;
20 | $dfr-yiq-color-light: $dfr--base-color-light !default;
21 |
--------------------------------------------------------------------------------
/src/abstracts/config/_border.scss:
--------------------------------------------------------------------------------
1 | @use 'sass:map';
2 |
3 | $dfr-config: map.deep-merge(
4 | (
5 | 'border': (
6 | 'width': 2px,
7 | 'style': solid,
8 | 'color': $dfr--base-color-dark,
9 | 'radius': (
10 | 'xs': $dfr--base-borderRadius / 2,
11 | 's': $dfr--base-borderRadius / 1.25,
12 | 'm': $dfr--base-borderRadius,
13 | 'l': $dfr--base-borderRadius * 1.25,
14 | 'xl': $dfr--base-borderRadius * 2,
15 | 'f': 9999px,
16 | )
17 | )
18 | ),
19 | $dfr-config,
20 | );
21 |
--------------------------------------------------------------------------------
/src/abstracts/config/_breakpoint.scss:
--------------------------------------------------------------------------------
1 | @use 'sass:map';
2 |
3 | $dfr-config: map.deep-merge(
4 | (
5 | 'breakpoint': (
6 | 'xs': null,
7 | 's': 544px,
8 | 'm': 768px,
9 | 'l': 992px,
10 | 'xl': 1200px
11 | )
12 | ),
13 | $dfr-config,
14 | );
15 |
--------------------------------------------------------------------------------
/src/abstracts/config/_button.scss:
--------------------------------------------------------------------------------
1 | @use 'sass:map';
2 |
3 | $dfr-config: map.deep-merge(
4 | (
5 | 'spacing': (
6 | 'button': (
7 | 'xs': (
8 | 'x': $dfr--x-spacing / 1.5,
9 | 'y': $dfr--y-spacing / 1.5,
10 | ),
11 | 's': (
12 | 'x': $dfr--x-spacing / 1.25,
13 | 'y': $dfr--y-spacing / 1.25,
14 | ),
15 | 'm': (
16 | 'x': $dfr--x-spacing,
17 | 'y': $dfr--y-spacing,
18 | ),
19 | 'l': (
20 | 'x': $dfr--x-spacing * 1.25,
21 | 'y': $dfr--y-spacing * 1.25,
22 | ),
23 | 'xl': (
24 | 'x': $dfr--x-spacing * 1.5,
25 | 'y': $dfr--y-spacing * 1.5,
26 | ),
27 | )
28 | )
29 | ),
30 | $dfr-config,
31 | );
32 |
--------------------------------------------------------------------------------
/src/abstracts/config/_color.scss:
--------------------------------------------------------------------------------
1 | @use 'sass:map';
2 |
3 | $dfr-config: map.deep-merge(
4 | (
5 | 'color': (
6 | 'dark': $dfr--base-color-dark,
7 | 'almost-dark': lighten($dfr--base-color-dark, 15%),
8 | 'medium': mix($dfr--base-color-dark, $dfr--base-color-light, 51%),
9 | 'almost-light': darken($dfr--base-color-light, 15%),
10 | 'light': $dfr--base-color-light,
11 | )
12 | ),
13 | $dfr-config,
14 | );
15 |
--------------------------------------------------------------------------------
/src/abstracts/config/_container.scss:
--------------------------------------------------------------------------------
1 | @use 'sass:map';
2 |
3 | $dfr-config: map.deep-merge(
4 | (
5 | 'container': (
6 | 's': 510px,
7 | 'm': 720px,
8 | 'l': 940px,
9 | 'xl': 1140px,
10 | )
11 | ),
12 | $dfr-config,
13 | );
14 |
--------------------------------------------------------------------------------
/src/abstracts/config/_font.scss:
--------------------------------------------------------------------------------
1 | @use 'sass:map';
2 |
3 | /* stylelint-disable */
4 | $dfr-config: map.deep-merge(
5 | (
6 | 'font': (
7 | 'family': (
8 | 'sans-serif': (
9 | -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
10 | Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif
11 | ),
12 | 'mono': (
13 | Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace
14 | ),
15 | ),
16 | 'weight': normal,
17 | 'path': '../fonts',
18 | 'size': (
19 | 'xs': $dfr--base-fontSize / 1.5,
20 | 's': $dfr--base-fontSize / 1.25,
21 | 'l': $dfr--base-fontSize * 1.25,
22 | 'xl': $dfr--base-fontSize * 1.5,
23 | ),
24 | )
25 | ),
26 | $dfr-config,
27 | );
28 | /* stylelint-enable */
29 |
--------------------------------------------------------------------------------
/src/abstracts/config/_heading.scss:
--------------------------------------------------------------------------------
1 | @use 'sass:map';
2 |
3 | $dfr-config: map.deep-merge(
4 | (
5 | 'heading': (
6 | 'font': (
7 | 'weight': 500,
8 | 'size': (
9 | ($dfr--base-fontSize + 26),
10 | ($dfr--base-fontSize + 20),
11 | ($dfr--base-fontSize + 14),
12 | ($dfr--base-fontSize + 8),
13 | ($dfr--base-fontSize + 4),
14 | ($dfr--base-fontSize + 2),
15 | )
16 | ),
17 | 'line-height': ($dfr--base-lineHeight / 1.2),
18 | 'margin': (
19 | 'bottom': $dfr--y-spacing,
20 | ),
21 | ),
22 | ),
23 | $dfr-config,
24 | );
25 |
--------------------------------------------------------------------------------
/src/abstracts/config/_spacing.scss:
--------------------------------------------------------------------------------
1 | @use 'sass:map';
2 |
3 | $dfr-config: map.deep-merge(
4 | (
5 | 'spacing': (
6 | 'default': (
7 | 'xs': (
8 | 'x': $dfr--x-spacing / 2.5,
9 | 'y': $dfr--y-spacing / 2.5,
10 | ),
11 | 's': (
12 | 'x': $dfr--x-spacing / 1.5,
13 | 'y': $dfr--y-spacing / 1.5,
14 | ),
15 | 'm': (
16 | 'x': $dfr--base-spacing,
17 | 'y': $dfr--base-spacing,
18 | ),
19 | 'l': (
20 | 'x': $dfr--x-spacing * 2,
21 | 'y': $dfr--y-spacing * 2,
22 | ),
23 | 'xl': (
24 | 'x': $dfr--x-spacing * 4,
25 | 'y': $dfr--y-spacing * 4,
26 | ),
27 | ),
28 | ),
29 | ),
30 | $dfr-config,
31 | );
32 |
--------------------------------------------------------------------------------
/src/abstracts/functions/_convert-unit.scss:
--------------------------------------------------------------------------------
1 | @use 'sass:math';
2 | @use 'sass:string';
3 | @use 'sass:meta';
4 | @use '../helper-functions' as utils;
5 |
6 | // ---------------------------------------------------------
7 | // convert-unit
8 | // Convert number's pixel unit to em/rem
9 | //
10 | // Required arguments:
11 | // `$number` Number
12 | // `$unit` String
13 | // `$base` Number *predefined*
14 | //
15 | // Example of use:
16 | // convert-unit(15px, 'rem')
17 | // convert-unit(15px, 'em')
18 | //
19 | // @return List
20 | // ---------------------------------------------------------
21 | @function convert-unit ($number, $unit, $base: $dfr--base-fontSize) {
22 | @if meta.type-of($number) != 'number' {
23 | @error 'The argument $number: `#{$number}` is of incorrect type: `#{type-of($number)}`. Type of `Number` is required!';
24 | }
25 | @else if math.unit($number) != 'px' {
26 | @error 'The argument $number: `#{$number}` has incorrect unit: `#{unit($number)}`. Unit of `px` is required!';
27 | }
28 | @else if $unit != 'em' and $unit != 'rem' {
29 | @error 'The argument $unit: `#{$unit}` has incorrect value: `#{$unit}`. Value of `em` or `rem` is required!';
30 | }
31 |
32 | @return math.div(utils.strip-unit($number), utils.strip-unit($base)) + string.unquote($unit);
33 | }
34 |
--------------------------------------------------------------------------------
/src/abstracts/functions/_get.scss:
--------------------------------------------------------------------------------
1 | @use 'sass:string';
2 | @use 'sass:map';
3 |
4 | // ---------------------------------------------------------
5 | // get
6 | // Search for any value contained within nested maps, by using
7 | // dot notation as the key argument
8 | //
9 | // Required arguments:
10 | // `$key` String
11 | //
12 | // Example of use:
13 | // get('border.radius.xs')
14 | //
15 | // @return Anything
16 | // ---------------------------------------------------------
17 | @function get ($key, $map: $dfr-config) {
18 | $keys: string.split($key, '.');
19 |
20 | @if not map.has-key($map, $keys...) {
21 | @error 'The argument $map: `#{$map}` doesn\'t have some of the $keys: `#{$keys}`!';
22 | }
23 |
24 | @return map.get($map, $keys...);
25 | }
26 |
--------------------------------------------------------------------------------
/src/abstracts/functions/_grid-calc.scss:
--------------------------------------------------------------------------------
1 | @use 'sass:meta';
2 | @use 'sass:string';
3 |
4 | // ---------------------------------------------------------
5 | // grid-calc
6 | // Formula that calculates percentage of the column(s)
7 | //
8 | // Required arguments:
9 | // `$number` Number
10 | // `$columns` Number *predefined*
11 | //
12 | // Example of use:
13 | // grid-calc(3, 12)
14 | //
15 | // @return String
16 | // ---------------------------------------------------------
17 | @function grid-calc ($number, $columns: $dfr-grid-columns) {
18 | @if meta.type-of($number) != 'number' {
19 | @error 'The argument $number: `#{$number}` is of incorrect type: `#{meta.type-of($number)}`. Type of `Number` is required!';
20 | }
21 | @else if meta.type-of($columns) != 'number' {
22 | @error 'The argument $columns: `#{$columns}` is of incorrect type: `#{meta.type-of($columns)}`. Type of `Number` is required!';
23 | }
24 |
25 | @return string.unquote((100 / $columns * $number) + '%');
26 | }
27 |
--------------------------------------------------------------------------------
/src/abstracts/functions/helpers/_str-replace.scss:
--------------------------------------------------------------------------------
1 | // ---------------------------------------------------------
2 | // str-replace
3 | // Replace occurence of a string
4 | //
5 | // Required arguments:
6 | // `$string` String
7 | // `$search` String
8 | // `$replace` String *predefined*
9 | //
10 | // Example of use:
11 | // str-replace('This is just an example', 'just', 'not')
12 | //
13 | // @return String
14 | // ---------------------------------------------------------
15 | @function str-replace ($string, $search, $replace: '') {
16 | @if type-of($string) != 'string' {
17 | @error 'The argument $string: `#{$string}` is of incorrect type: `#{type-of($string)}`. Type of `String` is required!';
18 | }
19 | @else if type-of($search) != 'string' {
20 | @error 'The argument $search: `#{$search}` is of incorrect type: `#{type-of($search)}`. Type of `String` is required!';
21 | }
22 | @else if type-of($replace) != 'string' {
23 | @error 'The argument $search: `#{$search}` is of incorrect type: `#{type-of($search)}`. Type of `String` is required!';
24 | }
25 |
26 | $index: str-index($string, $search);
27 |
28 | @if $index {
29 | @return str-slice($string, 1, $index - 1) + $replace +
30 | str-replace(
31 | str-slice($string, $index + str-length($search)),
32 | $search, $replace
33 | );
34 | }
35 |
36 | @return $string;
37 | }
38 |
--------------------------------------------------------------------------------
/src/abstracts/functions/helpers/_strip-unit.scss:
--------------------------------------------------------------------------------
1 | @use 'sass:math';
2 | @use 'sass:meta';
3 |
4 | // ---------------------------------------------------------
5 | // strip-unit
6 | // Make a number unitless
7 | //
8 | // Required arguments:
9 | // `$number` String
10 | //
11 | // Example of use:
12 | // strip-unit(15px)
13 | //
14 | // @return Number
15 | // ---------------------------------------------------------
16 | @function strip-unit ($number) {
17 | @if meta.type-of($number) != 'number' {
18 | @error 'The argument $number: `#{$number}` is of incorrect type: `#{type-of($number)}`. Type of `Number` is required!';
19 | }
20 | @else if math.is-unitless($number) {
21 | @warn 'The argument $number: `#{$number}` has no unit. Unit is required!';
22 | }
23 |
24 | @return math.div($number, ($number * 0 + 1));
25 | }
26 |
--------------------------------------------------------------------------------
/src/abstracts/functions/helpers/_yiq.scss:
--------------------------------------------------------------------------------
1 | @function yiq-test ($color, $threshold) {
2 | $r: red($color);
3 | $g: green($color);
4 | $b: blue($color);
5 |
6 | $yiq: (($r * 299) + ($g * 587) + ($b * 114)) / 1000;
7 |
8 | @return if($yiq >= $threshold, true, false);
9 | }
10 |
11 | @function yiq ($base, $dark: $dfr-yiq-color-dark, $light: $dfr-yiq-color-light, $threshold: $dfr-yiq-threshold) {
12 | @return if(yiq-test($base, $threshold), $dark, $light);
13 | }
14 |
--------------------------------------------------------------------------------
/src/abstracts/mixins/_border-radius.scss:
--------------------------------------------------------------------------------
1 | // ---------------------------------------------------------
2 | // border-radius
3 | // Set predefined or a custom radius on an element
4 | //
5 | // Required arguments:
6 | // `$value` String/Number
7 | //
8 | // Optional arguments:
9 | // `$properties` List
10 | //
11 | // Allowed `$value`(s) as namespaces can be found at:
12 | // "abstracts/iterators/border-radius.scss" @ $dfr-borderRadius
13 | //
14 | // Examples of use:
15 | // @include border-radius(5px)
16 | // @include border-radius('xs')
17 | // @include border-radius('m', ('top'))
18 | // @include border-radius('xl', ('top-left', 'bottom-right'))
19 | //
20 | // *Attention*
21 | // Improper use of this mixin can output duplicate radius
22 | // For example, if you use $properties as ('top', 'top-left')
23 | // Since 'top' means top-right and top-left, it would output:
24 | // top-right, top-left, top-left
25 | // ---------------------------------------------------------
26 | @mixin border-radius ($value, $properties: ()) {
27 | @if type-of($value) == 'string' {
28 | $value: get('border.radius.#{$value}');
29 | }
30 |
31 | @if type-of($value) == 'number' and unit($value) != '%' {
32 | $value: convert-unit($value, 'rem');
33 | }
34 |
35 | $_properties: ();
36 |
37 | @each $property in $properties {
38 | @if $property == 'top' or $property == 'bottom' {
39 | $_properties: join($_properties, ('#{$property}-right', '#{$property}-left'));
40 | }
41 | @else if $property == 'left' or $property == 'right' {
42 | $_properties: join($_properties, ('top-#{$property}', 'bottom-#{$property}'));
43 | }
44 | @else {
45 | $_properties: join($_properties, $property);
46 | }
47 | }
48 |
49 | @if length($_properties) > 0 {
50 | @each $_property in $_properties {
51 | border-#{$_property}-radius: $value;
52 | }
53 | }
54 | @else {
55 | border-radius: $value;
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/src/abstracts/mixins/_color.scss:
--------------------------------------------------------------------------------
1 | // ---------------------------------------------------------
2 | // color
3 | // Set predefined background and text color
4 | //
5 | // Required arguments:
6 | // `$namespace` String
7 | //
8 | // Allowed `$value`(s) as namespaces can be found at:
9 | // "abstracts/config/color.scss"
10 | //
11 | // Examples of use:
12 | // @include color('almost-dark')
13 | // ---------------------------------------------------------
14 | @mixin color ($namespace) {
15 | $color: get('color.#{$namespace}');
16 |
17 | background-color: $color;
18 | color: yiq($color);
19 | }
20 |
--------------------------------------------------------------------------------
/src/abstracts/mixins/_font-face.scss:
--------------------------------------------------------------------------------
1 | // ---------------------------------------------------------
2 | // font-face
3 | // Improved and simplified use of `@font-face`(s)
4 | //
5 | // Required arguments:
6 | // `$family` String
7 | // `$name` String
8 | // `$weight` String
9 | // `$style` String
10 | // `$types` List
11 | // `$dir` String
12 | // `$path` String *predefined*
13 | //
14 | // Example of use:
15 | // @include font-face('Myriad Pro', 'Myriad-Pro-Light', 300, 'normal', 'myriad-pro')
16 | // ---------------------------------------------------------
17 | @mixin font-face ($family, $name, $weight, $style, $dir, $types: ('woff2', 'woff'), $path: $dfr-font-path) {
18 | $path: if(
19 | str-slice($path, -1) == '/',
20 | str-slice($path, 0, -2),
21 | $path
22 | );
23 |
24 | $path: '#{$path}/#{$dir}/#{$name}';
25 | $src: null;
26 |
27 | @each $type in $types {
28 | // stylelint-disable function-url-quotes
29 | $src: append($src, url(quote($path + '.' + $type)) format(quote($type)), comma);
30 | // stylelint-enable function-url-quotes
31 | }
32 |
33 | @font-face {
34 | font: {
35 | family: quote($family);
36 | weight: $weight;
37 | style: $style;
38 | }
39 |
40 | src: $src;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/abstracts/mixins/_grid-generator.scss:
--------------------------------------------------------------------------------
1 | // ---------------------------------------------------------
2 | // grid-generator
3 | // Helps to generate the grid easier and cleaner
4 | //
5 | // Required arguments:
6 | // `$namespace` String
7 | // `$number` Number
8 | //
9 | // Allowed `$namespace`(s) can be found at:
10 | // "abstracts/variables/breakpoints.scss" @ $dfr-media-breakpoints
11 | //
12 | // Example of use:
13 | // @include grid-generator('xs', 1)
14 | // ---------------------------------------------------------
15 | @mixin grid-generator ($namespace, $number) {
16 | $dfr-grid-formula: grid-calc($number);
17 |
18 | $suffix: if(
19 | $namespace == 'xs',
20 | $number,
21 | #{$namespace}-#{$number}
22 | );
23 |
24 | .column {
25 | &.is-#{$suffix} {
26 | flex: {
27 | grow: 0;
28 | shrink: 0;
29 | basis: $dfr-grid-formula;
30 | }
31 | }
32 | }
33 |
34 | .has-offset {
35 | &-#{$suffix} {
36 | margin-left: $dfr-grid-formula;
37 | }
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/abstracts/mixins/_media-queries.scss:
--------------------------------------------------------------------------------
1 | // ---------------------------------------------------------
2 | // media-min
3 | // Simplifies the use of `@media` queries
4 | //
5 | // Required arguments:
6 | // `$namespace` String
7 | //
8 | // Allowed `$namespace`(s) can be found at:
9 | // "abstracts/config/breakpoint.scss"
10 | //
11 | // Example of use:
12 | // @include media-min('xs') { ... }
13 | // ---------------------------------------------------------
14 | @mixin media-min ($namespace) {
15 | @media (min-width: convert-unit(get('breakpoint.#{$namespace}'), 'em')) {
16 | @content;
17 | }
18 | }
19 |
20 | // ---------------------------------------------------------
21 | // media-max
22 | // Simplifies the use of `@media` queries
23 | //
24 | // Required arguments:
25 | // `$namespace` String
26 | //
27 | // Allowed `$namespace`(s) can be found at:
28 | // "abstracts/config/breakpoint.scss" @ $dfr-breakpoint
29 | //
30 | // Example of use:
31 | // @include media-max('xs') { ... }
32 | // ---------------------------------------------------------
33 | @mixin media-max ($namespace) {
34 | @media (max-width: convert-unit(get('breakpoints.#{$namespace}') - 1, 'em')) {
35 | @content;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/abstracts/mixins/_pseudo-states.scss:
--------------------------------------------------------------------------------
1 | // ---------------------------------------------------------
2 | // not
3 | // The ability to list more than one selector
4 | //
5 | // Required arguments:
6 | // `$rules...`
7 | //
8 | // Examples of use:
9 | // .el { @include not('.active') { ... } }
10 | // ---------------------------------------------------------
11 | @mixin not ($rules...) {
12 | $not-rules: '';
13 |
14 | @each $rule in $rules {
15 | $not-rules: $not-rules + ':not(#{$rule})';
16 | }
17 |
18 | {$not-rules} {
19 | @content;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/abstracts/mixins/_spacing.scss:
--------------------------------------------------------------------------------
1 | // ---------------------------------------------------------
2 | // margin
3 | // Set predefined margin on an element
4 | //
5 | // Required arguments:
6 | // `$namespace` String
7 | // `$properties` List
8 | //
9 | // Allowed `$namespace`(s) can be found at:
10 | // "abstracts/config/_spacing.scss" @ $dfr-spacing
11 | //
12 | // Allowed `$sides`:
13 | // 'top', 'right', 'bottom', 'left', 'x', 'y'
14 | //
15 | // Example of use:
16 | // @include margin('xs', 'x')
17 | // @include margin('xs', ('bottom', 'left'))
18 | // @include margin('xs', ('y', 'left'))
19 | //
20 | // *Attention*
21 | // Improper use of this mixin can output duplicate margin
22 | // For example, if you use $sides as ('x', 'left')
23 | // Since 'x' means right and left, it would output:
24 | // margin-right, margin-left, margin-left
25 | // ---------------------------------------------------------
26 | @mixin margin ($namespace, $properties: (''), $type: 'default') {
27 | @include spacing($namespace, $properties, $type, 'margin');
28 | }
29 |
30 | // ---------------------------------------------------------
31 | // padding
32 | // Set predefined padding on an element
33 | //
34 | // Required arguments:
35 | // `$namespace` String
36 | // `$properties` List
37 | //
38 | // Allowed `$namespace`(s) can be found at:
39 | // "abstracts/variables/_global.scss" @ $dfr-spacing
40 | //
41 | // Allowed `$sides`:
42 | // 'top', 'right', 'bottom', 'left', 'x', 'y'
43 | //
44 | // Examples of use:
45 | // @include padding('xs', 'x')
46 | // @include padding('xs', ('bottom', 'left'))
47 | // @include padding('xs', ('y', 'left'))
48 | //
49 | // *Attention*
50 | // Improper use of this mixin can output duplicate padding
51 | // For example, if you use $sides as ('x', 'left')
52 | // Since 'x' means right and left, it would output:
53 | // padding-right, padding-left, padding-left
54 | // ---------------------------------------------------------
55 | @mixin padding ($namespace, $properties: (''), $type: 'default') {
56 | @include spacing($namespace, $properties, $type, 'padding');
57 | }
58 |
59 | // ---------------------------------------------------------
60 | // spacing
61 | // Used in helper `@mixin's` (margin & padding)
62 | // ---------------------------------------------------------
63 | @mixin spacing ($namespace, $sides, $type, $property) {
64 | $orientations: (
65 | 'x': ('right', 'left'),
66 | 'y': ('top', 'bottom')
67 | );
68 | $map: get('spacing.#{$type}');
69 | $typeCheck: type-of($namespace) == 'string' and $namespace != 'auto' and $namespace != 'unset';
70 | $size: $namespace; // instead of null, maybe it's a zero which should be unitless
71 |
72 | @if type-of($namespace) == 'number' and not unitless($namespace) {
73 | $size: convert-unit($namespace, 'rem');
74 | }
75 | @else if $namespace == 'auto' or $namespace == 'unset' {
76 | $size: unquote($namespace);
77 | }
78 |
79 | @each $side in $sides {
80 | @if $side == 'x' or $side == 'y' {
81 | $axis: map-get($orientations, $side);
82 |
83 | @if $typeCheck {
84 | $size: convert-unit(get('#{$namespace}.#{$side}', $map), 'rem');
85 | }
86 |
87 | @for $i from 1 through length($axis) {
88 | #{$property}-#{nth($axis, $i)}: $size;
89 | }
90 | }
91 | @else if index(map-get($orientations, 'x'), $side) != null {
92 | @if $typeCheck {
93 | $size: convert-unit(get('#{$namespace}.x', $map), 'rem');
94 | }
95 |
96 | #{$property}-#{$side}: $size;
97 | }
98 | @else if index(map-get($orientations, 'y'), $side) != null {
99 | @if $typeCheck {
100 | $size: convert-unit(get('#{$namespace}.y', $map), 'rem');
101 | }
102 |
103 | #{$property}-#{$side}: $size;
104 | }
105 | @else {
106 | @if $typeCheck {
107 | $sizeY: convert-unit(get('#{$namespace}.y', $map), 'rem');
108 | $sizeX: convert-unit(get('#{$namespace}.x', $map), 'rem');
109 |
110 | #{$property}: if($sizeY == $sizeX, $sizeY, $sizeY $sizeX);
111 | }
112 | @else {
113 | #{$property}: $size;
114 | }
115 | }
116 | }
117 | }
118 |
--------------------------------------------------------------------------------
/src/abstracts/mixins/helpers/_button-sizes.scss:
--------------------------------------------------------------------------------
1 | @mixin button-sizes ($sizes) {
2 | @each $key, $value in $sizes {
3 | @if $key != 'm' {
4 | &.is-#{$key} {
5 | @include padding($key, 'y', 'button');
6 | @include padding($key, 'x', 'button');
7 |
8 | font-size: convert-unit(get('font.size.#{$key}'), 'rem');
9 | }
10 | }
11 | }
12 |
13 | &.is-full {
14 | width: 100%;
15 | display: block;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/src/abstracts/mixins/helpers/_focus.scss:
--------------------------------------------------------------------------------
1 | @mixin focus {
2 | &:focus {
3 | outline: 0;
4 | box-shadow: 0 0 0 2px rgba(get('color.medium'), .4);
5 | z-index: 1;
6 | }
7 | }
8 |
9 | @mixin action-focus {
10 | &:focus ~ .action-label::before {
11 | box-shadow: 0 0 0 2px rgba(get('color.medium'), .4);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/src/abstracts/mixins/helpers/_input-sizes.scss:
--------------------------------------------------------------------------------
1 | @mixin input-sizes ($sizes) {
2 | @each $key, $value in $sizes {
3 | @if $key != 'm' {
4 | &.is-#{$key} {
5 | @include padding($key, 'y', 'button');
6 | @include padding($key, 'x', 'button');
7 |
8 | font-size: convert-unit(get('font.size.#{$key}'), 'rem');
9 | }
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/base/_@reset.scss:
--------------------------------------------------------------------------------
1 | *,
2 | *::before,
3 | *::after {
4 | box-sizing: border-box;
5 | }
6 |
7 | :root {
8 | font-size: $dfr--root-fontSize-small;
9 |
10 | @include media-min('l') {
11 | font-size: $dfr--root-fontSize-large;
12 | }
13 | }
14 |
15 | body {
16 | margin: 0;
17 | line-height: $dfr--base-lineHeight;
18 | font: {
19 | size: $dfr--base-fontSize;
20 | weight: get('font.weight');
21 | family: get('font.family.sans-serif');
22 | }
23 |
24 | color: get('color.almost-dark');
25 | }
26 |
27 | a {
28 | text-decoration: none;
29 | }
30 |
31 | hr {
32 | border: none;
33 |
34 | border: {
35 | top-width: get('border.width');
36 | top-style: get('border.style');
37 | top-color: get('border.color');
38 | }
39 |
40 | @include margin('xl', 'y');
41 | }
42 |
43 | ul,
44 | ol {
45 | @include margin(0, 'y');
46 | @include padding('l', 'left');
47 | }
48 |
49 | pre,
50 | code,
51 | kbd {
52 | font: {
53 | family: get('font.family.mono');
54 | size: 1rem;
55 | }
56 | }
57 |
58 | pre {
59 | @include margin(0, 'y');
60 | }
61 |
62 | img {
63 | vertical-align: middle;
64 | }
65 |
66 | p {
67 | @include margin(0, 'y');
68 | }
69 |
70 | // h1 to h6
71 | %dfr-headings-reset {
72 | @include margin(0, 'y');
73 |
74 | font-weight: 600;
75 | }
76 |
77 | @for $i from 1 through 6 {
78 | h#{$i} {
79 | @extend %dfr-headings-reset;
80 | }
81 | }
82 |
83 | small {
84 | font-size: 80%;
85 | }
86 |
87 | iframe {
88 | border: none;
89 | }
90 |
91 | table {
92 | border-collapse: collapse;
93 | }
94 |
95 | textarea {
96 | resize: none;
97 | }
98 |
--------------------------------------------------------------------------------
/src/base/_animations.scss:
--------------------------------------------------------------------------------
1 | @keyframes dfr-spin {
2 | from {
3 | transform: translate(-50%, -50%) rotate(0deg);
4 | }
5 |
6 | to {
7 | transform: translate(-50%, -50%) rotate(360deg);
8 | }
9 | }
10 |
11 | @keyframes dfr-slide {
12 | from {
13 | opacity: 0;
14 | transform: translateY(-50%);
15 | }
16 |
17 | to {
18 | opacity: 1;
19 | transform: translateY(0);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/src/base/_container.scss:
--------------------------------------------------------------------------------
1 | %dfr-container-common {
2 | padding-right: convert-unit($dfr-grid-gutter, 'rem');
3 | padding-left: convert-unit($dfr-grid-gutter, 'rem');
4 | }
5 |
6 | .container {
7 | @extend %dfr-container-common;
8 |
9 | @include margin(auto, 'x');
10 |
11 | @each $namespace, $size in get('container') {
12 | @include media-min($namespace) {
13 | max-width: convert-unit($size, 'rem');
14 | }
15 | }
16 |
17 | &-fluid {
18 | @extend %dfr-container-common;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/src/base/_grid.scss:
--------------------------------------------------------------------------------
1 | // Use predefined grid gutter and convert it to `rem` unit
2 | $dfr-grid-gutter-rem: convert-unit($dfr-grid-gutter, 'rem');
3 |
4 | .columns {
5 | display: flex;
6 | flex-wrap: wrap;
7 |
8 | &:not(.are-gapless) {
9 | margin: {
10 | right: -$dfr-grid-gutter-rem;
11 | left: -$dfr-grid-gutter-rem;
12 | }
13 | }
14 |
15 | &.are-reversed {
16 | flex-direction: row-reverse;
17 | }
18 |
19 | &.are-gapless {
20 | .column {
21 | // stylelint-disable length-zero-no-unit
22 | @include padding(0px, 'x');
23 | // stylelint-enable length-zero-no-unit
24 | }
25 | }
26 |
27 | &.are-at-start {
28 | justify-content: flex-start;
29 | }
30 |
31 | &.are-at-end {
32 | justify-content: flex-end;
33 | }
34 |
35 | &.are-at-center {
36 | justify-content: center;
37 | }
38 | }
39 |
40 | .column {
41 | width: 100%;
42 | min-height: 1px;
43 | padding: $dfr-grid-gutter-rem;
44 |
45 | &:not([class*='is-']) {
46 | flex: {
47 | basis: 0;
48 | grow: 1;
49 | }
50 | }
51 | }
52 |
53 | @each $namespace, $size in get('breakpoint') {
54 | @if type-of($size) == 'number' {
55 | @include media-min($namespace) {
56 | @for $i from 1 through $dfr-grid-columns {
57 | @include grid-generator($namespace, $i);
58 | }
59 |
60 | .column {
61 | &.is-#{$namespace} {
62 | flex: {
63 | basis: 0;
64 | grow: 1;
65 | }
66 |
67 | &-smart {
68 | width: auto;
69 | flex: {
70 | grow: 0;
71 | shrink: 0;
72 | basis: auto;
73 | }
74 | }
75 | }
76 | }
77 | }
78 | }
79 | @else {
80 | .column {
81 | &.is-smart {
82 | width: auto;
83 | flex: {
84 | grow: 0;
85 | shrink: 0;
86 | basis: auto;
87 | }
88 | }
89 | }
90 |
91 | @for $i from 1 through $dfr-grid-columns {
92 | @include grid-generator($namespace, $i);
93 | }
94 | }
95 | }
96 |
--------------------------------------------------------------------------------
/src/base/_helpers.scss:
--------------------------------------------------------------------------------
1 | .group {
2 | @include margin('m', 'bottom');
3 |
4 | &.has-spacing {
5 | .group-items > :not(:last-child) {
6 | @include margin('m', 'right');
7 | }
8 | }
9 |
10 | &-items {
11 | position: relative;
12 | display: flex;
13 | align-items: center;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/src/base/_print.scss:
--------------------------------------------------------------------------------
1 | //stylelint-disable declaration-no-important, selector-no-qualifying-type
2 | @media print {
3 | *,
4 | *::before,
5 | *::after {
6 | background-color: transparent !important;
7 | color: #000 !important;
8 | box-shadow: none !important;
9 | text-shadow: none !important;
10 | }
11 |
12 | a,
13 | a:visited {
14 | text-decoration: underline;
15 | }
16 |
17 | a[href]::after {
18 | content: ' (' attr(href) ')';
19 | }
20 |
21 | abbr[title]::after {
22 | content: ' (' attr(title) ')';
23 | }
24 |
25 | a[href^='#']::after,
26 | a[href^='javascript:']::after {
27 | content: '';
28 | }
29 |
30 | pre {
31 | white-space: pre-wrap !important;
32 | }
33 |
34 | pre,
35 | blockquote {
36 | border: 1px solid #999;
37 | page-break-inside: avoid;
38 | }
39 |
40 | thead {
41 | display: table-header-group;
42 | }
43 |
44 | tr,
45 | img {
46 | page-break-inside: avoid;
47 | }
48 |
49 | p,
50 | h2,
51 | h3 {
52 | orphans: 3;
53 | widows: 3;
54 | }
55 |
56 | h2,
57 | h3 {
58 | page-break-after: avoid;
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/src/base/_typography.scss:
--------------------------------------------------------------------------------
1 | // stylelint-disable font-weight-notation
2 | %dfr-headings-common {
3 | font-weight: get('heading.font.weight');
4 | line-height: get('heading.line-height');
5 | margin-bottom: convert-unit(get('heading.margin.bottom'), 'rem');
6 | }
7 | // stylelint-enable font-weight-notation
8 |
9 | @each $size in get('heading.font.size') {
10 | $index: index(get('heading.font.size'), $size);
11 |
12 | .title-#{$index} {
13 | @extend %dfr-headings-common;
14 |
15 | font-size: convert-unit($size, 'rem');
16 | }
17 | }
18 |
19 | blockquote {
20 | @include padding('s');
21 |
22 | margin-left: 0;
23 | border-left: {
24 | width: get('border.width');
25 | style: get('border.style');
26 | color: get('border.color');
27 | }
28 |
29 | p:last-child {
30 | margin-bottom: 0;
31 | }
32 |
33 | cite {
34 | color: get('color.medium');
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/src/components/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/dvlden/differs-sass/af898798ce5f0ee85c27b5b120f8fcbfcf3acade/src/components/.gitkeep
--------------------------------------------------------------------------------
/src/components/_action.scss:
--------------------------------------------------------------------------------
1 | .action {
2 | position: relative;
3 | display: flex;
4 | align-items: center;
5 |
6 | @include padding('l', 'left');
7 |
8 | &.as-switch {
9 | padding-left: 50px;
10 |
11 | .action-element {
12 | &:checked ~ .action-label {
13 | &::before {
14 | background-color: get('color.light');
15 | }
16 |
17 | &::after {
18 | background-color: get('color.dark');
19 | transform: translateX(27px) translateY(-50%);
20 | }
21 | }
22 | }
23 |
24 | .action-label {
25 | &::before {
26 | width: 40px;
27 | left: -50px;
28 | }
29 |
30 | &::after {
31 | background-color: get('color.almost-light');
32 | height: 14px;
33 | width: 14px;
34 | left: -54px;
35 | }
36 | }
37 | }
38 |
39 | &-element {
40 | position: absolute;
41 | top: 0;
42 | right: 0;
43 | z-index: -1;
44 | opacity: 0;
45 |
46 | @include action-focus;
47 |
48 | &:checked ~ .action-label {
49 | &::before {
50 | background-color: get('color.light');
51 | }
52 |
53 | &::after {
54 | background-color: get('color.dark');
55 | }
56 | }
57 |
58 | &[type='radio'] + .action-label {
59 | &::before,
60 | &::after {
61 | border-radius: 50%;
62 | }
63 | }
64 |
65 | &:disabled + .action-label {
66 | opacity: .6;
67 | }
68 | }
69 |
70 | &-label {
71 | position: relative;
72 | cursor: pointer;
73 |
74 | &::before,
75 | &::after {
76 | content: '';
77 | position: absolute;
78 | top: 50%;
79 | left: -#{get('spacing.default.l.x')};
80 | display: block;
81 | }
82 |
83 | &::before {
84 | width: 20px;
85 | height: 20px;
86 | background-color: get('color.light');
87 | transform: translate(0%, -50%);
88 | transition: background-color .1s ease-in-out;
89 | }
90 |
91 | &::after {
92 | width: 10px;
93 | height: 10px;
94 | transform: translate(50%, -50%);
95 | transition: transform .2s ease-in-out, background-color .1s ease-in-out;
96 | }
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/src/components/_button.scss:
--------------------------------------------------------------------------------
1 | .button {
2 | background-color: transparent;
3 | display: inline-block;
4 | line-height: $dfr--base-lineHeight;
5 | text-align: center;
6 | vertical-align: middle;
7 | cursor: pointer;
8 | user-select: none;
9 | font: {
10 | family: inherit;
11 | weight: get('font.weight');
12 | size: convert-unit($dfr--base-fontSize, 'rem');
13 | }
14 | border: {
15 | width: get('border.width');
16 | style: get('border.style');
17 | color: transparent;
18 | } // without this, filled button would look weird - next to an outlined button
19 |
20 | @include padding('m', 'y', 'button');
21 | @include padding('m', 'x', 'button');
22 | @include focus;
23 |
24 | &:disabled,
25 | &.is-disabled {
26 | opacity: .5;
27 | cursor: not-allowed;
28 | box-shadow: none;
29 | }
30 |
31 | &.is-disabled,
32 | &.is-loading {
33 | pointer-events: none;
34 | }
35 |
36 | &.is-light {
37 | @include color('light');
38 |
39 | @include not(':disabled') {
40 | &:hover {
41 | @include color('almost-light');
42 | }
43 |
44 | &:active {
45 | @include color('almost-dark');
46 | }
47 | }
48 |
49 | &.is-loading {
50 | &::after {
51 | border: {
52 | top-color: get('color.almost-dark');
53 | left-color: get('color.almost-dark');
54 | }
55 | }
56 |
57 | @include not(':disabled') {
58 | &:hover {
59 | &::after {
60 | border: {
61 | top-color: get('color.almost-dark');
62 | left-color: get('color.almost-dark');
63 | }
64 | }
65 | }
66 |
67 | &:active {
68 | &::after {
69 | border: {
70 | top-color: get('color.light');
71 | left-color: get('color.light');
72 | }
73 | }
74 | }
75 | }
76 | }
77 |
78 | &.is-outlined {
79 | color: get('color.light');
80 | border-color: get('color.light');
81 |
82 | @include not(':disabled') {
83 | &:hover {
84 | @include color('light');
85 |
86 | border-color: get('color.light');
87 | }
88 |
89 | &:active {
90 | @include color('almost-light');
91 |
92 | border-color: get('color.almost-light');
93 | }
94 | }
95 |
96 | &.is-loading {
97 | &::after {
98 | border: {
99 | top-color: get('color.light');
100 | left-color: get('color.light');
101 | }
102 | }
103 |
104 | @include not(':disabled') {
105 | &:hover {
106 | &::after {
107 | border: {
108 | top-color: get('color.medium');
109 | left-color: get('color.medium');
110 | }
111 | }
112 | }
113 |
114 | &:active {
115 | &::after {
116 | border: {
117 | top-color: get('color.dark');
118 | left-color: get('color.dark');
119 | }
120 | }
121 | }
122 | }
123 | }
124 | }
125 |
126 | &.as-close {
127 | &::before,
128 | &::after {
129 | background-color: get('color.dark');
130 | }
131 |
132 | &:active {
133 | &::before,
134 | &::after {
135 | background-color: get('color.light');
136 | }
137 | }
138 | }
139 | }
140 |
141 | &.is-dark {
142 | @include color('dark');
143 |
144 | @include not(':disabled') {
145 | &:hover {
146 | @include color('almost-dark');
147 | }
148 |
149 | &:active {
150 | @include color('almost-light');
151 | }
152 | }
153 |
154 | &.is-loading {
155 | &::after {
156 | border: {
157 | top-color: get('color.almost-light');
158 | left-color: get('color.almost-light');
159 | }
160 | }
161 |
162 | @include not(':disabled') {
163 | &:hover {
164 | &::after {
165 | border: {
166 | top-color: get('color.almost-light');
167 | left-color: get('color.almost-light');
168 | }
169 | }
170 | }
171 |
172 | &:active {
173 | &::after {
174 | border: {
175 | top-color: get('color.dark');
176 | left-color: get('color.dark');
177 | }
178 | }
179 | }
180 | }
181 | }
182 |
183 | &.is-outlined {
184 | color: get('color.dark');
185 | border-color: get('color.dark');
186 |
187 | @include not(':disabled') {
188 | &:hover {
189 | @include color('dark');
190 |
191 | border-color: get('color.dark');
192 | }
193 |
194 | &:active {
195 | @include color('almost-dark');
196 |
197 | border-color: get('color.almost-dark');
198 | }
199 | }
200 |
201 | &.is-loading {
202 | &::after {
203 | border: {
204 | top-color: get('color.dark');
205 | left-color: get('color.dark');
206 | }
207 | }
208 |
209 | @include not(':disabled') {
210 | &:hover {
211 | &::after {
212 | border: {
213 | top-color: get('color.medium');
214 | left-color: get('color.medium');
215 | }
216 | }
217 | }
218 |
219 | &:active {
220 | &::after {
221 | border: {
222 | top-color: get('color.light');
223 | left-color: get('color.light');
224 | }
225 | }
226 | }
227 | }
228 | }
229 | }
230 |
231 | &.as-close {
232 | &::before,
233 | &::after {
234 | background-color: get('color.light');
235 | }
236 |
237 | &:active {
238 | &::before,
239 | &::after {
240 | background-color: get('color.dark');
241 | }
242 | }
243 | }
244 | }
245 |
246 | &.is-outlined {
247 | background-color: transparent;
248 | }
249 |
250 | &.is-loading {
251 | position: relative;
252 | color: transparent !important; /* stylelint-disable-line declaration-no-important */
253 |
254 | &::after {
255 | content: '';
256 | position: absolute;
257 | top: 50%;
258 | left: 50%;
259 | border: {
260 | width: 2px;
261 | style: solid;
262 | right-color: transparent;
263 | bottom-color: transparent;
264 | }
265 |
266 | width: 1em;
267 | height: 1em;
268 | transform: translate(-50%, -50%);
269 | animation: dfr-spin .8s ease infinite;
270 |
271 | @include border-radius('f');
272 | }
273 | }
274 |
275 | @include button-sizes(get('spacing.button'));
276 |
277 | &.as-close {
278 | background-color: transparent;
279 | position: relative;
280 | font-weight: 600;
281 | padding: convert-unit(get('spacing.button.m.x'), 'rem');
282 |
283 | @include border-radius('f');
284 |
285 | &::before,
286 | &::after {
287 | content: '';
288 | position: absolute;
289 | top: 50%;
290 | left: 50%;
291 | width: 2px;
292 | height: 50%;
293 | background-color: get('color.almost-dark');
294 |
295 | @include border-radius('xs');
296 | }
297 |
298 | &::before {
299 | transform: translate(-50%, -50%) rotate(45deg);
300 | }
301 |
302 | &::after {
303 | transform: translate(-50%, -50%) rotate(-45deg);
304 | }
305 |
306 | &.is-xs {
307 | padding: convert-unit(get('spacing.button.xs.x'), 'rem');
308 | }
309 |
310 | &.is-s {
311 | padding: convert-unit(get('spacing.button.s.x'), 'rem');
312 | }
313 |
314 | &.is-l {
315 | padding: convert-unit(get('spacing.button.l.x'), 'rem');
316 | }
317 |
318 | &.is-xl {
319 | padding: convert-unit(get('spacing.button.xl.x'), 'rem');
320 | }
321 | }
322 | }
323 |
--------------------------------------------------------------------------------
/src/components/_input.scss:
--------------------------------------------------------------------------------
1 | .input {
2 | display: block;
3 | width: 100%;
4 | background-color: transparent;
5 | line-height: $dfr--base-lineHeight;
6 | font: {
7 | family: inherit;
8 | weight: get('font.weight');
9 | size: convert-unit($dfr--base-fontSize, 'rem');
10 | }
11 | border: {
12 | width: get('border.width');
13 | style: get('border.style');
14 | color: transparent;
15 | }
16 |
17 | @include padding('m', 'y', 'button');
18 | @include padding('m', 'x', 'button');
19 | @include focus;
20 |
21 | &::placeholder {
22 | color: get('color.medium');
23 | }
24 |
25 | &:disabled,
26 | &[readonly] {
27 | opacity: .6;
28 | }
29 |
30 | @include input-sizes(get('spacing.button'));
31 |
32 | &.is-light {
33 | @include color('light');
34 |
35 | &.is-outlined {
36 | color: get('color.light');
37 | border-color: get('color.light');
38 |
39 | &::placeholder {
40 | color: get('color.almost-light');
41 | }
42 | }
43 | }
44 |
45 | &.is-dark {
46 | @include color('dark');
47 |
48 | &.is-outlined {
49 | color: get('color.dark');
50 | border-color: get('color.dark');
51 |
52 | &::placeholder {
53 | color: get('color.almost-dark');
54 | }
55 | }
56 | }
57 |
58 | &.is-outlined {
59 | background-color: transparent;
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/src/differs.scss:
--------------------------------------------------------------------------------
1 | // Core
2 | @forward 'abstracts/variables';
3 | @forward 'abstracts/helper-functions';
4 | @forward 'abstracts/config';
5 | @forward 'abstracts/core-functions';
6 | @forward 'abstracts/mixins';
7 | @forward 'abstracts/helper-mixins';
8 |
9 | // Base
10 | @forward 'base/@reset';
11 | @forward 'base/animations';
12 | @forward 'base/container';
13 | @forward 'base/grid';
14 | @forward 'base/helpers';
15 | @forward 'base/print';
16 | @forward 'base/typography';
17 |
18 | // Components
19 | @forward 'components/action';
20 | @forward 'components/button';
21 | @forward 'components/input';
22 |
--------------------------------------------------------------------------------
/stylelint.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: ['stylelint-scss'],
3 | rules: {
4 | 'at-rule-empty-line-before': ['always', {
5 | except: [
6 | 'blockless-after-same-name-blockless',
7 | 'first-nested'
8 | ],
9 | ignore: ['after-comment'],
10 | ignoreAtRules: ['else']
11 | }],
12 | 'at-rule-no-vendor-prefix': true,
13 | 'block-no-empty': true,
14 | 'color-hex-length': 'short',
15 | 'color-named': 'never',
16 | 'color-no-invalid-hex': true,
17 | 'comment-empty-line-before': ['always', {
18 | except: ['first-nested'],
19 | ignore: ['stylelint-commands'],
20 | }],
21 | 'comment-no-empty': true,
22 | 'comment-whitespace-inside': 'always',
23 | 'custom-property-empty-line-before': ['always', {
24 | except: [
25 | 'after-custom-property',
26 | 'first-nested',
27 | ],
28 | ignore: [
29 | 'after-comment',
30 | 'inside-single-line-block',
31 | ],
32 | }],
33 | 'declaration-block-no-duplicate-properties': [
34 | true,
35 | {
36 | ignore: ['consecutive-duplicates-with-different-values']
37 | }
38 | ],
39 | 'declaration-block-no-shorthand-property-overrides': true,
40 | 'declaration-block-single-line-max-declarations': 1,
41 | 'declaration-empty-line-before': ['always', {
42 | except: [
43 | 'after-declaration',
44 | 'first-nested',
45 | ],
46 | ignore: [
47 | 'after-comment',
48 | 'inside-single-line-block',
49 | ],
50 | }],
51 | 'declaration-no-important': true,
52 | // 'declaration-property-value-blacklist': {
53 | // '/^border-?/': ['none']
54 | // },
55 | 'font-family-no-duplicate-names': true,
56 | 'font-family-no-missing-generic-family-keyword': true,
57 | 'font-family-name-quotes': 'always-where-recommended',
58 | 'font-weight-notation': 'numeric',
59 | 'function-calc-no-unspaced-operator': true,
60 | 'function-linear-gradient-no-nonstandard-direction': true,
61 | 'function-name-case': 'lower',
62 | 'function-url-quotes': 'always',
63 | 'keyframe-declaration-no-important': true,
64 | 'length-zero-no-unit': true,
65 | 'max-nesting-depth': [4, {
66 | 'ignoreAtRules': [
67 | 'media',
68 | 'supports',
69 | 'include'
70 | ]
71 | }],
72 | 'media-feature-name-no-unknown': true,
73 | 'media-feature-name-no-vendor-prefix': true,
74 | // 'no-descending-specificity': true,
75 | 'no-duplicate-at-import-rules': true,
76 | 'no-duplicate-selectors': true,
77 | 'no-empty-source': true,
78 | 'no-invalid-double-slash-comments': true,
79 | 'property-no-unknown': true,
80 | 'property-no-vendor-prefix': true,
81 | 'rule-empty-line-before': ['always-multi-line', {
82 | except: ['first-nested'],
83 | ignore: ['after-comment'],
84 | }],
85 | 'scss/at-extend-no-missing-placeholder': true,
86 | 'scss/at-function-pattern': ['^[a-z]+(-[a-z]+)*$', {
87 | 'message': 'Function should be written in lowercase with hyphens'
88 | }],
89 | 'scss/at-import-no-partial-leading-underscore': true,
90 | 'scss/at-import-partial-extension-blacklist': ['scss'],
91 | 'scss/at-mixin-pattern': ['^[a-z]+(-[a-z]+)*$', {
92 | 'message': 'Mixin should be written in lowercase with hyphens'
93 | }],
94 | 'scss/at-rule-no-unknown': true,
95 | 'scss/dollar-variable-colon-space-after': 'at-least-one-space',
96 | 'scss/dollar-variable-colon-space-before': 'never',
97 | 'scss/dollar-variable-pattern': ['^dfr(?:--(?:base|root|[xy]))?(?:-(?!base\b|root\b|[xy]\b)[a-z]+(?:[A-Z][a-z]+)*)+$', {
98 | 'message': 'Variable must be written properly... It is predefined pattern!',
99 | 'ignore': 'local'
100 | }],
101 | 'scss/percent-placeholder-pattern': ['^[a-z]+(-[a-z]+)*$', {
102 | 'message': 'Placeholder should be written in lowercase with hyphens'
103 | }],
104 | 'scss/selector-no-redundant-nesting-selector': true,
105 | 'selector-class-pattern': ['^[a-z]+(-[a-z]+)*$', {
106 | 'message': 'Selector should be written in lowercase with hyphens'
107 | }],
108 | 'selector-attribute-quotes': 'always',
109 | 'selector-max-attribute': 1,
110 | 'selector-max-class': 4,
111 | 'selector-max-combinators': 2,
112 | 'selector-max-compound-selectors': 3,
113 | 'selector-max-id': 0,
114 | 'selector-max-universal': 1,
115 | 'selector-no-qualifying-type': true,
116 | 'selector-no-vendor-prefix': true,
117 | 'selector-pseudo-class-no-unknown': true,
118 | 'selector-pseudo-element-colon-notation': 'double',
119 | 'selector-pseudo-element-no-unknown': true,
120 | 'shorthand-property-no-redundant-values': true,
121 | 'selector-type-case': 'lower',
122 | 'selector-type-no-unknown': true,
123 | 'string-no-newline': true,
124 | 'unit-no-unknown': true,
125 | 'value-keyword-case': ['lower', {
126 | 'ignoreProperties': ['font']
127 | }],
128 | 'value-no-vendor-prefix': true
129 | }
130 | }
131 |
--------------------------------------------------------------------------------