├── .editorconfig ├── .gitattributes ├── .github ├── FUNDING.yml └── workflows │ └── build.yml ├── .gitignore ├── .npmignore ├── .nvmrc ├── .prettierignore ├── .prettierrc ├── .travis.yml ├── .whitesource ├── LICENSE ├── README.md ├── _.config.yml ├── _config.yml ├── assets ├── components │ ├── _btn.css │ └── _lists.css ├── elements │ ├── _document.css │ ├── _headings.css │ ├── _links.css │ └── _texts.css ├── generic │ ├── _form_elements.css │ ├── _reset.css │ └── _transitions.css ├── objects │ ├── _grid.css │ ├── _main.css │ ├── _shell.css │ └── _wrapper.css ├── settings │ ├── _colors.css │ ├── _text.css │ ├── _transitions.css │ └── _variables.css ├── tools │ ├── _chevron.css │ ├── _flexbox.css │ ├── _media-queries.css │ └── _mixins.css └── utilities │ ├── _align.css │ ├── _clear.css │ ├── _fullsize_background.css │ ├── _hidden.css │ ├── _preferences.css │ ├── _responsive_utilities.css │ └── _text_align.css ├── demo └── index.html ├── index.css ├── itcss.sketch ├── itcss.svg ├── package.json ├── postcss.config.js ├── renovate.json └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | end_of_line = lf 7 | indent_style = tab 8 | indent_size = 4 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | 12 | [{*.json,*.yml}] 13 | indent_style = space 14 | indent_size = 2 15 | 16 | [*.md] 17 | trim_trailing_whitespace = false 18 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | ## GITATTRIBUTES FOR WEB PROJECTS 2 | # 3 | # These settings are for any web project. 4 | # 5 | # Details per file setting: 6 | # text These files should be normalized (i.e. convert CRLF to LF). 7 | # binary These files are binary and should be left untouched. 8 | # 9 | # Note that binary is a macro for -text -diff. 10 | ###################################################################### 11 | 12 | ## AUTO-DETECT 13 | ## Handle line endings automatically for files detected as 14 | ## text and leave all files detected as binary untouched. 15 | ## This will handle all files NOT defined below. 16 | * text=auto 17 | 18 | ## SOURCE CODE 19 | *.bat text eol=crlf 20 | *.coffee text 21 | *.css text 22 | *.htm text 23 | *.html text 24 | *.inc text 25 | *.ini text 26 | *.js text 27 | *.json text 28 | *.jsx text 29 | *.less text 30 | *.od text 31 | *.onlydata text 32 | *.php text 33 | *.pl text 34 | *.py text 35 | *.rb text 36 | *.sass text 37 | *.scm text 38 | *.scss text 39 | *.sh text eol=lf 40 | *.sql text 41 | *.styl text 42 | *.tag text 43 | *.ts text 44 | *.tsx text 45 | *.xml text 46 | *.xhtml text 47 | 48 | ## DOCKER 49 | *.dockerignore text 50 | Dockerfile text 51 | 52 | ## DOCUMENTATION 53 | *.markdown text 54 | *.md text 55 | *.mdwn text 56 | *.mdown text 57 | *.mkd text 58 | *.mkdn text 59 | *.mdtxt text 60 | *.mdtext text 61 | *.txt text 62 | AUTHORS text 63 | CHANGELOG text 64 | CHANGES text 65 | CONTRIBUTING text 66 | COPYING text 67 | copyright text 68 | *COPYRIGHT* text 69 | INSTALL text 70 | license text 71 | LICENSE text 72 | NEWS text 73 | readme text 74 | *README* text 75 | TODO text 76 | 77 | ## TEMPLATES 78 | *.dot text 79 | *.ejs text 80 | *.haml text 81 | *.handlebars text 82 | *.hbs text 83 | *.hbt text 84 | *.jade text 85 | *.latte text 86 | *.mustache text 87 | *.njk text 88 | *.phtml text 89 | *.tmpl text 90 | *.tpl text 91 | *.twig text 92 | 93 | ## LINTERS 94 | .csslintrc text 95 | .eslintrc text 96 | .htmlhintrc text 97 | .jscsrc text 98 | .jshintrc text 99 | .jshintignore text 100 | .stylelintrc text 101 | 102 | ## CONFIGS 103 | *.bowerrc text 104 | *.cnf text 105 | *.conf text 106 | *.config text 107 | .browserslistrc text 108 | .editorconfig text 109 | .gitattributes text 110 | .gitconfig text 111 | .htaccess text 112 | *.npmignore text 113 | *.yaml text 114 | *.yml text 115 | browserslist text 116 | Makefile text 117 | makefile text 118 | 119 | ## HEROKU 120 | Procfile text 121 | .slugignore text 122 | 123 | ## GRAPHICS 124 | *.ai binary 125 | *.bmp binary 126 | *.eps binary 127 | *.gif binary 128 | *.ico binary 129 | *.jng binary 130 | *.jp2 binary 131 | *.jpg binary 132 | *.jpeg binary 133 | *.jpx binary 134 | *.jxr binary 135 | *.pdf binary 136 | *.png binary 137 | *.psb binary 138 | *.psd binary 139 | *.svg text 140 | *.svgz binary 141 | *.tif binary 142 | *.tiff binary 143 | *.wbmp binary 144 | *.webp binary 145 | 146 | ## AUDIO 147 | *.kar binary 148 | *.m4a binary 149 | *.mid binary 150 | *.midi binary 151 | *.mp3 binary 152 | *.ogg binary 153 | *.ra binary 154 | 155 | ## VIDEO 156 | *.3gpp binary 157 | *.3gp binary 158 | *.as binary 159 | *.asf binary 160 | *.asx binary 161 | *.fla binary 162 | *.flv binary 163 | *.m4v binary 164 | *.mng binary 165 | *.mov binary 166 | *.mp4 binary 167 | *.mpeg binary 168 | *.mpg binary 169 | *.ogv binary 170 | *.swc binary 171 | *.swf binary 172 | *.webm binary 173 | 174 | ## ARCHIVES 175 | *.7z binary 176 | *.gz binary 177 | *.jar binary 178 | *.rar binary 179 | *.tar binary 180 | *.zip binary 181 | 182 | ## FONTS 183 | *.ttf binary 184 | *.eot binary 185 | *.otf binary 186 | *.woff binary 187 | *.woff2 binary 188 | 189 | ## EXECUTABLES 190 | *.exe binary 191 | *.pyc binary 192 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [scriptex] 4 | patreon: atanas 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: scriptex 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: scriptex 10 | issuehunt: scriptex 11 | otechie: # Replace with a single Otechie username 12 | custom: ['paypal.me/scriptex', 'revolut.me/scriptex'] 13 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | 9 | strategy: 10 | matrix: 11 | node-version: [lts/*] 12 | 13 | steps: 14 | - uses: actions/checkout@v4 15 | - name: Use Node.js ${{ matrix.node-version }} 16 | uses: actions/setup-node@v4 17 | with: 18 | node-version: ${{ matrix.node-version }} 19 | - run: yarn 20 | - run: yarn deploy 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Dependency directory 9 | node_modules/ 10 | 11 | # Misc 12 | .DS_Store 13 | .DS_Store? 14 | ._* 15 | .Spotlight-V100 16 | .Trashes 17 | ehthumbs.db 18 | Thumbs.db 19 | 20 | main.css 21 | demo/*.css 22 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Dependency directory 9 | node_modules 10 | 11 | # Misc 12 | .DS_Store 13 | .DS_Store? 14 | ._* 15 | .Spotlight-V100 16 | .Trashes 17 | ehthumbs.db 18 | Thumbs.db 19 | 20 | # Config folders and files 21 | .github 22 | _config.yml 23 | _.config.yml 24 | .editorconfig 25 | .gitattributes 26 | .gitignore 27 | .nvmrc 28 | .prettierignore 29 | .prettierrc 30 | .stylelintignore 31 | .stylelintrc 32 | .travis.yml 33 | .whitesource 34 | itcss.sketch 35 | itcss.svg 36 | postcss.config.js 37 | renovate.json 38 | tsconfig.json 39 | tslint.json 40 | yarn.lock 41 | 42 | !main.css 43 | demo 44 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | lts/* 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 120, 3 | "tabWidth": 4, 4 | "useTabs": true, 5 | "semi": true, 6 | "singleQuote": true, 7 | "jsxSingleQuote": false, 8 | "trailingComma": "none", 9 | "bracketSpacing": true, 10 | "jsxBracketSameLine": false, 11 | "arrowParens": "avoid", 12 | "proseWrap": "preserve" 13 | } 14 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | sudo: false 3 | node_js: 4 | - 'lts/*' 5 | install: 6 | - yarn 7 | script: 8 | - yarn deploy 9 | -------------------------------------------------------------------------------- /.whitesource: -------------------------------------------------------------------------------- 1 | { 2 | "generalSettings": { 3 | "shouldScanRepo": true 4 | }, 5 | "checkRunSettings": { 6 | "vulnerableCheckRunConclusionLevel": "success" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018-Present Atanas Atanasov 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 | ![Inverted Triangle CSS Visualization](https://raw.githubusercontent.com/scriptex/itcss/master/itcss.svg?sanitize=true) 2 | 3 | # ITCSS 4 | 5 | [![Travis CI](https://travis-ci.com/scriptex/itcss.svg?branch=master)](https://travis-ci.com/scriptex/itcss) 6 | [![Github Build](https://github.com/scriptex/itcss/workflows/Build/badge.svg)](https://github.com/scriptex/itcss/actions?query=workflow%3ABuild) 7 | [![Codacy Badge](https://app.codacy.com/project/badge/Grade/34d3d75710534dc6a38c3584a1dcd068)](https://www.codacy.com/gh/scriptex/itcss/dashboard?utm_source=github.com&utm_medium=referral&utm_content=scriptex/itcss&utm_campaign=Badge_Grade) 8 | [![Codebeat Badge](https://codebeat.co/badges/d765a4c8-2c0e-44f2-89c3-fa364fdc14e6)](https://codebeat.co/projects/github-com-scriptex-itcss-master) 9 | [![CodeFactor Badge](https://www.codefactor.io/repository/github/scriptex/itcss/badge)](https://www.codefactor.io/repository/github/scriptex/itcss) 10 | [![DeepScan grade](https://deepscan.io/api/teams/3574/projects/5257/branches/40799/badge/grade.svg)](https://deepscan.io/dashboard#view=project&tid=3574&pid=5257&bid=40799) 11 | [![Analytics](https://ga-beacon-361907.ew.r.appspot.com/UA-83446952-1/github.com/scriptex/itcss/README.md?pixel)](https://github.com/scriptex/itcss/) 12 | 13 | > A starter boilerplate based on the [ITCSS](https://www.xfive.co/blog/itcss-scalable-maintainable-css-architecture/) (Inverted Triangle CSS) methodology. 14 | 15 | ## Visitor stats 16 | 17 | ![GitHub stars](https://img.shields.io/github/stars/scriptex/itcss?style=social) 18 | ![GitHub forks](https://img.shields.io/github/forks/scriptex/itcss?style=social) 19 | ![GitHub watchers](https://img.shields.io/github/watchers/scriptex/itcss?style=social) 20 | ![GitHub followers](https://img.shields.io/github/followers/scriptex?style=social) 21 | 22 | ## Code stats 23 | 24 | ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/scriptex/itcss) 25 | ![GitHub repo size](https://img.shields.io/github/repo-size/scriptex/itcss?style=plastic) 26 | ![GitHub language count](https://img.shields.io/github/languages/count/scriptex/itcss?style=plastic) 27 | ![GitHub top language](https://img.shields.io/github/languages/top/scriptex/itcss?style=plastic) 28 | ![GitHub last commit](https://img.shields.io/github/last-commit/scriptex/itcss?style=plastic) 29 | 30 | ## About 31 | 32 | > ITCSS is a mobile-first, responsive, battle-tested CSS framework based on the ITCSS methodology utilizing the BEM methodology. 33 | 34 | This boilerplate is intented to be used as a starting point in your application. You should use this as a foundation for your CSS and build on top of it. 35 | 36 | If you want to use the full capabilities of this boilerplate such as variables, mixins, etc., then you should include it in your PostCSS files. 37 | 38 | You should also install the required PostCSS plugins and configure your PostCSS environment following the configuration file [here](https://github.com/scriptex/itcss/blob/master/postcss.config.js) 39 | 40 | You can also use the build which is plain CSS but lacks mixins, custom media queries and other useful tools. 41 | 42 | ## Install 43 | 44 | ```sh 45 | # Via NPM 46 | npm i itcss 47 | 48 | # Via Yarn 49 | yarn add itcss 50 | ``` 51 | 52 | ## Usage 53 | 54 | If you are using a module bundler (such as Webpack, Parcel, Browserify): 55 | 56 | ```sh 57 | # In your CSS entrypoint 58 | @import 'itcss'; 59 | 60 | # Or if the above does not resolve, try 61 | @import 'itcss/index.css'; 62 | ``` 63 | 64 | There are several predefined variables which you can overwrite: 65 | 66 | ```css 67 | :root { 68 | /* Color Variables */ 69 | --color-base: #333; 70 | --color-primary: #fff; 71 | --color-secondary: #000; 72 | --color-action: #ef4c23; 73 | 74 | /* Text Variables */ 75 | --font-sans-serif: sans-serif; 76 | --font-serif: serif; 77 | --font-monospace: monospace; 78 | --font-size-base: 1rem; 79 | --line-height-base: 1.35; 80 | --font-size-h1: 2rem; 81 | --font-size-h2: 1.75rem; 82 | --font-size-h3: 1.5rem; 83 | --font-size-h4: 1.25rem; 84 | --font-size-h5: var(--font-size-base); 85 | --font-size-h6: 0.75rem; 86 | 87 | /* Transition Variables */ 88 | --timing: 0.4s; 89 | --easing: ease-in-out; 90 | 91 | /* Spacing between grid items */ 92 | $gap: 0.5rem; 93 | 94 | /* Number of columns in the grid */ 95 | $columns: 12; 96 | 97 | /* The maximum width of the shell container */ 98 | --shell-width: 75rem; 99 | 100 | /* The left and right padding of the shell container */ 101 | $shell-gap: 1rem; 102 | 103 | /* A list of responsive breakpoint names */ 104 | --breakpoints: (xs, sm, md, lg, xl); 105 | 106 | /* A list of display properties */ 107 | --displays: (block, inline, inline-block, flex, inline-flex); 108 | 109 | /* A list of text alignment properties */ 110 | --alignments: (center: center, right: right, left: left, justify: justify); 111 | } 112 | ``` 113 | 114 | **You should place the overwriting variables after the `@import` statement.** 115 | 116 | ## Supported browsers 117 | 118 | This boilerplate is using the most recent version of the CSS specification. 119 | In order to support more browsers you must use a tool such as PostCSS. 120 | The combined and built version of this boilerplate is using the [Postcss-Preset-Env](https://preset-env.cssdb.org/) in `stage: 0`. 121 | This means that you can use the most recent CSS features and be sure that they will work older browsers. 122 | 123 | **The combined and built version of this boilerplate has been tested and works in all evergreen browsers (Chrome, Firefox, Edge, Opera, Safari, Brave, Vivaldi, iOS Safari, Chrome on Android, Samsung Internet) and IE 10+.** 124 | 125 | In order to do so in your setup, please refer to the [`postcss.config.js`](https://github.com/scriptex/itcss/blob/master/postcss.config.js) file. 126 | 127 | ## Available files, selectors, variables and their usage 128 | 129 | ### Settings 130 | 131 | - `_colors.css` - contains CSS custom properties declared to the `:root` node for all colors 132 | - `_text.css` - contains CSS custom properties declared to the `:root` node for all font settings 133 | - `_transitions.css` - contains CSS custom properties declared to the `:root` node for transition duration and timing function 134 | - `_variables.css` - contains CSS custom properties declared to the `:root` node for all other variables/settings 135 | 136 | ### Tools 137 | 138 | - `_chevron.css` - a mixin for a directional arrow icon 139 | 140 | _Usage:_ 141 | 142 | ```css 143 | /* prettier-ignore */ 144 | @mixin chevron 145 | 2rem /* width and height */, 146 | 0 0 1px 1px /* border width */, 147 | var(--color-action) /* border color */, 148 | -5px 0 0 0.5em /* margin */, 149 | -135deg /* rotation */; 150 | ``` 151 | 152 | - `_flexbox.css` - a set of mixins for flexbox 153 | 154 | _Contains several mixins:_ 155 | 156 | ```css 157 | /* General purpose flex container */ 158 | /* prettier-ignore */ 159 | @mixin flex 160 | center /* align-items */, 161 | flex-end /* justify-content */, 162 | wrap /* flex-wrap */, 163 | row /* flex-direction */, 164 | flex /* display */; 165 | 166 | /* Flex container with flex-direction set to "row" */ 167 | /* prettier-ignore */ 168 | @mixin flex-row 169 | no-wrap /* wrap */, 170 | center /* align-items */, 171 | flex-end /* justify-content */; 172 | 173 | /* Flex container with flex-direction set to "column" */ 174 | /* prettier-ignore */ 175 | @mixin flex-column 176 | no-wrap /* wrap */ 177 | center /* align-items */ 178 | flex-end /* justify-content */; 179 | 180 | /* Inline-flex container with flex-direction set to "row" */ 181 | /* prettier-ignore */ 182 | @mixin inline-flex-row 183 | no-wrap /* wrap */, 184 | center /* align-items */, 185 | flex-end /* justify-content */; 186 | 187 | /* Inline-flex container with flex-direction set to "column" */ 188 | /* prettier-ignore */ 189 | @mixin inline-flex-column 190 | no-wrap /* wrap */ 191 | center /* align-items */ 192 | flex-end /* justify-content */; 193 | 194 | /* Inline-flex container with flex-direction set to "row" */ 195 | /* prettier-ignore */ 196 | @mixin inline-flex-row 197 | no-wrap /* wrap */, 198 | center /* align-items */, 199 | flex-end /* justify-content */; 200 | 201 | /* Inline-flex container with flex-direction set to "column" */ 202 | /* prettier-ignore */ 203 | @mixin inline-flex-column 204 | no-wrap /* wrap */ 205 | center /* align-items */ 206 | flex-end /* justify-content */; 207 | ``` 208 | 209 | - `_media-queries.css` - mixins for all supported media queries 210 | 211 | _Custom media queries:_ 212 | 213 | ```css 214 | /* (max-width: 1439px) */ 215 | @media (--small-desktop) { 216 | } 217 | 218 | /* (max-width: 1279px) */ 219 | @media (--tablet-landscape) { 220 | } 221 | 222 | /* (max-width: 1023px) */ 223 | @media (--tablet-portrait) { 224 | } 225 | 226 | /* (max-width: 767px) */ 227 | @media (--mobile) { 228 | } 229 | 230 | /* (max-width: 767px) */ 231 | @media (--xs) { 232 | } 233 | 234 | /* (min-width: 768px) and (max-width: 1023px) */ 235 | @media (--sm) { 236 | } 237 | 238 | /* (min-width: 1024px) and (max-width: 1279px) */ 239 | @media (--md) { 240 | } 241 | 242 | /* (min-width: 1280px) and (max-width: 1439px) */ 243 | @media (--lg) { 244 | } 245 | 246 | /* (min-width: 1439px) */ 247 | @media (--xl) { 248 | } 249 | 250 | /* (min-width: 0) */ 251 | @media (--xs-up) { 252 | } 253 | /* (min-width: 768px) */ 254 | @media (--sm-up) { 255 | } 256 | /* (min-width: 1024px) */ 257 | @media (--md-up) { 258 | } 259 | /* (min-width: 1280px) */ 260 | @media (--lg-up) { 261 | } 262 | /* (min-width: 1439px) */ 263 | @media (--xl-up) { 264 | } 265 | 266 | /* (prefers-reduced-motion: reduce) */ 267 | @media (--reduced-motion) { 268 | } 269 | 270 | /* hover support */ 271 | @media (--hover) { 272 | } ; 273 | ``` 274 | 275 | - `_mixins.css` - all other mixins 276 | 277 | _Available mixins:_ 278 | 279 | ```css 280 | /* absolutely positions an element with known dimensions in the center of their relative parent element */ 281 | @mixin centered; 282 | 283 | /** 284 | generates rules for responsive helpers 285 | $breakpoint: a breakpoint prefix such as xs, sm, md, lg or xl 286 | */ 287 | @mixin breakpoint-helpers $breakpoint; 288 | 289 | /* creates !important declaration for the given $display argument */ 290 | @mixin display $value; 291 | 292 | /** 293 | generates rules for grid columns for a given breakpoint 294 | $breakpoint: a breakpoint prefix such as xs, sm, md, lg or xl 295 | */ 296 | @mixin grid $breakpoint; 297 | ``` 298 | 299 | ### Generic 300 | 301 | - `_form-elements.css` - default styles for form elements 302 | - `_reset.css` - additional browser reset and normalize (normalize.css is also included) 303 | - `_transitions.css` - default transitions for focusable/active elements 304 | 305 | ### Elements 306 | 307 | - `_document.css` - default styles for the `body` element 308 | - `_headings.css` - default styles for all heading (h1 - h6) tags 309 | - `_links.css` - default styles for anchors 310 | - `_texts.css` - default styles for text elements 311 | 312 | ### Objects 313 | 314 | - `_grid.css` - a grid system 315 | 316 | _Available selectors are:_ 317 | 318 | ```css 319 | /* defines a grid container */ 320 | .o-grid { 321 | } 322 | 323 | /* defines a grid item */ 324 | .o-grid__item { 325 | } 326 | 327 | /** 328 | depending on the --breakpoints variables 329 | the following selectors will vary. 330 | 1 means 1/12 of the available width. 331 | 12 means all of the available width. 332 | Here are the defaults 333 | */ 334 | /* From 0 to 767px */ 335 | .xs-1 to .xs-12 336 | /* From 768px to 1023px */ 337 | .sm-1 to .sm-12 338 | /* From 1024px to 1279px */ 339 | .md-1 to .md-12 340 | /* From 1280px to 1439px */ 341 | .lg-1 to .lg-12 342 | /* From 1440px above */ 343 | .xl-1 to .xl-12; 344 | ``` 345 | 346 | - `_main.css` - styles for the `main` element 347 | 348 | _Available selectors are:_ 349 | 350 | ```css 351 | /* defines the main content. used with
element */ 352 | .o-main { 353 | } 354 | ``` 355 | 356 | - `_shell.css` - styles for the site container 357 | 358 | _Available selectors are:_ 359 | 360 | ```css 361 | /* defines the site container */ 362 | .o-shell { 363 | } 364 | 365 | /* defines the site container as flex container */ 366 | .o-shell--flex { 367 | } 368 | 369 | /* makes the site container take the whole browser width */ 370 | .o-shell--fluid { 371 | } 372 | ``` 373 | 374 | - `_wrapper.css` - styles for the site wrapper 375 | 376 | _Available selectors are:_ 377 | 378 | ```css 379 | /* defines the parent container of all other elements. usually the only child of the element */ 380 | .o-wrapper { 381 | } 382 | ``` 383 | 384 | ### Components 385 | 386 | - `_btn.css` - default styles for the buttons 387 | 388 | _Available selectors are:_ 389 | 390 | ```css 391 | /* default styles for a button */ 392 | .c-btn { 393 | } 394 | 395 | /* makes the button fill its parent's width */ 396 | .c-btn--block { 397 | } 398 | ``` 399 | 400 | - `_list.css` - default styles for lists. A list is an element with a classname which starts with `c-list` 401 | 402 | ### Utilities 403 | 404 | - `_align.css` - alignment class utilities 405 | 406 | _Available selectors are:_ 407 | 408 | ```css 409 | /* align to the left */ 410 | .alignleft { 411 | } 412 | 413 | /* align to the right */ 414 | .alignright { 415 | } 416 | 417 | /* clear the alignment */ 418 | .alignnone { 419 | } 420 | 421 | /* clear the alignment and center horizontally */ 422 | .aligncenter { 423 | } 424 | ``` 425 | 426 | - `_clear.scss` - utilites to clear after floats 427 | 428 | _Available selectors are:_ 429 | 430 | ```css 431 | /* clear both */ 432 | .clear { 433 | } 434 | /* clear right */ 435 | .clear-right { 436 | } 437 | /* clear left */ 438 | .clear-left { 439 | } 440 | ``` 441 | 442 | - `_fullsize-background.css` - helper for background image 443 | 444 | _Available selectors are:_ 445 | 446 | ```css 447 | /* makes the element's background image take the whole size of the element using "background-size: cover" */ 448 | .fullsize-background { 449 | } 450 | ``` 451 | 452 | - `_hidden.css` - helper class/attribute for hidden elements 453 | 454 | _Available selectors are:_ 455 | 456 | ```css 457 | .hidden, 458 | [hidden] { 459 | } 460 | ``` 461 | 462 | - `_preferences.css` - contains user preferences settings such as `reduced-motion` or `prefers-color-scheme` preferences. 463 | 464 | - `_responsive-utilities.css` - helpers for showing/hiding elements on different resolutions. For resolutions reference please check the media queries section. 465 | 466 | _Available selectors are:_ 467 | 468 | ```css 469 | .visible-xs-block { 470 | } 471 | .visible-xs-inline { 472 | } 473 | .visible-xs-inline-block { 474 | } 475 | .visible-xs-flex { 476 | } 477 | .visible-xs-inline-flex { 478 | } 479 | .visible-sm-block { 480 | } 481 | .visible-sm-inline { 482 | } 483 | .visible-sm-inline-block { 484 | } 485 | .visible-sm-flex { 486 | } 487 | .visible-sm-inline-flex { 488 | } 489 | .visible-md-block { 490 | } 491 | .visible-md-inline { 492 | } 493 | .visible-md-inline-block { 494 | } 495 | .visible-md-flex { 496 | } 497 | .visible-md-inline-flex { 498 | } 499 | .visible-lg-block { 500 | } 501 | .visible-lg-inline { 502 | } 503 | .visible-lg-inline-block { 504 | } 505 | .visible-lg-flex { 506 | } 507 | .visible-lg-inline-flex { 508 | } 509 | .visible-xl-block { 510 | } 511 | .visible-xl-inline { 512 | } 513 | .visible-xl-inline-block { 514 | } 515 | .visible-xl-flex { 516 | } 517 | .visible-xl-inline-flex { 518 | } 519 | .hidden-xs { 520 | } 521 | .hidden-sm { 522 | } 523 | .hidden-md { 524 | } 525 | .hidden-lg { 526 | } 527 | .hidden-xl { 528 | } 529 | ``` 530 | 531 | - `_text-align.css` - text alignment utilities 532 | 533 | _Available selectors are:_ 534 | 535 | ```css 536 | /* align text to the left */ 537 | .text-left { 538 | } 539 | /* align text to the center */ 540 | .text-center { 541 | } 542 | /* align text to the right */ 543 | .text-right { 544 | } 545 | /* align text to the right */ 546 | .text-justify { 547 | } 548 | ``` 549 | 550 | ## LICENSE 551 | 552 | MIT 553 | 554 | --- 555 | 556 |
557 | Connect with me: 558 |
559 | 560 |
561 | 562 |
563 | 564 | 565 | 566 |   567 | 568 | 569 | 570 |   571 | 572 | 573 | 574 |   575 | 576 | 577 | 578 |   579 | 580 | 581 | 582 |   583 | 584 | 585 | 586 |   587 | 588 | 589 | 590 |   591 | 592 | 593 | 594 |   595 | 596 | 597 | 598 |   599 | 600 | 601 | 602 |   603 | 604 | 605 | 606 |   607 | 608 | 609 | 610 |
611 | 612 | --- 613 | 614 |
615 | Support and sponsor my work: 616 |
617 |
618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 |
647 | -------------------------------------------------------------------------------- /_.config.yml: -------------------------------------------------------------------------------- 1 | plugins: 2 | - jekyll-relative-links 3 | relative_links: 4 | enabled: true 5 | collections: true 6 | include: 7 | - CONTRIBUTING.md 8 | - README.md 9 | - LICENSE.md 10 | - COPYING.md 11 | - CODE_OF_CONDUCT.md 12 | - CONTRIBUTING.md 13 | - ISSUE_TEMPLATE.md 14 | - PULL_REQUEST_TEMPLATE.md 15 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-slate 2 | -------------------------------------------------------------------------------- /assets/components/_btn.css: -------------------------------------------------------------------------------- 1 | .c-btn { 2 | text-align: center; 3 | text-decoration: none; 4 | display: inline-block; 5 | vertical-align: middle; 6 | cursor: pointer; 7 | appearance: none; 8 | } 9 | 10 | .c-btn.disabled, 11 | .c-btn[disabled] { 12 | cursor: default; 13 | } 14 | 15 | .c-btn--block { 16 | width: 100%; 17 | display: block; 18 | padding-left: 0; 19 | padding-right: 0; 20 | } 21 | -------------------------------------------------------------------------------- /assets/components/_lists.css: -------------------------------------------------------------------------------- 1 | [class^='c-list-'] { 2 | padding: 0; 3 | margin: 0; 4 | list-style: none outside none; 5 | } 6 | -------------------------------------------------------------------------------- /assets/elements/_document.css: -------------------------------------------------------------------------------- 1 | html { 2 | scroll-behavior: smooth; 3 | scroll-snap-type: x mandatory; 4 | -webkit-tap-highlight-color: color-mod(var(--color-secondary) alpha(0%)); 5 | } 6 | 7 | body { 8 | font-family: var(--font-sans-serif); 9 | font-size: var(--font-size-base); 10 | line-height: var(--line-height-base); 11 | color: var(--color-secondary); 12 | min-width: 20rem; 13 | margin: 0; 14 | background-color: var(--color-primary); 15 | } 16 | 17 | [id] { 18 | scroll-margin-top: 2ex; 19 | } 20 | -------------------------------------------------------------------------------- /assets/elements/_headings.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | font-size: var(--font-size-h1); 3 | } 4 | 5 | h2 { 6 | font-size: var(--font-size-h2); 7 | } 8 | 9 | h3 { 10 | font-size: var(--font-size-h3); 11 | } 12 | 13 | h4 { 14 | font-size: var(--font-size-h4); 15 | } 16 | 17 | h5 { 18 | font-size: var(--font-size-h5); 19 | } 20 | 21 | h6 { 22 | font-size: var(--font-size-h6); 23 | } 24 | 25 | h1, 26 | h2, 27 | h3, 28 | h4, 29 | h5, 30 | h6 { 31 | margin-top: 0; 32 | } 33 | 34 | h1[class], 35 | h2[class], 36 | h3[class], 37 | h4[class], 38 | h5[class], 39 | h6[class], 40 | h1:last-child, 41 | h2:last-child, 42 | h3:last-child, 43 | h4:last-child, 44 | h5:last-child, 45 | h6:last-child { 46 | margin-bottom: 0; 47 | } 48 | -------------------------------------------------------------------------------- /assets/elements/_links.css: -------------------------------------------------------------------------------- 1 | a { 2 | color: var(--color-action); 3 | text-decoration: underline; 4 | cursor: pointer; 5 | } 6 | 7 | @media (--hover) { 8 | a:hover { 9 | text-decoration: none; 10 | } 11 | } 12 | 13 | a[href^='tel'] { 14 | color: inherit; 15 | cursor: default; 16 | text-decoration: none; 17 | appearance: none; 18 | } 19 | -------------------------------------------------------------------------------- /assets/elements/_texts.css: -------------------------------------------------------------------------------- 1 | p, 2 | ul, 3 | ol, 4 | dl, 5 | table, 6 | blockquote { 7 | margin-top: 0; 8 | } 9 | 10 | p:last-child, 11 | ul:last-child, 12 | ol:last-child, 13 | dl:last-child, 14 | table:last-child, 15 | blockquote:last-child { 16 | margin-bottom: 0; 17 | } 18 | -------------------------------------------------------------------------------- /assets/generic/_form_elements.css: -------------------------------------------------------------------------------- 1 | fieldset { 2 | padding: 0; 3 | } 4 | 5 | button, 6 | input[type='submit'], 7 | input[type='button'], 8 | input[type='reset'], 9 | input[type='file'], 10 | input[type='image'], 11 | label[for] { 12 | cursor: pointer; 13 | } 14 | 15 | button[disabled], 16 | input[disabled], 17 | textarea[disabled], 18 | select[disabled] { 19 | cursor: default; 20 | } 21 | 22 | input[type='text'], 23 | input[type='password'], 24 | input[type='date'], 25 | input[type='datetime'], 26 | input[type='datetime-local'], 27 | input[type='month'], 28 | input[type='week'], 29 | input[type='email'], 30 | input[type='number'], 31 | input[type='search'], 32 | input[type='tel'], 33 | input[type='time'], 34 | input[type='url'], 35 | input[type='color'], 36 | textarea { 37 | appearance: none; 38 | } 39 | 40 | input[type='search']::-webkit-search-cancel-button, 41 | input[type='search']::-webkit-search-decoration { 42 | appearance: none; 43 | } 44 | 45 | textarea { 46 | overflow: auto; 47 | -webkit-overflow-scrolling: touch; 48 | } 49 | 50 | button, 51 | input, 52 | optgroup, 53 | select, 54 | textarea { 55 | font-family: inherit; 56 | font-size: inherit; 57 | color: inherit; 58 | -moz-osx-font-smoothing: grayscale; 59 | -webkit-font-smoothing: antialiased; 60 | text-rendering: optimizeLegibility; 61 | } 62 | 63 | button, 64 | select { 65 | text-transform: none; 66 | } 67 | 68 | button::-moz-focus-inner, 69 | input::-moz-focus-inner { 70 | padding: 0; 71 | border: 0; 72 | } 73 | 74 | input::placeholder { 75 | color: inherit; 76 | opacity: 1; 77 | } 78 | 79 | textarea::placeholder { 80 | color: inherit; 81 | opacity: 1; 82 | } 83 | 84 | input:-webkit-autofill { 85 | -webkit-text-fill-color: inherit; 86 | box-shadow: 0 0 0 62.5rem var(--color-primary) inset; 87 | } 88 | -------------------------------------------------------------------------------- /assets/generic/_reset.css: -------------------------------------------------------------------------------- 1 | *, 2 | *::before, 3 | *::after { 4 | box-sizing: inherit; 5 | } 6 | 7 | html { 8 | box-sizing: border-box; 9 | } 10 | 11 | body { 12 | margin: 0; 13 | text-decoration-skip-ink: auto; 14 | -moz-osx-font-smoothing: grayscale; 15 | -webkit-font-smoothing: antialiased; 16 | text-size-adjust: none; 17 | text-rendering: optimizeLegibility; 18 | } 19 | 20 | nav ul, 21 | nav ol { 22 | padding: 0; 23 | margin: 0; 24 | list-style: none outside none; 25 | } 26 | 27 | table { 28 | width: 100%; 29 | border-collapse: collapse; 30 | border-spacing: 0; 31 | } 32 | 33 | img, 34 | iframe, 35 | video, 36 | audio, 37 | object { 38 | max-width: 100%; 39 | } 40 | 41 | img, 42 | iframe { 43 | border: 0 none; 44 | } 45 | 46 | img { 47 | height: auto; 48 | display: inline-block; 49 | vertical-align: middle; 50 | } 51 | 52 | svg:not(:root) { 53 | overflow: hidden; 54 | } 55 | 56 | figure { 57 | margin: 0; 58 | } 59 | -------------------------------------------------------------------------------- /assets/generic/_transitions.css: -------------------------------------------------------------------------------- 1 | a, 2 | a img, 3 | a svg, 4 | input, 5 | button, 6 | select, 7 | textarea, 8 | .c-btn, 9 | [class^='svg-'] { 10 | transition-property: color, opacity, border-color, background-color, box-shadow, fill, stroke; 11 | transition-duration: var(--timing); 12 | transition-timing-function: var(--easing); 13 | } 14 | -------------------------------------------------------------------------------- /assets/objects/_grid.css: -------------------------------------------------------------------------------- 1 | .o-grid { 2 | @mixin flex-row wrap, stretch, space-between; 3 | margin: 0 calc(-1 * var(--gap)); 4 | } 5 | 6 | .o-grid__item { 7 | flex-grow: 0; 8 | flex-shrink: 0; 9 | padding: 0 var(--gap); 10 | } 11 | 12 | @media (--xs-up) { 13 | @mixin grid xs; 14 | } 15 | 16 | @media (--sm-up) { 17 | @mixin grid sm; 18 | } 19 | 20 | @media (--md-up) { 21 | @mixin grid md; 22 | } 23 | 24 | @media (--lg-up) { 25 | @mixin grid lg; 26 | } 27 | 28 | @media (--xl-up) { 29 | @mixin grid xl; 30 | } 31 | -------------------------------------------------------------------------------- /assets/objects/_main.css: -------------------------------------------------------------------------------- 1 | .o-main { 2 | flex: 1; 3 | } 4 | -------------------------------------------------------------------------------- /assets/objects/_shell.css: -------------------------------------------------------------------------------- 1 | .o-shell { 2 | max-width: var(--shell-width); 3 | padding-right: var(--shell-gap); 4 | padding-left: var(--shell-gap); 5 | margin-right: auto; 6 | margin-left: auto; 7 | } 8 | 9 | .o-shell--flex { 10 | @mixin flex-row; 11 | justify-content: space-between; 12 | } 13 | 14 | .o-shell--fluid { 15 | max-width: none; 16 | } 17 | -------------------------------------------------------------------------------- /assets/objects/_wrapper.css: -------------------------------------------------------------------------------- 1 | .o-wrapper { 2 | min-height: 100vh; 3 | @mixin flex-column nowrap, stretch, flex-start; 4 | } 5 | -------------------------------------------------------------------------------- /assets/settings/_colors.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --color-base: #333; 3 | --color-primary: #fff; 4 | --color-secondary: #000; 5 | --color-action: #ef4c23; 6 | } 7 | 8 | @media (prefers-color-scheme: light) { 9 | :root { 10 | --color-base: #ccc; 11 | --color-primary: #000; 12 | --color-secondary: #fff; 13 | --color-action: #ef4c23; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /assets/settings/_text.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --font-sans-serif: sans-serif; 3 | --font-serif: serif; 4 | --font-monospace: monospace; 5 | --font-size-base: 1rem; 6 | --line-height-base: 1.35; 7 | --font-size-h1: 2rem; 8 | --font-size-h2: 1.75rem; 9 | --font-size-h3: 1.5rem; 10 | --font-size-h4: 1.25rem; 11 | --font-size-h5: var(--font-size-base); 12 | --font-size-h6: 0.75rem; 13 | } 14 | -------------------------------------------------------------------------------- /assets/settings/_transitions.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --timing: 0.4s; 3 | --easing: ease-in-out; 4 | } 5 | -------------------------------------------------------------------------------- /assets/settings/_variables.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --gap: 0.5rem; 3 | --columns: 12; 4 | --shell-gap: 1rem; 5 | --shell-width: 75rem; 6 | --breakpoints: (xs, sm, md, lg, xl); 7 | --displays: (block, inline, inline-block, flex, inline-flex); 8 | --alignments: (center: center, right: right, left: left, justify: justify); 9 | } 10 | -------------------------------------------------------------------------------- /assets/tools/_chevron.css: -------------------------------------------------------------------------------- 1 | /* @usage: @mixin chevron 2rem, 0 0 1px 1px, $color-secondary, -5px 0 0 0.5em, -135deg; */ 2 | /* prettier-ignore */ 3 | @define-mixin chevron $dimensions: 1rem, $border-width: 0 0 1px 1px, $border-color: currentColor, $margin: auto, $rotation: 45deg { 4 | content: ''; 5 | width: $dimensions; 6 | height: $dimensions; 7 | display: inline-block; 8 | vertical-align: middle; 9 | border-width: $border-width; 10 | border-style: solid; 11 | border-color: $border-color; 12 | margin: $margin; 13 | transform: rotate($rotation); 14 | transform-origin: 50% 50%; 15 | transition: all var(--timing) var(--easing); 16 | } 17 | -------------------------------------------------------------------------------- /assets/tools/_flexbox.css: -------------------------------------------------------------------------------- 1 | @define-mixin flex $align: stretch, $justify: flex-start, $wrap: nowrap, $direction: row, $display: flex { 2 | display: $display; 3 | flex-flow: $direction $wrap; 4 | align-items: $align; 5 | justify-content: $justify; 6 | } 7 | 8 | @define-mixin flex-row $wrap: nowrap, $align: stretch, $justify: flex-start { 9 | @mixin flex $align, $justify, $wrap; 10 | } 11 | 12 | @define-mixin flex-column $wrap: nowrap, $align: stretch, $justify: flex-start { 13 | @mixin flex $align, $justify, $wrap, column; 14 | } 15 | 16 | @define-mixin inline-flex-row $wrap: nowrap, $align: stretch, $justify: flex-start { 17 | @mixin flex $align, $justify, $wrap, row, inline-flex; 18 | } 19 | 20 | @define-mixin inline-flex-column $wrap: nowrap, $align: stretch, $justify: flex-start { 21 | @mixin flex $align, $justify, $wrap, column, inline-flex; 22 | } 23 | 24 | @define-mixin flex-row-center $wrap: nowrap { 25 | @mixin flex-row $wrap, center, center; 26 | } 27 | 28 | @define-mixin flex-column-center $wrap: nowrap { 29 | @mixin flex-column $wrap, center, center; 30 | } 31 | -------------------------------------------------------------------------------- /assets/tools/_media-queries.css: -------------------------------------------------------------------------------- 1 | @custom-media --small-desktop (max-width: 1439px); 2 | @custom-media --tablet-landscape (max-width: 1279px); 3 | @custom-media --tablet-portrait (max-width: 1023px); 4 | @custom-media --mobile (max-width: 767px); 5 | @custom-media --xs (max-width: 767px); 6 | @custom-media --sm (min-width: 768px) and (max-width: 1023px); 7 | @custom-media --md (min-width: 1024px) and (max-width: 1279px); 8 | @custom-media --lg (min-width: 1280px) and (max-width: 1439px); 9 | @custom-media --xl (min-width: 1439px); 10 | @custom-media --xs-up (min-width: 0); 11 | @custom-media --sm-up (min-width: 768px); 12 | @custom-media --md-up (min-width: 1024px); 13 | @custom-media --lg-up (min-width: 1280px); 14 | @custom-media --xl-up (min-width: 1439px); 15 | @custom-media --reduced-motion (prefers-reduced-motion: reduce); 16 | @custom-media --hover (-ms-high-contrast: none), (-ms-high-contrast: active), (-moz-touch-enabled: 0), (hover); 17 | -------------------------------------------------------------------------------- /assets/tools/_mixins.css: -------------------------------------------------------------------------------- 1 | @define-mixin centered { 2 | position: absolute; 3 | top: 0; 4 | right: 0; 5 | bottom: 0; 6 | left: 0; 7 | margin: auto; 8 | } 9 | 10 | @define-mixin breakpoint-helpers $breakpoint { 11 | .hidden-$(breakpoint) { 12 | display: none !important; 13 | } 14 | 15 | @each $display in var(--displays) { 16 | .visible-$(breakpoint)-$(display) { 17 | display: $(display) !important; 18 | } 19 | } 20 | } 21 | 22 | @define-mixin display $value { 23 | display: $value !important; 24 | } 25 | 26 | @define-mixin grid $breakpoint { 27 | /* TODO: get the columns count dynamically */ 28 | @for $i from 1 to 12 { 29 | .$(breakpoint)-$i { 30 | max-width: calc($i / 12 * 100%); 31 | flex-basis: calc($i / 12 * 100%); 32 | } 33 | } 34 | } 35 | 36 | @define-extend display-none { 37 | display: none !important; 38 | } 39 | -------------------------------------------------------------------------------- /assets/utilities/_align.css: -------------------------------------------------------------------------------- 1 | .alignleft { 2 | float: left; 3 | margin: var(--gap) calc(2 * var(--gap)) calc(2 * var(--gap)) 0; 4 | } 5 | 6 | .alignright { 7 | float: right; 8 | margin: var(--gap) 0 calc(2 * var(--gap)) calc(2 * var(--gap)); 9 | } 10 | 11 | .alignnone, 12 | .aligncenter { 13 | float: none; 14 | } 15 | 16 | .alignnone { 17 | margin: var(--gap) 0 calc(2 * var(--gap)); 18 | } 19 | 20 | .aligncenter { 21 | display: block; 22 | margin: var(--gap) auto calc(2 * var(--gap)); 23 | } 24 | -------------------------------------------------------------------------------- /assets/utilities/_clear.css: -------------------------------------------------------------------------------- 1 | .clear, 2 | .clear-left, 3 | .clear-right { 4 | &::after { 5 | content: ''; 6 | display: block; 7 | } 8 | } 9 | 10 | .clear { 11 | &::after { 12 | clear: both; 13 | } 14 | } 15 | 16 | .clear-left { 17 | &::after { 18 | clear: left; 19 | } 20 | } 21 | 22 | .clear-right { 23 | &::after { 24 | clear: right; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /assets/utilities/_fullsize_background.css: -------------------------------------------------------------------------------- 1 | .fullsize-background { 2 | background-repeat: no-repeat; 3 | background-position: 50% 50%; 4 | background-size: cover; 5 | } 6 | -------------------------------------------------------------------------------- /assets/utilities/_hidden.css: -------------------------------------------------------------------------------- 1 | .hidden, 2 | [hidden] { 3 | @extend display-none; 4 | } 5 | -------------------------------------------------------------------------------- /assets/utilities/_preferences.css: -------------------------------------------------------------------------------- 1 | @media (--reduced-motion) { 2 | * { 3 | animation-duration: 0.01ms !important; 4 | animation-iteration-count: 1 !important; 5 | transition-duration: 0.01ms !important; 6 | scroll-behavior: auto !important; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /assets/utilities/_responsive_utilities.css: -------------------------------------------------------------------------------- 1 | @each $bp in var(--breakpoints) { 2 | @each $display in var(--displays) { 3 | .visible-$(bp)-$(display) { 4 | display: none !important; 5 | } 6 | } 7 | } 8 | 9 | @media (--xs) { 10 | @mixin breakpoint-helpers xs; 11 | } 12 | 13 | @media (--sm) { 14 | @mixin breakpoint-helpers sm; 15 | } 16 | 17 | @media (--md) { 18 | @mixin breakpoint-helpers md; 19 | } 20 | 21 | @media (--lg) { 22 | @mixin breakpoint-helpers lg; 23 | } 24 | 25 | @media (--xl) { 26 | @mixin breakpoint-helpers xl; 27 | } 28 | -------------------------------------------------------------------------------- /assets/utilities/_text_align.css: -------------------------------------------------------------------------------- 1 | @each $alignment in var(--alignments) { 2 | .text-$(alignment) { 3 | text-align: $(alignment); 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /demo/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ITCSS Demo 9 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 24 | 25 | 31 | 32 | 33 | 39 | See code on Github 40 | 41 | 42 |
43 |
44 |
45 | 46 |
47 | Logo 48 | 49 | 50 |
51 | 52 |
53 |
54 | 55 |
56 |
57 |

Typography

58 | 59 |
60 |

Heading 1

61 | 62 |

Heading 2

63 | 64 |

Heading 3

65 | 66 |

Heading 4

67 | 68 |
Heading 5
69 | 70 |
Heading 6
71 | 72 |

73 | Lorem, ipsum dolor sit amet consectetur adipisicing elit. In, perferendis voluptatum numquam 74 | incidunt voluptatem facilis porro ipsum exercitationem rem officia pariatur placeat ab vero 75 | ducimus explicabo modi molestias harum eligendi! 76 |

77 | 78 |

79 | Lorem, ipsum dolor sit amet consectetur adipisicing elit. In, perferendis 80 | voluptatum numquam incidunt voluptatem facilis porro ipsum exercitationem rem officia 81 | pariatur placeat ab vero ducimus explicabo modi molestias harum eligendi! 82 |

83 | 84 |
85 | Lorem ipsum, dolor sit amet consectetur adipisicing elit. Ut quos accusantium voluptatum 86 | ipsum aliquid? Ab officia, hic nostrum vitae soluta alias? Cumque cum totam aut nemo sit 87 | quas unde. Aliquid! 88 |
89 | 90 |

91 | Lorem ipsum dolor sit amet consectetur adipisicing elit. Qui quos 92 | dolorem consequatur, excepturi ipsa 93 | voluptatibus magnam distinctio inventore, recusandae, perferendis 94 | blanditiis esse ut quo? Ullam vel fuga unde assumenda deserunt. 95 |

96 | 97 | 98 | 99 |

100 | Lorem ipsum dolor sit, amet consectetur adipisicing elit. Suscipit, numquam non veritatis 101 | voluptatum doloremque fugit soluta? Nulla, quod fuga perferendis minus necessitatibus 102 | veritatis quasi neque fugiat optio numquam reiciendis tempora minima quam dolorem laborum 103 | ratione magnam. Incidunt corporis eaque aliquam, eius beatae provident suscipit qui expedita 104 | quasi quod odio eveniet. 105 |

106 | 107 |

108 | Lorem ipsum dolor sit, amet consectetur adipisicing elit. Suscipit, numquam non veritatis 109 | voluptatum doloremque fugit soluta? Nulla, quod fuga perferendis minus necessitatibus 110 | veritatis quasi neque fugiat optio numquam reiciendis tempora minima quam dolorem laborum 111 | ratione magnam. Incidunt corporis eaque aliquam, eius beatae provident suscipit qui expedita 112 | quasi quod odio eveniet. 113 |

114 | 115 | 116 | 117 |

118 | Lorem ipsum dolor sit, amet consectetur adipisicing elit. Suscipit, numquam non veritatis 119 | voluptatum doloremque fugit soluta? Nulla, quod fuga perferendis minus necessitatibus 120 | veritatis quasi neque fugiat optio numquam reiciendis tempora minima quam dolorem laborum 121 | ratione magnam. Incidunt corporis eaque aliquam, eius beatae provident suscipit qui expedita 122 | quasi quod odio eveniet. 123 |

124 | 125 |

126 | Lorem ipsum dolor sit, amet consectetur adipisicing elit. Suscipit, numquam non veritatis 127 | voluptatum doloremque fugit soluta? Nulla, quod fuga perferendis minus necessitatibus 128 | veritatis quasi neque fugiat optio numquam reiciendis tempora minima quam dolorem laborum 129 | ratione magnam. Incidunt corporis eaque aliquam, eius beatae provident suscipit qui expedita 130 | quasi quod odio eveniet. 131 |

132 | 133 |

134 | Lorem ipsum dolor sit, amet consectetur adipisicing elit. Suscipit, numquam non veritatis 135 | voluptatum doloremque fugit soluta? Nulla, quod fuga perferendis minus necessitatibus 136 | veritatis quasi neque fugiat optio numquam reiciendis tempora minima quam dolorem laborum 137 | ratione magnam. Incidunt corporis eaque aliquam, eius beatae provident suscipit qui expedita 138 | quasi quod odio eveniet. 139 |

140 | 141 | 142 | 143 |

144 | Lorem ipsum dolor sit, amet consectetur adipisicing elit. Suscipit, numquam non veritatis 145 | voluptatum doloremque fugit soluta? Nulla, quod fuga perferendis minus necessitatibus 146 | veritatis quasi neque fugiat optio numquam reiciendis tempora minima quam dolorem laborum 147 | ratione magnam. Incidunt corporis eaque aliquam, eius beatae provident suscipit qui expedita 148 | quasi quod odio eveniet. 149 |

150 | 151 |

152 | Lorem ipsum dolor sit, amet consectetur adipisicing elit. Suscipit, numquam non veritatis 153 | voluptatum doloremque fugit soluta? Nulla, quod fuga perferendis minus necessitatibus 154 | veritatis quasi neque fugiat optio numquam reiciendis tempora minima quam dolorem laborum 155 | ratione magnam. Incidunt corporis eaque aliquam, eius beatae provident suscipit qui expedita 156 | quasi quod odio eveniet. 157 |

158 | 159 |
    160 |
  • lorem
  • 161 |
  • ipsum
  • 162 |
  • dolor
  • 163 |
  • sit amet
  • 164 |
165 | 166 |
    167 |
  1. lorem
  2. 168 |
  3. ipsum
  4. 169 |
  5. dolor
  6. 170 |
  7. sit amet
  8. 171 |
172 | 173 |
174 |
175 | 176 |
177 | 178 |
179 |

Forms

180 | 181 |
182 | 183 | 184 |
185 | 186 | 187 |
188 | 189 |
190 | 191 |
192 | 193 | 194 |
195 | 196 | 203 |
204 |
205 | 206 |
207 | 208 |

Grid system

209 | 210 |
211 |
212 |

Grid item 1

213 |
214 |
215 | 216 |
217 |

Grid item 2

218 |
219 |
220 | 221 |
222 |

Grid item 3

223 |
224 |
225 | 226 |
227 |

Grid item 4

228 |
229 |
230 | 231 |
232 |

Grid item 5

233 |
234 |
235 | 236 |
237 |

Grid item 6

238 |
239 |
240 | 241 |
242 |

Grid item 7

243 |
244 |
245 |
246 | 247 |
251 |

Fullsize background

252 |
253 |
254 |
255 | 256 |
257 |
258 | 259 |
260 |

261 | Designed and developed by Atanas Atanasov. All rights 262 | reserved. 263 |

264 | 265 | 266 |
267 | 268 |
269 |
270 |
271 | 272 | 273 | -------------------------------------------------------------------------------- /index.css: -------------------------------------------------------------------------------- 1 | @import './assets/settings/_text.css'; 2 | @import './assets/settings/_colors.css'; 3 | @import './assets/settings/_variables.css'; 4 | @import './assets/settings/_transitions.css'; 5 | 6 | @import './assets/tools/_flexbox.css'; 7 | @import './assets/tools/_mixins.css'; 8 | @import './assets/tools/_media-queries.css'; 9 | @import './assets/tools/_chevron.css'; 10 | 11 | @import './assets/generic/_reset.css'; 12 | @import './assets/generic/_form_elements.css'; 13 | @import './assets/generic/_transitions.css'; 14 | 15 | @import './assets/elements/_document.css'; 16 | @import './assets/elements/_headings.css'; 17 | @import './assets/elements/_texts.css'; 18 | @import './assets/elements/_links.css'; 19 | 20 | @import './assets/objects/_wrapper.css'; 21 | @import './assets/objects/_shell.css'; 22 | @import './assets/objects/_main.css'; 23 | @import './assets/objects/_grid.css'; 24 | 25 | @import './assets/components/_btn.css'; 26 | @import './assets/components/_lists.css'; 27 | 28 | @import './assets/utilities/_text_align.css'; 29 | @import './assets/utilities/_align.css'; 30 | @import './assets/utilities/_clear.css'; 31 | @import './assets/utilities/_hidden.css'; 32 | @import './assets/utilities/_fullsize_background.css'; 33 | @import './assets/utilities/_responsive_utilities.css'; 34 | @import './assets/utilities/_preferences.css'; 35 | -------------------------------------------------------------------------------- /itcss.sketch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scriptex/itcss/dbda10d32486f737fb55365807358d101d1dca46/itcss.sketch -------------------------------------------------------------------------------- /itcss.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | UTILITIES 41 | 42 | 43 | COMPONENTS 44 | 45 | 46 | TOOLS 47 | 48 | 49 | GENERIC 50 | 51 | 52 | ELEMENTS 53 | 54 | 55 | OBJECTS 56 | 57 | 58 | SETTINGS 59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "itcss", 3 | "version": "2.1.0", 4 | "description": "CSS starter boilerplate based on the ITCSS pattern", 5 | "keywords": [ 6 | "CSS", 7 | "ITCSS", 8 | "PostCSS", 9 | "CSS Boilerplate", 10 | "ITCSS Boilerplate", 11 | "PostCSS Boilerplate", 12 | "CSS Starter Template", 13 | "ITCSS Starter Template", 14 | "PostCSS Starter Template" 15 | ], 16 | "homepage": "https://itcss.atanas.info", 17 | "bugs": { 18 | "url": "https://github.com/scriptex/itcss/issues", 19 | "email": "hi@atanas.info" 20 | }, 21 | "license": "MIT", 22 | "author": "Atanas Atanasov (https://atanas.info)", 23 | "funding": "https://github.com/sponsors/scriptex", 24 | "main": "index.css", 25 | "style": "index.css", 26 | "repository": { 27 | "type": "git", 28 | "url": "github:scriptex/itcss" 29 | }, 30 | "scripts": { 31 | "copy": "cp main.css demo/main.css", 32 | "build": "postcss index.css -o main.css -c postcss.config.js", 33 | "deploy": "yarn build && yarn copy" 34 | }, 35 | "dependencies": {}, 36 | "devDependencies": { 37 | "autoprefixer": "10.4.21", 38 | "browserslist": "4.25.0", 39 | "postcss": "8.5.4", 40 | "postcss-calc": "10.1.1", 41 | "postcss-cli": "11.0.1", 42 | "postcss-color-mod-function": "4.1.1", 43 | "postcss-custom-media": "11.0.6", 44 | "postcss-each": "1.1.0", 45 | "postcss-each-variables": "0.3.0", 46 | "postcss-easy-import": "4.0.0", 47 | "postcss-extend": "1.0.5", 48 | "postcss-flexbugs-fixes": "5.0.2", 49 | "postcss-for": "2.1.1", 50 | "postcss-mixins": "11.0.3", 51 | "postcss-nested": "7.0.2", 52 | "postcss-normalize": "13.0.1", 53 | "postcss-utilities": "0.8.4" 54 | }, 55 | "peerDependencies": { 56 | "autoprefixer": ">=10.0.0", 57 | "postcss": ">=8.4.32", 58 | "postcss-calc": ">=8.0.0", 59 | "postcss-cli": ">=8.3.0", 60 | "postcss-color-mod-function": ">=3.0.0", 61 | "postcss-custom-media": ">=8.0.0", 62 | "postcss-each": ">=0.10.0", 63 | "postcss-each-variables": ">=0.3.0", 64 | "postcss-easy-import": ">=3.0.0", 65 | "postcss-extend": ">=1.0.0", 66 | "postcss-flexbugs-fixes": ">=5.0.0", 67 | "postcss-for": ">=2.1.0", 68 | "postcss-mixins": ">=7.0.0", 69 | "postcss-nested": ">=5.0.0", 70 | "postcss-normalize": ">=9.0.0", 71 | "postcss-utilities": ">=0.8.0" 72 | }, 73 | "browserslist": [ 74 | "> 1%", 75 | "last 2 versions", 76 | "not ie <= 11", 77 | "not op_mini all" 78 | ] 79 | } 80 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | 'postcss-mixins': {}, 5 | 'postcss-easy-import': {}, 6 | 'postcss-normalize': { 7 | forceImport: true 8 | }, 9 | 'postcss-nested': {}, 10 | 'postcss-color-mod-function': {}, 11 | 'postcss-each-variables': {}, 12 | 'postcss-each': {}, 13 | 'postcss-for': {}, 14 | 'postcss-extend': {}, 15 | 'postcss-utilities': {}, 16 | 'postcss-flexbugs-fixes': {}, 17 | 'postcss-calc': {}, 18 | 'postcss-custom-media': {} 19 | } 20 | }; 21 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "config:base", 4 | ":automergePatch", 5 | ":automergeMinor", 6 | ":automergeBranch", 7 | ":disableDependencyDashboard", 8 | "group:allNonMajor" 9 | ], 10 | "travis": { 11 | "enabled": true 12 | }, 13 | "assignees": ["@scriptex"], 14 | "labels": ["dependencies"], 15 | "rebaseWhen": "conflicted", 16 | "vulnerabilityAlerts": { 17 | "labels": ["security"], 18 | "assignees": ["@scriptex"] 19 | }, 20 | "major": { 21 | "automerge": false 22 | }, 23 | "schedule": ["* * 3,17 * *"] 24 | } 25 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@csstools/cascade-layer-name-parser@^2.0.5": 6 | version "2.0.5" 7 | resolved "https://registry.yarnpkg.com/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.5.tgz#43f962bebead0052a9fed1a2deeb11f85efcbc72" 8 | integrity sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A== 9 | 10 | "@csstools/convert-colors@^1.4.0": 11 | version "1.4.0" 12 | resolved "https://registry.yarnpkg.com/@csstools/convert-colors/-/convert-colors-1.4.0.tgz#ad495dc41b12e75d588c6db8b9834f08fa131eb7" 13 | integrity sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw== 14 | 15 | "@csstools/css-parser-algorithms@^3.0.5": 16 | version "3.0.5" 17 | resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz#5755370a9a29abaec5515b43c8b3f2cf9c2e3076" 18 | integrity sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ== 19 | 20 | "@csstools/css-tokenizer@^3.0.4": 21 | version "3.0.4" 22 | resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz#333fedabc3fd1a8e5d0100013731cf19e6a8c5d3" 23 | integrity sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw== 24 | 25 | "@csstools/media-query-list-parser@^4.0.3": 26 | version "4.0.3" 27 | resolved "https://registry.yarnpkg.com/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz#7aec77bcb89c2da80ef207e73f474ef9e1b3cdf1" 28 | integrity sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ== 29 | 30 | "@csstools/normalize.css@12.1.1": 31 | version "12.1.1" 32 | resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-12.1.1.tgz#f0ad221b7280f3fc814689786fd9ee092776ef8f" 33 | integrity sha512-YAYeJ+Xqh7fUou1d1j9XHl44BmsuThiTr4iNrgCQ3J27IbhXsxXDGZ1cXv8Qvs99d4rBbLiSKy3+WZiet32PcQ== 34 | 35 | ansi-regex@^2.0.0: 36 | version "2.1.1" 37 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 38 | integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== 39 | 40 | ansi-regex@^5.0.1: 41 | version "5.0.1" 42 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 43 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 44 | 45 | ansi-styles@^2.2.1: 46 | version "2.2.1" 47 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 48 | integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== 49 | 50 | ansi-styles@^3.2.1: 51 | version "3.2.1" 52 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 53 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 54 | dependencies: 55 | color-convert "^1.9.0" 56 | 57 | ansi-styles@^4.0.0: 58 | version "4.3.0" 59 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 60 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 61 | dependencies: 62 | color-convert "^2.0.1" 63 | 64 | anymatch@~3.1.2: 65 | version "3.1.2" 66 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 67 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 68 | dependencies: 69 | normalize-path "^3.0.0" 70 | picomatch "^2.0.4" 71 | 72 | array-union@^1.0.1: 73 | version "1.0.2" 74 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 75 | integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== 76 | dependencies: 77 | array-uniq "^1.0.1" 78 | 79 | array-uniq@^1.0.1: 80 | version "1.0.3" 81 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 82 | integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== 83 | 84 | autoprefixer@10.4.21: 85 | version "10.4.21" 86 | resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.21.tgz#77189468e7a8ad1d9a37fbc08efc9f480cf0a95d" 87 | integrity sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ== 88 | dependencies: 89 | browserslist "^4.24.4" 90 | caniuse-lite "^1.0.30001702" 91 | fraction.js "^4.3.7" 92 | normalize-range "^0.1.2" 93 | picocolors "^1.1.1" 94 | postcss-value-parser "^4.2.0" 95 | 96 | balanced-match@^1.0.0: 97 | version "1.0.2" 98 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 99 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 100 | 101 | binary-extensions@^2.0.0: 102 | version "2.2.0" 103 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 104 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 105 | 106 | brace-expansion@^1.1.7: 107 | version "1.1.11" 108 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 109 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 110 | dependencies: 111 | balanced-match "^1.0.0" 112 | concat-map "0.0.1" 113 | 114 | braces@~3.0.2: 115 | version "3.0.3" 116 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" 117 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== 118 | dependencies: 119 | fill-range "^7.1.1" 120 | 121 | browserslist@4.25.0: 122 | version "4.25.0" 123 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.0.tgz#986aa9c6d87916885da2b50d8eb577ac8d133b2c" 124 | integrity sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA== 125 | dependencies: 126 | caniuse-lite "^1.0.30001718" 127 | electron-to-chromium "^1.5.160" 128 | node-releases "^2.0.19" 129 | update-browserslist-db "^1.1.3" 130 | 131 | browserslist@^4.24.4: 132 | version "4.24.4" 133 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b" 134 | integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A== 135 | dependencies: 136 | caniuse-lite "^1.0.30001688" 137 | electron-to-chromium "^1.5.73" 138 | node-releases "^2.0.19" 139 | update-browserslist-db "^1.1.1" 140 | 141 | camelcase-css@^2.0.1: 142 | version "2.0.1" 143 | resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" 144 | integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== 145 | 146 | caniuse-lite@^1.0.30001688: 147 | version "1.0.30001689" 148 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001689.tgz#67ca960dd5f443903e19949aeacc9d28f6e10910" 149 | integrity sha512-CmeR2VBycfa+5/jOfnp/NpWPGd06nf1XYiefUvhXFfZE4GkRc9jv+eGPS4nT558WS/8lYCzV8SlANCIPvbWP1g== 150 | 151 | caniuse-lite@^1.0.30001702: 152 | version "1.0.30001705" 153 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001705.tgz#dc3510bcdef261444ca944b7be9c8d0bb7fafeef" 154 | integrity sha512-S0uyMMiYvA7CxNgomYBwwwPUnWzFD83f3B1ce5jHUfHTH//QL6hHsreI8RVC5606R4ssqravelYO5TU6t8sEyg== 155 | 156 | caniuse-lite@^1.0.30001718: 157 | version "1.0.30001720" 158 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001720.tgz#c138cb6026d362be9d8d7b0e4bcd0183a850edfd" 159 | integrity sha512-Ec/2yV2nNPwb4DnTANEV99ZWwm3ZWfdlfkQbWSDDt+PsXEVYwlhPH8tdMaPunYTKKmz7AnHi2oNEi1GcmKCD8g== 160 | 161 | chalk@^1.1.3: 162 | version "1.1.3" 163 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 164 | integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== 165 | dependencies: 166 | ansi-styles "^2.2.1" 167 | escape-string-regexp "^1.0.2" 168 | has-ansi "^2.0.0" 169 | strip-ansi "^3.0.0" 170 | supports-color "^2.0.0" 171 | 172 | chalk@^2.4.1: 173 | version "2.4.2" 174 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 175 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 176 | dependencies: 177 | ansi-styles "^3.2.1" 178 | escape-string-regexp "^1.0.5" 179 | supports-color "^5.3.0" 180 | 181 | chokidar@^3.3.0: 182 | version "3.5.3" 183 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 184 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 185 | dependencies: 186 | anymatch "~3.1.2" 187 | braces "~3.0.2" 188 | glob-parent "~5.1.2" 189 | is-binary-path "~2.1.0" 190 | is-glob "~4.0.1" 191 | normalize-path "~3.0.0" 192 | readdirp "~3.6.0" 193 | optionalDependencies: 194 | fsevents "~2.3.2" 195 | 196 | cliui@^7.0.2: 197 | version "7.0.4" 198 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 199 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 200 | dependencies: 201 | string-width "^4.2.0" 202 | strip-ansi "^6.0.0" 203 | wrap-ansi "^7.0.0" 204 | 205 | color-convert@^1.9.0: 206 | version "1.9.3" 207 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 208 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 209 | dependencies: 210 | color-name "1.1.3" 211 | 212 | color-convert@^2.0.1: 213 | version "2.0.1" 214 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 215 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 216 | dependencies: 217 | color-name "~1.1.4" 218 | 219 | color-name@1.1.3: 220 | version "1.1.3" 221 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 222 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 223 | 224 | color-name@~1.1.4: 225 | version "1.1.4" 226 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 227 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 228 | 229 | concat-map@0.0.1: 230 | version "0.0.1" 231 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 232 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 233 | 234 | cssesc@^3.0.0: 235 | version "3.0.0" 236 | resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" 237 | integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== 238 | 239 | dependency-graph@^1.0.0: 240 | version "1.0.0" 241 | resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-1.0.0.tgz#bb5e85aec1310bc13b22dbd76e3196c4ee4c10d2" 242 | integrity sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg== 243 | 244 | electron-to-chromium@^1.5.160: 245 | version "1.5.162" 246 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.162.tgz#5305c15292a960f36e86f8b330da958f8ae1690d" 247 | integrity sha512-hQA+Zb5QQwoSaXJWEAGEw1zhk//O7qDzib05Z4qTqZfNju/FAkrm5ZInp0JbTp4Z18A6bilopdZWEYrFSsfllA== 248 | 249 | electron-to-chromium@^1.5.73: 250 | version "1.5.74" 251 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.74.tgz#cb886b504a6467e4c00bea3317edb38393c53413" 252 | integrity sha512-ck3//9RC+6oss/1Bh9tiAVFy5vfSKbRHAFh7Z3/eTRkEqJeWgymloShB17Vg3Z4nmDNp35vAd1BZ6CMW4Wt6Iw== 253 | 254 | emoji-regex@^8.0.0: 255 | version "8.0.0" 256 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 257 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 258 | 259 | escalade@^3.1.1: 260 | version "3.1.1" 261 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 262 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 263 | 264 | escalade@^3.2.0: 265 | version "3.2.0" 266 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" 267 | integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== 268 | 269 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 270 | version "1.0.5" 271 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 272 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 273 | 274 | fdir@^6.4.0: 275 | version "6.4.0" 276 | resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.0.tgz#8e80ab4b18a2ac24beebf9d20d71e1bc2627dbae" 277 | integrity sha512-3oB133prH1o4j/L5lLW7uOCF1PlD+/It2L0eL/iAqWMB91RBbqTewABqxhj0ibBd90EEmWZq7ntIWzVaWcXTGQ== 278 | 279 | fdir@^6.4.3: 280 | version "6.4.3" 281 | resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.3.tgz#011cdacf837eca9b811c89dbb902df714273db72" 282 | integrity sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw== 283 | 284 | fill-range@^7.1.1: 285 | version "7.1.1" 286 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" 287 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== 288 | dependencies: 289 | to-regex-range "^5.0.1" 290 | 291 | fraction.js@^4.3.7: 292 | version "4.3.7" 293 | resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" 294 | integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== 295 | 296 | fs-extra@^11.0.0: 297 | version "11.1.0" 298 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.0.tgz#5784b102104433bb0e090f48bfc4a30742c357ed" 299 | integrity sha512-0rcTq621PD5jM/e0a3EJoGC/1TC5ZBCERW82LQuwfGnCa1V8w7dpYH1yNu+SLb6E5dkeCBzKEyLGlFrnr+dUyw== 300 | dependencies: 301 | graceful-fs "^4.2.0" 302 | jsonfile "^6.0.1" 303 | universalify "^2.0.0" 304 | 305 | fs.realpath@^1.0.0: 306 | version "1.0.0" 307 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 308 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 309 | 310 | fsevents@~2.3.2: 311 | version "2.3.2" 312 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 313 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 314 | 315 | function-bind@^1.1.1: 316 | version "1.1.1" 317 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 318 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 319 | 320 | get-caller-file@^2.0.5: 321 | version "2.0.5" 322 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 323 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 324 | 325 | glob-parent@~5.1.2: 326 | version "5.1.2" 327 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 328 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 329 | dependencies: 330 | is-glob "^4.0.1" 331 | 332 | glob@^7.0.3: 333 | version "7.2.3" 334 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 335 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 336 | dependencies: 337 | fs.realpath "^1.0.0" 338 | inflight "^1.0.4" 339 | inherits "2" 340 | minimatch "^3.1.1" 341 | once "^1.3.0" 342 | path-is-absolute "^1.0.0" 343 | 344 | globby@^6.1.0: 345 | version "6.1.0" 346 | resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" 347 | integrity sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw== 348 | dependencies: 349 | array-union "^1.0.1" 350 | glob "^7.0.3" 351 | object-assign "^4.0.1" 352 | pify "^2.0.0" 353 | pinkie-promise "^2.0.0" 354 | 355 | graceful-fs@^4.1.6, graceful-fs@^4.2.0: 356 | version "4.2.10" 357 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" 358 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== 359 | 360 | has-ansi@^2.0.0: 361 | version "2.0.0" 362 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 363 | integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== 364 | dependencies: 365 | ansi-regex "^2.0.0" 366 | 367 | has-flag@^1.0.0: 368 | version "1.0.0" 369 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" 370 | integrity sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA== 371 | 372 | has-flag@^3.0.0: 373 | version "3.0.0" 374 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 375 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 376 | 377 | has@^1.0.3: 378 | version "1.0.3" 379 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 380 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 381 | dependencies: 382 | function-bind "^1.1.1" 383 | 384 | inflight@^1.0.4: 385 | version "1.0.6" 386 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 387 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 388 | dependencies: 389 | once "^1.3.0" 390 | wrappy "1" 391 | 392 | inherits@2: 393 | version "2.0.4" 394 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 395 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 396 | 397 | is-binary-path@~2.1.0: 398 | version "2.1.0" 399 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 400 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 401 | dependencies: 402 | binary-extensions "^2.0.0" 403 | 404 | is-core-module@^2.9.0: 405 | version "2.10.0" 406 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" 407 | integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== 408 | dependencies: 409 | has "^1.0.3" 410 | 411 | is-extglob@^2.1.1: 412 | version "2.1.1" 413 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 414 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 415 | 416 | is-fullwidth-code-point@^3.0.0: 417 | version "3.0.0" 418 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 419 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 420 | 421 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: 422 | version "4.0.3" 423 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 424 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 425 | dependencies: 426 | is-extglob "^2.1.1" 427 | 428 | is-number@^7.0.0: 429 | version "7.0.0" 430 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 431 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 432 | 433 | js-base64@^2.1.9: 434 | version "2.6.4" 435 | resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4" 436 | integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ== 437 | 438 | jsonfile@^6.0.1: 439 | version "6.1.0" 440 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" 441 | integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== 442 | dependencies: 443 | universalify "^2.0.0" 444 | optionalDependencies: 445 | graceful-fs "^4.1.6" 446 | 447 | lilconfig@^3.0.0: 448 | version "3.0.0" 449 | resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.0.0.tgz#f8067feb033b5b74dab4602a5f5029420be749bc" 450 | integrity sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g== 451 | 452 | lodash@^4.17.4: 453 | version "4.17.21" 454 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 455 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 456 | 457 | minimatch@^3.1.1: 458 | version "3.1.2" 459 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 460 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 461 | dependencies: 462 | brace-expansion "^1.1.7" 463 | 464 | nanoid@^3.3.11: 465 | version "3.3.11" 466 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" 467 | integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== 468 | 469 | node-releases@^2.0.19: 470 | version "2.0.19" 471 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" 472 | integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== 473 | 474 | normalize-path@^3.0.0, normalize-path@~3.0.0: 475 | version "3.0.0" 476 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 477 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 478 | 479 | normalize-range@^0.1.2: 480 | version "0.1.2" 481 | resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" 482 | integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== 483 | 484 | object-assign@^4.0.1: 485 | version "4.1.1" 486 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 487 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== 488 | 489 | once@^1.3.0: 490 | version "1.4.0" 491 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 492 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 493 | dependencies: 494 | wrappy "1" 495 | 496 | path-is-absolute@^1.0.0: 497 | version "1.0.1" 498 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 499 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 500 | 501 | path-parse@^1.0.7: 502 | version "1.0.7" 503 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 504 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 505 | 506 | picocolors@^0.2.1: 507 | version "0.2.1" 508 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f" 509 | integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA== 510 | 511 | picocolors@^1.0.0: 512 | version "1.0.0" 513 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 514 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 515 | 516 | picocolors@^1.1.0: 517 | version "1.1.0" 518 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" 519 | integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== 520 | 521 | picocolors@^1.1.1: 522 | version "1.1.1" 523 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" 524 | integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== 525 | 526 | picomatch@^2.0.4, picomatch@^2.2.1: 527 | version "2.3.1" 528 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 529 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 530 | 531 | picomatch@^4.0.2: 532 | version "4.0.2" 533 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" 534 | integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== 535 | 536 | pify@^2.0.0, pify@^2.3.0: 537 | version "2.3.0" 538 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 539 | integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== 540 | 541 | pify@^3.0.0: 542 | version "3.0.0" 543 | resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" 544 | integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== 545 | 546 | pinkie-promise@^2.0.0: 547 | version "2.0.1" 548 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 549 | integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== 550 | dependencies: 551 | pinkie "^2.0.0" 552 | 553 | pinkie@^2.0.0: 554 | version "2.0.4" 555 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 556 | integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== 557 | 558 | postcss-browser-comments@^6.0.1: 559 | version "6.0.1" 560 | resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-6.0.1.tgz#1a2735c734c3fe2bdcf723e49df8864ac90ed195" 561 | integrity sha512-VE5mVLOW+L31a+Eyi7i5j7PmzOydObKLA9VwGBpTZy2OYB3XY1E7/xHxv4tURtEI/qb5h2TyyGHPhZ31sXOEXg== 562 | 563 | postcss-calc@10.1.1: 564 | version "10.1.1" 565 | resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-10.1.1.tgz#52b385f2e628239686eb6e3a16207a43f36064ca" 566 | integrity sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw== 567 | dependencies: 568 | postcss-selector-parser "^7.0.0" 569 | postcss-value-parser "^4.2.0" 570 | 571 | postcss-cli@11.0.1: 572 | version "11.0.1" 573 | resolved "https://registry.yarnpkg.com/postcss-cli/-/postcss-cli-11.0.1.tgz#341188ff7b26b19b206ca923ae2bd979751e7da7" 574 | integrity sha512-0UnkNPSayHKRe/tc2YGW6XnSqqOA9eqpiRMgRlV1S6HdGi16vwJBx7lviARzbV1HpQHqLLRH3o8vTcB0cLc+5g== 575 | dependencies: 576 | chokidar "^3.3.0" 577 | dependency-graph "^1.0.0" 578 | fs-extra "^11.0.0" 579 | picocolors "^1.0.0" 580 | postcss-load-config "^5.0.0" 581 | postcss-reporter "^7.0.0" 582 | pretty-hrtime "^1.0.3" 583 | read-cache "^1.0.0" 584 | slash "^5.0.0" 585 | tinyglobby "^0.2.12" 586 | yargs "^17.0.0" 587 | 588 | postcss-color-mod-function@4.1.1: 589 | version "4.1.1" 590 | resolved "https://registry.yarnpkg.com/postcss-color-mod-function/-/postcss-color-mod-function-4.1.1.tgz#8af2171aec20035416a0c79fe3e29e14e026689c" 591 | integrity sha512-pX35vgWh0c5gqYd/a5baiTr329GyEt56KBldQIEZwOi9V2eXC+9+e7yjnIKqjidHKxzstEfBJEbOXma8Ang33g== 592 | dependencies: 593 | "@csstools/convert-colors" "^1.4.0" 594 | postcss-value-parser "^4.2.0" 595 | 596 | postcss-custom-media@11.0.6: 597 | version "11.0.6" 598 | resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-11.0.6.tgz#6b450e5bfa209efb736830066682e6567bd04967" 599 | integrity sha512-C4lD4b7mUIw+RZhtY7qUbf4eADmb7Ey8BFA2px9jUbwg7pjTZDl4KY4bvlUV+/vXQvzQRfiGEVJyAbtOsCMInw== 600 | dependencies: 601 | "@csstools/cascade-layer-name-parser" "^2.0.5" 602 | "@csstools/css-parser-algorithms" "^3.0.5" 603 | "@csstools/css-tokenizer" "^3.0.4" 604 | "@csstools/media-query-list-parser" "^4.0.3" 605 | 606 | postcss-each-variables@0.3.0: 607 | version "0.3.0" 608 | resolved "https://registry.yarnpkg.com/postcss-each-variables/-/postcss-each-variables-0.3.0.tgz#8b72940dbdfc0a87456190224e4e8b8268340324" 609 | integrity sha512-WZLxE4pk0tAkNNFyH1g9iESZWV3cbksjTr9lokGj/Pw4VbaaO9bcfcNr1ciHOWJfdFSOfLBj0WdYzgzNmRD8fg== 610 | dependencies: 611 | postcss "^6.0.1" 612 | reduce-function-call "^1.0.2" 613 | 614 | postcss-each@1.1.0: 615 | version "1.1.0" 616 | resolved "https://registry.yarnpkg.com/postcss-each/-/postcss-each-1.1.0.tgz#8bb074d130d41eb21679d11aa87204726f5cad88" 617 | integrity sha512-YfTPHHAPFVRgEJfLg9RM4R9WYEHVU9Rf1R8QgZfnObwV2dgNqzTLzTl0w5tF71ApFcYLiJAXiTpHAoqJFYcZVw== 618 | dependencies: 619 | postcss-simple-vars "^6.0.0" 620 | 621 | postcss-easy-import@4.0.0: 622 | version "4.0.0" 623 | resolved "https://registry.yarnpkg.com/postcss-easy-import/-/postcss-easy-import-4.0.0.tgz#8ada07d857c2578f38a832b841714a7ddefccbee" 624 | integrity sha512-Nq5/zsnyMyzz1D7Y7TC1hawNLWQLlh4eJnsM9zlxtc8mAeY8edlvSO1UGs1hyQvNvzK3OJ1bgLjsuyTijyvBEQ== 625 | dependencies: 626 | globby "^6.1.0" 627 | is-glob "^4.0.0" 628 | lodash "^4.17.4" 629 | object-assign "^4.0.1" 630 | pify "^3.0.0" 631 | postcss-import "^14.0.0" 632 | resolve "^1.1.7" 633 | 634 | postcss-extend@1.0.5: 635 | version "1.0.5" 636 | resolved "https://registry.yarnpkg.com/postcss-extend/-/postcss-extend-1.0.5.tgz#5ea98bf787ba3cacf4df4609743f80a833b1d0e7" 637 | integrity sha512-zplAc8IovPMe/JqV0B9nl6o6sElIX7VX1CP2FbV+lGZud3hcnDMr4clN0S8xdHthQoTNDN2K1Q+z0YEW5FWc8A== 638 | dependencies: 639 | postcss "^5.0.4" 640 | 641 | postcss-flexbugs-fixes@5.0.2: 642 | version "5.0.2" 643 | resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz#2028e145313074fc9abe276cb7ca14e5401eb49d" 644 | integrity sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ== 645 | 646 | postcss-for@2.1.1: 647 | version "2.1.1" 648 | resolved "https://registry.yarnpkg.com/postcss-for/-/postcss-for-2.1.1.tgz#841378c0ef909d50e1980d5aa71e6a340e728fcd" 649 | integrity sha512-X0R84FCyr5cqzW4+/g4Dvz2OUe1iwC3G/atIrwEpiRstZlBBpknV+ETlIneSTnw/iXgUnEoTRaO2qXY62YWLhQ== 650 | dependencies: 651 | postcss "^5.0.0" 652 | postcss-simple-vars "^2.0.0" 653 | 654 | postcss-import@^14.0.0: 655 | version "14.1.0" 656 | resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0" 657 | integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw== 658 | dependencies: 659 | postcss-value-parser "^4.0.0" 660 | read-cache "^1.0.0" 661 | resolve "^1.1.7" 662 | 663 | postcss-js@^4.0.1: 664 | version "4.0.1" 665 | resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" 666 | integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== 667 | dependencies: 668 | camelcase-css "^2.0.1" 669 | 670 | postcss-load-config@^5.0.0: 671 | version "5.0.2" 672 | resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-5.0.2.tgz#3d4261d616428e3d6e41c8236c3e456c0f49266f" 673 | integrity sha512-Q8QR3FYbqOKa0bnC1UQ2bFq9/ulHX5Bi34muzitMr8aDtUelO5xKeJEYC/5smE0jNE9zdB/NBnOwXKexELbRlw== 674 | dependencies: 675 | lilconfig "^3.0.0" 676 | yaml "^2.3.4" 677 | 678 | postcss-mixins@11.0.3: 679 | version "11.0.3" 680 | resolved "https://registry.yarnpkg.com/postcss-mixins/-/postcss-mixins-11.0.3.tgz#edae34c010a3b42d94207309fe38683404e79575" 681 | integrity sha512-HZa6DHlN7uCkp7GTFNvhpyK/Gi9+vrVG7FPl2oQdj+sXUuYo4ri9OsWBseTnvnLfWxRWOq8/VwcHcixtZPrRRg== 682 | dependencies: 683 | postcss-js "^4.0.1" 684 | postcss-simple-vars "^7.0.1" 685 | sugarss "^4.0.1" 686 | tinyglobby "^0.2.7" 687 | 688 | postcss-nested@7.0.2: 689 | version "7.0.2" 690 | resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-7.0.2.tgz#863d83a6b5df0a2894560394be93d5383ea37a65" 691 | integrity sha512-5osppouFc0VR9/VYzYxO03VaDa3e8F23Kfd6/9qcZTUI8P58GIYlArOET2Wq0ywSl2o2PjELhYOFI4W7l5QHKw== 692 | dependencies: 693 | postcss-selector-parser "^7.0.0" 694 | 695 | postcss-normalize@13.0.1: 696 | version "13.0.1" 697 | resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-13.0.1.tgz#4e367c8933caba83557c6150af5aa4774b2a1c99" 698 | integrity sha512-oGfXG7IQ44FUIMFco2N2Uz71UotM+tZ9trEmT1bHIUR5gAplyG3RnHqpMDEcCx1r+1bwBJTrI5uhiQr4YOpqhQ== 699 | dependencies: 700 | "@csstools/normalize.css" "12.1.1" 701 | postcss-browser-comments "^6.0.1" 702 | sanitize.css "13.0.0" 703 | 704 | postcss-reporter@^7.0.0: 705 | version "7.0.5" 706 | resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-7.0.5.tgz#e55bd0fdf8d17e4f25fb55e9143fcd79349a2ceb" 707 | integrity sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA== 708 | dependencies: 709 | picocolors "^1.0.0" 710 | thenby "^1.3.4" 711 | 712 | postcss-selector-parser@^7.0.0: 713 | version "7.0.0" 714 | resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz#41bd8b56f177c093ca49435f65731befe25d6b9c" 715 | integrity sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ== 716 | dependencies: 717 | cssesc "^3.0.0" 718 | util-deprecate "^1.0.2" 719 | 720 | postcss-simple-vars@^2.0.0: 721 | version "2.0.0" 722 | resolved "https://registry.yarnpkg.com/postcss-simple-vars/-/postcss-simple-vars-2.0.0.tgz#d0a1091b0da22b79507028f7b22b976c0a60b8d5" 723 | integrity sha512-HllLaKKCBOdKudyzqrw/ve5rWouM9cDL+WHaSF9q4CkBEPjdTdiKNw1xF2dAz5rUKrxVmnUmOYxamwy37dnq2Q== 724 | dependencies: 725 | postcss "^5.0.21" 726 | 727 | postcss-simple-vars@^6.0.0: 728 | version "6.0.3" 729 | resolved "https://registry.yarnpkg.com/postcss-simple-vars/-/postcss-simple-vars-6.0.3.tgz#e66516c7fe980da3498f4a8ad400b9c53861806c" 730 | integrity sha512-fkNn4Zio8vN4vIig9IFdb8lVlxWnYR769RgvxCM6YWlFKie/nQaOcaMMMFz/s4gsfHW4/5bJW+i57zD67mQU7g== 731 | 732 | postcss-simple-vars@^7.0.1: 733 | version "7.0.1" 734 | resolved "https://registry.yarnpkg.com/postcss-simple-vars/-/postcss-simple-vars-7.0.1.tgz#836b3097a54dcd13dbd3c36a5dbdd512fad2954c" 735 | integrity sha512-5GLLXaS8qmzHMOjVxqkk1TZPf1jMqesiI7qLhnlyERalG0sMbHIbJqrcnrpmZdKCLglHnRHoEBB61RtGTsj++A== 736 | 737 | postcss-utilities@0.8.4: 738 | version "0.8.4" 739 | resolved "https://registry.yarnpkg.com/postcss-utilities/-/postcss-utilities-0.8.4.tgz#1587c77a33b003137db2a900f72808665c4677a0" 740 | integrity sha512-Ut4cEjuCMvxd7sA+QWNppLjKcfFUbIT41NsNBfitE/2QX1eMZs5G4HskNxW2L4JE6HhWad91aWVWKKYTZVWx6g== 741 | dependencies: 742 | postcss "^7.0.17" 743 | postcss-value-parser "^4.0.0" 744 | 745 | postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: 746 | version "4.2.0" 747 | resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" 748 | integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== 749 | 750 | postcss@8.5.4: 751 | version "8.5.4" 752 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.4.tgz#d61014ac00e11d5f58458ed7247d899bd65f99c0" 753 | integrity sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w== 754 | dependencies: 755 | nanoid "^3.3.11" 756 | picocolors "^1.1.1" 757 | source-map-js "^1.2.1" 758 | 759 | postcss@^5.0.0, postcss@^5.0.21, postcss@^5.0.4: 760 | version "5.2.18" 761 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" 762 | integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== 763 | dependencies: 764 | chalk "^1.1.3" 765 | js-base64 "^2.1.9" 766 | source-map "^0.5.6" 767 | supports-color "^3.2.3" 768 | 769 | postcss@^6.0.1: 770 | version "6.0.23" 771 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" 772 | integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== 773 | dependencies: 774 | chalk "^2.4.1" 775 | source-map "^0.6.1" 776 | supports-color "^5.4.0" 777 | 778 | postcss@^7.0.17: 779 | version "7.0.39" 780 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309" 781 | integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA== 782 | dependencies: 783 | picocolors "^0.2.1" 784 | source-map "^0.6.1" 785 | 786 | pretty-hrtime@^1.0.3: 787 | version "1.0.3" 788 | resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" 789 | integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A== 790 | 791 | read-cache@^1.0.0: 792 | version "1.0.0" 793 | resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" 794 | integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== 795 | dependencies: 796 | pify "^2.3.0" 797 | 798 | readdirp@~3.6.0: 799 | version "3.6.0" 800 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 801 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 802 | dependencies: 803 | picomatch "^2.2.1" 804 | 805 | reduce-function-call@^1.0.2: 806 | version "1.0.3" 807 | resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.3.tgz#60350f7fb252c0a67eb10fd4694d16909971300f" 808 | integrity sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ== 809 | dependencies: 810 | balanced-match "^1.0.0" 811 | 812 | require-directory@^2.1.1: 813 | version "2.1.1" 814 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 815 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 816 | 817 | resolve@^1.1.7: 818 | version "1.22.1" 819 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" 820 | integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== 821 | dependencies: 822 | is-core-module "^2.9.0" 823 | path-parse "^1.0.7" 824 | supports-preserve-symlinks-flag "^1.0.0" 825 | 826 | sanitize.css@13.0.0: 827 | version "13.0.0" 828 | resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-13.0.0.tgz#2675553974b27964c75562ade3bd85d79879f173" 829 | integrity sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA== 830 | 831 | slash@^5.0.0: 832 | version "5.0.0" 833 | resolved "https://registry.yarnpkg.com/slash/-/slash-5.0.0.tgz#8c18a871096b71ee0e002976a4fe3374991c3074" 834 | integrity sha512-n6KkmvKS0623igEVj3FF0OZs1gYYJ0o0Hj939yc1fyxl2xt+xYpLnzJB6xBSqOfV9ZFLEWodBBN/heZJahuIJQ== 835 | 836 | source-map-js@^1.2.1: 837 | version "1.2.1" 838 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" 839 | integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== 840 | 841 | source-map@^0.5.6: 842 | version "0.5.7" 843 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" 844 | integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== 845 | 846 | source-map@^0.6.1: 847 | version "0.6.1" 848 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 849 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 850 | 851 | string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: 852 | version "4.2.3" 853 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 854 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 855 | dependencies: 856 | emoji-regex "^8.0.0" 857 | is-fullwidth-code-point "^3.0.0" 858 | strip-ansi "^6.0.1" 859 | 860 | strip-ansi@^3.0.0: 861 | version "3.0.1" 862 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 863 | integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== 864 | dependencies: 865 | ansi-regex "^2.0.0" 866 | 867 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 868 | version "6.0.1" 869 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 870 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 871 | dependencies: 872 | ansi-regex "^5.0.1" 873 | 874 | sugarss@^4.0.1: 875 | version "4.0.1" 876 | resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-4.0.1.tgz#128a783ed71ee0fc3b489ce1f7d5a89bc1e24383" 877 | integrity sha512-WCjS5NfuVJjkQzK10s8WOBY+hhDxxNt/N6ZaGwxFZ+wN3/lKKFSaaKUNecULcTTvE4urLcKaZFQD8vO0mOZujw== 878 | 879 | supports-color@^2.0.0: 880 | version "2.0.0" 881 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 882 | integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== 883 | 884 | supports-color@^3.2.3: 885 | version "3.2.3" 886 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" 887 | integrity sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A== 888 | dependencies: 889 | has-flag "^1.0.0" 890 | 891 | supports-color@^5.3.0, supports-color@^5.4.0: 892 | version "5.5.0" 893 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 894 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 895 | dependencies: 896 | has-flag "^3.0.0" 897 | 898 | supports-preserve-symlinks-flag@^1.0.0: 899 | version "1.0.0" 900 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 901 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 902 | 903 | thenby@^1.3.4: 904 | version "1.3.4" 905 | resolved "https://registry.yarnpkg.com/thenby/-/thenby-1.3.4.tgz#81581f6e1bb324c6dedeae9bfc28e59b1a2201cc" 906 | integrity sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ== 907 | 908 | tinyglobby@^0.2.12: 909 | version "0.2.12" 910 | resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.12.tgz#ac941a42e0c5773bd0b5d08f32de82e74a1a61b5" 911 | integrity sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww== 912 | dependencies: 913 | fdir "^6.4.3" 914 | picomatch "^4.0.2" 915 | 916 | tinyglobby@^0.2.7: 917 | version "0.2.8" 918 | resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.8.tgz#dfa666c75551828580bfe900b86ebf3952bd4642" 919 | integrity sha512-AMLZywN0vbhiZi2neFEaj9VIIxC+PjDMsp0nAK6tpR86LJavZgHqGz0S/FOONwBygC+mu7R0/TyAQw0gx0Mu9Q== 920 | dependencies: 921 | fdir "^6.4.0" 922 | picomatch "^4.0.2" 923 | 924 | to-regex-range@^5.0.1: 925 | version "5.0.1" 926 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 927 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 928 | dependencies: 929 | is-number "^7.0.0" 930 | 931 | universalify@^2.0.0: 932 | version "2.0.0" 933 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" 934 | integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== 935 | 936 | update-browserslist-db@^1.1.1: 937 | version "1.1.1" 938 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" 939 | integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== 940 | dependencies: 941 | escalade "^3.2.0" 942 | picocolors "^1.1.0" 943 | 944 | update-browserslist-db@^1.1.3: 945 | version "1.1.3" 946 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" 947 | integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== 948 | dependencies: 949 | escalade "^3.2.0" 950 | picocolors "^1.1.1" 951 | 952 | util-deprecate@^1.0.2: 953 | version "1.0.2" 954 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 955 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 956 | 957 | wrap-ansi@^7.0.0: 958 | version "7.0.0" 959 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 960 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 961 | dependencies: 962 | ansi-styles "^4.0.0" 963 | string-width "^4.1.0" 964 | strip-ansi "^6.0.0" 965 | 966 | wrappy@1: 967 | version "1.0.2" 968 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 969 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 970 | 971 | y18n@^5.0.5: 972 | version "5.0.8" 973 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 974 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 975 | 976 | yaml@^2.3.4: 977 | version "2.3.4" 978 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" 979 | integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== 980 | 981 | yargs-parser@^21.0.0: 982 | version "21.1.1" 983 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" 984 | integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== 985 | 986 | yargs@^17.0.0: 987 | version "17.5.1" 988 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" 989 | integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== 990 | dependencies: 991 | cliui "^7.0.2" 992 | escalade "^3.1.1" 993 | get-caller-file "^2.0.5" 994 | require-directory "^2.1.1" 995 | string-width "^4.2.3" 996 | y18n "^5.0.5" 997 | yargs-parser "^21.0.0" 998 | --------------------------------------------------------------------------------