From e14b8c4ef6f365f78d0377f162d301e7aa34e956 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rastislav=20=E2=82=A1ore?= Date: Wed, 23 Oct 2024 20:34:01 +0200 Subject: [PATCH] Update/refactoring 09 (#41) * Converted to SCSS * Refactoring --- .browserslistrc | 3 + .editorconfig | 15 +- .eslintrc.json | 13 + .github/CODE_OF_CONDUCT.md | 128 + .github/FUNDING.yml | 1 - .github/workflows/documentation.yml | 43 - .github/workflows/test.yml | 33 + .gitignore | 163 +- .stylelintignore | 2 + .stylelintrc.json | 30 + .vscode/settings.json | 9 + README.md | 23 +- bower.json | 28 - package-lock.json | 9656 +++++++++++++++++ package.json | 127 +- .../montserrat-v25-latin-ext_latin-700.woff2 | Bin 0 -> 19768 bytes ...ntserrat-v25-latin-ext_latin-regular.woff2 | Bin 0 -> 19396 bytes preview/assets/img/favicon-32x32.png | Bin 0 -> 1363 bytes preview/assets/js/reading-direction.js | 4 + preview/assets/js/theme-mode.js | 4 + preview/pug/assets/data.json | 301 + preview/pug/layout.pug | 67 + preview/pug/page/button.pug | 73 + preview/pug/page/color.pug | 63 + preview/pug/page/component.pug | 8 + preview/pug/page/form.pug | 312 + preview/pug/page/function.pug | 15 + preview/pug/page/media.pug | 15 + preview/pug/page/mixin.pug | 39 + preview/pug/page/table.pug | 140 + preview/pug/page/typography.pug | 84 + scss/coco-styles.scss | 7 + scss/coco.scss | 9 + scss/config/_breakpoint.scss | 14 + scss/config/_button.scss | 50 + scss/config/_color.scss | 102 + scss/config/_display.scss | 10 + scss/config/_escaping-characters.scss | 8 + scss/config/_generator.scss | 37 + scss/config/_index.scss | 15 + scss/config/_info.scss | 6 + scss/config/_layout.scss | 9 + scss/config/_print.scss | 10 + scss/config/_setting.scss | 24 + scss/config/_spacer.scss | 18 + scss/config/_table.scss | 25 + scss/config/_transition.scss | 10 + scss/config/_typography.scss | 42 + scss/config/form/_check.scss | 38 + scss/config/form/_control.scss | 74 + scss/config/form/_description.scss | 11 + scss/config/form/_fieldset.scss | 14 + scss/config/form/_file.scss | 9 + scss/config/form/_group.scss | 29 + scss/config/form/_icon.scss | 15 + scss/config/form/_index.scss | 12 + scss/config/form/_label.scss | 14 + scss/config/form/_range.scss | 17 + scss/config/form/_row.scss | 9 + scss/config/form/_select.scss | 11 + scss/config/form/_switch.scss | 33 + scss/element/_accessibility.scss | 11 + scss/element/_default.scss | 53 + scss/element/_divider.scss | 8 + scss/element/_index.scss | 8 + scss/element/_media.scss | 26 + scss/element/_root.scss | 37 + scss/element/_table.scss | 107 + scss/element/_typography.scss | 154 + scss/element/_utilities.scss | 36 + scss/filters/_1977.scss | 24 + .../aden.sass => scss/filters/_aden.scss | 41 +- scss/filters/_amaro.scss | 10 + scss/filters/_blur.scss | 17 + scss/filters/_brannan.scss | 24 + scss/filters/_brightness.scss | 17 + scss/filters/_brooklyn.scss | 25 + scss/filters/_clarendon.scss | 24 + scss/filters/_contrast.scss | 17 + scss/filters/_earlybird.scss | 25 + scss/filters/_emoji.scss | 25 + scss/filters/_gingham.scss | 25 + scss/filters/_grayscale.scss | 21 + scss/filters/_hudson.scss | 25 + scss/filters/_hue-rotate.scss | 17 + scss/filters/_index.scss | 20 + .../filters/_inkwell.scss | 15 +- scss/filters/_invert.scss | 17 + scss/filters/_opacity.scss | 17 + .../filters/_saturate.scss | 21 +- scss/filters/_sepia.scss | 17 + scss/form/_button.scss | 100 + scss/form/_check.scss | 124 + scss/form/_control.scss | 196 + scss/form/_description.scss | 17 + scss/form/_fieldset.scss | 25 + scss/form/_file.scss | 31 + scss/form/_group-label.scss | 16 + scss/form/_group.scss | 95 + scss/form/_index.scss | 13 + scss/form/_label.scss | 16 + scss/form/_range.scss | 71 + scss/form/_row.scss | 12 + scss/form/_switch.scss | 117 + scss/form/_validation.scss | 18 + scss/function/_color.scss | 72 + scss/function/_config.scss | 35 + scss/function/_css-variable.scss | 15 + scss/function/_font-size.scss | 54 + scss/function/_index.scss | 7 + scss/function/_setting.scss | 29 + scss/function/_spacer.scss | 68 + scss/function/_utilities.scss | 29 + scss/mixin/_breakpoint.scss | 28 + scss/mixin/_button.scss | 126 + scss/mixin/_color.scss | 22 + scss/mixin/_css-variable.scss | 17 + scss/mixin/_font-face.scss | 29 + scss/mixin/_form.scss | 113 + scss/mixin/_generator.scss | 127 + scss/mixin/_index.scss | 11 + scss/mixin/_layout.scss | 146 + scss/mixin/_selection.scss | 40 + scss/mixin/_transition.scss | 19 + scss/mixin/_utilities.scss | 170 + scss/mixin/_variables.scss | 72 + scss/plugin/_index.scss | 1 + scss/plugin/_normalize.scss | 351 + scss/print/_index.scss | 22 + style/base/_all.sass | 4 - style/base/generic.sass | 186 - style/base/minireset.sass | 78 - style/coco.sass | 18 - style/components/_all.sass | 14 - style/components/breadcrumb.sass | 77 - style/components/card.sass | 103 - style/components/dropdown.sass | 83 - style/components/level.sass | 79 - style/components/media.sass | 59 - style/components/menu.sass | 59 - style/components/message.sass | 103 - style/components/modal.sass | 117 - style/components/navbar.sass | 488 - style/components/pagination.sass | 166 - style/components/panel.sass | 121 - style/components/tabs.sass | 192 - style/effects/_all.sass | 8 - style/effects/chessboard.sass | 15 - style/effects/emoji.sass | 96 - style/effects/rotate.sass | 14 - style/effects/spin.sass | 5 - style/effects/spinner.sass | 9 - style/effects/theme.sass | 69 - style/elements/_all.sass | 14 - style/elements/box.sass | 31 - style/elements/button.sass | 358 - style/elements/container.sass | 44 - style/elements/content.sass | 167 - style/elements/icon.sass | 53 - style/elements/image.sass | 78 - style/elements/notification.sass | 57 - style/elements/other.sass | 56 - style/elements/progress.sass | 78 - style/elements/table.sass | 139 - style/elements/tag.sass | 147 - style/elements/title.sass | 95 - style/filters/1977.sass | 21 - style/filters/_all.sass | 21 - style/filters/amaro.sass | 9 - style/filters/blur.sass | 14 - style/filters/brannan.sass | 21 - style/filters/brightness.sass | 14 - style/filters/brooklyn.sass | 22 - style/filters/clarendon.sass | 21 - style/filters/contrast.sass | 14 - style/filters/earlybird.sass | 22 - style/filters/gingham.sass | 22 - style/filters/grayscale.sass | 16 - style/filters/hudson.sass | 22 - style/filters/hue-rotate.sass | 14 - style/filters/invert.sass | 14 - style/filters/opacity.sass | 14 - style/filters/sepia.sass | 14 - style/form/_all.sass | 10 - style/form/checkbox-radio.sass | 22 - style/form/emutton.sass | 64 - style/form/file.sass | 182 - style/form/input-textarea.sass | 66 - style/form/select.sass | 88 - style/form/shared.sass | 60 - style/form/toggle.sass | 94 - style/form/tools.sass | 220 - style/grid/_all.sass | 5 - style/grid/columns.sass | 513 - style/grid/grid.sass | 105 - style/grid/tiles.sass | 36 - style/helpers/_all.sass | 11 - style/helpers/color.sass | 39 - style/helpers/flexbox.sass | 35 - style/helpers/float.sass | 10 - style/helpers/other.sass | 14 - style/helpers/overflow.sass | 2 - style/helpers/position.sass | 7 - style/helpers/spacing.sass | 31 - style/helpers/typography.sass | 103 - style/helpers/visibility.sass | 122 - style/layout/_all.sass | 5 - style/layout/footer.sass | 11 - style/layout/hero.sass | 156 - style/layout/section.sass | 17 - style/utilities/_all.sass | 9 - style/utilities/controls.sass | 49 - style/utilities/css-variables.sass | 157 - style/utilities/derived-variables.sass | 117 - style/utilities/extends.sass | 25 - style/utilities/functions.sass | 133 - style/utilities/initial-variables.sass | 79 - style/utilities/mixins.sass | 303 - style/utilities/themes.sass | 24 - test/bs-config.js | 96 - test/function/_config.scss | 9 + test/function/_index.scss | 1 + test/index.html | 770 -- test/sass.test.js | 5 + test/test.scss | 1 + 225 files changed, 15219 insertions(+), 7781 deletions(-) create mode 100755 .browserslistrc create mode 100755 .eslintrc.json create mode 100755 .github/CODE_OF_CONDUCT.md delete mode 100644 .github/FUNDING.yml delete mode 100644 .github/workflows/documentation.yml create mode 100755 .github/workflows/test.yml create mode 100755 .stylelintignore create mode 100755 .stylelintrc.json create mode 100755 .vscode/settings.json delete mode 100755 bower.json create mode 100644 package-lock.json mode change 100644 => 100755 package.json create mode 100755 preview/assets/fonts/montserrat-v25-latin-ext_latin-700.woff2 create mode 100755 preview/assets/fonts/montserrat-v25-latin-ext_latin-regular.woff2 create mode 100755 preview/assets/img/favicon-32x32.png create mode 100755 preview/assets/js/reading-direction.js create mode 100755 preview/assets/js/theme-mode.js create mode 100755 preview/pug/assets/data.json create mode 100755 preview/pug/layout.pug create mode 100755 preview/pug/page/button.pug create mode 100755 preview/pug/page/color.pug create mode 100755 preview/pug/page/component.pug create mode 100755 preview/pug/page/form.pug create mode 100755 preview/pug/page/function.pug create mode 100755 preview/pug/page/media.pug create mode 100755 preview/pug/page/mixin.pug create mode 100755 preview/pug/page/table.pug create mode 100755 preview/pug/page/typography.pug create mode 100755 scss/coco-styles.scss create mode 100755 scss/coco.scss create mode 100755 scss/config/_breakpoint.scss create mode 100755 scss/config/_button.scss create mode 100755 scss/config/_color.scss create mode 100755 scss/config/_display.scss create mode 100755 scss/config/_escaping-characters.scss create mode 100755 scss/config/_generator.scss create mode 100755 scss/config/_index.scss create mode 100644 scss/config/_info.scss create mode 100755 scss/config/_layout.scss create mode 100755 scss/config/_print.scss create mode 100755 scss/config/_setting.scss create mode 100755 scss/config/_spacer.scss create mode 100755 scss/config/_table.scss create mode 100755 scss/config/_transition.scss create mode 100755 scss/config/_typography.scss create mode 100755 scss/config/form/_check.scss create mode 100755 scss/config/form/_control.scss create mode 100755 scss/config/form/_description.scss create mode 100755 scss/config/form/_fieldset.scss create mode 100755 scss/config/form/_file.scss create mode 100755 scss/config/form/_group.scss create mode 100755 scss/config/form/_icon.scss create mode 100755 scss/config/form/_index.scss create mode 100755 scss/config/form/_label.scss create mode 100755 scss/config/form/_range.scss create mode 100755 scss/config/form/_row.scss create mode 100755 scss/config/form/_select.scss create mode 100755 scss/config/form/_switch.scss create mode 100755 scss/element/_accessibility.scss create mode 100755 scss/element/_default.scss create mode 100755 scss/element/_divider.scss create mode 100755 scss/element/_index.scss create mode 100755 scss/element/_media.scss create mode 100755 scss/element/_root.scss create mode 100755 scss/element/_table.scss create mode 100755 scss/element/_typography.scss create mode 100755 scss/element/_utilities.scss create mode 100644 scss/filters/_1977.scss rename style/filters/aden.sass => scss/filters/_aden.scss (51%) create mode 100644 scss/filters/_amaro.scss create mode 100644 scss/filters/_blur.scss create mode 100644 scss/filters/_brannan.scss create mode 100644 scss/filters/_brightness.scss create mode 100644 scss/filters/_brooklyn.scss create mode 100644 scss/filters/_clarendon.scss create mode 100644 scss/filters/_contrast.scss create mode 100644 scss/filters/_earlybird.scss create mode 100644 scss/filters/_emoji.scss create mode 100644 scss/filters/_gingham.scss create mode 100644 scss/filters/_grayscale.scss create mode 100644 scss/filters/_hudson.scss create mode 100644 scss/filters/_hue-rotate.scss create mode 100755 scss/filters/_index.scss rename style/filters/inkwell.sass => scss/filters/_inkwell.scss (61%) create mode 100644 scss/filters/_invert.scss create mode 100644 scss/filters/_opacity.scss rename style/filters/saturate.sass => scss/filters/_saturate.scss (52%) create mode 100644 scss/filters/_sepia.scss create mode 100755 scss/form/_button.scss create mode 100755 scss/form/_check.scss create mode 100755 scss/form/_control.scss create mode 100755 scss/form/_description.scss create mode 100755 scss/form/_fieldset.scss create mode 100755 scss/form/_file.scss create mode 100755 scss/form/_group-label.scss create mode 100755 scss/form/_group.scss create mode 100755 scss/form/_index.scss create mode 100755 scss/form/_label.scss create mode 100755 scss/form/_range.scss create mode 100755 scss/form/_row.scss create mode 100755 scss/form/_switch.scss create mode 100755 scss/form/_validation.scss create mode 100755 scss/function/_color.scss create mode 100755 scss/function/_config.scss create mode 100755 scss/function/_css-variable.scss create mode 100755 scss/function/_font-size.scss create mode 100755 scss/function/_index.scss create mode 100755 scss/function/_setting.scss create mode 100755 scss/function/_spacer.scss create mode 100755 scss/function/_utilities.scss create mode 100755 scss/mixin/_breakpoint.scss create mode 100755 scss/mixin/_button.scss create mode 100755 scss/mixin/_color.scss create mode 100755 scss/mixin/_css-variable.scss create mode 100755 scss/mixin/_font-face.scss create mode 100755 scss/mixin/_form.scss create mode 100755 scss/mixin/_generator.scss create mode 100755 scss/mixin/_index.scss create mode 100755 scss/mixin/_layout.scss create mode 100755 scss/mixin/_selection.scss create mode 100755 scss/mixin/_transition.scss create mode 100755 scss/mixin/_utilities.scss create mode 100755 scss/mixin/_variables.scss create mode 100755 scss/plugin/_index.scss create mode 100755 scss/plugin/_normalize.scss create mode 100755 scss/print/_index.scss delete mode 100755 style/base/_all.sass delete mode 100644 style/base/generic.sass delete mode 100755 style/base/minireset.sass delete mode 100644 style/coco.sass delete mode 100755 style/components/_all.sass delete mode 100755 style/components/breadcrumb.sass delete mode 100755 style/components/card.sass delete mode 100755 style/components/dropdown.sass delete mode 100755 style/components/level.sass delete mode 100755 style/components/media.sass delete mode 100755 style/components/menu.sass delete mode 100755 style/components/message.sass delete mode 100755 style/components/modal.sass delete mode 100755 style/components/navbar.sass delete mode 100755 style/components/pagination.sass delete mode 100755 style/components/panel.sass delete mode 100755 style/components/tabs.sass delete mode 100755 style/effects/_all.sass delete mode 100644 style/effects/chessboard.sass delete mode 100755 style/effects/emoji.sass delete mode 100644 style/effects/rotate.sass delete mode 100644 style/effects/spin.sass delete mode 100644 style/effects/spinner.sass delete mode 100644 style/effects/theme.sass delete mode 100755 style/elements/_all.sass delete mode 100755 style/elements/box.sass delete mode 100755 style/elements/button.sass delete mode 100755 style/elements/container.sass delete mode 100755 style/elements/content.sass delete mode 100755 style/elements/icon.sass delete mode 100755 style/elements/image.sass delete mode 100755 style/elements/notification.sass delete mode 100755 style/elements/other.sass delete mode 100755 style/elements/progress.sass delete mode 100755 style/elements/table.sass delete mode 100755 style/elements/tag.sass delete mode 100755 style/elements/title.sass delete mode 100644 style/filters/1977.sass delete mode 100755 style/filters/_all.sass delete mode 100644 style/filters/amaro.sass delete mode 100644 style/filters/blur.sass delete mode 100644 style/filters/brannan.sass delete mode 100644 style/filters/brightness.sass delete mode 100644 style/filters/brooklyn.sass delete mode 100644 style/filters/clarendon.sass delete mode 100644 style/filters/contrast.sass delete mode 100644 style/filters/earlybird.sass delete mode 100644 style/filters/gingham.sass delete mode 100644 style/filters/grayscale.sass delete mode 100644 style/filters/hudson.sass delete mode 100644 style/filters/hue-rotate.sass delete mode 100644 style/filters/invert.sass delete mode 100644 style/filters/opacity.sass delete mode 100644 style/filters/sepia.sass delete mode 100755 style/form/_all.sass delete mode 100755 style/form/checkbox-radio.sass delete mode 100644 style/form/emutton.sass delete mode 100755 style/form/file.sass delete mode 100755 style/form/input-textarea.sass delete mode 100755 style/form/select.sass delete mode 100755 style/form/shared.sass delete mode 100644 style/form/toggle.sass delete mode 100755 style/form/tools.sass delete mode 100755 style/grid/_all.sass delete mode 100755 style/grid/columns.sass delete mode 100644 style/grid/grid.sass delete mode 100755 style/grid/tiles.sass delete mode 100644 style/helpers/_all.sass delete mode 100644 style/helpers/color.sass delete mode 100644 style/helpers/flexbox.sass delete mode 100644 style/helpers/float.sass delete mode 100644 style/helpers/other.sass delete mode 100644 style/helpers/overflow.sass delete mode 100644 style/helpers/position.sass delete mode 100644 style/helpers/spacing.sass delete mode 100644 style/helpers/typography.sass delete mode 100644 style/helpers/visibility.sass delete mode 100755 style/layout/_all.sass delete mode 100755 style/layout/footer.sass delete mode 100755 style/layout/hero.sass delete mode 100755 style/layout/section.sass delete mode 100755 style/utilities/_all.sass delete mode 100755 style/utilities/controls.sass delete mode 100644 style/utilities/css-variables.sass delete mode 100755 style/utilities/derived-variables.sass delete mode 100644 style/utilities/extends.sass delete mode 100755 style/utilities/functions.sass delete mode 100755 style/utilities/initial-variables.sass delete mode 100755 style/utilities/mixins.sass delete mode 100644 style/utilities/themes.sass delete mode 100644 test/bs-config.js create mode 100755 test/function/_config.scss create mode 100755 test/function/_index.scss delete mode 100644 test/index.html create mode 100755 test/sass.test.js create mode 100755 test/test.scss diff --git a/.browserslistrc b/.browserslistrc new file mode 100755 index 0000000..b7e88bc --- /dev/null +++ b/.browserslistrc @@ -0,0 +1,3 @@ +# Browsers that we support + +defaults diff --git a/.editorconfig b/.editorconfig index 9231818..9bac260 100755 --- a/.editorconfig +++ b/.editorconfig @@ -1,11 +1,14 @@ +# editorconfig.org + root = true [*] -indent_style = tab -end_of_line = lf charset = utf-8 -trim_trailing_whitespace = true +end_of_line = lf +indent_size = 2 +indent_style = space insert_final_newline = true - -[*.md] -trim_trailing_whitespace = false +trim_trailing_whitespace = true +eclint_block_comment_start = /* +eclint_block_comment = * +eclint_block_comment_end = */ diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100755 index 0000000..802bb4b --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,13 @@ +{ + "env": { + "browser": true, + "es2021": true + }, + "extends": [ + "airbnb-base" + ], + "parserOptions": { + "ecmaVersion": "latest", + "sourceType": "module" + } +} diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md new file mode 100755 index 0000000..16f2ab5 --- /dev/null +++ b/.github/CODE_OF_CONDUCT.md @@ -0,0 +1,128 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +hello@conedevelopment.com. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index f8382ab..0000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -custom: ['https://blockindex.net/address/cb7147879011ea207df5b35a24ca6f0859dcfb145999'] diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml deleted file mode 100644 index 16a7cb3..0000000 --- a/.github/workflows/documentation.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: Build documentation - -on: - release: - types: [published] - -jobs: - docs: - name: Generate SassDoc Documentation - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Setup Node - uses: actions/setup-node@v3 - with: - node-version: 18.x - registry-url: 'https://registry.npmjs.org' - - - name: Setup Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: '3.3' - bundler-cache: true - - - name: Setup Sass - run: gem install sass - - - name: Install & Build - run: npm i && npm run build - - - name: Generate SassDoc documentation - run: npx sassdoc dist/sass --dest docs/ - - - name: Deploy documentation to GitHub Pages - uses: peaceiris/actions-gh-pages@v3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./docs - publish_branch: doc - user_name: 'github-actions[bot]' - user_email: 'github-actions[bot]@users.noreply.github.com' diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100755 index 0000000..be0230e --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,33 @@ +name: Test + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + + workflow_dispatch: + +jobs: + lint: + name: Lint + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: Checkout repository + uses: actions/checkout@v3 + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: 'lts/*' + - name: Install dependencies + run: npm ci + - name: Run linter + run: npm run sass:lint -- --formatter github + - name: Check EditorConfig configuration + run: test -f .editorconfig + - name: Check adherence to EditorConfig + uses: greut/eclint-action@v0 + with: + eclint_args: | + -exclude=css/* diff --git a/.gitignore b/.gitignore index aef009c..0a13f4e 100755 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,152 @@ +### Node ### +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test +.env*.local + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next + +# Nuxt.js build / generate output +.nuxt + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +### Prepros ### +# Config Prepros files to ignore +prepros.cfg +prepros-6.config +prepros.config + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# Preview's HTML and CSS +preview/assets/css +preview/html + +# .map files +*.map + # Files .DS_Store .ruby-version @@ -7,16 +156,6 @@ test.css.map npm-debug.log *.tar.gz *.zip -package-lock.json -yarn.lock -yarn-error.log - -# Folders -.idea/ -.sass-cache -_gh_pages -_site -node_modules -test/output/ -coco/ + +# Builds dist/ diff --git a/.stylelintignore b/.stylelintignore new file mode 100755 index 0000000..c7f8a7d --- /dev/null +++ b/.stylelintignore @@ -0,0 +1,2 @@ +scss/mixin/_layout.scss +scss/plugin/_normalize.scss diff --git a/.stylelintrc.json b/.stylelintrc.json new file mode 100755 index 0000000..940a156 --- /dev/null +++ b/.stylelintrc.json @@ -0,0 +1,30 @@ +{ + "extends": "stylelint-config-sass-guidelines", + "plugins": ["stylelint-order"], + "rules": { + "max-nesting-depth": 6, + "selector-no-vendor-prefix": [ + true, + { + "ignoreSelectors": ["/-moz-.*/", "/-ms-.*/", "/-webkit-.*/"] + } + ], + "selector-no-qualifying-type": [ + true, + { + "ignore": ["attribute"] + } + ], + "value-no-vendor-prefix": [ + true, + { + "ignoreValues": ["box"] + } + ], + "color-function-notation": "modern", + "selector-class-pattern": null, + "scss/percent-placeholder-pattern": null, + "order/properties-alphabetical-order": true, + "@stylistic/function-parentheses-space-inside": null + } +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100755 index 0000000..f43c097 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,9 @@ +{ + "workbench.colorCustomizations": { + "titleBar.activeForeground": "#ffffff", + "titleBar.inactiveForeground": "#ffffff", + "titleBar.activeBackground": "#22981c", + "titleBar.inactiveBackground": "#185f14" + }, + "editor.tabSize": 2 +} diff --git a/README.md b/README.md index 12a7111..906839a 100755 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # COCO -**COCO** is an open-source CSS framework based on [Flexbox](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes). It operates entirely without JavaScript. +**COCO** is an open-source CSS framework based on [Flexbox](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Using_CSS_flexible_boxes). 100% Responsive πŸ’» | Modular πŸ—‚ | Modern πŸ’ˆ | Free βš—οΈ --- | --- | --- | --- @@ -83,14 +83,12 @@ After installation, import the CSS file into your project: @import '@blockchainhub/coco/dist/css/coco.min.css'; ``` -**SASS version:** +**SCSS version:** ```css -@import '@blockchainhub/coco/dist/sass/coco.sass'; +@import '@blockchainhub/coco/dist/scss/coco.scss'; ``` -For the right-to-left (RTL) version, append `-rtl` to the file name. - ## Customize Distribution COCO is a CSS framework that outputs a single CSS file [coco.css](https://github.com/bchainhub/coco/blob/master/dist/css/coco.css) or a SASS distribution. You can use it "out of the box" or download the Sass source files to customize the variables. @@ -159,21 +157,6 @@ To set a theme, add `data-theme="theme"` to the HTML tag. COCO supports light and dark themes natively. -#### Theme Switch - -> To switch between dark/light themes in a `nav` pane: - -1. Add the input after the body tag: `` -2. Add a label within the navbar, following this structure: - -```html - -``` - -Note: The theme switch depends on the [:has()](https://caniuse.com/css-has) CSS selector. - #### Current Version > Display the current version of COCO using this code: diff --git a/bower.json b/bower.json deleted file mode 100755 index 048a23a..0000000 --- a/bower.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "name": "coco", - "homepage": "https://bchainhub.github.io/coco/", - "authors": [ - "Blockchain Hub", - "Jeremy Thomas (https://github.com/jgthms)" - ], - "description": "Modern CSS framework based on Flexbox.", - "main": "dist/sass/coco.sass", - "keywords": [ - "css", - "sass", - "flexbox", - "responsive", - "framework" - ], - "license": "CORE", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests", - "docs", - "style", - ".github" - ] -} diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..1bd7120 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,9656 @@ +{ + "name": "@blockchainhub/coco", + "version": "2.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@blockchainhub/coco", + "version": "2.0.0", + "license": "CORE", + "devDependencies": { + "autoprefixer": "^10.4.20", + "browser-sync": "^3.0.3", + "del-cli": "^6.0.0", + "jest": "^29.7.0", + "jest-environment-node-single-context": "^29.4.0", + "nodemon": "^3.1.7", + "npm-run-all": "^4.1.5", + "postcss-cli": "^11.0.0", + "pug-cli": "^1.0.0-alpha6", + "sass": "^1.80.3", + "sass-true": "^8.1.0", + "stylelint": "^16.10.0", + "stylelint-config-sass-guidelines": "^12.1.0", + "stylelint-order": "^6.0.4" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz", + "integrity": "sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.9.tgz", + "integrity": "sha512-z88xeGxnzehn2sqZ8UdGQEvYErF1odv2CftxInpSYJt6uHuPe9YjahKZITGs3l5LeI9d2ROG+obuDAoSlqbNfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.25.9", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.9.tgz", + "integrity": "sha512-yD+hEuJ/+wAJ4Ox2/rpNv5HIuPG82x3ZlQvYVn8iYCprdxzE7P1udpGF1jyjQVBU4dgznN+k2h103vxZ7NdPyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.9.tgz", + "integrity": "sha512-WYvQviPw+Qyib0v92AwNIrdLISTp7RfDkM7bPqBvpbnhY4wq8HvHBZREVdYDXk98C8BkOIVnHAY3yvj7AVISxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helpers": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/core/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/generator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.9.tgz", + "integrity": "sha512-omlUGkr5EaoIJrhLf9CJ0TvjBRpd9+AXRG//0GEQ9THSo8wPiTlbpy1/Ow8ZTrbXpjd9FHXfbFQx32I04ht0FA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", + "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.9.tgz", + "integrity": "sha512-TvLZY/F3+GvdRYFZFyxMvnsKi+4oJdgZzU3BoGN9Uc2d9C6zfNwJcKKhjqLAhK8i46mv93jsO74fDh3ih6rpHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-simple-access": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", + "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz", + "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.9.tgz", + "integrity": "sha512-oKWp3+usOJSzDZOucZUAMayhPz/xVjzymyDzUN8dk0Wd3RWMlGLXi07UCQ/CgQVb8LvXx3XBajJH4XGgkt7H7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.9.tgz", + "integrity": "sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.9.tgz", + "integrity": "sha512-aI3jjAAO1fh7vY/pBGsn1i9LDbRP43+asrRlkPuTXW5yHXtd1NgTEMudbBoDDxrf1daEEfPJqR+JBMakzrR4Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.9.tgz", + "integrity": "sha512-u3EN9ub8LyYvgTnrgp8gboElouayiwPdnM7x5tcnW3iSt09/lQYPwMNK40I9IUxo7QOZhAsPHCmmuO7EPdruqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", + "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/template": "^7.25.9", + "@babel/types": "^7.25.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@babel/traverse/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/types": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.9.tgz", + "integrity": "sha512-OwS2CM5KocvQ/k7dFJa8i5bNGJP0hXWfVCfDkqRFP1IreH1JDC7wG6eCYCi0+McbfT8OR/kNqsI0UU0xP9H6PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.2.tgz", + "integrity": "sha512-6tC/MnlEvs5suR4Ahef4YlBccJDHZuxGsAlxXmybWjZ5jPxlzLSMlRZ9mVHSRvlD+CmtE7+hJ+UQbfXrws/rUQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.2" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.2.tgz", + "integrity": "sha512-IuTRcD53WHsXPCZ6W7ubfGqReTJ9Ra0yRRFmXYP/Re8hFYYfoIYIK4080X5luslVLWimhIeFq0hj09urVMQzTw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/media-query-list-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.1.tgz", + "integrity": "sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-4.0.0.tgz", + "integrity": "sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.1.0" + } + }, + "node_modules/@dual-bundle/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/console/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz", + "integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.4.1", + "@parcel/watcher-darwin-arm64": "2.4.1", + "@parcel/watcher-darwin-x64": "2.4.1", + "@parcel/watcher-freebsd-x64": "2.4.1", + "@parcel/watcher-linux-arm-glibc": "2.4.1", + "@parcel/watcher-linux-arm64-glibc": "2.4.1", + "@parcel/watcher-linux-arm64-musl": "2.4.1", + "@parcel/watcher-linux-x64-glibc": "2.4.1", + "@parcel/watcher-linux-x64-musl": "2.4.1", + "@parcel/watcher-win32-arm64": "2.4.1", + "@parcel/watcher-win32-ia32": "2.4.1", + "@parcel/watcher-win32-x64": "2.4.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz", + "integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz", + "integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz", + "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz", + "integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz", + "integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz", + "integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz", + "integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz", + "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz", + "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz", + "integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz", + "integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz", + "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@stylistic/stylelint-plugin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@stylistic/stylelint-plugin/-/stylelint-plugin-3.1.1.tgz", + "integrity": "sha512-XagAHHIa528EvyGybv8EEYGK5zrVW74cHpsjhtovVATbhDRuJYfE+X4HCaAieW9lCkwbX6L+X0I4CiUG3w/hFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1", + "@csstools/media-query-list-parser": "^3.0.1", + "is-plain-object": "^5.0.0", + "postcss-selector-parser": "^6.1.2", + "postcss-value-parser": "^4.2.0", + "style-search": "^0.1.0", + "stylelint": "^16.8.2" + }, + "engines": { + "node": "^18.12 || >=20.9" + }, + "peerDependencies": { + "stylelint": "^16.8.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/babel-types": { + "version": "7.0.16", + "resolved": "https://registry.npmjs.org/@types/babel-types/-/babel-types-7.0.16.tgz", + "integrity": "sha512-5QXs9GBFTNTmilLlWBhnsprqpjfrotyrnzUdwDrywEL/DA4LuCWQT300BTOXA3Y9ngT9F2uvmCoIxI6z8DlJEA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/babylon": { + "version": "6.16.9", + "resolved": "https://registry.npmjs.org/@types/babylon/-/babylon-6.16.9.tgz", + "integrity": "sha512-sEKyxMVEowhcr8WLfN0jJYe4gS4Z9KC2DGz0vqfC7+MXFbmvOF7jSjALC77thvAO2TLgFUPa9vDeOak+AcUrZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/babel-types": "*" + } + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/node": { + "version": "22.7.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.9.tgz", + "integrity": "sha512-jrTfRC7FM6nChvU7X2KqcrgquofrWLFDeYC1hKfwNWomVvrn7JIksqf344WN2X/y8xrgqBd2dJATZV4GbatBfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha512-fu2ygVGuMmlzG8ZeRJ0bvR41nsAkxxhbyk8bZ1SS521Z7vmgJFTQQlfz/Mp/nJexGBz+v8sC9bM6+lNgskt4Ug==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", + "integrity": "sha512-uWttZCk96+7itPxK8xCzY86PnxKTMrReKDqrHzv42VQY0K30PUO8WY13WMOuI+cOdX4EIdzdvQ8k6jkuGRFMYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^4.0.4" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha512-GrTZLRpmp6wIC2ztrWW9MjjTgSKccffgFagbNDOX95/dcjEcYZibYTeaOntySQLcdw1ztBoFkviiUvTMbb9MYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/align-text/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/async-each-series": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", + "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", + "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "node_modules/babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true, + "license": "MIT", + "bin": { + "babylon": "bin/babylon.js" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true, + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-sync": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-3.0.3.tgz", + "integrity": "sha512-91hoBHKk1C4pGeD+oE9Ld222k2GNQEAsI5AElqR8iLLWNrmZR2LPP8B0h8dpld9u7kro5IEUB3pUb0DJ3n1cRQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "browser-sync-client": "^3.0.3", + "browser-sync-ui": "^3.0.3", + "bs-recipes": "1.3.4", + "chalk": "4.1.2", + "chokidar": "^3.5.1", + "connect": "3.6.6", + "connect-history-api-fallback": "^1", + "dev-ip": "^1.0.1", + "easy-extender": "^2.3.4", + "eazy-logger": "^4.0.1", + "etag": "^1.8.1", + "fresh": "^0.5.2", + "fs-extra": "3.0.1", + "http-proxy": "^1.18.1", + "immutable": "^3", + "micromatch": "^4.0.8", + "opn": "5.3.0", + "portscanner": "2.2.0", + "raw-body": "^2.3.2", + "resp-modifier": "6.0.2", + "rx": "4.1.0", + "send": "^0.19.0", + "serve-index": "^1.9.1", + "serve-static": "^1.16.2", + "server-destroy": "1.0.1", + "socket.io": "^4.4.1", + "ua-parser-js": "^1.0.33", + "yargs": "^17.3.1" + }, + "bin": { + "browser-sync": "dist/bin.js" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/browser-sync-client": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-3.0.3.tgz", + "integrity": "sha512-TOEXaMgYNjBYIcmX5zDlOdjEqCeCN/d7opf/fuyUD/hhGVCfP54iQIDhENCi012AqzYZm3BvuFl57vbwSTwkSQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "etag": "1.8.1", + "fresh": "0.5.2", + "mitt": "^1.1.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/browser-sync-ui": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-3.0.3.tgz", + "integrity": "sha512-FcGWo5lP5VodPY6O/f4pXQy5FFh4JK0f2/fTBsp0Lx1NtyBWs/IfPPJbW8m1ujTW/2r07oUXKTF2LYZlCZktjw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "async-each-series": "0.1.1", + "chalk": "4.1.2", + "connect-history-api-fallback": "^1", + "immutable": "^3", + "server-destroy": "1.0.1", + "socket.io-client": "^4.4.1", + "stream-throttle": "^0.1.3" + } + }, + "node_modules/browserslist": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bs-recipes": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", + "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", + "dev": true, + "license": "ISC" + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001669", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz", + "integrity": "sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha512-Baz3aNe2gd2LP2qk5U+sDk/m4oSuwSDcBfayTCTBoWpfIGO5XFxPmjILQII4NGiZjD6DoDI6kf7gKaxkf7s3VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/character-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz", + "integrity": "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-regex": "^1.0.3" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", + "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/constantinople": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.1.2.tgz", + "integrity": "sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/babel-types": "^7.0.0", + "@types/babylon": "^6.16.2", + "babel-types": "^6.26.0", + "babylon": "^6.18.0" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", + "dev": true, + "hasInstallScript": true, + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cosmiconfig/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/cosmiconfig/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-functions-list": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", + "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12 || >=16" + } + }, + "node_modules/css-tree": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.0.0.tgz", + "integrity": "sha512-o88DVQ6GzsABn1+6+zo2ct801dBO5OASVyxbbvA2W20ue2puSh/VOuqUj90eUeMSX/xqGqBmOKiRQN7tJOuBXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.10.0", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/del": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-8.0.0.tgz", + "integrity": "sha512-R6ep6JJ+eOBZsBr9esiNN1gxFbZE4Q2cULkUSFumGYecAiS6qodDvcPx/sFuWHMNul7DWmrtoEOpYSm7o6tbSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "globby": "^14.0.2", + "is-glob": "^4.0.3", + "is-path-cwd": "^3.0.0", + "is-path-inside": "^4.0.0", + "p-map": "^7.0.2", + "slash": "^5.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/del-cli": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del-cli/-/del-cli-6.0.0.tgz", + "integrity": "sha512-9nitGV2W6KLFyya4qYt4+9AKQFL+c0Ehj5K7V7IwlxTc6RMCfQUGY9E9pLG6e8TQjtwXpuiWIGGZb3mfVxyZkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "del": "^8.0.0", + "meow": "^13.2.0" + }, + "bin": { + "del": "cli.js", + "del-cli": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/dev-ip": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", + "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", + "dev": true, + "bin": { + "dev-ip": "lib/dev-ip.js" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctypes": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz", + "integrity": "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/easy-extender": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", + "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", + "dev": true, + "dependencies": { + "lodash": "^4.17.10" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/eazy-logger": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-4.0.1.tgz", + "integrity": "sha512-2GSFtnnC6U4IEKhEI7+PvdxrmjJ04mdsj3wHZTFiw0tUtG4HCWzTr13ZYTk8XOGnA1xQMaDljoBOYlk3D/MMSw==", + "dev": true, + "dependencies": { + "chalk": "4.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.43", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.43.tgz", + "integrity": "sha512-NxnmFBHDl5Sachd2P46O7UJiMaMHMLSofoIWVJq3mj8NJgG0umiSeljAVP9lGzjI0UDLJJ5jjoGjcrB8RSbjLQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/engine.io": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.2.tgz", + "integrity": "sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.7.2", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/engine.io-client": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.2.tgz", + "integrity": "sha512-TAr+NKeoVTjEVW8P3iHguO1LO6RlUz9O5Y8o7EY0fU+gY1NYqas7NN3slpFtbXEsLMHk0h90fJMfKjRkQ0qUIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1", + "xmlhttprequest-ssl": "~2.1.1" + } + }, + "node_modules/engine.io-client/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/engine.io-client/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/engine.io-parser": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/engine.io/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true, + "license": "MIT" + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", + "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/file-entry-cache": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz", + "integrity": "sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz", + "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.3.1", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stdin": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", + "dev": true, + "license": "MIT" + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true, + "license": "ISC" + }, + "node_modules/immutable": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-expression": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-expression/-/is-expression-3.0.0.tgz", + "integrity": "sha512-vyMeQMq+AiH5uUnoBfMTwf18tO3bM6k1QXBE9D6ueAAquEfCZe3AJPtud9g6qS0+4X8xA7ndpZiDyeb2l2qOBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "~4.0.2", + "object-assign": "^4.0.1" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-like": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", + "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lodash.isfinite": "^3.3.2" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-3.0.0.tgz", + "integrity": "sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node-single-context": { + "version": "29.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-node-single-context/-/jest-environment-node-single-context-29.4.0.tgz", + "integrity": "sha512-VOuB0Pf3/+Tu0eImZ888SeHpFIiujRiW/3b6NTST1/zdv6ZdRAblCV2q5SisF0PlDA8y9SHJWjKFtFXNJ7U6CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-environment-node": "^29.7.0" + }, + "funding": { + "url": "https://github.com/kayahr/jest-environment-node-single-context?sponsor=1" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-stringify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz", + "integrity": "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jstransformer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz", + "integrity": "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-promise": "^2.0.0", + "promise": "^7.0.1" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/known-css-properties": { + "version": "0.34.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.34.0.tgz", + "integrity": "sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha512-RE2g0b5VGZsOCFOCgP7omTRYFqydmZkBwl5oNnQ1lDYC57uyO9KqNnNVxT7COSHTxrRCWVcAVOcbjk+tvh/rgQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", + "dev": true + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isfinite": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", + "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha512-k+yt5n3l48JU4k8ftnKG6V7u32wyH2NfKzeMto9F/QRE0amxy/LayxwlvjjkZEIzqR+19IrtFO8p5kB9QaYUFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdn-data": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.10.0.tgz", + "integrity": "sha512-qq7C3EtK3yJXMwz1zAab65pjl+UhohqMOctTgcqjLOWABqmwj+me02LSsCuEUxnst9X1lCBpoE0WArGKgdGDzw==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/meow": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mitt": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", + "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", + "dev": true, + "license": "MIT" + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true, + "license": "MIT" + }, + "node_modules/nodemon": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.7.tgz", + "integrity": "sha512-hLj7fuMow6f0lbB0cD14Lz2xNjwsyruH251Pk4t/yIitCFJbmY1myuLlHm/q06aST4jg6EgAh74PIBBrRqpVAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/nodemon/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/nodemon/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nodemon/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/nodemon/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm-run-all/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/npm-run-all/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/npm-run-all/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/npm-run-all/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-all/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-wsl": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.2.tgz", + "integrity": "sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true, + "license": "MIT", + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/portscanner": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", + "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^2.6.0", + "is-number-like": "^1.0.3" + }, + "engines": { + "node": ">=0.4", + "npm": ">=1.0.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-cli": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-11.0.0.tgz", + "integrity": "sha512-xMITAI7M0u1yolVcXJ9XTZiO9aO49mcoKQy6pCDFdMh9kGqhzLVpWxeD/32M/QBmkhcGypZFFOLNLmIW4Pg4RA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.3.0", + "dependency-graph": "^0.11.0", + "fs-extra": "^11.0.0", + "get-stdin": "^9.0.0", + "globby": "^14.0.0", + "picocolors": "^1.0.0", + "postcss-load-config": "^5.0.0", + "postcss-reporter": "^7.0.0", + "pretty-hrtime": "^1.0.3", + "read-cache": "^1.0.0", + "slash": "^5.0.0", + "yargs": "^17.0.0" + }, + "bin": { + "postcss": "index.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-cli/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/postcss-cli/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/postcss-cli/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/postcss-load-config": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-5.1.0.tgz", + "integrity": "sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1", + "yaml": "^2.4.2" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + } + } + }, + "node_modules/postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-reporter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.1.0.tgz", + "integrity": "sha512-/eoEylGWyy6/DOiMP5lmFRdmDKThqgn7D6hP2dXKJI/0rJSO1ADFNngZfDzxL0YAxFvws+Rtpuji1YIHj4mySA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "thenby": "^1.3.4" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-resolve-nested-selector": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", + "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-safe-parser": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", + "integrity": "sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-safe-parser" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-scss": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", + "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-scss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.4.29" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-sorting": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/postcss-sorting/-/postcss-sorting-8.0.2.tgz", + "integrity": "sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "postcss": "^8.4.20" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "asap": "~2.0.3" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true, + "license": "MIT" + }, + "node_modules/pug": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.4.tgz", + "integrity": "sha512-XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "pug-code-gen": "^2.0.2", + "pug-filters": "^3.1.1", + "pug-lexer": "^4.1.0", + "pug-linker": "^3.0.6", + "pug-load": "^2.0.12", + "pug-parser": "^5.0.1", + "pug-runtime": "^2.0.5", + "pug-strip-comments": "^1.0.4" + } + }, + "node_modules/pug-attrs": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pug-attrs/-/pug-attrs-2.0.4.tgz", + "integrity": "sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "constantinople": "^3.0.1", + "js-stringify": "^1.0.1", + "pug-runtime": "^2.0.5" + } + }, + "node_modules/pug-cli": { + "version": "1.0.0-alpha6", + "resolved": "https://registry.npmjs.org/pug-cli/-/pug-cli-1.0.0-alpha6.tgz", + "integrity": "sha512-ogaf7h4cT174NFSHNqAMdrZpGFCZSvsht41IYZZgP7ERZ1OxSc5fmPpojo1w9UntVreeChQP3BJ5r+Fey0a9zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^1.0.0", + "commander": "^2.8.1", + "mkdirp": "^0.5.1", + "pug": "^2.0.0-alpha7" + }, + "bin": { + "pug": "index.js" + } + }, + "node_modules/pug-cli/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pug-cli/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pug-cli/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pug-cli/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/pug-cli/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pug-cli/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/pug-code-gen": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.3.tgz", + "integrity": "sha512-r9sezXdDuZJfW9J91TN/2LFbiqDhmltTFmGpHTsGdrNGp3p4SxAjjXEfnuK2e4ywYsRIVP0NeLbSAMHUcaX1EA==", + "dev": true, + "license": "MIT", + "dependencies": { + "constantinople": "^3.1.2", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.1", + "pug-attrs": "^2.0.4", + "pug-error": "^1.3.3", + "pug-runtime": "^2.0.5", + "void-elements": "^2.0.1", + "with": "^5.0.0" + } + }, + "node_modules/pug-error": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/pug-error/-/pug-error-1.3.3.tgz", + "integrity": "sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/pug-filters": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.1.tgz", + "integrity": "sha512-lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-css": "^4.1.11", + "constantinople": "^3.0.1", + "jstransformer": "1.0.0", + "pug-error": "^1.3.3", + "pug-walk": "^1.1.8", + "resolve": "^1.1.6", + "uglify-js": "^2.6.1" + } + }, + "node_modules/pug-lexer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.1.0.tgz", + "integrity": "sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-parser": "^2.1.1", + "is-expression": "^3.0.0", + "pug-error": "^1.3.3" + } + }, + "node_modules/pug-linker": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.6.tgz", + "integrity": "sha512-bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pug-error": "^1.3.3", + "pug-walk": "^1.1.8" + } + }, + "node_modules/pug-load": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/pug-load/-/pug-load-2.0.12.tgz", + "integrity": "sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.0", + "pug-walk": "^1.1.8" + } + }, + "node_modules/pug-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.1.tgz", + "integrity": "sha512-nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pug-error": "^1.3.3", + "token-stream": "0.0.1" + } + }, + "node_modules/pug-runtime": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/pug-runtime/-/pug-runtime-2.0.5.tgz", + "integrity": "sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw==", + "dev": true, + "license": "MIT" + }, + "node_modules/pug-strip-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz", + "integrity": "sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "pug-error": "^1.3.3" + } + }, + "node_modules/pug-walk": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pug-walk/-/pug-walk-1.1.8.tgz", + "integrity": "sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA==", + "dev": true, + "license": "MIT" + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ], + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true, + "license": "ISC" + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/resp-modifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", + "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==", + "dev": true, + "dependencies": { + "debug": "^2.2.0", + "minimatch": "^3.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha512-yqINtL/G7vs2v+dFIZmFUDbnVyFUJFKd6gK22Kgo6R4jfJGFtisKyncWDDULgjfqf4ASQuIQyjJ7XZ+3aWpsAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "align-text": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/sass": { + "version": "1.80.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.80.3.tgz", + "integrity": "sha512-ptDWyVmDMVielpz/oWy3YP3nfs7LpJTHIJZboMVs8GEC9eUmtZTZhMHlTW98wY4aEorDfjN38+Wr/XjskFWcfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/watcher": "^2.4.1", + "chokidar": "^4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-true": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/sass-true/-/sass-true-8.1.0.tgz", + "integrity": "sha512-LUiNRslsNreGk8Oe85ZvMmV0mlIh3LFP2KTDMZsSHz5DxPElCy7wI9ocJzf8IpIf7Q5ZO0w+hDBF1nbdUcmZHA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@adobe/css-tools": "^4.4.0", + "jest-diff": "^29.7.0", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "sass": ">=1.45.0", + "sass-embedded": ">=1.45.0" + }, + "peerDependenciesMeta": { + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/sass/node_modules/chokidar": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/sass/node_modules/immutable": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/sass/node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.1.tgz", + "integrity": "sha512-p4rRk4f23ynFEfcD9LA0xRYngj+IyGiEYyqqOak8kaN0TvNmuxC2dcVeBn62GpCeR2CpWqyHCNScTP91QbAVFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/send/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true, + "license": "ISC" + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-static/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/serve-static/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-static/node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/socket.io": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.0.tgz", + "integrity": "sha512-8U6BEgGjQOfGz3HHTYaC/L1GaxDCJ/KM0XTkJly0EhZ5U/du9uNEZy4ZgYzEzIqlx2CMm25CrCqr1ck899eLNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.3.2", + "engine.io": "~6.6.0", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "~4.3.4", + "ws": "~8.17.1" + } + }, + "node_modules/socket.io-adapter/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-adapter/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/socket.io-client": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.0.tgz", + "integrity": "sha512-C0jdhD5yQahMws9alf/yvtsMGTaIDBnZ8Rb5HU56svyq0l5LIrGzIDZZD5pHQlmzxLuU91Gz+VpQMKgCTNYtkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.6.1", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-client/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-client/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-parser/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/socket.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stream-throttle": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", + "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "commander": "^2.2.0", + "limiter": "^1.0.5" + }, + "bin": { + "throttleproxy": "bin/throttleproxy.js" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.padend": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.6.tgz", + "integrity": "sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-search": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", + "dev": true, + "license": "ISC" + }, + "node_modules/stylelint": { + "version": "16.10.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.10.0.tgz", + "integrity": "sha512-z/8X2rZ52dt2c0stVwI9QL2AFJhLhbPkyfpDFcizs200V/g7v+UYY6SNcB9hKOLcDDX/yGLDsY/pX08sLkz9xQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + }, + { + "type": "github", + "url": "https://github.com/sponsors/stylelint" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1", + "@csstools/media-query-list-parser": "^3.0.1", + "@csstools/selector-specificity": "^4.0.0", + "@dual-bundle/import-meta-resolve": "^4.1.0", + "balanced-match": "^2.0.0", + "colord": "^2.9.3", + "cosmiconfig": "^9.0.0", + "css-functions-list": "^3.2.3", + "css-tree": "^3.0.0", + "debug": "^4.3.7", + "fast-glob": "^3.3.2", + "fastest-levenshtein": "^1.0.16", + "file-entry-cache": "^9.1.0", + "global-modules": "^2.0.0", + "globby": "^11.1.0", + "globjoin": "^0.1.4", + "html-tags": "^3.3.1", + "ignore": "^6.0.2", + "imurmurhash": "^0.1.4", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.34.0", + "mathml-tag-names": "^2.1.3", + "meow": "^13.2.0", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "picocolors": "^1.0.1", + "postcss": "^8.4.47", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-safe-parser": "^7.0.1", + "postcss-selector-parser": "^6.1.2", + "postcss-value-parser": "^4.2.0", + "resolve-from": "^5.0.0", + "string-width": "^4.2.3", + "supports-hyperlinks": "^3.1.0", + "svg-tags": "^1.0.0", + "table": "^6.8.2", + "write-file-atomic": "^5.0.1" + }, + "bin": { + "stylelint": "bin/stylelint.mjs" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/stylelint-config-sass-guidelines": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/stylelint-config-sass-guidelines/-/stylelint-config-sass-guidelines-12.1.0.tgz", + "integrity": "sha512-NTxEtVT6uNSqRvq+A3ScyKhjUrY/Z845TnpWEwnMgIPZ/+/Waa4+51r6OPuQRMu4XZS3D8DK1UaT4TWFBvuuAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@stylistic/stylelint-plugin": "^3.0.1", + "postcss-scss": "^4.0.9", + "stylelint-scss": "^6.2.1" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "postcss": "^8.4.21", + "stylelint": "^16.1.0" + } + }, + "node_modules/stylelint-order": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/stylelint-order/-/stylelint-order-6.0.4.tgz", + "integrity": "sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss": "^8.4.32", + "postcss-sorting": "^8.0.2" + }, + "peerDependencies": { + "stylelint": "^14.0.0 || ^15.0.0 || ^16.0.1" + } + }, + "node_modules/stylelint-scss": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.8.1.tgz", + "integrity": "sha512-al+5eRb72bKrFyVAY+CLWKUMX+k+wsDCgyooSfhISJA2exqnJq1PX1iIIpdrvhu3GtJgNJZl9/BIW6EVSMCxdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "^3.0.0", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.34.0", + "mdn-data": "^2.11.1", + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.6", + "postcss-selector-parser": "^6.1.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=18.12.0" + }, + "peerDependencies": { + "stylelint": "^16.0.2" + } + }, + "node_modules/stylelint-scss/node_modules/mdn-data": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.11.1.tgz", + "integrity": "sha512-Hdx3wmyqPFrhd6YHVuSkUK2eIGAcxR0xlndcgZqjA68yMJTbfXrjJwbgsBOsNjI7LnBIVUQnmyMVSdi/ob0GpQ==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/stylelint/node_modules/balanced-match": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", + "dev": true, + "license": "MIT" + }, + "node_modules/stylelint/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/stylelint/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/globby/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/stylelint/node_modules/ignore": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz", + "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/stylelint/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/stylelint/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/stylelint/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", + "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "node_modules/table": { + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/thenby": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz", + "integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/token-stream": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/token-stream/-/token-stream-0.0.1.tgz", + "integrity": "sha512-nfjOAu/zAWmX9tgwi5NRp7O7zTDUD1miHiB40klUnAh9qnL1iXdgzcz/i5dMaL5jahcBAaSfmNOBBJBLJW8TEg==", + "dev": true, + "license": "MIT" + }, + "node_modules/touch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", + "dev": true, + "license": "ISC", + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ua-parser-js": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.39.tgz", + "integrity": "sha512-k24RCVWlEcjkdOxYmVJgeD/0a1TiSpqLg+ZalVGV9lsnr4yqu0w7tX/x2xX6G4zpkgQnRf89lxuZ1wsbjXM8lw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha512-qLq/4y2pjcU3vhlhseXGGJ7VbFO4pBANu0kwl8VCa9KEI0V8VfZIx2Fy3w01iSTA/pGwKZSmu/+I4etLNDdt5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "source-map": "~0.5.1", + "yargs": "~3.10.0" + }, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + }, + "optionalDependencies": { + "uglify-to-browserify": "~1.0.0" + } + }, + "node_modules/uglify-js/node_modules/camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uglify-js/node_modules/cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha512-GIOYRizG+TGoc7Wgc1LiOTLare95R3mzKgoln+Q/lE4ceiYH19gUpl0l0Ffq4lJDEf3FxujMe6IBfOCs7pfqNA==", + "dev": true, + "license": "ISC", + "dependencies": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "node_modules/uglify-js/node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uglify-js/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uglify-js/node_modules/yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha512-QFzUah88GAGy9lyDKGBqZdkYApt63rCXYBGYnEP4xDJPXNqXXnBDACnbrXnViV6jRSqAePwrATi2i8mfYm4L1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "window-size": "0.1.0" + } + }, + "node_modules/uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true, + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "license": "ISC", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha512-1pTPQDKTdd61ozlKGNCjhNRd+KPmgLSGa3mZTHoOliaGcESD8G1PXhh7c1fgiPjVbNVfgy2Faw4BI8/m0cC8Mg==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/with": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/with/-/with-5.1.1.tgz", + "integrity": "sha512-uAnSsFGfSpF6DNhBXStvlZILfHJfJu4eUkfbRGk94kGO1Ta7bg6FwfvoOhhyHAJuFbCw+0xk4uJ3u57jLvlCJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^3.1.0", + "acorn-globals": "^3.0.0" + } + }, + "node_modules/with/node_modules/acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha512-OLUyIIZ7mF5oaAUT1w0TFqQS81q3saT46x8t7ukpPjMNk+nbs4ZHhs7ToV8EWnLYLepjETXd4XaCE4uxkMeqUw==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha512-xSBsCeh+g+dinoBv3GAOWM4LcVVO68wLXRanibtBSdUvkGWQRGeE9P7IwU9EmDDi4jA6L44lz15CGMwdw9N5+Q==", + "dev": true, + "license": "MIT/X11", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xmlhttprequest-ssl": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.1.tgz", + "integrity": "sha512-ptjR8YSJIXoA3Mbv5po7RtSYHO6mZr8s7i5VGmEk7QY2pQWyT1o0N+W1gKbOyJPUCGXGnuw0wqe8f0L6Y0ny7g==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz", + "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json old mode 100644 new mode 100755 index 3afa61a..7e8e257 --- a/package.json +++ b/package.json @@ -1,77 +1,62 @@ { - "name": "@blockchainhub/coco", - "version": "2.1.9", - "homepage": "https://bchainhub.github.io/coco/", - "contributors": [ - "Blockchain Hub (https://github.com/bchainhub)", - "Jeremy Thomas (https://github.com/jgthms)" - ], - "description": "Modern CSS framework based on Flexbox.", - "main": "dist/css/coco.sass", - "unpkg": "dist/css/coco.css", - "style": "dist/css/coco.min.css", - "repository": { - "type": "git", - "url": "git+https://github.com/bchainhub/coco.git" - }, - "license": "CORE", - "keywords": [ - "css", - "sass", - "flexbox", - "responsive", - "framework" - ], - "bugs": { - "url": "https://github.com/bchainhub/coco/issues" - }, - "devDependencies": { - "@prasadrajandran/strip-comments-cli": "^1.0.0-beta.1", - "autoprefixer": "^10.4.20", - "clean-css-cli": "^5.6.3", - "npm-run-all": "^4.1.5", - "npm-watch": "^0.13.0", - "postcss": "^8.4.47", - "postcss-cli": "^11.0.0", - "rimraf": "^6.0.1", - "sass": "^1.79.5", - "spaces-to-tabs": "^0.0.3", - "ttab": "^0.9.0" - }, - "scripts": { - "build": "npm run build-ltr && npm run build-rtl", - "build-ltr": "npm run build-add-version && npm run build-clean && npm run build-css-ltr && npm run build-autoprefix && npm run build-cleancss && npm run build-sass && if [ \"$GITHUB_ACTIONS\" != \"true\" ]; then npm run build-remove-version; fi", - "build-rtl": "npm run build-add-version-rtl && npm run build-clean && npm run build-css-rtl && npm run build-autoprefix-rtl && npm run build-cleancss-rtl && npm run build-rtl-to-ltr && if [ \"$GITHUB_ACTIONS\" != \"true\" ]; then npm run build-remove-version; fi", - "build-autoprefix": "postcss --use autoprefixer --map false --output dist/css/coco.css dist/css/coco.css", - "build-autoprefix-rtl": "postcss --use autoprefixer --map false --output dist/css/coco-rtl.css dist/css/coco-rtl.css", - "build-add-version": "echo '$v: \"'$(echo $npm_package_version)'\"' | cat - style/coco.sass > temp && mv temp style/coco.sass", - "build-add-version-rtl": "npm run build-add-version && sed -i.old '2s;false;true;' style/coco.sass && rm -rf style/coco.sass.old", - "build-remove-version": "awk 'NR==1 && /^\\$v:/ {next} {print}' style/coco.sass > temp && mv temp style/coco.sass", - "build-rtl-to-ltr": "sed -i.old '2s;true;false;' style/coco.sass && rm -rf style/coco.sass.old", - "build-cleancss": "cleancss -o dist/css/coco.min.css dist/css/coco.css", - "build-cleancss-rtl": "cleancss -o dist/css/coco-rtl.min.css dist/css/coco-rtl.css", - "build-clean": "rimraf css", - "build-css": "npm run build-css-ltr && npm run build-css-rtl", - "build-css-ltr": "sass style/coco.sass dist/css/coco.css", - "build-css-rtl": "sass style/coco.sass dist/css/coco-rtl.css", - "build-sass": "cp -a style dist/sass && stripcomments -w --language=Sass --confirm-overwrite dist/sass/**/*.sass && spaces-to-tabs dist/sass/**/*.sass -s 2", - "build-sass-doc": "cp -a style dist/sass && spaces-to-tabs dist/sass/**/*.sass -s 2", - "check-sass": "node_modules/.bin/sass -v", - "pack": "VER=$(echo $npm_package_version | sed s/[.]/-/g) && mv dist coco-v$npm_package_version && zip -r coco-v$VER.zip coco-v$npm_package_version && mv coco-v$npm_package_version dist", - "deploy": "npm run build", - "check-browsersync": "npm list -g | grep browser-sync || npm install -g browser-sync --no-shrinkwrap", - "start": "npm run build-css && browser-sync start --config test/bs-config.js", - "release": "npm run build && npm run check-browsersync && npm run build-docs && npm run compress", - "tab:watch": "ttab -t 'Watching SASS files' npm exec npm-watch", - "tab:browser-sync": "ttab -t 'Browser synchronization' browser-sync start --config test/bs-config.js", - "watch": "run-s tab:watch tab:browser-sync" - }, + "name": "@blockchainhub/coco", + "version": "2.0.0", + "description": "Modern CSS framework based on Flexbox.", + "keywords": [ + "css", + "css-framework", + "framework", + "front-end", + "responsive", + "sass", + "sass-framework", + "web" + ], + "repository": { + "type": "git", + "url": "git+https://github.com/blockchainhub/coco.git" + }, + "bugs": { + "url": "https://github.com/blockchainhub/coco/issues" + }, + "scripts": { + "autoprefixer": "postcss dist/*.css -u autoprefixer --replace --no-map", + "browser-sync": "browser-sync start --server --startPath \"preview/html/page/color.html\" --files \"**/*\" --directory --no-notify --no-open", + "delete:dev-folder": "del-cli --force dist", + "prod": "npm-run-all delete:dev-folder sass:prod:expanded sass:prod:compressed autoprefixer", + "pug": "pug --obj preview/pug/assets/data.json --watch preview/pug/ --out preview/html/ --pretty", + "sass:preview": "sass --watch --update --style=expanded --no-source-map preview/assets/scss:preview/assets/css --load-path=scss", + "sass:prod:expanded": "sass --no-source-map --style=expanded scss/coco-styles.scss:dist/coco.css", + "sass:prod:compressed": "sass --no-source-map --style=compressed scss/coco-styles.scss:dist/coco.min.css", + "sass:lint": "stylelint scss/**/*.scss", + "sass:lint:fix": "stylelint scss/**/*.scss --fix", + "start": "npm-run-all --parallel pug sass:preview browser-sync", + "test": "jest" + }, + "license": "CORE", + "devDependencies": { + "autoprefixer": "^10.4.20", + "browser-sync": "^3.0.3", + "del-cli": "^6.0.0", + "jest": "^29.7.0", + "jest-environment-node-single-context": "^29.4.0", + "npm-run-all": "^4.1.5", + "postcss-cli": "^11.0.0", + "pug-cli": "^1.0.0-alpha6", + "sass": "^1.80.3", + "sass-true": "^8.1.0", + "stylelint": "^16.10.0", + "stylelint-config-sass-guidelines": "^12.1.0", + "stylelint-order": "^6.0.4" + }, + "jest": { + "testEnvironment": "jest-environment-node-single-context" + }, + "unpkg": "dist/coco.css", + "style": "dist/coco.min.css", "files": [ "dist", "LICENSE", "README.md" - ], - "watch": { - "build-css": "style/**/*.sass" - } + ] } diff --git a/preview/assets/fonts/montserrat-v25-latin-ext_latin-700.woff2 b/preview/assets/fonts/montserrat-v25-latin-ext_latin-700.woff2 new file mode 100755 index 0000000000000000000000000000000000000000..1fb338609172a6c96715a29267c989b27b0fd1bb GIT binary patch literal 19768 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%0DL#|TaQAJWpDWRA~=H%rB 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 VG+r5dz#jkr002ovPDHLkV1mIDk<9=A literal 0 HcmV?d00001 diff --git a/preview/assets/js/reading-direction.js b/preview/assets/js/reading-direction.js new file mode 100755 index 0000000..9d7102b --- /dev/null +++ b/preview/assets/js/reading-direction.js @@ -0,0 +1,4 @@ +document.getElementById('reading-direction').addEventListener('input', (e) => { + document.documentElement.setAttribute('dir', e.target.value); + localStorage.setItem('coco-reading-direction', e.target.value, 31556926, '/'); +}, false); diff --git a/preview/assets/js/theme-mode.js b/preview/assets/js/theme-mode.js new file mode 100755 index 0000000..056e382 --- /dev/null +++ b/preview/assets/js/theme-mode.js @@ -0,0 +1,4 @@ +document.getElementById('theme-mode').addEventListener('input', (e) => { + document.documentElement.dataset.themeMode = e.target.value; + localStorage.setItem('coco-theme-mode', e.target.value, 31556926, '/'); +}, false); diff --git a/preview/pug/assets/data.json b/preview/pug/assets/data.json new file mode 100755 index 0000000..521cc17 --- /dev/null +++ b/preview/pug/assets/data.json @@ -0,0 +1,301 @@ +{ + "alertColors": [ + { + "name": "danger", + "value": "$color-danger", + "bordered": "false" + }, + { + "name": "info", + "value": "hsl(195deg 100% 42%)", + "bordered": "false" + }, + { + "name": "success", + "value": "$color-success", + "bordered": "false" + }, + { + "name": "warning", + "value": "hsl(48deg 89% 55%)", + "bordered": "false" + } + ], + "baseColors": [ + { + "name": "background", + "value": "$color-white", + "bordered": "true" + }, + { + "name": "blockquote-border", + "value": "$color-primary", + "bordered": "false" + }, + { + "name": "border", + "value": "$color-gray-light", + "bordered": "true" + }, + { + "name": "code-background", + "value": "color.change($color-primary, $lightness: 97%)", + "bordered": "true" + }, + { + "name": "code-foreground", + "value": "$color-black", + "bordered": "false" + }, + { + "name": "heading", + "value": "$color-black", + "bordered": "false" + }, + { + "name": "link", + "value": "$color-primary", + "bordered": "false" + }, + { + "name": "link-hover", + "value": "color.scale($color-primary, $lightness: -20%)", + "bordered": "false" + }, + { + "name": "mark-background", + "value": "hsl(50deg 100% 80%)", + "bordered": "false" + }, + { + "name": "mark-foreground", + "value": "$color-black", + "bordered": "false" + }, + { + "name": "marker", + "value": "$color-primary", + "bordered": "false" + }, + { + "name": "primary", + "value": "$color-primary", + "bordered": "false" + }, + { + "name": "secondary", + "value": "$color-secondary", + "bordered": "false" + }, + { + "name": "strong", + "value": "$color-black", + "bordered": "false" + }, + { + "name": "text", + "value": "$color-gray", + "bordered": "false" + } + ], + "btnColors": [ + { + "name": "primary-background", + "value": "$color-primary", + "bordered": "false" + }, + { + "name": "primary-background-hover", + "value": "color.adjust($color-primary, $lightness: -10%)", + "bordered": "false" + }, + { + "name": "primary-foreground", + "value": "$color-white", + "bordered": "true" + }, + { + "name": "secondary-background", + "value": "$color-secondary", + "bordered": "false" + }, + { + "name": "secondary-background-hover", + "value": "color.adjust($color-secondary, $lightness: -10%)", + "bordered": "false" + }, + { + "name": "secondary-foreground", + "value": "$color-white", + "bordered": "true" + } + ], + "formColors": [ + { + "name": "background", + "value": "$color-white", + "bordered": "true" + }, + { + "name": "background-disabled", + "value": "hsl(0deg 0% 95%)", + "bordered": "true" + }, + { + "name": "border", + "value": "hsl(260deg 4% 70%)", + "bordered": "false" + }, + { + "name": "border-disabled", + "value": "$color-gray-light", + "bordered": "false" + }, + { + "name": "border-focus", + "value": "$color-primary", + "bordered": "false" + }, + { + "name": "check-background", + "value": "$color-primary", + "bordered": "false" + }, + { + "name": "check-focus-ring", + "value": "$color-primary", + "bordered": "false" + }, + { + "name": "check-foreground", + "value": "$color-white", + "bordered": "true" + }, + { + "name": "invalid", + "value": "$color-danger", + "bordered": "false" + }, + { + "name": "invalid-focus-ring", + "value": "color.adjust($color-danger, $alpha: -0.75)", + "bordered": "false" + }, + { + "name": "label", + "value": "$color-black", + "bordered": "false" + }, + { + "name": "legend", + "value": "$color-black", + "bordered": "false" + }, + { + "name": "placeholder", + "value": "hsl(208deg 7% 40%)", + "bordered": "false" + }, + { + "name": "range-thumb-background", + "value": "$color-primary", + "bordered": "false" + }, + { + "name": "range-thumb-focus-ring", + "value": "$color-primary", + "bordered": "false" + }, + { + "name": "range-track-background", + "value": "$color-gray-light", + "bordered": "false" + }, + { + "name": "ring-focus", + "value": "color.adjust($color-primary, $alpha: -0.75)", + "bordered": "false" + }, + { + "name": "select-foreground", + "value": "$color-black", + "bordered": "false" + }, + { + "name": "text", + "value": "$color-gray", + "bordered": "false" + }, + { + "name": "valid", + "value": "$color-success", + "bordered": "false" + }, + { + "name": "valid-focus-ring", + "value": "color.adjust($color-success, $alpha: -0.75)", + "bordered": "false" + } + ], + "selectionColors": [ + { + "name": "foreground", + "value": "$color-white", + "bordered": "true" + }, + { + "name": "background", + "value": "$color-primary", + "bordered": "false" + } + ], + "scrollbarColors": [ + { + "name": "thumb-background", + "value": "hsl(0deg 0% 0% / 15%)", + "bordered": "false" + }, + { + "name": "thumb-background-hover", + "value": "hsl(0deg 0% 0% / 25%)", + "bordered": "false" + }, + { + "name": "track-background", + "value": "hsl(0deg 0% 0% / 5%)", + "bordered": "true" + } + ], + "tableColors": [ + { + "name": "border", + "value": "$color-gray-light", + "bordered": "false" + }, + { + "name": "caption", + "value": "$color-gray", + "bordered": "false" + }, + { + "name": "heading", + "value": "$color-black", + "bordered": "false" + }, + { + "name": "hover", + "value": "hsl(0deg 0% 0% / 5%)", + "bordered": "false" + }, + { + "name": "stripe", + "value": "hsl(0deg 0% 0% / 2.5%)", + "bordered": "true" + }, + { + "name": "text", + "value": "$color-gray", + "bordered": "false" + } + ] +} diff --git a/preview/pug/layout.pug b/preview/pug/layout.pug new file mode 100755 index 0000000..48361b6 --- /dev/null +++ b/preview/pug/layout.pug @@ -0,0 +1,67 @@ +-var time = Date.now(); + +block variables + + +html(lang='en') + head + script. + if (localStorage.getItem('coco-reading-direction')) { + document.documentElement.setAttribute('dir', localStorage.getItem('coco-reading-direction')); + } + if (localStorage.getItem('coco-theme-mode')) { + document.documentElement.setAttribute('data-theme-mode', localStorage.getItem('coco-theme-mode')); + } + meta(charset='UTF-8') + meta(name='viewport' content='width=device-width, initial-scale=1.0') + title coco CSS Development Preview + link(rel='stylesheet' href=`../../assets/css/main.css?time=${time}`) + link(rel='icon' href='../../assets/img/favicon-32x32.png' type='image/png') + body + main(class='l-main') + div(class='container') + div(class='l-main__inner') + aside(class='l-main__sidebar') + ul(class='sidebar-navigation') + li + a(href='color.html' aria-current=page === 'color' ? 'page' : '') Color + li + a(href='typography.html' aria-current=page === 'typography' ? 'page' : '') Typography + li + a(href='table.html' aria-current=page === 'table' ? 'page' : '') Table + li + a(href='media.html' aria-current=page === 'media' ? 'page' : '') Media + li + a(href='button.html' aria-current=page === 'button' ? 'page' : '') Button + li + a(href='form.html' aria-current=page === 'form' ? 'page' : '') Form + li + a(href='function.html' aria-current=page === 'function' ? 'page' : '') Function + li + a(href='mixin.html' aria-current=page === 'mixin' ? 'page' : '') Mixin + li + a(href='component.html' aria-current=page === 'component' ? 'page' : '') Component + div(class='form-group') + label(class='form-label') Reading direction + select(id='reading-direction' class='form-control form-control--sm') + option(value='ltr') LTR + option(value='rtl') RTL + div(class='form-group') + label(class='form-label') Theme mode + select(id='theme-mode' class='form-control form-control--sm') + option(value='light') Light + option(value='dark') Dark + div(class='l-main__body') + h1(class='l-main__title')= title + div(class='l-main__content') + block content + script. + if (localStorage.getItem('coco-reading-direction')) { + document.getElementById('reading-direction').value = localStorage.getItem('coco-reading-direction'); + } + if (localStorage.getItem('coco-theme-mode')) { + document.getElementById('theme-mode').value = localStorage.getItem('coco-theme-mode'); + } + script(src='../../assets/js/reading-direction.js') + script(src='../../assets/js/theme-mode.js') + block scripts diff --git a/preview/pug/page/button.pug b/preview/pug/page/button.pug new file mode 100755 index 0000000..7e00333 --- /dev/null +++ b/preview/pug/page/button.pug @@ -0,0 +1,73 @@ +extends ../layout.pug + +block variables + -var title = 'Button'; + -var page = 'button'; + +block content + h3(class='section-title') Variants + div(class='form-group--grid') + button(class='btn btn--primary') Send form + button(class='btn btn--secondary') Send form + h3(class='section-title') Outline + div(class='form-group--grid') + button(class='btn btn--outline-primary') Send form + button(class='btn btn--outline-secondary') Send form + h3(class='section-title') Sizes + div(class='form-group--grid') + button(class='btn btn--primary btn--lg') Large button + button(class='btn btn--primary') Generic button + button(class='btn btn--primary btn--sm') Small button + h3(class='section-title') Disabled + div(class='form-group--grid') + button(class='btn btn--primary' disabled) Save + button(class='btn btn--secondary' disabled) Save + h3(class='section-title') Shadow button + div(class='form-group--grid') + button(class='btn btn--primary btn--primary-shadow') Button with shadow + button(class='btn btn--secondary btn--secondary-shadow') Button with shadow + h3(class='section-title') Custom button + div(class='form-group--grid') + button(class='btn btn--custom') Custom button + button(class='btn btn--tertiary') Tertiary button + h3(class='section-title') Custom outline button + div(class='form-group--grid') + button(class='btn btn--dark') This is the button text + button(class='btn btn--outline-dark') This is the button text + h3(class='section-title') Clear Button + div(class='form-group--grid') + button(class='clear-btn') Remove button styles + h3(class='section-title') With Icons + div(class='form-group--grid') + button(class='btn btn--secondary btn--sm') + svg(class='btn__icon' height='24px' viewBox='0 0 24 24' width='24px') + path(d='M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z' style='fill: currentColor;') + | Copy button + button(class='btn btn--secondary') + svg(class='btn__icon btn__icon--sm' height='24px' viewBox='0 0 24 24' width='24px') + path(d='M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z' style='fill: currentColor;') + | Copy button + button(class='btn btn--secondary btn--lg') + | Copy button + svg(class='btn__icon' height='24px' viewBox='0 0 24 24' width='24px') + path(d='M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z' style='fill: currentColor;') + h3(class='section-title') Icon Button + div(class='form-group--grid') + button(class='btn btn--secondary btn--icon btn--sm' aria-label="Copy Text") + svg(class='btn__icon' height='24px' viewBox='0 0 24 24' width='24px') + path(d='M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z' style='fill: currentColor;') + button(class='btn btn--secondary btn--icon' aria-label="Copy Text") + svg(class='btn__icon' height='24px' viewBox='0 0 24 24' width='24px') + path(d='M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z' style='fill: currentColor;') + button(class='btn btn--secondary btn--icon btn--lg' aria-label="Copy Text") + svg(class='btn__icon' height='24px' viewBox='0 0 24 24' width='24px') + path(d='M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z' style='fill: currentColor;') + h3(class='section-title') Icon Size Compare + div(class='form-group--height-test') + button(class='btn btn--secondary btn--icon btn--sm') + | Copy Text + button(class='btn btn--secondary btn--icon btn--sm') + | Copy Text + button(class='btn btn--secondary btn--icon btn--sm' aria-label="Copy Text") + svg(class='btn__icon' height='24px' viewBox='0 0 24 24' width='24px') + path(d='M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z' style='fill: currentColor;') diff --git a/preview/pug/page/color.pug b/preview/pug/page/color.pug new file mode 100755 index 0000000..d4ab187 --- /dev/null +++ b/preview/pug/page/color.pug @@ -0,0 +1,63 @@ +extends ../layout.pug + +block variables + -var title = 'Color'; + -var page = 'color'; + +block content + h2(class='section-title') Alert + div(class='colors') + each color in alertColors + div(class=`color-item color-item--alert-${color.name} ${color.bordered === 'true' ? 'color-item--bordered' : ''}`) + span(class='color-item__color') + span(class='color-item__caption') + span(class='color-item__name')= color.name + span(class='color-item__value')= color.value + h2(class='section-title') Base + div(class='colors') + each color in baseColors + div(class=`color-item color-item--base-${color.name} ${color.bordered === 'true' ? 'color-item--bordered' : ''}`) + span(class='color-item__color') + span(class='color-item__caption') + span(class='color-item__name')= color.name + span(class='color-item__value')= color.value + h2(class='section-title') Button + div(class='colors') + each color in btnColors + div(class=`color-item color-item--btn-${color.name} ${color.bordered === 'true' ? 'color-item--bordered' : ''}`) + span(class='color-item__color') + span(class='color-item__caption') + span(class='color-item__name')= color.name + span(class='color-item__value')= color.value + h2(class='section-title') Form + div(class='colors') + each color in formColors + div(class=`color-item color-item--form-${color.name} ${color.bordered === 'true' ? 'color-item--bordered' : ''}`) + span(class='color-item__color') + span(class='color-item__caption') + span(class='color-item__name')= color.name + span(class='color-item__value')= color.value + h2(class='section-title') Selection + div(class='colors') + each color in selectionColors + div(class=`color-item color-item--selection-${color.name} ${color.bordered === 'true' ? 'color-item--bordered' : ''}`) + span(class='color-item__color') + span(class='color-item__caption') + span(class='color-item__name')= color.name + span(class='color-item__value')= color.value + h2(class='section-title') Scrollbar + div(class='colors') + each color in scrollbarColors + div(class=`color-item color-item--scrollbar-${color.name} ${color.bordered === 'true' ? 'color-item--bordered' : ''}`) + span(class='color-item__color') + span(class='color-item__caption') + span(class='color-item__name')= color.name + span(class='color-item__value')= color.value + h2(class='section-title') Table + div(class='colors') + each color in tableColors + div(class=`color-item color-item--table-${color.name} ${color.bordered === 'true' ? 'color-item--bordered' : ''}`) + span(class='color-item__color') + span(class='color-item__caption') + span(class='color-item__name')= color.name + span(class='color-item__value')= color.value diff --git a/preview/pug/page/component.pug b/preview/pug/page/component.pug new file mode 100755 index 0000000..b0f408a --- /dev/null +++ b/preview/pug/page/component.pug @@ -0,0 +1,8 @@ +extends ../layout.pug + +block variables + -var title = 'Component'; + -var page = 'component'; + +block content + div(class='alert alert--danger' role='alert') Hello, this is a danger type alert message diff --git a/preview/pug/page/form.pug b/preview/pug/page/form.pug new file mode 100755 index 0000000..430127e --- /dev/null +++ b/preview/pug/page/form.pug @@ -0,0 +1,312 @@ +extends ../layout.pug + +block variables + -var title = 'Form'; + -var page = 'form'; + +block content + form + fieldset + legend Inputs + div(class='form-group') + label(for='email-address' class='form-label') Email address + input(class='form-control' id='email-address' type='email' placeholder='hello@conedevelopment.com') + div(class='form-group') + label(for='number' class='form-label') Number + input(class='form-control' id='number' type='number') + div(class='form-group') + label(for='password' class='form-label') Password + input(class='form-control' id='password' type='password') + div(class='form-group') + label(for='search' class='form-label') Search + input(class='form-control' id='search' type='search') + div(class='form-group') + label(for='tel' class='form-label') Telephone number + input(class='form-control' id='tel' type='tel') + div(class='form-group') + label(for='text' class='form-label') Text + input(class='form-control' id='text' type='text') + div(class='form-group') + label(for='text-disabled' class='form-label') Text (Disabled) + input(class='form-control' id='text-disabled' type='text' disabled) + div(class='form-group') + label(for='text-small' class='form-label') Text (Small) + input(class='form-control form-control--sm' id='text-small' type='text') + div(class='form-group') + label(for='text-large' class='form-label') Text (Large) + input(class='form-control form-control--lg' id='text-large' type='text') + div(class='form-group') + label(for='url' class='form-label') URL + input(class='form-control' id='url' type='url') + div(class='form-group') + label(for='color-sm' class='form-label') Color + input(class='form-control form-control--sm' id='color-sm' type='color' value='#6524d6') + div(class='form-group') + label(for='color' class='form-label') Color + input(class='form-control' id='color' type='color' value='#6524d6') + div(class='form-group') + label(for='color-lg' class='form-label') Color + input(class='form-control form-control--lg' id='color-lg' type='color' value='#6524d6') + div(class='form-group') + label(for='date' class='form-label') Date + input(class='form-control' id='date' type='date') + div(class='form-group') + label(for='datetime' class='form-label') Date / Time + input(class='form-control' id='datetime' type='datetime') + div(class='form-group') + label(for='datetime-local' class='form-label') Date / Time local + input(class='form-control' id='datetime-local' type='datetime-local') + div(class='form-group') + label(for='month' class='form-label') Month + input(class='form-control' id='month' type='month') + div(class='form-group') + label(for='week' class='form-label') Week + input(class='form-control' id='week' type='week') + div(class='form-group') + label(for='time' class='form-label') Time + input(class='form-control' id='time' type='time') + div(class='form-row--mixed') + div(class='form-group' style='--inline-size: 5ch;') + label(for='time-test-1' class='form-label') Time + input(class='form-control form-control--sm' id='time-test-1' type='time') + div(class='form-group') + label(for='email-address-test-1' class='form-label') Email address + input(class='form-control form-control--sm' id='email-address-test-1' type='email') + div(class='form-row--mixed') + div(class='form-group') + label(for='time-test-2' class='form-label') Time + input(class='form-control form-control' id='time-test-2' type='time') + div(class='form-group') + label(for='email-address-test-2' class='form-label') Email address + input(class='form-control form-control' id='email-address-test-2' type='email') + div(class='form-row--mixed') + div(class='form-group') + label(for='time-test-3' class='form-label') Time + input(class='form-control form-control--lg' id='time-test-3' type='time') + div(class='form-group') + label(for='email-address-test-3' class='form-label') Email address + input(class='form-control form-control--lg' id='email-address-test-3' type='email') + fieldset + legend Textarea + div(class='form-group') + label(for='textarea' class='form-label') Message + textarea(class='form-control' id='textarea') + fieldset + legend File Inputs + div(class='form-group') + label(for='avatar-lg' class='form-label') Avatar (Large) + input(class='form-file form-file--lg' type='file' id='avatar-lg' accept='image/png, image/jpeg') + div(class='form-group') + label(for='avatar' class='form-label') Avatar + input(class='form-file form-file' type='file' id='avatar' accept='image/png, image/jpeg') + div(class='form-group') + label(for='files' class='form-label') Files + input(class='form-file form-file--sm' type='file' id='files' multiple accept='image/png, image/jpeg') + fieldset + legend Range + div(class='form-group') + label(for='rating' class='form-label') Your Rating + input(class='form-range form-range--lg' type='range' id='rating' min='-10' max='10') + fieldset + legend Range + div(class='form-group') + label(for='rating' class='form-label') Your Rating (disabled) + input(class='form-range form-range--lg' type='range' id='rating' min='-10' max='10' disabled) + fieldset + legend Selects + div(class='form-group') + label(for='front-end-frameworks-sm' class='form-label') Front-end Frameworks (Small) + select(id='front-end-frameworks-sm' class='form-control form-control--sm') + option(value='react') React + option(value='vue') Vue + option(value='svelte') Svelte + option(value='ember') Ember + div(class='form-group') + label(for='front-end-frameworks' class='form-label') Front-end Frameworks + select(id='front-end-frameworks' class='form-control') + option(value='react') React + option(value='vue') Vue + option(value='svelte') Svelte + option(value='ember') Ember + div(class='form-group') + label(for='front-end-frameworks-disabled' class='form-label') Front-end Frameworks + select(id='front-end-frameworks-disabled' class='form-control' disabled) + option(value='react') React + option(value='vue') Vue + option(value='svelte') Svelte + option(value='ember') Ember + div(class='form-group') + label(for='front-end-frameworks-lg' class='form-label') Front-end Frameworks (Large) + select(id='front-end-frameworks-lg' class='form-control form-control--lg') + option(value='react') React + option(value='vue') Vue + option(value='svelte') Svelte + option(value='ember') Ember + div(class='form-group') + label(for='front-end-frameworks-multiple' class='form-label') Front-end Frameworks (Multiple) + select(id='front-end-frameworks-multiple' class='form-control' multiple) + option(value='react') React + option(value='vue') Vue + option(value='svelte') Svelte + option(value='ember') Ember + fieldset + legend Radio (Vertical) + div(class='form-group form-group--vertical-check') + label(class='form-check') + input(type='radio' class='form-check__control' value='react' name='radio-example-vertical') + span(class='form-label form-check__label') React + label(class='form-check') + input(type='radio' class='form-check__control' value='vue' name='radio-example-vertical' disabled) + span(class='form-label form-check__label') Vue + label(class='form-check') + input(type='radio' class='form-check__control' value='svelte' name='radio-example-vertical') + span(class='form-label form-check__label') Svelte + label(class='form-check') + input(type='radio' class='form-check__control' value='ember' name='radio-example-vertical') + span(class='form-label form-check__label') Ember + fieldset + legend Radio (Horizontal) + div(class='form-group form-group--horizontal-check') + label(class='form-check') + input(type='radio' class='form-check__control' value='react' name='radio-example-horizontal') + span(class='form-label form-check__label') React + label(class='form-check') + input(type='radio' class='form-check__control' value='vue' name='radio-example-horizontal') + span(class='form-label form-check__label') Vue + label(class='form-check') + input(type='radio' class='form-check__control' value='svelte' name='radio-example-horizontal') + span(class='form-label form-check__label') Svelte + label(class='form-check') + input(type='radio' class='form-check__control' value='ember' name='radio-example-horizontal') + span(class='form-label form-check__label') Ember + label(class='form-check') + input(type='radio' class='form-check__control' value='ember' name='radio-example-horizontal') + span(class='form-label form-check__label') Aliquam sit amet suscipit orci. Sed mi ligula, auctor cursus lobortis in, venenatis quis elit. Praesent sit amet ex sagittis ante faucibus egestas ac sit amet tellus. Donec id massa eget urna fermentum dignissim vitae eget ex. Sed euismod leo urna, et suscipit nisl fringilla id. + fieldset + legend Checkbox + div(class='form-group form-group--vertical-check') + label(class='form-check') + input(type='checkbox' id='indeterminate' class='form-check__control' value='react' name='checkbox-example') + span(class='form-label form-check__label') React + label(class='form-check') + input(type='checkbox' class='form-check__control' value='vue' name='checkbox-example' disabled) + span(class='form-label form-check__label') Vue + label(class='form-check') + input(type='checkbox' class='form-check__control' value='svelte' name='checkbox-example') + span(class='form-label form-check__label') Svelte + label(class='form-check') + input(type='checkbox' class='form-check__control' value='ember' name='checkbox-example') + span(class='form-label form-check__label') Ember + label(class='form-check') + input(type='checkbox' class='form-check__control' value='ember' name='checkbox-example') + span(class='form-label form-check__label') Aliquam sit amet suscipit orci. Sed mi ligula, auctor cursus lobortis in, venenatis quis elit. Praesent sit amet ex sagittis ante faucibus egestas ac sit amet tellus. Donec id massa eget urna fermentum dignissim vitae eget ex. Sed euismod leo urna, et suscipit nisl fringilla id. + label(class='form-check form-check--vertical-start') + input(type='checkbox' class='form-check__control' value='ember' name='checkbox-example') + span(class='form-label form-check__label') Aliquam sit amet suscipit orci. Sed mi ligula, auctor cursus lobortis in, venenatis quis elit. Praesent sit amet ex sagittis ante faucibus egestas ac sit amet tellus. Donec id massa eget urna fermentum dignissim vitae eget ex. Sed euismod leo urna, et suscipit nisl fringilla id. + fieldset + legend Checkbox (Sizes) + div(class='form-group form-group--vertical-check') + label(class='form-check form-check--lg') + input(type='checkbox' class='form-check__control' value='react' name='checkbox-example-sizes') + span(class='form-label form-check__label') React + label(class='form-check form-check--lg') + input(type='checkbox' class='form-check__control' value='vue' name='checkbox-example-sizes') + span(class='form-label form-check__label') Vue + div(class='form-group form-group--vertical-check') + label(class='form-check form-check--sm') + input(type='checkbox' class='form-check__control' value='svelte' name='checkbox-example-sizes') + span(class='form-label form-check__label') Svelte + label(class='form-check form-check--sm') + input(type='checkbox' class='form-check__control' value='ember' name='checkbox-example-sizes') + span(class='form-label form-check__label') Ember + fieldset + legend Custom Checkbox + div(class='form-group') + span(class='wpcf7-form-control-wrap acceptance-784') + span(class='wpcf7-form-control wpcf7-acceptance') + span(class='wpcf7-list-item') + label + input(type='checkbox' name='acceptance-784' value='1' aria-invalid='false') + span(class='wpcf7-list-item-label') I accept the #[a(href='#') privacy policy]. + fieldset + legend Switches + div(class='form-group form-group--vertical-check') + label(class='form-switch form-switch--sm') + span(class='form-label form-switch__label') Enable notifications + input(type='checkbox' class='form-switch__control' value='true') + label(class='form-switch') + input(type='checkbox' class='form-switch__control' value='true') + span(class='form-label form-switch__label') Aliquam sit amet suscipit orci. Sed mi ligula, auctor cursus lobortis in, venenatis quis elit. Praesent sit amet ex sagittis ante faucibus egestas ac sit amet tellus. Aliquam sit amet suscipit orci. Sed mi ligula, auctor cursus lobortis in, venenatis quis elit. Praesent sit amet ex sagittis ante faucibus egestas ac sit amet tellus. + label(class='form-switch form-switch--lg form-switch--block') + span(class='form-label form-switch__label') Enable notifications + input(type='checkbox' class='form-switch__control' value='true') + label(class='form-switch form-switch--lg form-switch--block') + input(type='checkbox' class='form-switch__control' value='true' disabled) + span(class='form-label form-switch__label') Enable notifications + fieldset(class='form-group-container') + legend Form Group Row + div(class='form-group--row form-group--row:vertical-start') + label(for='first-name-row' class='form-label') First Name + input(class='form-control' id='first-name-row' type='text') + span(class='form-description') Just a help text for presentation purpose + div(class='form-group--row') + label(for='front-end-frameworks-row' class='form-label') Front-end Frameworks + select(id='front-end-frameworks-row' class='form-control') + option(value='react') React + option(value='vue') Vue + option(value='svelte') Svelte + option(value='ember') Ember + div(class='form-group--row') + div(id='row-radio-label' class='form-label') Radio (Horizontal) + div(class='form-group form-group--horizontal-check') + label(class='form-check') + input(type='radio' class='form-check__control' value='react' name='radio-example-horizontal-row' aria-describedby='row-radio-label') + span(class='form-label form-check__label') React + label(class='form-check') + input(type='radio' class='form-check__control' value='vue' name='radio-example-horizontal-row' aria-describedby='row-radio-label') + span(class='form-label form-check__label') Vue + label(class='form-check') + input(type='radio' class='form-check__control' value='svelte' name='radio-example-horizontal-row' aria-describedby='row-radio-label') + span(class='form-label form-check__label') Svelte + label(class='form-check') + input(type='radio' class='form-check__control' value='ember' name='radio-example-horizontal-row' aria-describedby='row-radio-label') + span(class='form-label form-check__label') Ember + fieldset + legend Form Group Stacked + div(class='form-group--stacked') + input(class='form-control' type='text' aria-label='First Name') + div(class='form-group--stacked') + input(class='form-control' type='text' aria-label='First Name') + input(class='form-control' type='text' aria-label='Last Name') + button(class='btn btn--primary') Submit + div(class='form-group--stacked') + div(class='form-group-label') $ + input(class='form-control' type='text' aria-label='First Name') + input(class='form-control' type='text' aria-label='Last Name') + div(class='form-group-label') .00 + div(class='form-group-label') .00 + div(class='form-group--stacked:md') + div(class='form-group-label') $ + input(class='form-control' type='text' aria-label='Price') + div(class='form-group-label') .00 + fieldset + legend Validation + div(class='form-row') + div(class='form-group') + label(for='street-address' class='form-label') Street Address + input(id='street-address' class='form-control form-control--valid' type='text' placeholder='Your street address...') + span(class='field-feedback field-feedback--valid') Looks fine + div(class='form-row form-row--mixed') + div(class='form-group') + label(for='city' class='form-label') City + input(id='city' class='form-control form-control--invalid' type='text') + span(class='field-feedback field-feedback--invalid') Not that fine + div(class='form-group') + label(for='state' class='form-label') State + input(id='state' class='form-control' type='text') + div(class='form-group form-group--width-auto' style='--coco-col-width: 8ch;') + label(for='zip' class='form-label') Zip + input(id='zip' class='form-control' type='text') + script. + var checkbox = document.getElementById('indeterminate'); + checkbox.indeterminate = true; diff --git a/preview/pug/page/function.pug b/preview/pug/page/function.pug new file mode 100755 index 0000000..5f77eb6 --- /dev/null +++ b/preview/pug/page/function.pug @@ -0,0 +1,15 @@ +extends ../layout.pug + +block variables + -var title = 'Function'; + -var page = 'function'; + +block content + h2(class='section-title') spacer + div(class='spacer-wrapper') + div(class='spacer spacer--one') + div + div(class='spacer spacer--two') + div + div(class='spacer spacer--three') + div diff --git a/preview/pug/page/media.pug b/preview/pug/page/media.pug new file mode 100755 index 0000000..4c1289a --- /dev/null +++ b/preview/pug/page/media.pug @@ -0,0 +1,15 @@ +extends ../layout.pug + +block variables + -var title = 'Media'; + -var page = 'media'; + +block content + div(style='aspect-ratio: 16 / 9;') + iframe(width='560' height='315' src='https://www.youtube.com/embed/-6Xl9tBWt54' title='YouTube video player' frameborder='0' allow='accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture' allowfullscreen) + img(src='https://images.unsplash.com/photo-1482539259217-f31001045448?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1650&q=80' alt='...') + figure(class='figure') + img(src='https://images.unsplash.com/photo-1550745165-9bc0b252726f?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1650&q=80' alt='...') + figcaption(class='figure-caption') A caption for the above image. + div(style='aspect-ratio: 4 / 3;') + iframe(src='https://www.google.com/maps/embed?pb=!1m14!1m12!1m3!1d43426.31519120588!2d8.484520028382804!3d47.13543111433025!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!5e0!3m2!1sen!2scz!4v1729697888586!5m2!1sen!2scz' width='600' height='450' style='border:0;' allowfullscreen loading='lazy') diff --git a/preview/pug/page/mixin.pug b/preview/pug/page/mixin.pug new file mode 100755 index 0000000..a47412b --- /dev/null +++ b/preview/pug/page/mixin.pug @@ -0,0 +1,39 @@ +extends ../layout.pug + +block variables + -var title = 'Mixin'; + -var page = 'mixin'; + +block content + h2(class='section-title') short-ring + div(class='ring-wrapper') + button(class='ring-one') + button(class='ring-two') + h2(class='section-title') scrollbar + div(class='scrollbar') + p Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ut diam lorem. Morbi porttitor venenatis dui, hendrerit volutpat dolor suscipit sed. Maecenas leo neque, pulvinar tempus ultricies a, eleifend eget sem. Fusce in egestas ex, nec ultricies eros. Pellentesque mollis egestas nulla, quis gravida urna facilisis sit amet. Nulla facilisi. Nam quis libero sem. Nulla eget justo eros. Nam rutrum a nunc et luctus. Nunc lobortis arcu metus, eget vehicula lacus malesuada quis. Cras quis elementum lacus. Quisque in ante dui. Curabitur vel rhoncus nisl. + + p Praesent molestie dui vitae lacinia commodo. Maecenas viverra ipsum accumsan venenatis lobortis. Nullam ligula nisl, hendrerit non consequat eu, aliquam ac turpis. Etiam convallis nibh non ante feugiat, eu posuere magna pharetra. Cras et odio varius, pellentesque ante in, ultrices dolor. Nulla id eleifend felis, nec porttitor eros. Nunc nec est posuere, vulputate tellus ut, commodo odio. Maecenas sagittis dolor vel rutrum lobortis. Mauris sit amet arcu id ipsum feugiat gravida aliquam vel tellus. Nam et aliquam diam. Nullam sit amet porttitor ligula, ut eleifend lacus. Sed tincidunt mollis sodales. Pellentesque feugiat sed dolor a faucibus. Donec eget eros nec mi dictum aliquam sit amet ut sapien. + h2(class='section-title') a11y-card-link + div(class='card') + a(href='#' class='card__link') Card link + h2(class='section-title') text-ellipsis + div + p(class='ellipsis-1') #[strong Multiline ellipsis test] Pellentesque quis sapien quis ex tincidunt ornare sit amet eu neque. Fusce ut tempor nisl, vitae semper dui. Fusce sagittis felis orci, ut ultrices justo congue a. Aenean a auctor nisi, eu fringilla erat. Cras id lacinia lorem. Nunc porttitor lorem tortor, sit amet faucibus urna vestibulum ac. Sed facilisis tristique consequat. Fusce condimentum sed enim eu varius. Vestibulum scelerisque sapien vulputate maximus commodo. Fusce dictum erat nec felis convallis elementum. Suspendisse blandit nibh varius, varius lacus quis, commodo orci. Mauris non mollis tellus. Maecenas id consectetur erat, at cursus ipsum. + p(class='ellipsis-2') #[strong Multiline ellipsis test] Pellentesque quis sapien quis ex tincidunt ornare sit amet eu neque. Fusce ut tempor nisl, vitae semper dui. Fusce sagittis felis orci, ut ultrices justo congue a. Aenean a auctor nisi, eu fringilla erat. Cras id lacinia lorem. Nunc porttitor lorem tortor, sit amet faucibus urna vestibulum ac. Sed facilisis tristique consequat. Fusce condimentum sed enim eu varius. Vestibulum scelerisque sapien vulputate maximus commodo. Fusce dictum erat nec felis convallis elementum. Suspendisse blandit nibh varius, varius lacus quis, commodo orci. Mauris non mollis tellus. Maecenas id consectetur erat, at cursus ipsum. + button(class='btn btn--primary') #[span(class='ellipsis-btn') Fusce dictum erat nec felis convallis] + h2(class='section-title') selection + div + p(class='selection-1') Sed facilisis tristique consequat. Fusce condimentum sed enim eu varius. Vestibulum scelerisque sapien vulputate maximus commodo. Fusce dictum erat nec felis convallis elementum. Suspendisse blandit nibh varius, varius lacus quis, commodo orci. Mauris non mollis tellus. Maecenas id consectetur erat, at cursus ipsum. + p(class='selection-2') SELECTION Mauris non mollis tellus. Maecenas id consectetur erat, at cursus ipsum. + h2(class='section-title') clear-list + ul(class='cleared-list') + li Cleared UL list + li List item two + li List item three + li List item four + h2(class='section-title') spacer-clamp + p(class='spacer-clamp-mixin') Mauris non mollis tellus. Maecenas id consectetur erat, at cursus ipsum. + h2(class='section-title') word-wrap + a(href='#' class='break-long-url') http://www.reallylong.link/rll/eHljLISQs4/VYnSQH4F8X3sNpWLpziElYnqUVCq8WmbR06lHV7vCttOFydbFBKzBovFUYDMl_SGFCRd3eWTUpIggT5TLgATzFQELX_YUMb4U6ah7UG/7sNSn6XjPWAke0FUy26kfo3ckKU0WtJbyeWNBoliQ4iI7ZIu0lSMD4E_AKRrWT_d27gw3/j/GA/xdi9_3xB3Lq2DcUndrHNPm0_iTVNbvxmodOkGqq3rsQwNU3G5mfWVAgKTTs64NlZ6NA11mQDTLLZQ_X6SCqZh3d8wnG2d2ZwrZ/3OU1hdOiWNKnry0Ml8_X/Oo3EZRHLGpv_mehdAfy4KOzDtsYYdeBfDTMj1QBwvVmh8r9sOqthOgtIE15muoY7dPw_SHWVSo8XoH68tdZr2nqm4NiOAjrchNnaS9LqpLD5Zd09_Tpj0hwgfQFAvlA0_0TQzI9xsV1bxB_zY9Y8a0DeP/_sijH9kCQV0rdKT8Fu6QcJ_MPELWSEmdvVqyBlLyjgWHcyAKzJNuU1CnLf425IOTLpjmAUVvCElISwCCdw1_4Klv4riPll1dfvZjU5QaBx3Vq/EZKK8Z247sL5vuap9pOW04CrkQzsLZF2RRLyZ98C5FWXJP9uD41SfTWR8f9ybpA1YaibXaQgTHgtHaFW/kbbmR3zl3LRhV0HZD9/vY4QyRoi4CHnZpF2wq/nDRLtY3Jy7AiBjUQGMi80UTmzucFY/2sV5VcvLObY7UrbVOlQax/dCjxP0NPAQMLJukneUmvf0C3uzoXm07DxynvusbvVejeexdxU9f5Hdqg1V8yKxYpD9NAOB5dPRBdSoT1uhO1IcVIziwdU0S5Ybmf7fqF06JjxIQQXetOf6w6d4P3BZER1FfD/WA7zj7p/KrqxK6ZMFu_npgHrWTI2qF7bn_nAzti9DyGCFaIyqKSmPMQVMyyF/VWjjF2bauMKliqzInbC9sE3pAf82Mgx570z3ThYHK/FRKT7YxrUWURUb1c2JF3vNs28t/G6c63XX0LTSloOpE1Ci1WNHdwzVKHVa1oz5MaW_1lW_Vb/km231/qu0rlV5hpQCH_0QqkJw7/p1uHBoWQq5TUxeH5RyfBwNI/8XYAa1ybPIGhtXQrnv7VYyG2P4pKkIXMjJkUHz4yAGSMT0C8ZShZHAG_xPmhhwpzXZaNsh4C44u5h/6sfjDD2a7YcfyxsGFd4bqfUqsJcwF7g1GbZeBeA68AsIGcA6ZOa_f1Rnzff858u/2X6yhCn53DSgHwQZIei1xo2OSI6Ia8UjgzW10hMr_fbkOuO64nqKTv9Rzk1cktR1lNnBCBZUaU2I0uUlsp4ELG1073iKab_kkPx0jfxNc6F9abeCp3zrTxu6Foo_bplsKdRUZe25wI_hVpc7PUzIxe/Agaf9/WQwO7azadwWDkJJfAHNruhwH6yVfS5JVR_4DT7CcjdowIV2_bNFmJjCljqn__vBn04FsT6nhCBpFCKV5vmGJtXI935staZS1eSp230RFl3hlCEkUxovrAvXKyPVv1OrndCeylLR8mGkUc/rTnl04YgMlqqflSOFdVIcqqH1JvgrhMFtW/myZ/R06O3dKMxppl2Az8NkU/OmYpcOZ4YrcCsFzpsVu2ybi6sjm_AYgC01zERrEoJ9ATX0BpxSdyjmF6XWZKP3iFcRsgv7otfGqzx1mMSVPBddS/jknevdQNezn3/7Qy/sUVKnS1sPEh0bNrxdJ4r1ovAM2Q1esGHxd7u67TA7iTJty3K5Zbh/poh7000k0ZjTLVhmP1PF2f0m3JjIsRoYJkUsjJNSBrnjflSJJbrjoKzFOdR2Og43phCRKDSRIBkZS6ZQULcYD2ptuQjppoTbcRuQhxsrhrEayABlU0KptmBX_tRrtj0zxzrpTxsiM0n_pzSFS0M4Os5EVkp9ZwqVKC6i7U8dafrpUAgk8VK_4pyQ3MFxk1eu2l_w/aS0yM96 + diff --git a/preview/pug/page/table.pug b/preview/pug/page/table.pug new file mode 100755 index 0000000..6a94676 --- /dev/null +++ b/preview/pug/page/table.pug @@ -0,0 +1,140 @@ +extends ../layout.pug + +block variables + -var title = 'Table'; + -var page = 'table'; + +block content + h2(class='section-title') Regular + div(class='table-responsive') + table(class='table table--striped table--dark table--hover') + caption(class='hidden') This is a regular sized table. + thead + tr + th(scope='col') Person + th(scope='col') Number + th(scope='col') Third Column + tbody + tr + td Someone Lastname + td 900 + td Nullam quis risus eget urna mollis ornare vel eu leo. + tr + td + a(href='#') Person Name + td 1200 + td Vestibulum id ligula porta felis euismod semper. Donec ullamcorper nulla non metus auctor fringilla. + tr + td Another Person + td 1500 + td Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Nullam id dolor id nibh ultricies vehicula ut id elit. + tr + td Last One + td 2800 + td Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Cras mattis consectetur purus sit amet fermentum. + h2(class='section-title') Rounded + div(class='table-responsive') + table(class='table table--clear-border table--rounded table--striped table--dark table--hover') + caption This is a regular sized, rounded, borderless table. + thead + tr + th(scope='col') Person + th(scope='col') Number + th(scope='col') Third Column + tbody + tr + td Someone Lastname + td 900 + td Nullam quis risus eget urna mollis ornare vel eu leo. + tr + td + a(href='#') Person Name + td 1200 + td Vestibulum id ligula porta felis euismod semper. Donec ullamcorper nulla non metus auctor fringilla. + tr + td Another Person + td 1500 + td Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Nullam id dolor id nibh ultricies vehicula ut id elit. + tr + td Last One + td 2800 + td Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Cras mattis consectetur purus sit amet fermentum. + h2(class='section-title') Small + div(class='table-responsive') + table(class='table table--sm table--striped table--dark table--hover') + caption This is a small sized table. + thead + tr + th(scope='col') Person + th(scope='col') Number + th(scope='col') Third Column + tbody + tr + td Someone Lastname + td 900 + td Nullam quis risus eget urna mollis ornare vel eu leo. + tr + td + a(href='#') Person Name + td 1200 + td Vestibulum id ligula porta felis euismod semper. Donec ullamcorper nulla non metus auctor fringilla. + tr + td Another Person + td 1500 + td Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Nullam id dolor id nibh ultricies vehicula ut id elit. + tr + td Last One + td 2800 + td Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Cras mattis consectetur purus sit amet fermentum. + h2(class='section-title') In Line + div(class='table-responsive') + table(class='table table--in-line') + thead + tr + th(scope='col') Person + th(scope='col') Number + th(scope='col') Third Column + tbody + tr + td Someone Lastname + td 900 + td Nullam quis risus eget urna mollis ornare vel eu leo. + tr + td + a(href='#') Person Name + td 1200 + td Vestibulum id ligula porta felis euismod semper. Donec ullamcorper nulla non metus auctor fringilla. + tr + td Another Person + td 1500 + td Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Nullam id dolor id nibh ultricies vehicula ut id elit. + tr + td Last One + td 2800 + td Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Cras mattis consectetur purus sit amet fermentum. + h2(class='section-title') Classless + div(class='table-responsive' style='--min-width: 15rem;') + table + thead + tr + th(scope='col') Person + th(scope='col') Number + th(scope='col') Third Column + tbody + tr + td Someone Lastname + td 900 + td Nullam quis risus eget urna mollis ornare vel eu leo. + tr + td + a(href='#') Person Name + td 1200 + td Vestibulum id ligula porta felis euismod semper. Donec ullamcorper nulla non metus auctor fringilla. + tr + td Another Person + td 1500 + td Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Nullam id dolor id nibh ultricies vehicula ut id elit. + tr + td Last One + td 2800 + td Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Cras mattis consectetur purus sit amet fermentum. diff --git a/preview/pug/page/typography.pug b/preview/pug/page/typography.pug new file mode 100755 index 0000000..ec5fbd4 --- /dev/null +++ b/preview/pug/page/typography.pug @@ -0,0 +1,84 @@ +extends ../layout.pug + +block variables + -var title = 'Typography'; + -var page = 'typography'; + +block content + p(class='lead') Morbi dui augue, consequat non pulvinar ac, consequat nec massa. Nulla nec purus vitae enim eleifend laoreet quis vitae nunc. Fusce lacinia nunc eget arcu pulvinar finibus. Nulla et egestas augue. Nulla at nunc vel massa ullamcorper posuere. Donec cursus venenatis dui sed aliquam. Curabitur ultrices, odio ac aliquam mollis, urna felis gravida dolor, id mattis ante mauris eu dui. + a(href='#ol-list') This is an anchor link + h2(class='custom-heading-size') Custom heading size + p Lorem ipsum dolor sit amet, consectetur adipiscing elit. In aliquam nibh in facilisis vestibulum. Pellentesque bibendum lorem risus, ut viverra #[a(href='https://conedevelopment.com') lectus blandit] sit amet. Ut rhoncus a dui ac euismod. + h1 The quick brown fox jumps over the lazy dog + h2 The quick brown fox jumps over the lazy dog + h3 The quick brown fox jumps over the lazy dog + h4 The quick brown fox jumps over the lazy dog + h5 The quick brown fox jumps over the lazy dog + h6 The quick brown fox jumps over the lazy dog + p Curabitur posuere #[i placerat] odio, a suscipit velit #[strong consectetur] nec. Proin tincidunt gravida risus eu commodo. Vivamus tempus enim ac metus finibus vestibulum. Donec ac sagittis quam, in ullamcorper dolor. Vestibulum #[em rhoncus] tempor #[mark lacus in] commodo. Morbi finibus #[small sapien] sed tortor interdum, vitae ornare mi accumsan. Vestibulum rutrum facilisis tincidunt. + hr + p Phasellus vel tortor mi. Vivamus bibendum erat #[abbr(title='Cascading Style Sheets') CSS] lacus, quis tincidunt urna dictum non. Fusce vel ex feugiat, faucibus lectus sit amet, accumsan lacus. Quisque cursus leo nunc, ut maximus arcu suscipit ut. #[del Nulla] laoreet #[ins felis] mauris, quis #[kbd Ctrl + S] urna aliquet ac. Ut ultricies eros pharetra, #[sub elementum] #[sup urna] non, mollis eros. Proin viverra, ipsum a laoreet laoreet, nunc erat pulvinar quam, vel vehicula enim nibh non velit. + details + summary Details + p Nulla et egestas augue. Nulla at nunc vel massa ullamcorper posuere. Donec cursus venenatis dui sed aliquam. Curabitur ultrices, odio ac aliquam mollis, urna felis gravida dolor, id mattis ante mauris eu dui. + p + a(href='#' class='custom-link') Custom link, hey + address + | 1 Infinite Loop, CA 95014 + br + | United States + figure(class='quote') + blockquote β€œTwo things are infinite: the universe and human stupidity; and I'm not sure about the universe.” + figcaption — Albert Einstein, #[cite #[a(href='https://quoteinvestigator.com/2010/05/04/universe-einstein/') Quote Investigator]] + blockquote + p β€œTwo things are infinite: the universe and human stupidity; and I'm not sure about the universe.” + dl + dt Definition List Title + dd Definition list division. + dt Kitchen Sink + dd Used in expressions to describe work in which all conceivable (and some inconceivable) sources have been mined. In this case, a bunch of markup. + dt aside + dd Defines content aside from the page content + dt blockquote + dd Defines a section that is quoted from another source + ul + li Unordered List item one + ul + li Nested list item + ul + li Level 3, item one + li Level 3, item two + li Level 3, item three + li Level 3, item four + li List item two + li List item three + li List item four + li List item two + li List item three + li List item four + hr + ol(id="ol-list") + li List item one + ol + li List item one + ol + li List item one + li List item two + li List item three + li List item four + li List item two + li List item three + li List item four + li List item two + li List item three + li List item four + p.h1 Heading level #1 + p.hidden This is a hidden paragraph. + hr + p.lead + span + em.oji 🀩 + span + em.oji.grayscale πŸ€“ + span + em.oji.flat πŸ’– diff --git a/scss/coco-styles.scss b/scss/coco-styles.scss new file mode 100755 index 0000000..01507b9 --- /dev/null +++ b/scss/coco-styles.scss @@ -0,0 +1,7 @@ +@use 'coco' as * with ( + $settings: ( + 'css-custom-properties': true, + ), +); + +@include generate-styles; diff --git a/scss/coco.scss b/scss/coco.scss new file mode 100755 index 0000000..4ddcd02 --- /dev/null +++ b/scss/coco.scss @@ -0,0 +1,9 @@ +@forward 'config'; +@forward 'function'; +@forward 'mixin'; +@forward 'mixin/generator'; +@forward 'element'; +@forward 'form'; +@forward 'filters'; +@forward 'print'; +@forward 'plugin'; diff --git a/scss/config/_breakpoint.scss b/scss/config/_breakpoint.scss new file mode 100755 index 0000000..35f5638 --- /dev/null +++ b/scss/config/_breakpoint.scss @@ -0,0 +1,14 @@ +@use 'sass:map'; + +$breakpoints: () !default; +$breakpoints: map.merge( + ( + 'xs': 32em, + 'sm': 48em, + 'md': 64em, + 'lg': 80em, + 'xl': 90em, + 'xxl': 110em, + ), + $breakpoints +); diff --git a/scss/config/_button.scss b/scss/config/_button.scss new file mode 100755 index 0000000..7f2aaff --- /dev/null +++ b/scss/config/_button.scss @@ -0,0 +1,50 @@ +@use 'sass:map'; +@use 'display' as *; +@use 'typography' as *; +@use 'spacer' as *; + +$btn: () !default; +$btn: map.merge( + ( + 'border-radius': map.get($display, 'border-radius-sm'), + 'border-width': 1px, + 'focus-ring-box-shadow-type': outside, + 'focus-ring-offset': 2px, + 'focus-ring-size': 2px, + 'focus-ring-type': outline, + 'font-family': null, + 'font-size': map.get($typography, 'font-size-base'), + 'font-style': null, + 'font-weight': 500, + 'gap': map.get($spacers, 'xs'), + 'icon-padding': 0.75em, + 'icon-size': 1em, + 'padding': 0.75em 1em, + 'shadow-size': 0.25rem, + 'text-transform': null, + ), + $btn +); + +$btn-lg: () !default; +$btn-lg: map.merge( + ( + 'font-size': 1.15rem, + 'gap': map.get($spacers, 'xs'), + 'icon-padding': 0.9em, + 'padding': 0.9em 1.15em, + ), + $btn-lg +); + +$btn-sm: () !default; +$btn-sm: map.merge( + ( + 'font-size': 0.8rem, + 'gap': map.get($spacers, 'xxs'), + 'icon-padding': 0.5em, + 'icon-size': 0.8rem, + 'padding': 0.5em 0.75em, + ), + $btn-sm +); diff --git a/scss/config/_color.scss b/scss/config/_color.scss new file mode 100755 index 0000000..7ff2df7 --- /dev/null +++ b/scss/config/_color.scss @@ -0,0 +1,102 @@ +@use 'sass:color'; +@use 'sass:map'; + +$color-black: hsl(205deg 100% 2%) !default; +$color-danger: hsl(0deg 71% 51%) !default; +$color-gray: hsl(208deg 9% 42%) !default; +$color-gray-light: hsl(215deg 63% 93%) !default; +$color-primary: hsl(262deg 71% 49%) !default; +$color-secondary: hsl(227deg 92% 55%) !default; +$color-success: hsl(150deg 100% 33%) !default; +$color-white: hsl(0deg 0% 100%) !default; + +$colors: () !default; +$colors: map.deep-merge( + ( + 'alert': ( + 'danger': $color-danger, + 'info': hsl(195deg 100% 42%), + 'success': $color-success, + 'warning': hsl(48deg 89% 55%), + ), + 'base': ( + 'background': $color-white, + 'blockquote-border': $color-primary, + 'border': $color-gray-light, + 'code-background': color.change($color-primary, $lightness: 97%), + 'code-foreground': $color-black, + 'heading': $color-black, + 'link': $color-primary, + 'link-hover': color.scale($color-primary, $lightness: -20%), + 'mark-background': hsl(50deg 100% 80%), + 'mark-foreground': $color-black, + 'marker': $color-primary, + 'primary': $color-primary, + 'secondary': $color-secondary, + 'strong': $color-black, + 'text': $color-gray, + ), + 'btn': ( + 'primary-background': $color-primary, + 'primary-background-hover': color.adjust($color-primary, $lightness: -10%), + 'primary-foreground': $color-white, + 'primary-shadow': color.adjust($color-primary, $lightness: 35%), + 'secondary-background': $color-secondary, + 'secondary-background-hover': color.adjust($color-secondary, $lightness: -10%), + 'secondary-foreground': $color-white, + 'secondary-shadow': color.adjust($color-secondary, $lightness: 35%), + ), + 'form': ( + 'background': $color-white, + 'background-disabled': hsl(0deg 0% 95%), + 'border': hsl(260deg 4% 70%), + 'border-disabled': $color-gray-light, + 'border-focus': $color-primary, + 'check-background': $color-primary, + 'check-focus-ring': $color-primary, + 'check-foreground': $color-white, + 'group-label-background': hsl(210deg 60% 98%), + 'group-label-foreground': $color-gray, + 'invalid': $color-danger, + 'invalid-focus-ring': color.adjust($color-danger, $alpha: -0.75), + 'label': $color-black, + 'legend': $color-black, + 'placeholder': hsl(208deg 7% 40%), + 'range-thumb-background': $color-primary, + 'range-thumb-focus-ring': $color-primary, + 'range-track-background': $color-gray-light, + 'ring-focus': color.adjust($color-primary, $alpha: -0.75), + 'select-foreground': $color-black, + 'switch-background': $color-primary, + 'switch-focus-ring': $color-primary, + 'switch-foreground': $color-white, + 'text': $color-gray, + 'valid': $color-success, + 'valid-focus-ring': color.adjust($color-success, $alpha: -0.75), + ), + 'selection': ( + 'foreground': $color-white, + 'background': $color-primary, + ), + 'scrollbar': ( + 'thumb-background': hsl(0deg 0% 0% / 15%), + 'thumb-background-hover': hsl(0deg 0% 0% / 25%), + 'track-background': hsl(0deg 0% 0% / 5%), + ), + 'table': ( + 'border': $color-gray-light, + 'caption': $color-gray, + 'heading': $color-black, + 'hover': hsl(0deg 0% 0% / 5%), + 'stripe': hsl(0deg 0% 0% / 2.5%), + 'text': $color-gray, + ), + ), + $colors +); + +$dark-colors: () !default; +$dark-colors: map.deep-merge( + (), + $dark-colors +); diff --git a/scss/config/_display.scss b/scss/config/_display.scss new file mode 100755 index 0000000..33078ca --- /dev/null +++ b/scss/config/_display.scss @@ -0,0 +1,10 @@ +@use 'sass:map'; + +$display: () !default; +$display: map.merge( + ( + 'border-radius-lg': 0.925rem, + 'border-radius-sm': 0.425rem, + ), + $display +); diff --git a/scss/config/_escaping-characters.scss b/scss/config/_escaping-characters.scss new file mode 100755 index 0000000..d01c798 --- /dev/null +++ b/scss/config/_escaping-characters.scss @@ -0,0 +1,8 @@ +/// Characters to escape using SVG as data:image. +$escaping-characters: ( + ('<', '%3c'), + ('>', '%3e'), + ('#', '%23'), + ('(', '%28'), + (')', '%29'), +) !default; diff --git a/scss/config/_generator.scss b/scss/config/_generator.scss new file mode 100755 index 0000000..893a040 --- /dev/null +++ b/scss/config/_generator.scss @@ -0,0 +1,37 @@ +@use 'sass:map'; + +$generators: () !default; +$generators: map.deep-merge( + ( + 'content': ( + 'accessibility': true, + 'default': true, + 'display': true, + 'divider': true, + 'layout': true, + 'media': true, + 'normalize': true, + 'print': true, + 'root': true, + 'table': true, + 'typography': true, + 'utilities': true, + ), + 'form': ( + 'btn': true, + 'file-btn': true, + 'form-check': true, + 'form-control': true, + 'form-description': true, + 'form-feedback': true, + 'form-fieldset': true, + 'form-group-label': true, + 'form-group': true, + 'form-label': true, + 'form-range': true, + 'form-row': true, + 'form-switch': true, + ), + ), + $generators +); diff --git a/scss/config/_index.scss b/scss/config/_index.scss new file mode 100755 index 0000000..d9870bd --- /dev/null +++ b/scss/config/_index.scss @@ -0,0 +1,15 @@ +@forward 'info'; +@forward 'color'; +@forward 'setting'; +@forward 'spacer'; +@forward 'display'; +@forward 'typography'; +@forward 'button'; +@forward 'form'; +@forward 'table'; +@forward 'layout'; +@forward 'transition'; +@forward 'breakpoint'; +@forward 'print'; +@forward 'escaping-characters'; +@forward 'generator'; diff --git a/scss/config/_info.scss b/scss/config/_info.scss new file mode 100644 index 0000000..45713c1 --- /dev/null +++ b/scss/config/_info.scss @@ -0,0 +1,6 @@ +$v: "2.0.0"; +.coco.version::after { + content: "#{$v}"; +} + +@debug "COCO v#{$v}"; diff --git a/scss/config/_layout.scss b/scss/config/_layout.scss new file mode 100755 index 0000000..bfcf43b --- /dev/null +++ b/scss/config/_layout.scss @@ -0,0 +1,9 @@ +@use 'sass:map'; + +$layout: () !default; +$layout: map.merge( + ( + 'container-inline-size': 84rem, + ), + $layout +); diff --git a/scss/config/_print.scss b/scss/config/_print.scss new file mode 100755 index 0000000..c95e7dc --- /dev/null +++ b/scss/config/_print.scss @@ -0,0 +1,10 @@ +@use 'sass:map'; + +$print: () !default; +$print: map.merge( + ( + 'page-margin': 2cm, + 'hidden-elements': 'header, footer, aside, nav, form, iframe, [class^="aspect-ratio"]', + ), + $print +); diff --git a/scss/config/_setting.scss b/scss/config/_setting.scss new file mode 100755 index 0000000..87b7fb9 --- /dev/null +++ b/scss/config/_setting.scss @@ -0,0 +1,24 @@ +@use 'sass:map'; + +$settings: () !default; +$settings: map.deep-merge( + ( + 'color-fallback': false, + 'css-custom-properties': false, + 'html-smooth-scrolling': true, + 'hyphens': true, + 'optimal-font-size': '2vw + 1rem', + 'optimal-spacer-size': '5vw', + 'prefix': 'coco', + 'print': false, + 'scaler': 15, + 'utilities': ( + 'display': true, + 'typography': true, + ), + ), + $settings +); + +// We use this value to prefix our CSS variables. The only difference to the default prefix value that we add the '-' suffix. +$internal-prefix: if(map.get($settings, prefix), map.get($settings, prefix) + '-', ''); diff --git a/scss/config/_spacer.scss b/scss/config/_spacer.scss new file mode 100755 index 0000000..d9262d5 --- /dev/null +++ b/scss/config/_spacer.scss @@ -0,0 +1,18 @@ +@use 'sass:map'; + +$spacer: 1rem !default; + +$spacers: () !default; +$spacers: map.merge( + ( + 'xxs': $spacer * 0.25, + 'xs': $spacer * 0.5, + 's': $spacer, + 'm': $spacer * 1.5, + 'l': $spacer * 3, + 'xl': $spacer * 4.5, + 'xxl': $spacer * 7, + 'xxxl': $spacer * 10, + ), + $spacers +); diff --git a/scss/config/_table.scss b/scss/config/_table.scss new file mode 100755 index 0000000..022d8f0 --- /dev/null +++ b/scss/config/_table.scss @@ -0,0 +1,25 @@ +@use 'sass:map'; +@use 'typography' as *; +@use 'spacer' as *; + +$table: () !default; +$table: map.merge( + ( + 'caption-font-size': null, + 'caption-font-style': null, + 'caption-font-weight': null, + 'line-height': map.get($typography, 'line-height-md'), + 'padding': map.get($spacers, 's'), + 'responsive-inline-size': 40rem, + 'stripe': odd, + ), + $table +); + +$table-sm: () !default; +$table-sm: map.merge( + ( + 'padding': map.get($spacers, 'xs'), + ), + $table-sm +); diff --git a/scss/config/_transition.scss b/scss/config/_transition.scss new file mode 100755 index 0000000..ed645b3 --- /dev/null +++ b/scss/config/_transition.scss @@ -0,0 +1,10 @@ +@use 'sass:map'; + +$transition: () !default; +$transition: map.merge( + ( + 'duration': 0.15s, + 'timing-function': ease-in-out, + ), + $transition +); diff --git a/scss/config/_typography.scss b/scss/config/_typography.scss new file mode 100755 index 0000000..f7da621 --- /dev/null +++ b/scss/config/_typography.scss @@ -0,0 +1,42 @@ +@use 'sass:map'; +@use 'sass:math'; +@use 'display' as *; + +$typography: () !default; +$typography: map.merge( + ( + 'border-radius': map.get($display, 'border-radius-sm'), + 'font-family-base': #{BlinkMacSystemFont, -apple-system, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif}, + 'font-family-cursive': #{ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, 'DejaVu Sans Mono', monospace}, + 'font-family-heading': #{Avenir, 'Avenir Next LT Pro', Montserrat, Corbel, 'URW Gothic', source-sans-pro, sans-serif}, + 'font-family-monospace': #{ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, 'DejaVu Sans Mono', monospace}, + 'font-size-base': 1rem, + 'font-size-lead': clamp(1.15rem, 2vw, 1.35rem), + 'font-size-lg': 1.125rem, + 'font-size-ratio': 1.25, + 'font-size-sm': 0.875rem, + 'font-weight-base': null, + 'font-weight-heading': 700, + 'inline-padding': 0.1em 0.3em, + 'letter-spacing-heading': null, + 'line-height-base': 1.8, + 'line-height-heading': calc(2px + 2ex + 2px), + 'line-height-lg': 1.8, + 'line-height-md': 1.5, + 'line-height-sm': 1.2, + ), + $typography +); + +$font-sizes: () !default; +$font-sizes: map.merge( + ( + 'h1': math.pow(map.get($typography, 'font-size-ratio'), 4) * map.get($typography, 'font-size-base'), + 'h2': math.pow(map.get($typography, 'font-size-ratio'), 3) * map.get($typography, 'font-size-base'), + 'h3': math.pow(map.get($typography, 'font-size-ratio'), 2) * map.get($typography, 'font-size-base'), + 'h4': math.pow(map.get($typography, 'font-size-ratio'), 1) * map.get($typography, 'font-size-base'), + 'h5': map.get($typography, 'font-size-base'), + 'h6': map.get($typography, 'font-size-base'), + ), + $font-sizes +); diff --git a/scss/config/form/_check.scss b/scss/config/form/_check.scss new file mode 100755 index 0000000..ae81017 --- /dev/null +++ b/scss/config/form/_check.scss @@ -0,0 +1,38 @@ +@use 'sass:map'; +@use 'label' as *; +@use '../display' as *; +@use '../typography' as *; + +$form-check: () !default; +$form-check: map.merge( + ( + 'border-radius': map.get($display, border-radius-sm), + 'border-width': 1px, + 'focus-ring-box-shadow-type': outside, + 'focus-ring-offset': 2px, + 'focus-ring-size': 2px, + 'focus-ring-type': outline, + 'font-size': 1.125rem, + 'font-weight': map.get($form-label, 'font-weight'), + 'line-height': map.get($typography, 'line-height-md'), + 'margin-block': 0.1em, + 'vertical-alignment': center, + ), + $form-check +); + +$form-check-lg: () !default; +$form-check-lg: map.merge( + ( + 'font-size': map.get($typography, 'size-lg'), + ), + $form-check-lg +); + +$form-check-sm: () !default; +$form-check-sm: map.merge( + ( + 'font-size': map.get($typography, 'font-size-base'), + ), + $form-check-sm +); diff --git a/scss/config/form/_control.scss b/scss/config/form/_control.scss new file mode 100755 index 0000000..a7c053a --- /dev/null +++ b/scss/config/form/_control.scss @@ -0,0 +1,74 @@ +@use 'sass:map'; +@use '../display' as *; +@use '../typography' as *; + +$form-control: () !default; +$form-control: map.merge( + ( + 'border-radius': map.get($display, 'border-radius-sm'), + 'border-width': 1px, + 'focus-ring-box-shadow-type': outside, + 'focus-ring-offset': 2px, + 'focus-ring-size': 0.25rem, + 'focus-ring-type': box-shadow, + 'font-family': null, + 'font-size': map.get($typography, 'font-size-base'), + 'font-weight': null, + 'line-height': 1.5, + 'padding': 0.5em 0.75em, + 'textarea-block-size': 6rem, + ), + $form-control +); + +$form-control-lg: () !default; +$form-control-lg: map.merge( + ( + 'font-size': map.get($typography, 'size-lg'), + 'padding': 0.65em 1em, + ), + $form-control-lg +); + +$form-control-sm: () !default; +$form-control-sm: map.merge( + ( + 'border-radius': 0.35em, + 'font-size': map.get($typography, 'size-sm'), + 'padding': 0.25em 0.75em, + ), + $form-control-sm +); + +$form-control-color: () !default; +$form-control-color: map.merge( + ( + 'aspect-ratio': 1, + 'block-size': 100%, + 'inline-size': 2.625rem, + 'padding': 0.5em, + ), + $form-control-color +); + +$form-control-color-lg: () !default; +$form-control-color-lg: map.merge( + ( + 'aspect-ratio': 1, + 'block-size': 100%, + 'inline-size': 3.204rem, + 'padding': 0.5em, + ), + $form-control-color-lg +); + +$form-control-color-sm: () !default; +$form-control-color-sm: map.merge( + ( + 'aspect-ratio': 1, + 'block-size': 100%, + 'inline-size': 1.925rem, + 'padding': 0.25em, + ), + $form-control-color-sm +); diff --git a/scss/config/form/_description.scss b/scss/config/form/_description.scss new file mode 100755 index 0000000..9fb6e11 --- /dev/null +++ b/scss/config/form/_description.scss @@ -0,0 +1,11 @@ +@use 'sass:map'; + +$form-description: () !default; +$form-description: map.merge( + ( + 'font-size': 1em, + 'font-style': null, + 'font-weight': 400, + ), + $form-description +); diff --git a/scss/config/form/_fieldset.scss b/scss/config/form/_fieldset.scss new file mode 100755 index 0000000..7b0940a --- /dev/null +++ b/scss/config/form/_fieldset.scss @@ -0,0 +1,14 @@ +@use 'sass:map'; +@use '../spacer' as *; +@use '../typography' as *; + +$form-fieldset: () !default; +$form-fieldset: map.merge( + ( + 'layout-gap': map.get($spacers, 's'), + 'legend-font-family': null, + 'legend-font-size': clamp(#{map.get($font-sizes, 'h5')}, 5vw, #{map.get($font-sizes, 'h4')}), + 'legend-font-weight': 700, + ), + $form-fieldset +); diff --git a/scss/config/form/_file.scss b/scss/config/form/_file.scss new file mode 100755 index 0000000..f1e7792 --- /dev/null +++ b/scss/config/form/_file.scss @@ -0,0 +1,9 @@ +@use 'sass:map'; + +$form-file: () !default; +$form-file: map.merge( + ( + 'background': 'primary', + ), + $form-file +); diff --git a/scss/config/form/_group.scss b/scss/config/form/_group.scss new file mode 100755 index 0000000..c223879 --- /dev/null +++ b/scss/config/form/_group.scss @@ -0,0 +1,29 @@ +@use 'sass:map'; +@use '../spacer' as *; + +$form-group: () !default; +$form-group: map.merge( + ( + 'gap': map.get($spacers, 'xs'), + ), + $form-group +); + +$form-group-check: () !default; +$form-group-check: map.merge( + ( + 'gap': map.get($spacers, 's'), + ), + $form-group-check +); + +$form-group-row: () !default; +$form-group-row: map.merge( + ( + 'container-inline-size': 38rem, + 'gap': map.get($spacers, 'xxs') map.get($spacers, 's'), + 'label-inline-size': 10rem, + 'vertical-alignment': center, + ), + $form-group-row +); diff --git a/scss/config/form/_icon.scss b/scss/config/form/_icon.scss new file mode 100755 index 0000000..0d0a8be --- /dev/null +++ b/scss/config/form/_icon.scss @@ -0,0 +1,15 @@ +@use 'sass:map'; + +$form-icon: () !default; +$form-icon: map.merge( + ( + 'checkbox-indeterminate': '', + 'checkbox': '', + 'invalid': '', + 'radio': '', + 'select': '', + 'switch': '', + 'valid': '', + ), + $form-icon +); diff --git a/scss/config/form/_index.scss b/scss/config/form/_index.scss new file mode 100755 index 0000000..4eb96d9 --- /dev/null +++ b/scss/config/form/_index.scss @@ -0,0 +1,12 @@ +@forward 'label'; +@forward 'control'; +@forward 'description'; +@forward 'fieldset'; +@forward 'file'; +@forward 'icon'; +@forward 'range'; +@forward 'group'; +@forward 'row'; +@forward 'select'; +@forward 'switch'; +@forward 'check'; diff --git a/scss/config/form/_label.scss b/scss/config/form/_label.scss new file mode 100755 index 0000000..d0018c5 --- /dev/null +++ b/scss/config/form/_label.scss @@ -0,0 +1,14 @@ +@use 'sass:map'; + +$form-label: () !default; +$form-label: map.merge( + ( + 'font-family': null, + 'font-size': null, + 'font-style': null, + 'font-weight': null, + 'text-align': start, + 'text-transform': null, + ), + $form-label +); diff --git a/scss/config/form/_range.scss b/scss/config/form/_range.scss new file mode 100755 index 0000000..5e4cdec --- /dev/null +++ b/scss/config/form/_range.scss @@ -0,0 +1,17 @@ +@use 'sass:map'; + +$form-range: () !default; +$form-range: map.merge( + ( + 'focus-ring-box-shadow-type': outside, + 'focus-ring-offset': 2px, + 'focus-ring-size': 2px, + 'focus-ring-type': outline, + 'thumb-block-size': 1rem, + 'thumb-border-radius': 0.5rem, + 'thumb-inline-size': 1rem, + 'track-block-size': 0.25rem, + 'track-border-radius': 0.15rem, + ), + $form-range +); diff --git a/scss/config/form/_row.scss b/scss/config/form/_row.scss new file mode 100755 index 0000000..314784d --- /dev/null +++ b/scss/config/form/_row.scss @@ -0,0 +1,9 @@ +@use 'sass:map'; + +$form-row: () !default; +$form-row: map.merge( + ( + 'inline-size': 20ch, + ), + $form-row +); diff --git a/scss/config/form/_select.scss b/scss/config/form/_select.scss new file mode 100755 index 0000000..bfa1efb --- /dev/null +++ b/scss/config/form/_select.scss @@ -0,0 +1,11 @@ +@use 'sass:map'; + +$form-select: () !default; +$form-select: map.merge( + ( + 'icon-inline-size': 1.25em, + 'icon-right-offset': 0.5em, + 'padding-inline-end': calc(0.75em + 1.25em), + ), + $form-select +); diff --git a/scss/config/form/_switch.scss b/scss/config/form/_switch.scss new file mode 100755 index 0000000..70a0464 --- /dev/null +++ b/scss/config/form/_switch.scss @@ -0,0 +1,33 @@ +@use 'sass:map'; +@use '../typography' as *; +@use 'label' as *; + +$form-switch: () !default; +$form-switch: map.merge( + ( + 'border-width': 1px, + 'font-size': 1.125rem, + 'font-weight': map.get($form-label, 'font-weight'), + 'line-height': map.get($typography, 'line-height-md'), + 'margin-block': 0.15em, + 'vertical-alignment': center, + ), + $form-switch +); + +$form-switch-lg: () !default; +$form-switch-lg: map.merge( + ( + 'font-size': map.get($typography, 'font-size-lead'), + ), + $form-switch-lg +); + + +$form-switch-sm: () !default; +$form-switch-sm: map.merge( + ( + 'font-size': map.get($typography, 'font-size-base'), + ), + $form-switch-sm +); diff --git a/scss/element/_accessibility.scss b/scss/element/_accessibility.scss new file mode 100755 index 0000000..f304ea7 --- /dev/null +++ b/scss/element/_accessibility.scss @@ -0,0 +1,11 @@ +@use '../mixin' as *; + +@mixin generate-accessibility { + .sr-only { + @include visually-hidden; + } + + [tabindex='-1']:focus { + outline: none !important; + } +} diff --git a/scss/element/_default.scss b/scss/element/_default.scss new file mode 100755 index 0000000..c18f279 --- /dev/null +++ b/scss/element/_default.scss @@ -0,0 +1,53 @@ +@use '../config' as *; +@use '../function' as *; + +@mixin generate-default { + ::selection { + background-color: color('background', 'selection'); + color: color('foreground', 'selection'); + text-shadow: none; + } + + html { + box-sizing: border-box; + + @if setting('html-smooth-scrolling') { + @media (prefers-reduced-motion: no-preference) { + scroll-behavior: smooth; + } + } + } + + *, + ::before, + ::after { + box-sizing: inherit; + } + + body { + background: color('background'); + color: color('text'); + } + + a { + color: color('link'); + text-decoration: underline; + transition-duration: config('duration', $transition); + transition-property: color; + transition-timing-function: config('timing-function', $transition); + + &:hover { + color: color('link-hover'); + } + } + + button { + color: inherit; + } + + // Turn off double-tap on mobile to zoom + a, + button { + touch-action: manipulation; + } +} diff --git a/scss/element/_divider.scss b/scss/element/_divider.scss new file mode 100755 index 0000000..8061237 --- /dev/null +++ b/scss/element/_divider.scss @@ -0,0 +1,8 @@ +@use '../function' as *; + +@mixin generate-divider { + hr { + border: 0; + border-block-start: 1px solid color('border'); + } +} diff --git a/scss/element/_index.scss b/scss/element/_index.scss new file mode 100755 index 0000000..dd2bea0 --- /dev/null +++ b/scss/element/_index.scss @@ -0,0 +1,8 @@ +@forward 'root'; +@forward 'accessibility'; +@forward 'default'; +@forward 'divider'; +@forward 'media'; +@forward 'table'; +@forward 'typography'; +@forward 'utilities'; diff --git a/scss/element/_media.scss b/scss/element/_media.scss new file mode 100755 index 0000000..5f72f61 --- /dev/null +++ b/scss/element/_media.scss @@ -0,0 +1,26 @@ +@use '../function' as *; +@use '../mixin' as *; + +@mixin generate-media { + img { + block-size: auto; + display: block; + max-inline-size: 100%; + user-select: none; + } + + iframe { + block-size: 100%; + display: block; + inline-size: 100%; + } + + figure { + margin-inline: 0; + + figcaption { + margin-block-start: spacer('xs'); + text-align: center; + } + } +} diff --git a/scss/element/_root.scss b/scss/element/_root.scss new file mode 100755 index 0000000..4a26c96 --- /dev/null +++ b/scss/element/_root.scss @@ -0,0 +1,37 @@ +@use 'sass:map'; +@use '../function' as *; +@use '../mixin' as *; +@use '../config' as *; + +@mixin generate-root { + @include generate-color-variables; + + :root { + @if setting('css-custom-properties') { + @media (prefers-reduced-motion: reduce) { + --#{$internal-prefix}duration: 0; + } + + @media (prefers-reduced-motion: no-preference) { + --#{$internal-prefix}duration: #{config('duration', $transition, false)}; + --#{$internal-prefix}timing-function: #{config('timing-function', $transition, false)}; + } + } + + @if map.get($generators, 'content', 'typography') { + @include generate-variables($typography); + } + + @if map.get($generators, 'content', 'display') { + @include generate-variables($display); + } + + @if map.get($generators, 'content', 'layout') { + @include generate-variables($layout); + } + + @if map.get($generators, 'content', 'print') { + @include generate-variables($print); + } + } +} diff --git a/scss/element/_table.scss b/scss/element/_table.scss new file mode 100755 index 0000000..ed428a0 --- /dev/null +++ b/scss/element/_table.scss @@ -0,0 +1,107 @@ +@use '../config' as *; +@use '../function' as *; +@use '../mixin' as *; + +@mixin generate-table( + $selector: '.table', + $has-variations: true, + $has-responsive-table: true +) { + @if ($has-responsive-table) { + .table-responsive { + --inline-size: #{config('responsive-inline-size', $table, false)}; + -webkit-overflow-scrolling: touch; + overflow-x: auto; + + table { + min-inline-size: var(--inline-size); + } + } + } + + #{$selector} { + @include generate-variables($table, ('stripe')); + + border-collapse: collapse; + color: color('text', 'table'); + inline-size: 100%; + + caption { + color: color(caption, table); + font-size: config('caption-font-size', $table); + font-style: config('caption-font-style', $table); + font-weight: config('caption-font-weight', $table); + margin-block-end: spacer('s'); + } + + th, + td { + border-block-end: 1px solid color('border', 'table'); + line-height: config('line-height', $table); + padding: config('padding', $table); + } + + th { + color: color('heading', 'table'); + text-align: inherit; + text-align: -webkit-match-parent; + } + + @if ($has-variations) { + &--striped { + > tbody > tr:nth-child(#{config('stripe', $table, false)}) { + background-color: color('stripe', 'table'); + } + } + + &--hover { + > tbody > tr:hover { + background: color('hover', 'table'); + } + } + + &--clear-border { + th, + td { + border: 0; + } + } + + &--in-line { + th:first-child, + td:first-child { + padding-inline-start: 0; + } + + th:last-child, + td:last-child { + padding-inline-end: 0; + } + } + + &--sm { + @include generate-variables($table-sm); + + th, + td { + padding: config('padding', $table-sm); + } + } + + &--rounded { + th, + td { + &:first-child { + border-end-start-radius: config('border-radius-sm', $display); + border-start-start-radius: config('border-radius-sm', $display); + } + + &:last-child { + border-end-end-radius: config('border-radius-sm', $display); + border-start-end-radius: config('border-radius-sm', $display); + } + } + } + } + } +} diff --git a/scss/element/_typography.scss b/scss/element/_typography.scss new file mode 100755 index 0000000..d4482d2 --- /dev/null +++ b/scss/element/_typography.scss @@ -0,0 +1,154 @@ +@use 'sass:map'; +@use '../function' as *; +@use '../mixin' as *; +@use '../config' as *; + +@mixin generate-typography { + html { + -webkit-tap-highlight-color: hsl(0deg 0% 0% / 0%); + } + + body { + font-family: config('font-family-base', $typography); + font-size: config('font-size-base', $typography); + font-weight: config('font-weight-base', $typography); + line-height: config('line-height-base', $typography); + } + + @if setting('hyphens') { + p, + li, + h1, + h2, + h3, + h4, + h5, + h6 { + hyphens: auto; + overflow-wrap: break-word; + } + } + + h1, + h2, + h3, + h4, + h5, + h6 { + color: color('heading'); + font-family: config('font-family-heading', $typography); + font-weight: config('font-weight-heading', $typography); + letter-spacing: config('letter-spacing-heading', $typography); + line-height: config('line-height-heading', $typography); + } + + h1 { + font-size: font-size('h1'); + } + + h2 { + font-size: font-size('h2'); + } + + h3 { + font-size: font-size('h3'); + } + + h4 { + font-size: font-size('h4'); + } + + h5 { + font-size: font-size('h5'); + } + + h6 { + font-size: font-size('h6'); + } + + ul, + ol { + @include layout-stack('xxs'); + list-style-position: inside; + + li { + list-style-position: outside; + + &::marker { + color: color('marker'); + } + } + } + + li > ul, + li > ol { + margin-block-start: spacer('xxs'); + } + + dl { + dt { + color: color('heading'); + font-weight: bold; + } + + dd { + margin: 0; + } + + dd + dt { + margin-block-start: spacer('s'); + } + } + + .quote { + @include layout-stack('xs'); + border-inline-start: 0.5rem solid color('blockquote-border'); + padding-inline-start: spacer('m'); + + blockquote { + border-inline-start: 0; + padding-inline-start: 0; + } + + figcaption { + text-align: start; + } + } + + blockquote { + @include layout-stack('xs'); + border-inline-start: 0.5rem solid color('blockquote-border'); + margin-inline-start: 0; + padding-inline-start: spacer('m'); + } + + abbr[title] { + border-block-end: 1px dotted; + cursor: help; + text-decoration: none; + } + + mark { + background-color: color('mark-background'); + border-radius: config('border-radius', $typography); + color: color('mark-foreground'); + padding: config('inline-padding', $typography); + } + + code, + kbd, + samp { + background-color: color('code-background'); + border-radius: config('border-radius', $typography); + color: color('code-foreground'); + padding: config('inline-padding', $typography); + } + + strong { + color: color('strong'); + } + + .lead { + font-size: config('font-size-lead', $typography); + } +} diff --git a/scss/element/_utilities.scss b/scss/element/_utilities.scss new file mode 100755 index 0000000..4c1b374 --- /dev/null +++ b/scss/element/_utilities.scss @@ -0,0 +1,36 @@ +@use '../function' as *; + +@mixin generate-utilities { + @if setting('display', 'utilities') == true { + .hidden, + [hidden] { + display: none !important; + } + } + + @if setting('typography', 'utilities') == true { + .h1 { + font-size: font-size('h1'); + } + + .h2 { + font-size: font-size('h2'); + } + + .h3 { + font-size: font-size('h3'); + } + + .h4 { + font-size: font-size('h4'); + } + + .h5 { + font-size: font-size('h5'); + } + + .h6 { + font-size: font-size('h6'); + } + } +} diff --git a/scss/filters/_1977.scss b/scss/filters/_1977.scss new file mode 100644 index 0000000..b25eb48 --- /dev/null +++ b/scss/filters/_1977.scss @@ -0,0 +1,24 @@ +/// 1977 effect. As the name suggests, this filter gives you a nostalgic 70’s feel by making photos brighter as well as faded. +/// @name .filter.seventyseven +/// @group filters +/// @since 2.0.0 +.filter { + &.seventyseven { + position: relative; + filter: contrast(110%) brightness(110%) saturate(130%); + -webkit-filter: contrast(110%) brightness(110%) saturate(130%); + + &::before { + content: ""; + display: block; + height: 100%; + width: 100%; + top: 0; + left: 0; + position: absolute; + pointer-events: none; + mix-blend-mode: screen; + background: rgba(243, 106, 188, 0.3); + } + } +} diff --git a/style/filters/aden.sass b/scss/filters/_aden.scss similarity index 51% rename from style/filters/aden.sass rename to scss/filters/_aden.scss index 5d12500..2827cd0 100644 --- a/style/filters/aden.sass +++ b/scss/filters/_aden.scss @@ -1,22 +1,25 @@ /// Aden is famous for its retro, pastel-y look, which works great if you need to soften harsh lights. /// @name .filter.aden /// @group filters -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-filters#aden -.filter - &.aden - position: relative - filter: contrast(90%) brightness(120%) saturate(85%) hue-rotate(20deg) - -webkit-filter: contrast(90%) brightness(120%) saturate(85%) hue-rotate(20deg) - &::before - content: "" - display: block - height: 100% - width: 100% - top: 0 - left: 0 - position: absolute - pointer-events: none - mix-blend-mode: darken - background: linear-gradient(to right, rgba(66, 10, 14, 0.2), rgba(66, 10, 14, 0)) - background: -webkit-linear-gradient(to right, rgba(66, 10, 14, 0.2), rgba(66, 10, 14, 0)) +/// @since 2.0.0 +.filter { + &.aden { + position: relative; + filter: contrast(90%) brightness(120%) saturate(85%) hue-rotate(20deg); + -webkit-filter: contrast(90%) brightness(120%) saturate(85%) hue-rotate(20deg); + + &::before { + content: ""; + display: block; + height: 100%; + width: 100%; + top: 0; + left: 0; + position: absolute; + pointer-events: none; + mix-blend-mode: darken; + background: linear-gradient(to right, rgba(66, 10, 14, 0.2), rgba(66, 10, 14, 0)); + background: -webkit-linear-gradient(to right, rgba(66, 10, 14, 0.2), rgba(66, 10, 14, 0)); + } + } +} diff --git a/scss/filters/_amaro.scss b/scss/filters/_amaro.scss new file mode 100644 index 0000000..6749664 --- /dev/null +++ b/scss/filters/_amaro.scss @@ -0,0 +1,10 @@ +/// This filter adds more light to the center of the photo and darkens around the edges. +/// @name .filter.amaro +/// @group filters +/// @since 2.0.0 +.filter { + &.amaro { + filter: contrast(90%) brightness(110%) saturate(150%) hue-rotate(-10deg); + -webkit-filter: contrast(90%) brightness(110%) saturate(150%) hue-rotate(-10deg); + } +} diff --git a/scss/filters/_blur.scss b/scss/filters/_blur.scss new file mode 100644 index 0000000..688d5ba --- /dev/null +++ b/scss/filters/_blur.scss @@ -0,0 +1,17 @@ +$blur-breakpoints: '1px', '2px', '3px', '4px', '5px', '6px', '7px', '8px', '9px', '10px'; + +@mixin blur { + @each $breakpoint in $blur-breakpoints { + &.blur-#{$breakpoint} { + filter: blur($breakpoint); + } + } +} + +/// Applies a blur effect to the image. A larger value will create more blur. +/// @name .filter.blur +/// @group filters +/// @since 2.0.0 +.filter { + @include blur; +} diff --git a/scss/filters/_brannan.scss b/scss/filters/_brannan.scss new file mode 100644 index 0000000..79853d4 --- /dev/null +++ b/scss/filters/_brannan.scss @@ -0,0 +1,24 @@ +/// Brannan adds high contrast and exposure to your photo, giving it some stylish metallic tint. This photo effect is soft and washed out, like a photo from old granny’s album. +/// @name .filter.brannan +/// @group filters +/// @since 2.0.0 +.filter { + &.brannan { + position: relative; + filter: contrast(140%) sepia(50%); + -webkit-filter: contrast(140%) sepia(50%); + + &::before { + content: ""; + display: block; + height: 100%; + width: 100%; + top: 0; + left: 0; + position: absolute; + pointer-events: none; + mix-blend-mode: lighten; + background: rgba(161, 44, 199, 0.31); + } + } +} diff --git a/scss/filters/_brightness.scss b/scss/filters/_brightness.scss new file mode 100644 index 0000000..e46b46d --- /dev/null +++ b/scss/filters/_brightness.scss @@ -0,0 +1,17 @@ +$brightness-breakpoints: 0, 10, 25, 40, 50, 60, 75, 110, 125, 150, 175, 200; + +@mixin brightness { + @each $breakpoint in $brightness-breakpoints { + &.brightness-#{$breakpoint} { + filter: unquote("brightness(#{$breakpoint}%)"); + } + } +} + +/// The Brightness filter provides advanced options for adjusting brightness. +/// @name .filter.brightness +/// @group filters +/// @since 2.0.0 +.filter { + @include brightness; +} diff --git a/scss/filters/_brooklyn.scss b/scss/filters/_brooklyn.scss new file mode 100644 index 0000000..0734462 --- /dev/null +++ b/scss/filters/_brooklyn.scss @@ -0,0 +1,25 @@ +/// Brooklyn brightens up your image and boosts its yellow tones. Depending on the image, it can give it an ethereal look. +/// @name .filter.brooklyn +/// @group filters +/// @since 2.0.0 +.filter { + &.brooklyn { + position: relative; + filter: contrast(90%) brightness(110%); + -webkit-filter: contrast(90%) brightness(110%); + + &::before { + content: ""; + display: block; + height: 100%; + width: 100%; + top: 0; + left: 0; + position: absolute; + pointer-events: none; + mix-blend-mode: overlay; + background: -webkit-radial-gradient(circle closest-corner, rgba(168, 223, 193, 0.4), rgba(183, 196, 200, 0.2)); + background: radial-gradient(circle closest-corner, rgba(168, 223, 193, 0.4), rgba(183, 196, 200, 0.2)); + } + } +} diff --git a/scss/filters/_clarendon.scss b/scss/filters/_clarendon.scss new file mode 100644 index 0000000..a2520ba --- /dev/null +++ b/scss/filters/_clarendon.scss @@ -0,0 +1,24 @@ +/// Clarendon filter will brighten the highlights found in your photos, while also making the shadows a bit bolder. +/// @name .filter.clarendon +/// @group filters +/// @since 2.0.0 +.filter { + &.clarendon { + position: relative; + filter: contrast(120%) saturate(125%); + -webkit-filter: contrast(120%) saturate(125%); + + &::before { + content: ""; + display: block; + height: 100%; + width: 100%; + top: 0; + left: 0; + position: absolute; + pointer-events: none; + mix-blend-mode: overlay; + background: rgba(127, 187, 227, 0.2); + } + } +} diff --git a/scss/filters/_contrast.scss b/scss/filters/_contrast.scss new file mode 100644 index 0000000..344d098 --- /dev/null +++ b/scss/filters/_contrast.scss @@ -0,0 +1,17 @@ +$contrast-breakpoints: 0, 10, 25, 40, 50, 60, 75, 110, 125, 150, 175, 200; + +@mixin contrast { + @each $breakpoint in $contrast-breakpoints { + &.contrast-#{$breakpoint} { + filter: unquote("contrast(#{$breakpoint}%)"); + } + } +} + +/// Contrast filter adjusts the contrast of an image. +/// @name .filter.contrast +/// @group filters +/// @since 2.0.0 +.filter { + @include contrast; +} diff --git a/scss/filters/_earlybird.scss b/scss/filters/_earlybird.scss new file mode 100644 index 0000000..510fc67 --- /dev/null +++ b/scss/filters/_earlybird.scss @@ -0,0 +1,25 @@ +/// Earlybird to get a retro β€œPolaroid” feel with soft faded colors and a hint of yellow. +/// @name .filter.earlybird +/// @group filters +/// @since 2.0.0 +.filter { + &.earlybird { + position: relative; + filter: contrast(90%) sepia(20%); + -webkit-filter: contrast(90%) sepia(20%); + + &::before { + content: ""; + display: block; + height: 100%; + width: 100%; + top: 0; + left: 0; + position: absolute; + pointer-events: none; + mix-blend-mode: overlay; + background: -webkit-radial-gradient(circle closest-corner, rgba(208, 186, 142, 1), rgba(29, 2, 16, 0.2)); + background: radial-gradient(circle closest-corner, rgba(208, 186, 142, 1), rgba(29, 2, 16, 0.2)); + } + } +} diff --git a/scss/filters/_emoji.scss b/scss/filters/_emoji.scss new file mode 100644 index 0000000..75ba53f --- /dev/null +++ b/scss/filters/_emoji.scss @@ -0,0 +1,25 @@ +/// Emoji are ideograms and smileys used in electronic messages and web pages. Emoji exist in various genres. +/// @name em.oji +/// @group effects +/// @since 2.0.0 +em.oji { + font-style: normal; + + &.black { + color: transparent; + text-shadow: 0 0 hsl(205deg 100% 2%); + } + + &.gray { + color: transparent; + text-shadow: 0 0 hsl(208deg 9% 42%); + } + + &.grayscale { + filter: grayscale(1); + } + + &.flat { + filter: contrast(130%) brightness(130%) saturate(130%) grayscale(0.5); + } +} diff --git a/scss/filters/_gingham.scss b/scss/filters/_gingham.scss new file mode 100644 index 0000000..c220757 --- /dev/null +++ b/scss/filters/_gingham.scss @@ -0,0 +1,25 @@ +/// Gingham muddy highlights, brightness, a slight haze and a subtle warm up of the tones by carefully applying red and magenta to selected parts of the image. +/// @name .filter.gingham +/// @group filters +/// @since 2.0.0 +.filter { + &.gingham { + position: relative; + filter: brightness(105%) hue-rotate(350deg); + -webkit-filter: brightness(105%) hue-rotate(350deg); + + &::before { + content: ""; + display: block; + height: 100%; + width: 100%; + top: 0; + left: 0; + position: absolute; + pointer-events: none; + mix-blend-mode: darken; + background: -webkit-linear-gradient(to right, rgba(66, 10, 14, 0.2), rgba(0, 0, 0, 0)); + background: linear-gradient(to right, rgba(66, 10, 14, 0.2), rgba(0, 0, 0, 0)); + } + } +} diff --git a/scss/filters/_grayscale.scss b/scss/filters/_grayscale.scss new file mode 100644 index 0000000..68ce5f8 --- /dev/null +++ b/scss/filters/_grayscale.scss @@ -0,0 +1,21 @@ +$grayscale-breakpoints: 0, 10, 25, 40, 50, 60, 75, 100; + +@mixin grayscale { + @each $breakpoint in $grayscale-breakpoints { + &.grayscale-#{$breakpoint} { + filter: unquote("grayscale(#{$breakpoint}%)"); + } + } +} + +/// Converts the image to grayscale. +/// @name .filter.grayscale +/// @group filters +/// @since 2.0.0 +.filter { + @include grayscale; + + &.grayscale { + filter: unquote("grayscale(100%)"); + } +} diff --git a/scss/filters/_hudson.scss b/scss/filters/_hudson.scss new file mode 100644 index 0000000..b94371f --- /dev/null +++ b/scss/filters/_hudson.scss @@ -0,0 +1,25 @@ +/// Hudson emphasizes light in your image and gives your photos a bluish, colder feel. +/// @name .filter.hudson +/// @group filters +/// @since 2.0.0 +.filter { + &.hudson { + position: relative; + filter: contrast(90%) brightness(120%) saturate(110%); + -webkit-filter: contrast(90%) brightness(120%) saturate(110%); + + &::before { + content: ""; + display: block; + height: 100%; + width: 100%; + top: 0; + left: 0; + position: absolute; + pointer-events: none; + mix-blend-mode: darken; + background: -webkit-radial-gradient(circle closest-corner, rgba(255, 177, 166, 1), rgba(52, 33, 52, 1)); + background: radial-gradient(circle closest-corner, rgba(255, 177, 166, 1), rgba(52, 33, 52, 1)); + } + } +} diff --git a/scss/filters/_hue-rotate.scss b/scss/filters/_hue-rotate.scss new file mode 100644 index 0000000..4286b35 --- /dev/null +++ b/scss/filters/_hue-rotate.scss @@ -0,0 +1,17 @@ +$hue-rotate-breakpoints: 0, 30, 45, 60, 90, 120, 135, 150, 180, 210, 225, 240, 270, 300, 315, 330; + +@mixin hue-rotate { + @each $breakpoint in $hue-rotate-breakpoints { + &.hue-rotate-#{$breakpoint} { + filter: hue-rotate(#{$breakpoint}deg); + } + } +} + +/// Applies a hue rotation on the image. The value defines the number of degrees around the color circle the image samples will be adjusted. +/// @name .filter.hue-rotate +/// @group filters +/// @since 2.0.0 +.filter { + @include hue-rotate; +} diff --git a/scss/filters/_index.scss b/scss/filters/_index.scss new file mode 100755 index 0000000..4b3e05d --- /dev/null +++ b/scss/filters/_index.scss @@ -0,0 +1,20 @@ +@forward "1977"; +@forward "aden"; +@forward "amaro"; +@forward "blur"; +@forward "brannan"; +@forward "brightness"; +@forward "brooklyn"; +@forward "clarendon"; +@forward "contrast"; +@forward "earlybird"; +@forward "emoji"; +@forward "gingham"; +@forward "grayscale"; +@forward "hudson"; +@forward "hue-rotate"; +@forward "inkwell"; +@forward "invert"; +@forward "opacity"; +@forward "saturate"; +@forward "sepia"; diff --git a/style/filters/inkwell.sass b/scss/filters/_inkwell.scss similarity index 61% rename from style/filters/inkwell.sass rename to scss/filters/_inkwell.scss index 3507707..7f29c2d 100644 --- a/style/filters/inkwell.sass +++ b/scss/filters/_inkwell.scss @@ -1,10 +1,11 @@ /// Inkwell adds high contrast and also makes your photos black and white. /// @name .filter.inkwell /// @group filters -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-filters#inkwell -.filter - &.inkwell - position: relative - filter: contrast(110%) brightness(110%) sepia(30%) grayscale(100%) - -webkit-filter: contrast(110%) brightness(110%) sepia(30%) grayscale(100%) +/// @since 2.0.0 +.filter { + &.inkwell { + position: relative; + filter: contrast(110%) brightness(110%) sepia(30%) grayscale(100%); + -webkit-filter: contrast(110%) brightness(110%) sepia(30%) grayscale(100%); + } +} diff --git a/scss/filters/_invert.scss b/scss/filters/_invert.scss new file mode 100644 index 0000000..0e8eb8d --- /dev/null +++ b/scss/filters/_invert.scss @@ -0,0 +1,17 @@ +$invert-breakpoints: 0, 10, 25, 40, 50, 60, 75, 100; + +@mixin invert { + @each $breakpoint in $invert-breakpoints { + &.invert-#{$breakpoint} { + filter: unquote("invert(#{$breakpoint}%)"); + } + } +} + +/// Inverts the samples in the image. 0% (0) is default and represents the original image. 100% (100) will make the image completely inverted. +/// @name .filter.invert +/// @group filters +/// @since 2.0.0 +.filter { + @include invert; +} diff --git a/scss/filters/_opacity.scss b/scss/filters/_opacity.scss new file mode 100644 index 0000000..0cc7c02 --- /dev/null +++ b/scss/filters/_opacity.scss @@ -0,0 +1,17 @@ +$opacity-breakpoints: 0, 10, 25, 40, 50, 60, 75, 100; + +@mixin opacity { + @each $breakpoint in $opacity-breakpoints { + &.opacity-#{$breakpoint} { + filter: unquote("opacity(#{$breakpoint}%)"); + } + } +} + +/// Sets the opacity level for the image. The opacity-level describes the transparency-level, where: 0% (0) is completely transparent. 100% (100) is default and represents the original image (no transparency). +/// @name .filter.opacity +/// @group filters +/// @since 2.0.0 +.filter { + @include opacity; +} diff --git a/style/filters/saturate.sass b/scss/filters/_saturate.scss similarity index 52% rename from style/filters/saturate.sass rename to scss/filters/_saturate.scss index c07e1ff..f625d84 100644 --- a/style/filters/saturate.sass +++ b/scss/filters/_saturate.scss @@ -1,14 +1,17 @@ -$saturate-breakpoints: 0, 10, 25, 40, 50, 60, 75, 110, 125, 150, 175, 200, 300, 400, 500 +$saturate-breakpoints: 0, 10, 25, 40, 50, 60, 75, 110, 125, 150, 175, 200, 300, 400, 500; -=saturate - @each $breakpoint in $saturate-breakpoints - &.saturate-#{$breakpoint} - filter: unquote("saturate(#{$breakpoint}%)") +@mixin saturate { + @each $breakpoint in $saturate-breakpoints { + &.saturate-#{$breakpoint} { + filter: unquote("saturate(#{$breakpoint}%)"); + } + } +} /// Saturates the image. 0% (0) will make the image completely un-saturated. 100% (100) is default and represents the original image. Values over 100% provides super-saturated results. /// @name .filter.saturate /// @group filters -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-filters#saturate -.filter - +saturate +/// @since 2.0.0 +.filter { + @include saturate; +} diff --git a/scss/filters/_sepia.scss b/scss/filters/_sepia.scss new file mode 100644 index 0000000..034c03b --- /dev/null +++ b/scss/filters/_sepia.scss @@ -0,0 +1,17 @@ +$sepia-breakpoints: 0, 10, 25, 40, 50, 60, 75, 100; + +@mixin sepia { + @each $breakpoint in $sepia-breakpoints { + &.sepia-#{$breakpoint} { + filter: unquote("sepia(#{$breakpoint}%)"); + } + } +} + +/// Converts the image to sepia. 0% (0) is default and represents the original image. 100% (100) will make the image completely sepia. +/// @name .filter.sepia +/// @group filters +/// @since 2.0.0 +.filter { + @include sepia; +} diff --git a/scss/form/_button.scss b/scss/form/_button.scss new file mode 100755 index 0000000..c52d3f9 --- /dev/null +++ b/scss/form/_button.scss @@ -0,0 +1,100 @@ +@use 'sass:map'; +@use '../function' as *; +@use '../mixin' as *; +@use '../config' as *; + +@mixin generate-btn( + $selector, + $pseudo-selector: null, + $has-icons: true, + $has-sizes: true, +) { + #{$selector}#{$pseudo-selector} { + @include generate-variables($btn, ('focus-')); + + align-items: center; + border-radius: config('border-radius', $btn); + border-style: solid; + border-width: config('border-width', $btn); + cursor: pointer; + display: inline-flex; + font-family: config('font-family', $btn); + font-size: config('font-size', $btn); + font-style: config('font-style', $btn); + font-weight: config('font-weight', $btn); + gap: config('gap', $btn); + justify-content: center; + line-height: 1; + padding: config('padding', $btn); + text-align: start; + text-decoration: none; + text-transform: config('text-transform', $btn); + transition-duration: config('duration', $transition); + transition-property: background-color, border-color, box-shadow, color; + transition-timing-function: config('timing-function', $transition); + } + + #{$selector}:focus { + outline-color: transparent; + outline-style: solid; + } + + #{$selector}:disabled { + opacity: 0.5; + pointer-events: none; + } + + @if ($has-icons) { + #{$selector}--icon { + padding: config('icon-padding', $btn); + + &#{$selector}--sm { + padding: config('icon-padding', $btn-sm); + } + + &#{$selector}--lg { + padding: config('icon-padding', $btn-lg); + } + } + + #{$selector}__icon { + block-size: config('icon-size', $btn); + flex-shrink: 0; + inline-size: config('icon-size', $btn); + pointer-events: none; + + &--sm { + block-size: config('icon-size', $btn-sm); + inline-size: config('icon-size', $btn-sm); + } + } + } + + @if ($has-sizes) { + // Sizes + #{$selector}--sm#{$pseudo-selector} { + @include generate-variables($btn-sm); + + font-size: config('font-size', $btn-sm); + gap: config('gap', $btn-sm); + padding: config('padding', $btn-sm); + } + + #{$selector}--lg#{$pseudo-selector} { + @include generate-variables($btn-lg); + + @if not map.get($settings, 'css-custom-properties') { + gap: config('gap', $btn-lg); + padding: config('padding', $btn-lg); + + @include breakpoint(md) { + font-size: config('font-size', $btn-lg); + } + } + } + + #{$selector}--block#{$pseudo-selector} { + inline-size: 100%; + } + } +} diff --git a/scss/form/_check.scss b/scss/form/_check.scss new file mode 100755 index 0000000..ecdf169 --- /dev/null +++ b/scss/form/_check.scss @@ -0,0 +1,124 @@ +@use 'sass:map'; +@use '../config' as *; +@use '../function' as *; +@use '../mixin' as *; + +// Create custom checkbox and radio +@mixin generate-form-check( + $parent, + $input, + $label, + $has-sizes: false +) { + #{$parent} { + @include generate-variables($form-check, ('focus-')); + + align-items: config('vertical-alignment', $form-check); + display: inline-flex; + gap: spacer('xs'); + } + + #{$parent}--vertical-center { + align-items: center; + } + + #{$parent}--vertical-start { + align-items: flex-start; + } + + @if ($has-sizes) { + #{$parent}--sm { + @include generate-variables($form-control-sm); + + #{$input} { + font-size: config('font-size', $form-check-sm); + } + } + + #{$parent}--lg { + @include generate-variables($form-control-lg); + + #{$input} { + font-size: config('font-size', $form-check-lg); + } + } + } + + @at-root { + #{$input} { + appearance: none; + background-color: color('background', 'form'); + background-position: center; + background-repeat: no-repeat; + background-size: contain; + block-size: 1em; + border: config('border-width', $form-check) solid color('border', 'form'); + flex-shrink: 0; + font-size: config('font-size', $form-check); + font-weight: config('font-weight', $form-check); + inline-size: 1em; + line-height: 1; + margin-block: config('margin-block', $form-check); + transition-duration: config('duration', $transition); + transition-property: border, box-shadow; + transition-timing-function: config('timing-function', $transition); + + &[type='radio'] { + border-radius: 50%; + } + + &[type='checkbox'] { + border-radius: config('border-radius', $form-check); + } + + &:focus-visible { + @include focus-ring( + $type: config('focus-ring-type', $form-check, false), + $border-color: color('check-background', 'form'), + $ring-color: color('check-focus-ring', 'form'), + $box-shadow-type: config('focus-ring-box-shadow-type', $form-check, false), + $ring-size: config('focus-ring-size', $form-check, false), + $ring-offset: config('focus-ring-offset', $form-check, false) + ); + } + + &:checked { + background-color: color('check-background', 'form'); + border-color: color('check-background', 'form'); + + &[type='radio'] { + @include field-icon(config('radio', $form-icon, false), color('check-foreground', 'form', true)); + } + + &[type='checkbox'] { + @include field-icon(config('checkbox', $form-icon, false), color('check-foreground', 'form', true)); + } + } + + &:indeterminate { + &[type='checkbox'] { + @include field-icon(config('checkbox-indeterminate', $form-icon, false), color('check-foreground', 'form', true)); + background-color: color('check-background', 'form'); + border-color: color('check-background', 'form'); + } + } + + &:disabled, + &.disabled { + @include field-disabled( + $background: color('background-disabled', 'form'), + $border: color('border-disabled', 'form') + ); + + + #{$label} { + opacity: 0.5; + } + } + } + + #{$label} { + font-weight: config('font-weight', $form-check); + line-height: config('line-height', $form-check); + } + } +} diff --git a/scss/form/_control.scss b/scss/form/_control.scss new file mode 100755 index 0000000..174d5c9 --- /dev/null +++ b/scss/form/_control.scss @@ -0,0 +1,196 @@ +@use 'sass:map'; +@use '../function' as *; +@use '../mixin' as *; +@use '../config' as *; + +@mixin generate-form-control( + $selector, + $has-states: false, + $has-sizes: false, + $has-select: true +) { + #{$selector} { + --webkit-date-line-height: 1.375; + @include generate-variables($form-control, ('focus-')); + + appearance: none; + background-color: color('background', 'form'); + border: config('border-width', $form-control) solid color('border', 'form'); + border-radius: config('border-radius', $form-control); + box-sizing: border-box; + color: color('text', 'form'); + display: block; + font-family: config('font-family', $form-control); + font-size: config('font-size', $form-control); + font-weight: config('font-weight', $form-control); + inline-size: 100%; + line-height: config('line-height', $form-control); + padding: config('padding', $form-control); + transition-duration: config('duration', $transition); + transition-property: border, box-shadow; + transition-timing-function: config('timing-function', $transition); + + &::placeholder { + color: color('placeholder', 'form'); + }; + + &::-webkit-datetime-edit { + line-height: var(--webkit-date-line-height); + } + + &:focus { + @include focus-ring( + $type: config('focus-ring-type', $form-control, false), + $border-color: color('border-focus', 'form'), + $ring-color: color('ring-focus', 'form'), + $box-shadow-type: config('focus-ring-box-shadow-type', $form-control, false), + $ring-size: config('focus-ring-size', $form-control, false), + $ring-offset: config('focus-ring-offset', $form-control, false) + ); + } + + &[type='color'] { + @include generate-variables($form-control-color); + aspect-ratio: config('aspect-ratio', $form-control-color); + block-size: config('block-size', $form-control-color); + inline-size: config('inline-size', $form-control-color); + padding: config('padding', $form-control-color); + + &::-webkit-color-swatch-wrapper { + padding: 0; + } + + &::-moz-color-swatch { + border: 0; + border-radius: config('border-radius', $form-control); + } + + &::-webkit-color-swatch { + border: 0; + border-radius: config('border-radius', $form-control); + } + } + + &[disabled], + &[disabled='true'] { + @include field-disabled( + $background: color('background-disabled', 'form'), + $border: color('border-disabled', 'form') + ); + } + + @at-root { + textarea#{$selector} { + block-size: config('textarea-block-size', $form-control); + min-block-size: config('textarea-block-size', $form-control); + resize: vertical; + } + } + + @if ($has-states) { + &--valid, + &--invalid { + background-position: center right config('icon-right-offset', $form-select, false); + background-repeat: no-repeat; + background-size: config('icon-inline-size', $form-select, false) auto; + padding-inline-end: config('padding-inline-end', $form-select, false); + + html[dir='rtl'] & { + background-position: center left config('icon-right-offset', $form-select, false); + } + } + + &--valid { + @include field-icon(config('valid', $form-icon, false), color('success', 'alert', true)); + border-color: color('success', 'alert'); + + &:focus { + @include focus-ring( + $type: config('focus-ring-type', $form-control, false), + $border-color: color('valid', 'form'), + $ring-color: color('valid-focus-ring', 'form', false), + $box-shadow-type: config('focus-ring-box-shadow-type', $form-control), + $ring-size: config('focus-ring-size', $form-control, false), + $ring-offset: config('focus-ring-offset', $form-control, false) + ); + } + } + + &--invalid { + @include field-icon(config('invalid', $form-icon, false), color('danger', 'alert', true)); + border-color: color('danger', 'alert'); + + &:focus { + @include focus-ring( + $type: config('focus-ring-type', $form-control, false), + $border-color: color('invalid', 'form'), + $ring-color: color('invalid-focus-ring', 'form'), + $box-shadow-type: config('focus-ring-box-shadow-type', $form-control, false), + $ring-size: config('focus-ring-size', $form-control, false), + $ring-offset: config('focus-ring-offset', $form-control, false) + ); + } + } + } + + @if ($has-sizes) { + &--sm { + --webkit-date-line-height: 1.36; + @include generate-variables($form-control-sm); + + &[type='color'] { + @include generate-variables($form-control-color-sm); + } + + @if not map.get($settings, 'css-custom-properties') { + font-size: config('font-size', $form-control-sm); + padding: config('padding', $form-control-sm); + + &[type='color'] { + aspect-ratio: config('aspect-ratio', $form-control-color-sm); + block-size: config('block-size', $form-control-color-sm); + inline-size: config('inline-size', $form-control-color-sm); + padding: config('padding', $form-control-color-sm); + } + } + } + + &--lg { + --webkit-date-line-height: 1.387; + @include generate-variables($form-control-lg); + + &[type='color'] { + @include generate-variables($form-control-color-lg); + } + + @if not map.get($settings, 'css-custom-properties') { + font-size: config('font-size', $form-control-lg); + padding: config('padding', $form-control-lg); + + &[type='color'] { + aspect-ratio: config('aspect-ratio', $form-control-color-lg); + height: config('block-size', $form-control-color-lg); + inline-size: config('inline-size', $form-control-color-lg); + padding: config('padding', $form-control-color-lg); + } + } + } + } + } + + @if ($has-select) { + select#{$selector} { + &:not([multiple]):not([size]) { + @include field-icon(config('select', $form-icon, false), color('select-foreground', 'form', true)); + background-position: center right config('icon-right-offset', $form-select, false); + background-repeat: no-repeat; + background-size: config('icon-inline-size', $form-select, false) auto; + padding-inline-end: config('padding-inline-end', $form-select, false); + + html[dir='rtl'] & { + background-position: center left config('icon-right-offset', $form-select, false); + } + } + } + } +} diff --git a/scss/form/_description.scss b/scss/form/_description.scss new file mode 100755 index 0000000..86dec06 --- /dev/null +++ b/scss/form/_description.scss @@ -0,0 +1,17 @@ +@use 'sass:map'; +@use '../function' as *; +@use '../mixin' as *; +@use '../config' as *; + +@mixin generate-form-description { + .form-description { + @include generate-variables($form-description); + + color: color('text', 'form'); + display: block; + font-size: config('font-size', $form-description); + font-style: config('font-style', $form-description); + font-weight: config('font-weight', $form-description); + line-height: config('line-height-md', $typography); + } +} diff --git a/scss/form/_fieldset.scss b/scss/form/_fieldset.scss new file mode 100755 index 0000000..e09dafa --- /dev/null +++ b/scss/form/_fieldset.scss @@ -0,0 +1,25 @@ +@use '../function' as *; +@use '../mixin' as *; +@use '../config' as *; + +@mixin generate-form-fieldset { + fieldset { + @include generate-variables($form-fieldset); + @include layout-stack(config('layout-gap', $form-fieldset)); + + border: 0; + margin: 0; + padding: 0; + + + fieldset { + margin-block-start: spacer('l'); + } + } + + legend { + color: color('legend', 'form'); + font-family: config('legend-font-family', $form-fieldset); + font-size: config('legend-font-size', $form-fieldset); + font-weight: config('legend-font-weight', $form-fieldset); + } +} diff --git a/scss/form/_file.scss b/scss/form/_file.scss new file mode 100755 index 0000000..569cdb1 --- /dev/null +++ b/scss/form/_file.scss @@ -0,0 +1,31 @@ +@use 'sass:map'; +@use '../function' as *; +@use '../mixin' as *; +@use '../config' as *; +@use 'button' as *; + +@mixin generate-file-btn( + $selector, + $pseudo-selector: null, + $has-icons: true, + $has-sizes: true, +) { + @include generate-btn($selector, $pseudo-selector, $has-icons, $has-sizes); + + #{$selector} { + display: block; + + &:focus { + outline: revert; + } + + &:focus-within#{$pseudo-selector} { + background-color: color(config('background', $form-file, false) + '-background-hover', btn); + } + + &#{$pseudo-selector} { + @include btn-variant(config('background', $form-file, false), false); + margin-inline-end: spacer('s'); + } + } +} diff --git a/scss/form/_group-label.scss b/scss/form/_group-label.scss new file mode 100755 index 0000000..d102390 --- /dev/null +++ b/scss/form/_group-label.scss @@ -0,0 +1,16 @@ +@use '../function' as *; +@use '../config' as *; +@use '../mixin' as *; + +@mixin generate-form-group-label { + .form-group-label { + @include generate-variables($form-control, $include: ('border-width', 'border-radius')); + align-items: center; + background-color: color('group-label-background', 'form'); + border: config('border-width', $form-control) solid color('border', 'form'); + border-radius: config('border-radius', $form-control); + color: color('group-label-foreground', 'form'); + display: flex; + padding-inline: spacer('s'); + } +} diff --git a/scss/form/_group.scss b/scss/form/_group.scss new file mode 100755 index 0000000..eeea728 --- /dev/null +++ b/scss/form/_group.scss @@ -0,0 +1,95 @@ +@use '../function' as *; +@use '../mixin' as *; +@use '../config' as *; + +@mixin generate-form-group { + .form-group { + @include generate-variables($form-group); + + display: flex; + flex-direction: column; + gap: config('gap', $form-group); + + &--horizontal-check { + @include generate-variables($form-group-check); + display: flex; + flex-direction: row; + flex-wrap: wrap; + gap: config('gap', $form-group-check); + } + + &--vertical-check { + @include generate-variables($form-group-check); + align-items: start; + flex-direction: column; + gap: config('gap', $form-group-check); + } + + &--row { + @include generate-variables($form-group-row); + + align-items: config('vertical-alignment', $form-group-row); + display: grid; + gap: config('gap', $form-group-row); + grid-template-columns: minmax(0, 1fr); + + &\:vertical-center { + align-items: center; + } + + &\:vertical-start { + align-items: flex-start; + } + + @container form-group-container (inline-size > #{config('container-inline-size', $form-group-row, false)}) { + grid-template-columns: minmax(0, #{config('label-inline-size', $form-group-row)}) minmax(0, 1fr); + } + + .form-description, + .field-feedback { + @container form-group-container (inline-size > #{config('container-inline-size', $form-group-row, false)}) { + grid-column-start: 2; + } + } + } + + &--stacked { + display: flex; + + > * { + + * { + border-radius: 0; + margin-inline-start: -1px; + } + + // stylelint-disable + &:first-child { + border-start-end-radius: 0; + border-start-start-radius: config('border-radius', $form-control); + border-end-end-radius: 0; + border-end-start-radius: config('border-radius', $form-control); + } + + &:last-child { + border-start-end-radius: config('border-radius', $form-control); + border-start-start-radius: 0; + border-end-end-radius: config('border-radius', $form-control); + border-end-start-radius: 0; + } + + &:only-child { + border-radius: config('border-radius', $form-control); + } + // stylelint-enable + + &:focus { + z-index: 2; + } + } + } + + &-container { + container: form-group-container / inline-size; + } + } +} diff --git a/scss/form/_index.scss b/scss/form/_index.scss new file mode 100755 index 0000000..a69789d --- /dev/null +++ b/scss/form/_index.scss @@ -0,0 +1,13 @@ +@forward 'button'; +@forward 'fieldset'; +@forward 'label'; +@forward 'control'; +@forward 'description'; +@forward 'group-label'; +@forward 'group'; +@forward 'row'; +@forward 'check'; +@forward 'switch'; +@forward 'file'; +@forward 'range'; +@forward 'validation'; diff --git a/scss/form/_label.scss b/scss/form/_label.scss new file mode 100755 index 0000000..4f1053c --- /dev/null +++ b/scss/form/_label.scss @@ -0,0 +1,16 @@ +@use 'sass:map'; +@use '../config' as *; +@use '../function' as *; + +@mixin generate-form-label { + .form-label { + color: color('label', 'form'); + font-family: map.get($form-label, 'font-family'); + font-size: map.get($form-label, 'font-size'); + font-style: map.get($form-label, 'font-style'); + font-weight: map.get($form-label, 'font-weight'); + line-height: map.get($typography, 'line-height-md'); + text-align: map.get($form-label, 'text-align'); + text-transform: map.get($form-label, 'text-transform'); + } +} diff --git a/scss/form/_range.scss b/scss/form/_range.scss new file mode 100755 index 0000000..bd37c0f --- /dev/null +++ b/scss/form/_range.scss @@ -0,0 +1,71 @@ +@use '../config' as *; +@use '../function' as *; +@use '../mixin' as *; + +@mixin generate-form-range { + .form-range { + @include generate-variables($form-range); + appearance: none; + margin-block-start: calc(#{config('thumb-block-size', $form-range)} / 2 - #{config('track-block-size', $form-range)} / 2); + + &:focus-visible { + outline: none; + + &::-webkit-slider-thumb { + @include focus-ring( + $type: config('focus-ring-type', $form-range, false), + $border-color: null, + $ring-color: color('range-thumb-focus-ring', 'form'), + $box-shadow-type: config('focus-ring-box-shadow-type', $form-range, false), + $ring-size: config('focus-ring-size', $form-range, false), + $ring-offset: config('focus-ring-offset', $form-range, false) + ); + } + + &::-moz-range-thumb { + @include focus-ring( + $type: config('focus-ring-type', $form-range, false), + $border-color: null, + $ring-color: color('range-thumb-focus-ring', 'form'), + $box-shadow-type: config('focus-ring-box-shadow-type', $form-range, false), + $ring-size: config('focus-ring-size', $form-range, false), + $ring-offset: config('focus-ring-offset', $form-range, false) + ); + } + } + + &::-webkit-slider-runnable-track { + background-color: color('range-track-background', 'form'); + block-size: config('track-block-size', $form-range); + border-radius: config('track-border-radius', $form-range); + } + + &::-moz-range-track { + background-color: color('range-track-background', 'form'); + block-size: config('track-block-size', $form-range); + border-radius: config('track-border-radius', $form-range); + } + + &::-webkit-slider-thumb { + appearance: none; + background-color: color('range-thumb-background', 'form'); + block-size: config('thumb-block-size', $form-range); + border-radius: config('thumb-border-radius', $form-range); + inline-size: config('thumb-inline-size', $form-range); + margin-block-start: calc(#{config('track-block-size', $form-range)} / 2 - #{config('thumb-block-size', $form-range)} / 2); + } + + &::-moz-range-thumb { + background-color: color('range-thumb-background', 'form'); + block-size: config('thumb-block-size', $form-range); + border: 0; /*Removes extra border that FF applies*/ + border-radius: config('thumb-border-radius', $form-range); + inline-size: config('thumb-inline-size', $form-range); + } + + &:disabled { + cursor: not-allowed; + opacity: 0.5; + } + } +} diff --git a/scss/form/_row.scss b/scss/form/_row.scss new file mode 100755 index 0000000..f47a5b1 --- /dev/null +++ b/scss/form/_row.scss @@ -0,0 +1,12 @@ +@use '../function' as *; +@use '../mixin' as *; +@use '../config' as *; + +@mixin generate-form-row { + .form-row { + &--mixed { + --inline-size: #{config('inline-size', $form-row, false)}; + @include layout-flex('s'); + } + } +} diff --git a/scss/form/_switch.scss b/scss/form/_switch.scss new file mode 100755 index 0000000..355e65b --- /dev/null +++ b/scss/form/_switch.scss @@ -0,0 +1,117 @@ +@use 'sass:map'; +@use '../config' as *; +@use '../function' as *; +@use '../mixin' as *; + +@mixin generate-form-switch( + $parent, + $input, + $label, + $has-sizes: false +) { + #{$parent} { + @include generate-variables($form-switch, ('focus-')); + align-items: config('vertical-alignment', $form-switch); + display: inline-flex; + gap: spacer('xs'); + + &--block { + inline-size: 100%; + justify-content: space-between; + } + } + + #{$parent}--vertical-center { + align-items: center; + } + + #{$parent}--vertical-start { + align-items: flex-start; + } + + @if ($has-sizes) { + #{$parent}--sm { + @include generate-variables($form-switch-sm); + + @if not map.get($settings, 'css-custom-properties') { + #{$input} { + font-size: config('font-size', $form-switch-sm); + } + } + } + + #{$parent}--lg { + @include generate-variables($form-switch-lg); + + @if not map.get($settings, 'css-custom-properties') { + #{$input} { + font-size: config('font-size', $form-switch-lg); + } + } + } + } + + @at-root { + #{$input} { + @include field-icon(config('switch', $form-icon, false), color('border', 'form', 'true')); + appearance: none; + background-color: color('background', 'form'); + background-position: left center; + background-repeat: no-repeat; + background-size: contain; + block-size: 1em; + border: config('border-width', $form-switch) solid color('border', 'form'); + border-radius: 2em; + flex-shrink: 0; + font-size: config('font-size', $form-switch); + inline-size: 2em; + line-height: 1; + margin-block: config('margin-block', $form-switch); + transition-duration: config('duration', $transition); + transition-property: background-position, border, box-shadow; + transition-timing-function: config('timing-function', $transition); + + &:focus-visible { + @include focus-ring( + $type: config('focus-ring-type', $form-check, false), + $border-color: color('switch-background', 'form'), + $ring-color: color('switch-focus-ring', 'form'), + $box-shadow-type: config('focus-ring-box-shadow-type', $form-check, false), + $ring-size: config('focus-ring-size', $form-check, false), + $ring-offset: config('focus-ring-offset', $form-check, false) + ); + } + + &:checked { + @include field-icon(config('switch', $form-icon, false), color('switch-foreground', 'form', 'true')); + background-color: color('switch-background', 'form'); + background-position: right center; + border-color: color('switch-background', 'form'); + } + + &:disabled { + @include field-disabled( + $background: color('background-disabled', 'form'), + $border: color('border-disabled', 'form') + ); + + + #{$label} { + opacity: 0.5; + } + } + } + + [dir='rtl'] #{$input} { + background-position: right center; + + &:checked { + background-position: left center; + } + } + + #{$label} { + font-weight: config('font-weight', $form-switch); + line-height: config('line-height', $form-switch); + } + } +} diff --git a/scss/form/_validation.scss b/scss/form/_validation.scss new file mode 100755 index 0000000..e55d414 --- /dev/null +++ b/scss/form/_validation.scss @@ -0,0 +1,18 @@ +@use 'sass:map'; +@use '../config' as *; +@use '../function' as *; + +@mixin generate-form-feedback { + .field-feedback { + display: block; + line-height: map.get($typography, 'line-height-md'); + + &--valid { + color: color('success', 'alert'); + } + + &--invalid { + color: color('danger', 'alert'); + } + } +} diff --git a/scss/function/_color.scss b/scss/function/_color.scss new file mode 100755 index 0000000..cfd1fe8 --- /dev/null +++ b/scss/function/_color.scss @@ -0,0 +1,72 @@ +@use 'sass:color'; +@use 'sass:map'; +@use 'sass:math'; +@use 'setting' as *; +@use '../config' as *; + +/// Get any color value from $colors (or any) Sass map. +/// @param {string} $key - The key name of the color. +/// @param {string} $type - The type of the color group (base, dark, etc.). +/// @param {boolean} $only-color - If true, return only the color value. +/// @param {map} $map - The map to get the color from. +/// @return {color} - The color value or the variable. +@function color( + $key, + $type: 'base', + $only-color: false, + $map: $colors +) { + @if not map.has-key($map, $type, $key) { + @error 'The #{$key} key name doesn\'t exist under #{$type} at the specified map (default: $colors).'; + } + + @if map.get($map, $type, $key) == null { + @return null; + } + + @if $only-color { + @return map.get($map, $type, $key); + } + + @if map.get($settings, color-fallback) { + @return var(--#{$internal-prefix}#{$type}-color-#{$key}, #{map.get($map, $type, $key)}); + } + + @return var(--#{$internal-prefix}#{$type}-color-#{$key}); +} + +/// Get any - just - color value from $colors (or any) Sass map. +/// @param {string} $key - The key name of the color. +/// @param {string} $type - The type of the color group (base, dark, etc.). +/// @param {map} $map - The map to get the color from. +/// @return {color} - The color value. +@function color-value( + $key, + $type: 'base', + $map: $colors +) { + @if not map.has-key($map, $type, $key) { + @error 'The #{$key} key name doesn\'t exist under #{$type} at the specified map (default: $colors).'; + } + + @if map.get($map, $type, $key) == null { + @return null; + } + + @return map.get($map, $type, $key); +} + +/// Get a white or black contrast color for any color (on WCAG standards). +/// Thanks for David Halford for this function: https://codepen.io/davidhalford/pen/ALrbEP +/// @param {color} $color - The color to get the contrast color. +/// @return {color} - The contrast color. +@function color-contrast($color) { + $color-brightness: math.round((color.channel($color, "red", $space: rgb) * 299) + (color.channel($color, "green", $space: rgb) * 587) + math.div(color.channel($color, "blue", $space: rgb) * 114, 1000)); + $light-color: math.round((color.channel(#fff, "red", $space: rgb) * 299) + (color.channel(#fff, "green", $space: rgb) * 587) + math.div(color.channel(#fff, "blue", $space: rgb) * 114, 1000)); + + @if math.abs($color-brightness) < math.div($light-color, 2) { + @return hsl(0 0% 100%); + } @else { + @return hsl(0 100% 0%); + } +} diff --git a/scss/function/_config.scss b/scss/function/_config.scss new file mode 100755 index 0000000..f915bd7 --- /dev/null +++ b/scss/function/_config.scss @@ -0,0 +1,35 @@ +@use 'sass:map'; +@use 'sass:string'; +@use 'setting' as *; +@use '../config' as *; + +/// Get the value of a key from a map. +/// @param {string} $key - The key name. +/// @param {map} $map - The map to get the value from. +/// @param {boolean} $custom-property - Whether to return the value as a CSS custom property. +/// @return {string} - The value of the key. +/// @throws {error} - If the key doesn't exist. +@function config( + $key, + $map, + $custom-property: true +) { + @if not map.has-key($map, $key) { + @error $key; + @error 'The #{$key} key name doesn\'t exist under #{$map} at the specified map.'; + } + + @if map.get($map, $key) == null { + @return null; + } + + @if not $custom-property { + @return map.get($map, $key); + } + + @if map.get($settings, 'css-custom-properties') { + @return var(--#{$internal-prefix}#{$key}); + } + + @return map.get($map, $key); +} diff --git a/scss/function/_css-variable.scss b/scss/function/_css-variable.scss new file mode 100755 index 0000000..f9ac652 --- /dev/null +++ b/scss/function/_css-variable.scss @@ -0,0 +1,15 @@ +@use 'sass:string'; +@use 'sass:map'; +@use '../config' as *; + +/// Add the prefix value to a CSS custom properties. +/// @param {string} $var - The name of the CSS custom property. +/// @return {string} - The CSS custom property with the prefix. +/// @throws {error} - If the CSS custom property name is invalid. +@function get-css-variable($var) { + @if string.index($var, --) != 1 { + @error 'It seems that this is not a valid CSS custom property name.'; + } + + @return var(string.insert($var, '#{$internal-prefix}', 3)); +} diff --git a/scss/function/_font-size.scss b/scss/function/_font-size.scss new file mode 100755 index 0000000..2958154 --- /dev/null +++ b/scss/function/_font-size.scss @@ -0,0 +1,54 @@ +@use 'sass:map'; +@use 'sass:math'; +@use '../config' as *; + +/// Get the font size of a key from the $font-sizes map. +/// @param {string} $key - The key name. +/// @param {boolean} $fluid - Whether to return the fluid font size. +/// @param {number} $scaler - The scaler value (15 = 15% smaller). +/// @param {number} $optimal-size - The optimal font size. +/// @return {string} - The font size of the key. +/// @throws {error} - If the key doesn't exist. +@function font-size( + $key, + $fluid: true, + $scaler: map.get($settings, 'scaler'), + $optimal-size: map.get($settings, 'optimal-font-size') +) { + @if not map.has-key($font-sizes, $key) { + @error 'The #{$key} key name doesn\'t exist at the $font-sizes map.'; + } + + @if $scaler < 0 or $scaler > 100 { + @error 'The $scaler value must be between 0 and 100.'; + } + + @if $fluid { + $scaled-size: map.get($font-sizes, $key) * math.div(100 - $scaler, 100); + + @if $scaled-size < map.get($typography, 'font-size-base') { + @return map.get($font-sizes, $key); + } + + @return clamp(#{$scaled-size}, #{$optimal-size}, #{map.get($font-sizes, $key)}); + } + + @return map.get($font-sizes, $key); +} + +/// Generate responsive font-size value using clamp(). +/// @param {number} $size - The font size. +/// @param {number} $scaler - The scaler value (15 = 15% smaller). +/// @param {number} $optimal-size - The optimal font size. +/// @return {string} - The responsive font-size value. +@function responsive-font-size( + $size, + $scaler: map.get($settings, 'scaler'), + $optimal-size: map.get($settings, 'optimal-font-size') +) { + @if $scaler < 0 or $scaler > 100 { + @error 'The $scaler value must be between 0 and 100.'; + } + + @return clamp(#{$size * math.div(100 - $scaler, 100)}, #{$optimal-size}, #{$size}); +} diff --git a/scss/function/_index.scss b/scss/function/_index.scss new file mode 100755 index 0000000..360fd29 --- /dev/null +++ b/scss/function/_index.scss @@ -0,0 +1,7 @@ +@forward 'color'; +@forward 'config'; +@forward 'css-variable'; +@forward 'font-size'; +@forward 'utilities'; +@forward 'setting'; +@forward 'spacer'; diff --git a/scss/function/_setting.scss b/scss/function/_setting.scss new file mode 100755 index 0000000..64af6cb --- /dev/null +++ b/scss/function/_setting.scss @@ -0,0 +1,29 @@ +@use 'sass:map'; +@use '../config' as *; + +/// Get spacer value from $settings map. +/// @param {string} $key - The key name. +/// @return {string} - The value of the key. +/// @throws {error} - If the key doesn't exist. +@function setting( + $key, + $group: null +) { + @if $group { + @if not map.has-key($settings, $group) { + @error 'The #{$group} key name doesn\'t exist at the $settings map.'; + } + + @if not map.has-key(map.get($settings, $group), $key) { + @error 'The #{$key} key name doesn\'t exist at the #{$group} map.'; + } + + @return map.get(map.get($settings, $group), $key); + } + + @if not map.has-key($settings, $key) { + @error 'The #{$key} key name doesn\'t exist at the $settings map.'; + } + + @return map.get($settings, $key); +} diff --git a/scss/function/_spacer.scss b/scss/function/_spacer.scss new file mode 100755 index 0000000..5f28076 --- /dev/null +++ b/scss/function/_spacer.scss @@ -0,0 +1,68 @@ +@use 'sass:map'; +@use 'sass:string'; +@use 'sass:list'; +@use '../config' as *; + +/// Split a string into a list of values. +/// @param {string} $value - The string to split. +/// @param {string} $separator - The separator to split by. +/// @return {list} - The list of values. +@function split-values($value, $separator: ':') { + $colon-index: string.index($value, $separator); + + @if $colon-index { + $first: string.slice($value, 1, $colon-index - 1); + $second: string.slice($value, $colon-index + 1); + + @return ($first, $second); + } + + @return null; +} + +/// Get spacer value from $spacers map. +/// @param {string} $key - The key name. +/// @return {string} - The value of the key. +/// @throws {error} - If the key doesn't exist. +@function spacer($key) { + @if string.index($key, ':') { + $list: null; + + @each $key in split-values($key) { + @if not map.has-key($spacers, $key) { + @error 'The #{$key} key name doesn\'t exist at the $spacers map.'; + } + + $list: list.append($list, map.get($spacers, $key)); + } + + @return $list; + } + + @if not map.has-key($spacers, $key) { + @error 'The #{$key} key name doesn\'t exist at the $spacers map.'; + } + + @return map.get($spacers, $key); +} + +/// Get value returned in a clamp from $spacers maps. +/// @param {string} $min - The minimum value. +/// @param {string} $max - The maximum value. +/// @param {string} $optimal - The optimal value. +/// @return {string} - The value returned in a clamp. +@function spacer-clamp( + $min, + $max, + $optimal: map.get($settings, 'optimal-spacer-size') +) { + @if map.has-key($spacers, $min) { + $min: map.get($spacers, $min); + } + + @if map.has-key($spacers, $max) { + $max: map.get($spacers, $max); + } + + @return clamp(#{$min}, #{$optimal}, #{$max}); +} diff --git a/scss/function/_utilities.scss b/scss/function/_utilities.scss new file mode 100755 index 0000000..cd3fe32 --- /dev/null +++ b/scss/function/_utilities.scss @@ -0,0 +1,29 @@ +@use 'sass:string'; +@use '../config' as *; + +// Replace `$search` with `$replace` in `$string` +// @author Kitty Giraudel +// @param {String} $string - Initial string +// @param {String} $search - Substring to replace +// @param {String} $replace ('') - New value +// @return {String} - Updated string +@function str-replace($string, $search, $replace: '') { + $index: string.index($string, $search); + + @if $index { + @return string.slice($string, 1, $index - 1) + $replace + str-replace(string.slice($string, $index + string.length($search)), $search, $replace); + } + + @return $string; +} + +/// Escape a string to be used as a data URI. +/// @param {String} $string - The string to escape. +/// @return {String} - The escaped string. +/// @author Kevin Weber - https://codepen.io/kevinweber/pen/dXWoRw +@function svg-escape($svg) { + @each $char, $encoded in $escaping-characters { + $svg: str-replace($svg, $char, $encoded); + } + @return 'data:image/svg+xml,' + $svg; +} diff --git a/scss/mixin/_breakpoint.scss b/scss/mixin/_breakpoint.scss new file mode 100755 index 0000000..81c4dd3 --- /dev/null +++ b/scss/mixin/_breakpoint.scss @@ -0,0 +1,28 @@ +@use 'sass:map'; +@use '../config' as *; + +/// Return a media query for a breakpoint based on min-width. +/// @param {string} $breakpoint - The breakpoint name. +/// @param {string} $logic - The logic operator. +/// @return {string} - The media query. +/// @throws {error} - If the breakpoint doesn't exist. +@mixin breakpoint( + $breakpoint, + $logic: false +) { + @if map.has-key($breakpoints, $breakpoint) { + $breakpoint: map.get($breakpoints, $breakpoint); + + @if $logic { + @media #{$logic} and (min-width: $breakpoint) { + @content; + } + } @else { + @media (min-width: $breakpoint) { + @content; + } + } + } @else { + @error 'Invalid breakpoint: #{$breakpoint}.'; + } +} diff --git a/scss/mixin/_button.scss b/scss/mixin/_button.scss new file mode 100755 index 0000000..0f35d04 --- /dev/null +++ b/scss/mixin/_button.scss @@ -0,0 +1,126 @@ +@use 'sass:color'; +@use 'sass:map'; +@use '../function' as *; +@use '../config' as *; +@use 'form' as *; + +/// Generate a button focus ring. +/// @param {string} $type - The type of the button for the color value. +/// @param {boolean} $focus - If the focus ring should be generated. +/// @return {string} - The generated focus ring. +@mixin btn-focus-helper( + $type: 'primary', + $focus: true +) { + @if $focus { + &:focus-visible { + $ring-color: null; + + @if map.has-key($colors, 'btn', $type + '-focus-ring') { + $ring-color: color($type + '-focus-ring', 'btn'); + } @else { + $ring-color: color($type + '-background', 'btn'); + } + + @include focus-ring( + $type: map.get($btn, 'focus-ring-type'), + $ring-color: $ring-color, + $box-shadow-type: map.get($btn, 'focus-ring-box-shadow-type'), + $ring-size: map.get($btn, 'focus-ring-size'), + $ring-offset: map.get($btn, 'focus-ring-offset') + ); + } + } +} + +/// Generate a button variant. +/// @param {string} $type - The type of the button for the color value. +/// @param {boolean} $focus - If the focus ring should be generated. +/// @return {string} - The generated button variant. +/// @throws {error} - If the color key doesn't exist. +@mixin btn-variant( + $type: 'primary', + $focus: true +) { + @if not map.has-key($colors, 'btn', $type + '-foreground') or not map.has-key($colors, 'btn', $type + '-background') { + @error 'The #{$type + '-foreground'} or #{$type + '-background'} key name doesn\'t exist under btn at the $colors map.'; + } + + @include btn-focus-helper($type, $focus); + + background-color: color($type + '-background', 'btn'); + border-color: color($type + '-background', 'btn'); + color: color($type + '-foreground', 'btn'); + + &:hover { + @if map.has-key($colors, 'btn', $type + '-background-hover') { + background-color: color($type + '-background-hover', 'btn'); + border-color: color($type + '-background-hover', 'btn'); + } @else { + background-color: color.adjust(color($type + '-background', 'btn', true), $lightness: -10%); + border-color: color.adjust(color($type + '-background', 'btn', true), $lightness: -10%); + } + + @if map.has-key($colors, 'btn', $type + '-foreground-hover') { + color: color($type + '-foreground-hover', 'btn'); + } @else { + color: color($type + '-foreground', 'btn'); + } + } + + @if map.has-key($colors, 'btn', $type + '-shadow') { + &-shadow { + box-shadow: 0 0.55em 1em -0.2em color($type + '-shadow', 'btn'), 0 0.15em 0.35em -0.185em color($type + '-shadow', 'btn'); + } + } +} + +/// Generate a button variant with outline. +/// @param {string} $type - The type of the button for the color value. +/// @param {boolean} $focus - If the focus ring should be generated. +/// @return {string} - The generated button variant with outline. +/// @throws {error} - If the color key doesn't exist. +@mixin btn-variant-outline( + $type: primary, + $focus: true +) { + @if not map.has-key($colors, 'btn', $type + '-foreground') or not map.has-key($colors, 'btn', $type + '-background') { + @error 'The #{$type + '-foreground'} or #{$type + '-background'} key name doesn\'t exist under btn at the $colors map.'; + } + + @if map.has-key($colors, 'btn', $type + '-outline-focus-ring') { + @include btn-focus-helper($type + '-outline', $focus); + } @else { + @include btn-focus-helper($type, $focus); + } + + background-color: transparent; + + @if map.has-key($colors, 'btn', $type + '-outline-border') { + border-color: color($type + '-outline-border', 'btn'); + } @else { + border-color: color($type + '-background', 'btn'); + } + + @if map.has-key($colors, 'btn', $type + '-outline-foreground') { + color: color($type + '-outline-foreground', 'btn'); + } @else { + color: color($type + '-background', 'btn'); + } + + &:hover { + @if map.has-key($colors, 'btn', $type + '-outline-background-hover') { + background-color: color($type + '-outline-background-hover', 'btn'); + border-color: color($type + '-outline-background-hover', 'btn'); + } @else { + background-color: color($type + '-background', 'btn'); + border-color: color($type + '-background', 'btn'); + } + + @if map.has-key($colors, 'btn', $type + '-outline-foreground-hover') { + color: color($type + '-outline-foreground-hover', 'btn'); + } @else { + color: color($type + '-foreground', 'btn'); + } + } +} diff --git a/scss/mixin/_color.scss b/scss/mixin/_color.scss new file mode 100755 index 0000000..762cd09 --- /dev/null +++ b/scss/mixin/_color.scss @@ -0,0 +1,22 @@ +@use 'sass:map'; +@use '../function' as *; +@use '../config' as *; + +/// Generate color variables. +/// @param {map} $colors - The colors map. +/// @param {string} $selector - The selector. +/// @return {string} - The generated color variables. +@mixin generate-color-variables( + $colors: $colors, + $selector: ':root' +) { + @each $key, $value in $colors { + #{$selector} { + @each $name, $color in $value { + @if $color { + --#{$internal-prefix}#{$key}-color-#{$name}: #{$color}; + } + } + } + } +} diff --git a/scss/mixin/_css-variable.scss b/scss/mixin/_css-variable.scss new file mode 100755 index 0000000..6576eaa --- /dev/null +++ b/scss/mixin/_css-variable.scss @@ -0,0 +1,17 @@ +@use 'sass:string'; +@use 'sass:map'; +@use '../config' as *; + +/// Declare CSS custom properties to add the prefix. +/// @param {map} $vars - The CSS custom properties. +/// @return {null} +/// @throws {error} - If the CSS custom property name is invalid. +@mixin set-css-variable($vars) { + @each $name, $value in $vars { + @if string.index($name, --) != 1 { + @error 'It seems that this is not a valid CSS custom property name.'; + } + + #{string.insert($name, '#{$internal-prefix}', 3)}: #{$value}; + } +} diff --git a/scss/mixin/_font-face.scss b/scss/mixin/_font-face.scss new file mode 100755 index 0000000..603e020 --- /dev/null +++ b/scss/mixin/_font-face.scss @@ -0,0 +1,29 @@ +@use 'sass:string'; + +/// Generate font-face declaration. +/// @param {string} $font-family - The font family name. +/// @param {string} $src - The font source. +/// @param {number} $font-weight - The font weight. +/// @param {string} $font-style - The font style. +/// @param {string} $font-display - The font display. +/// @return {string} - The generated font-face declaration. +/// @throws {error} - If the font format is not .woff2. +@mixin font-face( + $font-family: null, + $src: null, + $font-weight: 400, + $font-style: normal, + $font-display: swap +) { + @if not string.index($src, '.woff2') { + @error 'It seems that your font format is not .woff2, please use a that format.'; + } + + @font-face { + font-display: $font-display; + font-family: $font-family; + font-style: $font-style; + font-weight: $font-weight; + src: url('#{$src}') format('woff2'); + } +} diff --git a/scss/mixin/_form.scss b/scss/mixin/_form.scss new file mode 100755 index 0000000..33897fc --- /dev/null +++ b/scss/mixin/_form.scss @@ -0,0 +1,113 @@ +@use 'sass:map'; +@use '../function' as *; +@use '../config' as *; +@use './variables' as *; +@use './breakpoint' as *; + +/// Generate a from focus ring. +/// @param {string} $type - The type of focus ring (box-shadow, outline). +/// @param {string} $border-color - The border color. +/// @param {string} $ring-color - The ring color. +/// @param {string} $box-shadow-type - The box shadow type (outset, inset). +/// @param {string} $ring-size - The ring width. +/// @param {string} $ring-offset - The ring offset. +/// @return {string} - The generated focus ring. +@mixin focus-ring( + $type: 'box-shadow', + $border-color: null, + $ring-color, + $box-shadow-type: outset, + $ring-size: 2px, + $ring-offset: 2px +) { + @if $type == 'box-shadow' { + border-color: $border-color; + @if $box-shadow-type == 'inset' { + box-shadow: 0 0 0 $ring-size $ring-color inset; + } @else { + box-shadow: 0 0 0 $ring-size $ring-color; + } + outline: 2px solid transparent; + } + + @if $type == 'outline' { + outline: $ring-size solid $ring-color; + outline-offset: $ring-offset; + } +} + +/// Style field disabled input states. +/// @param {string} $background - The background color. +/// @param {string} $border - The border color. +/// @return {string} - The generated disabled input states. +@mixin field-disabled( + $background, + $border +) { + background-color: $background; + border-color: $border; + cursor: not-allowed; +} + +/// Get custom icon background for input and select fields. +/// @param {string} $icon - The icon (an SVG in string). +/// @param {string} $color - The color. +/// @return {string} - The generated icon background. +@mixin field-icon( + $icon, + $color +) { + background-image: url('#{svg-escape(str-replace($icon, "#COLOR#", $color))}'); +} + +/// Create a form group stacked layout with custom breakpoint. +/// @param {string} $breakpoint - The breakpoint. +/// @return {string} - The generated form group stacked layout. +@mixin form-group-stacked( + $breakpoint: 'sm', +) { + @if not map.has-key($breakpoints, $breakpoint) { + @error 'The #{$breakpoint} not exists in the breakpoints map.'; + } + + @include generate-variables($form-control, $include: ('border-radius')); + display: flex; + flex-direction: column; + + @include breakpoint($breakpoint) { flex-direction: row; } + + > * { + + * { + border-start-end-radius: 0; + border-start-start-radius: 0; + margin-block-start: -1px; + + @include breakpoint($breakpoint) { + border-end-start-radius: 0; + border-start-end-radius: config('border-radius', $form-control); + margin-block-start: 0; + margin-inline-start: -1px; + } + } + + &:not(:last-child) { + border-end-end-radius: 0; + border-end-start-radius: 0; + + @include breakpoint($breakpoint) { + border-end-end-radius: 0; + border-start-end-radius: 0; + } + } + + @include breakpoint($breakpoint) { + &:first-child { + border-end-start-radius: config('border-radius', $form-control); + } + } + + &:focus { + z-index: 2; + } + } +} diff --git a/scss/mixin/_generator.scss b/scss/mixin/_generator.scss new file mode 100755 index 0000000..6668499 --- /dev/null +++ b/scss/mixin/_generator.scss @@ -0,0 +1,127 @@ +@use 'sass:map'; +@use '../config' as *; +@use '../element' as *; +@use '../plugin' as *; +@use '../form' as *; +@use '../print' as *; +@use 'button' as *; + +/// Generate all the styles. +@mixin generate-styles { + @if map.get($generators, 'content', 'normalize') { + @include generate-normalize; + } + + @if map.get($generators, 'content', 'root') { + @include generate-root; + } + + @if map.get($generators, 'content', 'accessibility') { + @include generate-accessibility; + } + + @if map.get($generators, 'content', 'default') { + @include generate-default; + } + + @if map.get($generators, 'content', 'divider') { + @include generate-divider; + } + + @if map.get($generators, 'content', 'media') { + @include generate-media; + } + + @if map.get($generators, 'content', 'table') { + @include generate-table; + } + + @if map.get($generators, 'content', 'typography') { + @include generate-typography; + } + + @if map.get($generators, 'content', 'utilities') { + @include generate-utilities; + } + + @if map.get($generators, 'content', 'print') { + @include generate-print; + } + + @if map.get($generators, 'form', 'btn') { + @include generate-btn('.btn'); + + .btn--primary { @include btn-variant(primary); } + .btn--secondary { @include btn-variant(secondary); } + .btn--outline-primary { @include btn-variant-outline(primary); } + .btn--outline-secondary { @include btn-variant-outline(secondary); } + } + + @if map.get($generators, 'form', 'file-btn') { + @include generate-file-btn( + '.form-file', + '::file-selector-button', + false, + true + ); + } + + @if map.get($generators, 'form', 'form-label') { + @include generate-form-label; + } + + @if map.get($generators, 'form', 'form-control') { + @include generate-form-control( + '.form-control', + true, + true, + true + ); + } + + @if map.get($generators, 'form', 'form-check') { + @include generate-form-check( + '.form-check', + '.form-check__control', + '.form-check__label', + true + ); + } + + @if map.get($generators, 'form', 'form-switch') { + @include generate-form-switch( + '.form-switch', + '.form-switch__control', + '.form-switch__label', + true + ); + } + + @if map.get($generators, 'form', 'form-fieldset') { + @include generate-form-fieldset; + } + + @if map.get($generators, 'form', 'form-group-label') { + @include generate-form-group-label; + } + + @if map.get($generators, 'form', 'form-group') { + @include generate-form-group; + } + + @if map.get($generators, 'form', 'form-row') { + @include generate-form-row; + } + + @if map.get($generators, 'form', 'form-feedback') { + @include generate-form-feedback; + } + + @if map.get($generators, 'form', 'form-range') { + @include generate-form-range; + } + + @if map.get($generators, 'form', 'form-description') { + @include generate-form-description; + } +} diff --git a/scss/mixin/_index.scss b/scss/mixin/_index.scss new file mode 100755 index 0000000..596c0ed --- /dev/null +++ b/scss/mixin/_index.scss @@ -0,0 +1,11 @@ +@forward 'breakpoint'; +@forward 'button'; +@forward 'color'; +@forward 'css-variable'; +@forward 'font-face'; +@forward 'form'; +@forward 'layout'; +@forward 'transition'; +@forward 'selection'; +@forward 'utilities'; +@forward 'variables'; diff --git a/scss/mixin/_layout.scss b/scss/mixin/_layout.scss new file mode 100755 index 0000000..d9c5ad6 --- /dev/null +++ b/scss/mixin/_layout.scss @@ -0,0 +1,146 @@ +@use 'sass:map'; +@use 'sass:meta'; +@use 'sass:string'; +@use 'sass:list'; +@use '../function' as *; +@use '../config' as *; + +/// Create center layout. +/// @param {string} $gap - The gap between the container and the content. +/// @param {string} $max-inline-size - The maximum width (inline-size) of the container. +/// @return {mixin} - The centered layout. +@mixin layout-center( + $gap: m, + $max-inline-size: config('container-inline-size', $layout) +) { + @if map.has-key($spacers, $gap) { + $gap: map.get($spacers, $gap); + } + + inline-size: 100%; + margin-inline: auto; + max-inline-size: $max-inline-size; + padding-inline: $gap; +} + +/// Create stack layout. +/// @param {string} $gap - The gap between the the elements. +/// @param {boolean} $inline-size - Whether it has explicit width (inline-size). +/// @param {string} $align - The horizontal alignment of the elements. +/// @param {boolean} $important - Whether it should use the !important keyword. +/// @return {mixin} - The stacked layout. +@mixin layout-stack( + $gap: 'm', + $inline-size: false, + $align: none, + $important: false +) { + @if map.has-key($spacers, $gap) { + $gap: map.get($spacers, $gap); + } + + @if $align == left or $align == right { + display: flex; + flex-direction: column; + } + + @if $align == left { + align-items: flex-start; + } + + @if $align == right { + align-items: flex-end; + } + + > * { + margin-block-end: 0; + margin-block-start: 0; + + @if $inline-size and $align == none { + inline-size: 100%; + } + } + + > * + * { + @if $important == true { + margin-block-start: $gap !important; + } @else { + margin-block-start: $gap; + } + } +} + +/// Create grid layout. +/// @param {string} $gap - The gap between the the elements. +/// @param {string} $minimum - The minimum width (inline-size) of the elements. +/// @return {mixin} - The grid layout. +@mixin layout-grid( + $gap: 'm', + $minimum: 12.5rem +) { + @if meta.type-of($gap) == string and string.index($gap, ':') { + $gap: spacer($gap); + } @else if map.has-key($spacers, $gap) { + $gap: map.get($spacers, $gap); + } + + display: grid; + gap: $gap; + + @supports (inline-size: min(#{$minimum}, 100%)) { + & { + grid-template-columns: repeat(auto-fit, minmax(min(#{$minimum}, 100%), 1fr)); + } + } +} + +/// Create sidebar layout. +/// @param {string} $gap - The gap between the the elements. +/// @param {string} $inline-size - The width (flex-basis) of the sidebar. +/// @return {mixin} - The sidebar layout. +@mixin layout-sidebar( + $gap: 'm', + $inline-size: 18.75rem +) { + @if meta.type-of($gap) == string and string.index($gap, ':') { + $gap: spacer($gap); + } @else if map.has-key($spacers, $gap) { + $gap: map.get($spacers, $gap); + } + + display: flex; + flex-wrap: wrap; + gap: $gap; + + & > :first-child { + flex-basis: $inline-size; + flex-grow: 1; + } + + & > :last-child { + flex-basis: 0; + flex-grow: 999; + min-inline-size: 50%; + } +} + +/// Create instinctive flex layout. +/// @param {string} $gap - The gap between the the elements. +/// @param {string} $inline-size - The width (inline size) of the elements. +/// @return {mixin} - The instinctive flex layout. +@mixin layout-flex( + $gap: 'm', + $inline-size: var(--inline-size) +) { + @if map.has-key($spacers, $gap) { + $gap: map.get($spacers, $gap); + } + + display: flex; + flex-wrap: wrap; + gap: $gap; + + > * { + flex: 1 1 $inline-size; + } +} diff --git a/scss/mixin/_selection.scss b/scss/mixin/_selection.scss new file mode 100755 index 0000000..3b60713 --- /dev/null +++ b/scss/mixin/_selection.scss @@ -0,0 +1,40 @@ +@use 'sass:map'; +@use '../function' as *; +@use '../config' as *; + +/// Set the ::selection of an element with automatic foreground color. +/// @param {color} $background - The background color. +/// @param {color} $foreground - The foreground color. If null, the color will be automatically calculated. +/// @param {boolean} $is-direct - If true, the selection will be applied to the current element if false it will be applied to its children. +/// @return {mixin} - The selection mixin. +@mixin selection( + $background: 'primary', + $foreground: null, + $is-direct: false +) { + $is-variable: false; + $original-background: $background; + + @if map.has-key($colors, 'base', $background) { + $background: color($background); + $is-variable: true; + } + + @if not $foreground and not $is-variable { + $foreground: color-contrast($background); + } @else if not $foreground and $is-variable { + $foreground: color-contrast(color($original-background, $only-color: true)); + } + + @if $is-direct { + &::selection { + background-color: $background; + color: $foreground; + } + } @else { + ::selection { + background-color: $background; + color: $foreground; + } + } +} diff --git a/scss/mixin/_transition.scss b/scss/mixin/_transition.scss new file mode 100755 index 0000000..6663059 --- /dev/null +++ b/scss/mixin/_transition.scss @@ -0,0 +1,19 @@ +@use 'sass:string'; +@use '../function' as *; +@use '../config' as *; + +/// Generates transition related declarations. +/// @param {string} $duration - The duration of the transition. +/// @param {string} $property - The property to which the transition is applied. +/// @param {string} $timing-function - The speed curve of the transition. +/// @return {string} - The generated transition declarations. +/// @throws {error} - If the duration or timing-function is invalid. +@mixin transition( + $duration: config('duration', $transition), + $property: all, + $timing-function: config('timing-function', $transition), +) { + transition-duration: $duration; + transition-property: string.unquote($property); + transition-timing-function: $timing-function; +} diff --git a/scss/mixin/_utilities.scss b/scss/mixin/_utilities.scss new file mode 100755 index 0000000..2108d4c --- /dev/null +++ b/scss/mixin/_utilities.scss @@ -0,0 +1,170 @@ +@use 'sass:map'; +@use '../function' as *; +@use '../config' as *; +@use 'form' as *; + + +/// Hide something from the screen but keep it visible for assistive technology. +/// @return {mixin} - The visually hidden mixin. +@mixin visually-hidden { + block-size: 1px !important; + border: 0 !important; + clip: rect(0, 0, 0, 0) !important; + inline-size: 1px !important; + margin: -1px !important; + overflow: hidden !important; + padding: 0 !important; + position: absolute !important; + white-space: nowrap !important; +} + +/// Crop text and display an ellipsis with multiline. +/// @param {number} $number-of-lines - The number of lines. +/// @return {mixin} - The text ellipsis mixin. +@mixin text-ellipsis( + $number-of-lines: 1 +) { + overflow: hidden; + text-overflow: ellipsis; + + @if $number-of-lines == 1 { + white-space: nowrap; + } @else { + white-space: inherit; + + @supports (-webkit-line-clamp: $number-of-lines) { + -webkit-box-orient: vertical; + display: -webkit-box; + -webkit-line-clamp: $number-of-lines; + } + } +} + +/// Custom scrollbar. +/// @param {string} $thumb-background-color - The background color of the thumb. +/// @param {string} $thumb-background-color-hover - The background color of the thumb when hovered. +/// @param {string} $track-background-color - The background color of the track. +/// @param {string} $size - The size of the scrollbar. +/// @param {string} $border-radius - The border radius of the scrollbar. +/// @return {mixin} - The scrollbar mixin. +@mixin scrollbar( + $thumb-background-color: color('thumb-background', 'scrollbar'), + $thumb-background-color-hover: color('thumb-background-hover', 'scrollbar'), + $track-background-color: color('track-background', 'scrollbar'), + $size: 0.5rem, + $border-radius: config('border-radius-sm', $display) +) { + &::-webkit-scrollbar { + block-size: $size; + inline-size: $size; + } + + &::-webkit-scrollbar-thumb { + background: $thumb-background-color; + border-radius: $border-radius; + + &:hover { + background: $thumb-background-color-hover; + } + } + + &::-webkit-scrollbar-track { + background: $track-background-color; + border-radius: $border-radius; + } +} + +/// Clear default button styles. +/// @return {mixin} - The clear button mixin. +@mixin clear-btn { + background: none; + border: 0; + color: inherit; + cursor: pointer; + font: inherit; + outline: inherit; + padding: 0; +} + +// Clear list styles +@mixin clear-list { + list-style: none; + margin: 0; + padding: 0; +} + +/// More accessible card linking. +/// @param {string} $link - The link element's selector. +/// @param {boolean} $at-root - Whether to use @at-root. +/// @return {mixin} - The a11y card link mixin. +@mixin a11y-card-link( + $link, + $at-root: false +) { + position: relative; + + @if $at-root == true { + @at-root { + #{$link}::before { + content: ''; + inset: 0; + position: absolute; + } + } + } @else { + #{$link}::before { + content: ''; + inset: 0; + position: absolute; + } + } +} + +/// Break long string. +/// @author Chris Coyier - https://css-tricks.com/snippets/css/prevent-long-urls-from-breaking-out-of-container/ +/// @return {mixin} - The word-wrap mixin. +@mixin word-wrap { + hyphens: auto; + overflow-wrap: break-word; + word-break: break-all; + word-break: break-word; + word-wrap: break-word; +} + +/// Generate a focus ring. +/// @param {string} $type - The type of the focus ring. +/// @param {string} $btn-type - The type - hence color - of the button. +/// @return {mixin} - The focus ring mixin. +@mixin short-ring( + $type: 'input', + $btn-type: 'primary' +) { + @if $type == 'input' { + @include focus-ring( + $type: config('focus-ring-type', $form-control, false), + $border-color: color('border-focus', 'form'), + $ring-color: color('ring-focus', 'form'), + $box-shadow-type: config('focus-ring-box-shadow-type', $form-control, false), + $ring-size: config('focus-ring-size', $form-control, false), + $ring-offset: config('focus-ring-offset', $form-control, false) + ); + } + + @if $type == 'button' { + $ring-color: null; + + @if map.has-key($colors, 'btn', $btn-type + '-focus-ring') { + $ring-color: color($btn-type + '-focus-ring', 'btn'); + } @else { + $ring-color: color($btn-type + '-background', 'btn'); + } + + @include focus-ring( + $type: config('focus-ring-type', $btn, false), + $ring-color: $ring-color, + $box-shadow-type: config('focus-ring-box-shadow-type', $btn, false), + $ring-size: config('focus-ring-size', $btn, false), + $ring-offset: config('focus-ring-offset', $btn, false) + ); + } +} diff --git a/scss/mixin/_variables.scss b/scss/mixin/_variables.scss new file mode 100755 index 0000000..580e8d6 --- /dev/null +++ b/scss/mixin/_variables.scss @@ -0,0 +1,72 @@ +@use 'sass:map'; +@use 'sass:string'; +@use '../config' as *; + +/// Generate CSS custom properties based on a map. +/// @param {map} $map - The map to generate the CSS custom properties from. +/// @param {list} $exclude - The list of keys (or a segment of it) to exclude. +/// @param {list} $include - The list of keys (or a segment of it) to include. +/// @return {string} - The generated CSS custom properties. +/// @throws {error} - If you use both $exclude and $include arguments. +@mixin generate-variables( + $map, + $exclude: null, + $include: null +) { + @if $exclude and $include { + @error 'You can\'t use both $exclude and $include arguments.'; + } + + @if map.get($settings, 'css-custom-properties') { + $exclude-map: $map; + $include-map: (); + + @if $exclude { + @each $key, $value in $map { + @if $value { + @each $fraction in $exclude { + @if string.index($key, $fraction) { + $exclude-map: map.remove($exclude-map, $key); + } + } + } + } + } + + @if $include { + @each $key, $value in $map { + @if $value { + @each $fraction in $include { + @if string.index($key, $fraction) { + $include-map: map.set($include-map, $key, $value); + } + } + } + } + } + + @if $exclude { + @each $key, $value in $exclude-map { + @if $value { + --#{$internal-prefix}#{$key}: #{$value}; + } + } + } + + @if $include { + @each $key, $value in $include-map { + @if $value { + --#{$internal-prefix}#{$key}: #{$value}; + } + } + } + + @if not $exclude and not $include { + @each $key, $value in $map { + @if $value { + --#{$internal-prefix}#{$key}: #{$value}; + } + } + } + } +} diff --git a/scss/plugin/_index.scss b/scss/plugin/_index.scss new file mode 100755 index 0000000..a67916f --- /dev/null +++ b/scss/plugin/_index.scss @@ -0,0 +1 @@ +@forward 'normalize'; diff --git a/scss/plugin/_normalize.scss b/scss/plugin/_normalize.scss new file mode 100755 index 0000000..c221dc0 --- /dev/null +++ b/scss/plugin/_normalize.scss @@ -0,0 +1,351 @@ +@mixin generate-normalize { + /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + + /* Document + ========================================================================== */ + + /** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + + html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ + } + + /* Sections + ========================================================================== */ + + /** + * Remove the margin in all browsers. + */ + + body { + margin: 0; + } + + /** + * Render the `main` element consistently in IE. + */ + + main { + display: block; + } + + /** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + + h1 { + font-size: 2em; + margin: 0.67em 0; + } + + /* Grouping content + ========================================================================== */ + + /** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + + hr { + box-sizing: content-box; /* 1 */ + block-size: 0; /* 1 */ + overflow: visible; /* 2 */ + } + + /** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + + pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ + } + + /* Text-level semantics + ========================================================================== */ + + /** + * Remove the gray background on active links in IE 10. + */ + + a { + background-color: transparent; + } + + /** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + + abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ + } + + /** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + + b, + strong { + font-weight: bolder; + } + + /** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + + code, + kbd, + samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ + } + + /** + * Add the correct font size in all browsers. + */ + + small { + font-size: 80%; + } + + /** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + + sub, + sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; + } + + sub { + bottom: -0.25em; + } + + sup { + top: -0.5em; + } + + /* Embedded content + ========================================================================== */ + + /** + * Remove the border on images inside links in IE 10. + */ + + img { + border-style: none; + } + + /* Forms + ========================================================================== */ + + /** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + + button, + input, + optgroup, + select, + textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ + } + + /** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + + button, + input { /* 1 */ + overflow: visible; + } + + /** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + + button, + select { /* 1 */ + text-transform: none; + } + + /** + * Correct the inability to style clickable types in iOS and Safari. + */ + + button, + [type="button"], + [type="reset"], + [type="submit"] { + -webkit-appearance: button; + } + + /** + * Remove the inner border and padding in Firefox. + */ + + button::-moz-focus-inner, + [type="button"]::-moz-focus-inner, + [type="reset"]::-moz-focus-inner, + [type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; + } + + /** + * Restore the focus styles unset by the previous rule. + */ + + button:-moz-focusring, + [type="button"]:-moz-focusring, + [type="reset"]:-moz-focusring, + [type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; + } + + /** + * Correct the padding in Firefox. + */ + + fieldset { + padding: 0.35em 0.75em 0.625em; + } + + /** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + + legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-inline-size: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ + } + + /** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + + progress { + vertical-align: baseline; + } + + /** + * Remove the default vertical scrollbar in IE 10+. + */ + + textarea { + overflow: auto; + } + + /** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + + [type="checkbox"], + [type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ + } + + /** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + + [type="number"]::-webkit-inner-spin-button, + [type="number"]::-webkit-outer-spin-button { + block-size: auto; + } + + /** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + + [type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ + } + + /** + * Remove the inner padding in Chrome and Safari on macOS. + */ + + [type="search"]::-webkit-search-decoration { + -webkit-appearance: none; + } + + /** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + + ::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ + } + + /* Interactive + ========================================================================== */ + + /* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + + details { + display: block; + } + + /* + * Add the correct display in all browsers. + */ + + summary { + display: list-item; + } + + /* Misc + ========================================================================== */ + + /** + * Add the correct display in IE 10+. + */ + + template { + display: none; + } + + /** + * Add the correct display in IE 10. + */ + + [hidden] { + display: none; + } +} diff --git a/scss/print/_index.scss b/scss/print/_index.scss new file mode 100755 index 0000000..3f92665 --- /dev/null +++ b/scss/print/_index.scss @@ -0,0 +1,22 @@ +@use 'sass:map'; +@use '../config' as *; +@use '../function' as *; +@use '../mixin' as *; + +@mixin generate-print { + @if setting('print') == true { + @media print { + @page { + margin: config('page-margin', $print); + } + + #{config('hidden-elements', $print, false)} { + display: none !important; + } + + a[href^='http']::after { + content: ' (' attr(href) ')'; + } + } + } +} diff --git a/style/base/_all.sass b/style/base/_all.sass deleted file mode 100755 index ea40966..0000000 --- a/style/base/_all.sass +++ /dev/null @@ -1,4 +0,0 @@ -@charset "utf-8" - -@import "minireset" -@import "generic" diff --git a/style/base/generic.sass b/style/base/generic.sass deleted file mode 100644 index b4903e0..0000000 --- a/style/base/generic.sass +++ /dev/null @@ -1,186 +0,0 @@ -@import "../utilities/mixins" - -$body-background-color: $scheme-main !default -$body-size: 16px !default -$body-min-width: 300px !default -$body-rendering: optimizeLegibility !default -$body-family: var(--family-primary) !default -$body-overflow-x: hidden !default -$body-overflow-y: scroll !default - -$body-color: $text !default -$body-font-size: 1em !default -$body-weight: $weight-normal !default -$body-line-height: 1.5 !default - -$code-family: var(--family-code) !default -$code-padding: 0.25em 0.5em 0.25em !default -$code-weight: normal !default -$code-size: 0.95em !default - -$small-font-size: 0.875em !default - -$hr-background-color: var(--color-background) !default -$hr-height: 2px !default -$hr-margin: 1.5rem 0 !default - -$strong-color: $text-strong !default -$strong-weight: $weight-bold !default - -$pre-font-size: 0.875em !default -$pre-padding: 1.25rem 1.5rem !default -$pre-code-font-size: 1em !default - -html - background-color: $body-background-color - font-size: $body-size - -moz-osx-font-smoothing: grayscale - -webkit-font-smoothing: antialiased - min-width: $body-min-width - overflow-x: $body-overflow-x - overflow-y: $body-overflow-y - text-rendering: $body-rendering - text-size-adjust: 100% - -article, -aside, -figure, -footer, -header, -hgroup, -section - display: block - &.is-sticky - position: -webkit-sticky - position: sticky - top: 0 - z-index: 2 - -body, -button, -input, -optgroup, -select, -textarea - font-family: $body-family - -code, -pre - -moz-osx-font-smoothing: auto - -webkit-font-smoothing: auto - font-family: $code-family - -body - color: $body-color - font-size: $body-font-size - font-weight: $body-weight - line-height: $body-line-height - height: 100vh -.has-sticky-footer - display: flex - min-height: 100vh - flex-direction: column - > main - flex: 1 - -// Inline - -a - color: var(--link) - cursor: pointer - text-decoration: none - strong - color: currentColor - &:hover - color: var(--link-hover) - &:focus - color: var(--link-focus) - &:active - color: var(--link-active) - &:visited - color: var(--link-visited) - -hr - background-color: var(--hr-background-color) - border: none - display: block - height: var(--hr-height) - margin: var(--hr-margin) - -img - height: auto - max-width: 100% - -input[type="checkbox"], -input[type="radio"] - vertical-align: baseline - -small - font-size: var(--small-font-size) - -span - font-style: inherit - font-weight: inherit - -strong - color: var(--strong-color) - font-weight: var(--strong-weight) - -// Block - -fieldset - border: none - -code - background-color: var(--code-background) - color: var(--code) - font-size: var(--code-size) - font-weight: var(--code-weight) - padding: var(--code-padding) - border-radius: var(--radius) - -pre - +overflow-touch - background-color: var(--pre-background) - color: var(--pre) - font-size: var(--pre-font-size) - overflow-x: auto - padding: var(--pre-padding) - white-space: pre - word-wrap: normal - border-radius: var(--radius) - code - background-color: transparent - color: var(--code) - font-weight: var(--code-weight) - font-size: var(--pre-code-font-size) - padding: 0 - -table - td, - th - vertical-align: top - &:not([align]) - text-align: inherit - th - color: var(--text-strong) - -dl - & > dt - font-style: oblique - letter-spacing: 0.12em - & > dd - margin-left: 2em - -mark - background-color: var(--primary-highlight) - -details - & > summary - cursor: pointer - font-weight: var(--weight-medium) - &::marker - color: var(--primary-dark) - -ul, ol - list-style-position: inside diff --git a/style/base/minireset.sass b/style/base/minireset.sass deleted file mode 100755 index f427dab..0000000 --- a/style/base/minireset.sass +++ /dev/null @@ -1,78 +0,0 @@ -// Blocks -html, -body, -p, -ol, -ul, -li, -dl, -dt, -dd, -blockquote, -figure, -fieldset, -legend, -textarea, -pre, -iframe, -hr, -h1, -h2, -h3, -h4, -h5, -h6 - margin: 0 - padding: 0 - -// Headings -h1, -h2, -h3, -h4, -h5, -h6 - font-size: 100% - font-weight: normal - -// List -ul - list-style: none - -// Form -button, -input, -select, -textarea - margin: 0 - -// Box sizing -html - box-sizing: border-box - -* - &, - &::before, - &::after - box-sizing: inherit - -// Media -img, -video - height: auto - max-width: 100% - -// Iframe -iframe - border: 0 - -// Table -table - border-collapse: collapse - border-spacing: 0 - -td, -th - padding: 0 - &:not([align]) - text-align: inherit diff --git a/style/coco.sass b/style/coco.sass deleted file mode 100644 index d3a5644..0000000 --- a/style/coco.sass +++ /dev/null @@ -1,18 +0,0 @@ -$rtl: false -$autoselect-theme: false -.coco.version::after - content: "#{$v}" -@debug "COCO v#{$v}" -@debug "RTL version: #{$rtl}" - -@charset "utf-8" -@import "utilities/_all" -@import "base/_all" -@import "elements/_all" -@import "components/_all" -@import "form/_all" -@import "grid/_all" -@import "helpers/_all" -@import "layout/_all" -@import "filters/_all" -@import "effects/_all" diff --git a/style/components/_all.sass b/style/components/_all.sass deleted file mode 100755 index 7961fe4..0000000 --- a/style/components/_all.sass +++ /dev/null @@ -1,14 +0,0 @@ -@charset "utf-8" - -@import "breadcrumb" -@import "card" -@import "dropdown" -@import "level" -@import "media" -@import "menu" -@import "message" -@import "modal" -@import "navbar" -@import "pagination" -@import "panel" -@import "tabs" diff --git a/style/components/breadcrumb.sass b/style/components/breadcrumb.sass deleted file mode 100755 index 6a4cf0c..0000000 --- a/style/components/breadcrumb.sass +++ /dev/null @@ -1,77 +0,0 @@ -@import "../utilities/mixins" - -$breadcrumb-item-color: $link !default -$breadcrumb-item-hover-color: $link-hover !default -$breadcrumb-item-active-color: $text-strong !default - -$breadcrumb-item-padding-vertical: 0 !default -$breadcrumb-item-padding-horizontal: 0.75em !default - -$breadcrumb-item-separator-color: $border-hover !default - -.breadcrumb - @extend %block - @extend %unselectable - font-size: $size-normal - white-space: nowrap - a - align-items: center - color: $breadcrumb-item-color - display: flex - justify-content: center - padding: $breadcrumb-item-padding-vertical $breadcrumb-item-padding-horizontal - &:hover - color: $breadcrumb-item-hover-color - li - align-items: center - display: flex - &:first-child a - +ltr-property("padding", 0, false) - &.is-active - a - color: $breadcrumb-item-active-color - cursor: default - pointer-events: none - & + li::before - color: $breadcrumb-item-separator-color - content: "\0002f" - ul, - ol - align-items: flex-start - display: flex - flex-wrap: wrap - justify-content: flex-start - .icon - &:first-child - +ltr-property("margin", 0.5em) - &:last-child - +ltr-property("margin", 0.5em, false) - // Alignment - &.is-centered - ol, - ul - justify-content: center - &.is-right - ol, - ul - justify-content: flex-end - // Sizes - &.is-small - font-size: $size-small - &.is-medium - font-size: $size-medium - &.is-large - font-size: $size-large - // Styles - &.has-arrow-separator - li + li::before - content: "\02192" - &.has-bullet-separator - li + li::before - content: "\02022" - &.has-dot-separator - li + li::before - content: "\000b7" - &.has-succeeds-separator - li + li::before - content: "\0227B" diff --git a/style/components/card.sass b/style/components/card.sass deleted file mode 100755 index ab95324..0000000 --- a/style/components/card.sass +++ /dev/null @@ -1,103 +0,0 @@ -@import "../utilities/mixins" - -$card-color: $text !default -$card-background-color: $scheme-main !default -$card-shadow: $shadow !default -$card-radius: 0.25rem !default - -$card-header-background-color: transparent !default -$card-header-color: $text-strong !default -$card-header-padding: 0.75rem 1rem !default -$card-header-shadow: 0 0.125em 0.25em rgba($scheme-invert, 0.1) !default -$card-header-weight: $weight-bold !default - -$card-content-background-color: transparent !default -$card-content-padding: 1.5rem !default - -$card-footer-background-color: transparent !default -$card-footer-border-top: 1px solid $border-light !default -$card-footer-padding: 0.75rem !default - -$card-media-margin: $block-spacing !default - -.card - background-color: $card-background-color - border-radius: $card-radius - box-shadow: $card-shadow - color: $card-color - max-width: 100% - position: relative - -%card-item - &:first-child - border-top-left-radius: $card-radius - border-top-right-radius: $card-radius - &:last-child - border-bottom-left-radius: $card-radius - border-bottom-right-radius: $card-radius - -.card-header - @extend %card-item - background-color: $card-header-background-color - align-items: stretch - box-shadow: $card-header-shadow - display: flex - -.card-header-title - align-items: center - color: $card-header-color - display: flex - flex-grow: 1 - font-weight: $card-header-weight - padding: $card-header-padding - &.is-centered - justify-content: center - -.card-header-icon - +reset - align-items: center - cursor: pointer - display: flex - justify-content: center - padding: $card-header-padding - -.card-image - display: block - position: relative - &:first-child - img - border-top-left-radius: $card-radius - border-top-right-radius: $card-radius - &:last-child - img - border-bottom-left-radius: $card-radius - border-bottom-right-radius: $card-radius - -.card-content - @extend %card-item - background-color: $card-content-background-color - padding: $card-content-padding - -.card-footer - @extend %card-item - background-color: $card-footer-background-color - border-top: $card-footer-border-top - align-items: stretch - display: flex - -.card-footer-item - align-items: center - display: flex - flex-basis: 0 - flex-grow: 1 - flex-shrink: 0 - justify-content: center - padding: $card-footer-padding - &:not(:last-child) - +ltr-property("border", $card-footer-border-top) - -// Combinations - -.card - .media:not(:last-child) - margin-bottom: $card-media-margin diff --git a/style/components/dropdown.sass b/style/components/dropdown.sass deleted file mode 100755 index a792405..0000000 --- a/style/components/dropdown.sass +++ /dev/null @@ -1,83 +0,0 @@ -@import "../utilities/mixins" - -$dropdown-menu-min-width: 12rem !default - -$dropdown-content-background-color: $scheme-main !default -$dropdown-content-arrow: $link !default -$dropdown-content-offset: 4px !default -$dropdown-content-padding-bottom: 0.5rem !default -$dropdown-content-padding-top: 0.5rem !default -$dropdown-content-radius: $radius !default -$dropdown-content-shadow: $shadow !default -$dropdown-content-z: 20 !default - -$dropdown-item-color: $text !default -$dropdown-item-hover-color: $scheme-invert !default -$dropdown-item-hover-background-color: var(--color-background) !default -$dropdown-item-active-color: $link-invert !default -$dropdown-item-active-background-color: $link !default - -$dropdown-divider-background-color: $border-light !default - -.dropdown - display: inline-flex - position: relative - vertical-align: top - &.is-active, - &.is-hoverable:hover - .dropdown-menu - display: block - &.is-right - .dropdown-menu - left: auto - right: 0 - &.is-up - .dropdown-menu - bottom: 100% - padding-bottom: $dropdown-content-offset - padding-top: initial - top: auto - -.dropdown-menu - display: none - +ltr-position(0, false) - min-width: $dropdown-menu-min-width - padding-top: $dropdown-content-offset - position: absolute - top: 100% - z-index: $dropdown-content-z - -.dropdown-content - background-color: $dropdown-content-background-color - border-radius: $dropdown-content-radius - box-shadow: $dropdown-content-shadow - padding-bottom: $dropdown-content-padding-bottom - padding-top: $dropdown-content-padding-top - -.dropdown-item - color: $dropdown-item-color - display: block - font-size: 0.875rem - line-height: 1.5 - padding: 0.375rem 1rem - position: relative - -a.dropdown-item, -button.dropdown-item - +ltr-property("padding", 3rem) - text-align: inherit - white-space: nowrap - width: 100% - &:hover - background-color: $dropdown-item-hover-background-color - color: $dropdown-item-hover-color - &.is-active - background-color: $dropdown-item-active-background-color - color: $dropdown-item-active-color - -.dropdown-divider - background-color: $dropdown-divider-background-color - border: none - display: block - height: 1px - margin: 0.5rem 0 diff --git a/style/components/level.sass b/style/components/level.sass deleted file mode 100755 index 3a497e0..0000000 --- a/style/components/level.sass +++ /dev/null @@ -1,79 +0,0 @@ -@import "../utilities/mixins" - -$level-item-spacing: ($block-spacing * 0.5) !default - -.level - @extend %block - align-items: center - justify-content: space-between - code - border-radius: $radius - img - display: inline-block - vertical-align: top - // Modifiers - &.is-mobile - display: flex - .level-left, - .level-right - display: flex - .level-left + .level-right - margin-top: 0 - .level-item - &:not(:last-child) - margin-bottom: 0 - +ltr-property("margin", $level-item-spacing) - &:not(.is-narrow) - flex-grow: 1 - // Responsiveness - +tablet - display: flex - & > .level-item - &:not(.is-narrow) - flex-grow: 1 - -.level-item - align-items: center - display: flex - flex-basis: auto - flex-grow: 0 - flex-shrink: 0 - justify-content: center - .title, - .subtitle - margin-bottom: 0 - // Responsiveness - +mobile - &:not(:last-child) - margin-bottom: $level-item-spacing - -.level-left, -.level-right - flex-basis: auto - flex-grow: 0 - flex-shrink: 0 - .level-item - // Modifiers - &.is-flexible - flex-grow: 1 - // Responsiveness - +tablet - &:not(:last-child) - +ltr-property("margin", $level-item-spacing) - -.level-left - align-items: center - justify-content: flex-start - // Responsiveness - +mobile - & + .level-right - margin-top: 1.5rem - +tablet - display: flex - -.level-right - align-items: center - justify-content: flex-end - // Responsiveness - +tablet - display: flex diff --git a/style/components/media.sass b/style/components/media.sass deleted file mode 100755 index 0bea2c3..0000000 --- a/style/components/media.sass +++ /dev/null @@ -1,59 +0,0 @@ -@import "../utilities/mixins" - -$media-border-color: cocoRgba($border, 0.5) !default -$media-border-size: 1px !default -$media-spacing: 1rem !default -$media-spacing-large: 1.5rem !default -$media-content-spacing: 0.75rem !default -$media-level-1-spacing: 0.75rem !default -$media-level-1-content-spacing: 0.5rem !default -$media-level-2-spacing: 0.5rem !default - -.media - align-items: flex-start - display: flex - text-align: inherit - .content:not(:last-child) - margin-bottom: $media-content-spacing - .media - border-top: $media-border-size solid $media-border-color - display: flex - padding-top: $media-level-1-spacing - .content:not(:last-child), - .control:not(:last-child) - margin-bottom: $media-level-1-content-spacing - .media - padding-top: $media-level-2-spacing - & + .media - margin-top: $media-level-2-spacing - & + .media - border-top: $media-border-size solid $media-border-color - margin-top: $media-spacing - padding-top: $media-spacing - // Sizes - &.is-large - & + .media - margin-top: $media-spacing-large - padding-top: $media-spacing-large - -.media-left, -.media-right - flex-basis: auto - flex-grow: 0 - flex-shrink: 0 - -.media-content - flex-basis: auto - flex-grow: 1 - flex-shrink: 1 - text-align: inherit - -.media-left - +ltr-property("margin", $media-spacing) - -.media-right - +ltr-property("margin", $media-spacing, false) - -+mobile - .media-content - overflow-x: auto diff --git a/style/components/menu.sass b/style/components/menu.sass deleted file mode 100755 index d6125be..0000000 --- a/style/components/menu.sass +++ /dev/null @@ -1,59 +0,0 @@ -@import "../utilities/mixins" - -$menu-item-color: $text !default -$menu-item-radius: $radius-small !default -$menu-item-hover-color: $text-strong !default -$menu-item-hover-background-color: var(--color-background) !default -$menu-item-active-color: $link-invert !default -$menu-item-active-background-color: $link !default - -$menu-list-border-left: 1px solid $border !default -$menu-list-line-height: 1.25 !default -$menu-list-link-padding: 0.5em 0.75em !default -$menu-nested-list-margin: 0.75em !default -$menu-nested-list-padding-left: 0.75em !default - -$menu-label-color: $text-light !default -$menu-label-font-size: 0.75em !default -$menu-label-letter-spacing: 0.1em !default -$menu-label-spacing: 1em !default - -.menu - font-size: $size-normal - // Sizes - &.is-small - font-size: $size-small - &.is-medium - font-size: $size-medium - &.is-large - font-size: $size-large - -.menu-list - line-height: $menu-list-line-height - a - border-radius: $menu-item-radius - color: $menu-item-color - display: block - padding: $menu-list-link-padding - &:hover - background-color: $menu-item-hover-background-color - color: $menu-item-hover-color - // Modifiers - &.is-active - background-color: $menu-item-active-background-color - color: $menu-item-active-color - li - ul - +ltr-property("border", $menu-list-border-left, false) - margin: $menu-nested-list-margin - +ltr-property("padding", $menu-nested-list-padding-left, false) - -.menu-label - color: $menu-label-color - font-size: $menu-label-font-size - letter-spacing: $menu-label-letter-spacing - text-transform: uppercase - &:not(:first-child) - margin-top: $menu-label-spacing - &:not(:last-child) - margin-bottom: $menu-label-spacing diff --git a/style/components/message.sass b/style/components/message.sass deleted file mode 100755 index 2d5427c..0000000 --- a/style/components/message.sass +++ /dev/null @@ -1,103 +0,0 @@ -@use 'sass:color' - -@import "../utilities/mixins" - -$message-background-color: var(--color-background) !default -$message-radius: $radius !default - -$message-header-background-color: $text !default -$message-header-color: $text-invert !default -$message-header-weight: $weight-bold !default -$message-header-padding: 0.75em 1em !default -$message-header-radius: $radius !default - -$message-body-border-color: $border !default -$message-body-border-width: 0 0 0 4px !default -$message-body-color: $text !default -$message-body-padding: 1.25em 1.5em !default -$message-body-radius: $radius !default - -$message-body-pre-background-color: $scheme-main !default -$message-body-pre-code-background-color: transparent !default - -$message-header-body-border-width: 0 !default -$message-colors: $colors !default - -.message - @extend %block - background-color: $message-background-color - border-radius: $message-radius - font-size: $size-normal - strong - color: currentColor - a:not(.button):not(.tag):not(.dropdown-item) - color: currentColor - text-decoration: underline - // Sizes - &.is-small - font-size: $size-small - &.is-medium - font-size: $size-medium - &.is-large - font-size: $size-large - // Colors - @each $name, $components in $message-colors - $color: nth($components, 1) - $color-invert: nth($components, 2) - $color-light: null - $color-dark: null - - @if length($components) >= 3 - $color-light: nth($components, 3) - @if length($components) >= 4 - $color-dark: nth($components, 4) - @else - $color-luminance: colorLuminance($color) - $darken-percentage: $color-luminance * 70% - $desaturate-percentage: $color-luminance * 30% - $color-dark: desaturate(darken($color, $darken-percentage), $desaturate-percentage) - @else - $color-lightning: max((100% - color.channel($color, 'lightness')) - 2%, 0%) - $color-light: color.adjust($color, $lightness: $color-lightning) - - &.is-#{$name} - background-color: $color-light - .message-header - background-color: $color - color: $color-invert - .message-body - border-color: $color - color: $color-dark - -.message-header - align-items: center - background-color: $message-header-background-color - border-radius: $message-header-radius $message-header-radius 0 0 - color: $message-header-color - display: flex - font-weight: $message-header-weight - justify-content: space-between - line-height: 1.25 - padding: $message-header-padding - position: relative - .delete - flex-grow: 0 - flex-shrink: 0 - +ltr-property("margin", 0.75em, false) - & + .message-body - border-width: $message-header-body-border-width - border-top-left-radius: 0 - border-top-right-radius: 0 - -.message-body - border-color: $message-body-border-color - border-radius: $message-body-radius - border-style: solid - border-width: $message-body-border-width - color: $message-body-color - padding: $message-body-padding - code, - pre - background-color: $message-body-pre-background-color - pre code - background-color: $message-body-pre-code-background-color diff --git a/style/components/modal.sass b/style/components/modal.sass deleted file mode 100755 index 502186a..0000000 --- a/style/components/modal.sass +++ /dev/null @@ -1,117 +0,0 @@ -@import "../utilities/mixins" - -$modal-z: 40 !default - -$modal-background-background-color: cocoRgba($scheme-invert, 0.86) !default - -$modal-content-width: 640px !default -$modal-content-margin-mobile: 20px !default -$modal-content-spacing-mobile: 160px !default -$modal-content-spacing-tablet: 40px !default - -$modal-close-dimensions: 40px !default -$modal-close-right: 20px !default -$modal-close-top: 20px !default - -$modal-card-spacing: 40px !default - -$modal-card-head-background-color: var(--color-background) !default -$modal-card-head-border-bottom: 1px solid $border !default -$modal-card-head-padding: 20px !default -$modal-card-head-radius: $radius-large !default - -$modal-card-title-color: $text-strong !default -$modal-card-title-line-height: 1 !default -$modal-card-title-size: var(--size-4) !default - -$modal-card-foot-radius: $radius-large !default -$modal-card-foot-border-top: 1px solid $border !default - -$modal-card-body-background-color: $scheme-main !default -$modal-card-body-padding: 20px !default - -$modal-breakpoint: $tablet !default - -.modal - @extend %overlay - align-items: center - display: none - flex-direction: column - justify-content: center - overflow: hidden - position: fixed - z-index: $modal-z - // Modifiers - &.is-active - display: flex - -.modal-background - @extend %overlay - background-color: $modal-background-background-color - -.modal-content, -.modal-card - margin: 0 $modal-content-margin-mobile - max-height: calc(100vh - #{$modal-content-spacing-mobile}) - overflow: auto - position: relative - width: 100% - // Responsiveness - +from($modal-breakpoint) - margin: 0 auto - max-height: calc(100vh - #{$modal-content-spacing-tablet}) - width: $modal-content-width - -.modal-close - @extend %delete - background: none - height: $modal-close-dimensions - position: fixed - +ltr-position($modal-close-right) - top: $modal-close-top - width: $modal-close-dimensions - -.modal-card - display: flex - flex-direction: column - max-height: calc(100vh - #{$modal-card-spacing}) - overflow: hidden - -ms-overflow-y: visible - -.modal-card-head, -.modal-card-foot - align-items: center - background-color: $modal-card-head-background-color - display: flex - flex-shrink: 0 - justify-content: flex-start - padding: $modal-card-head-padding - position: relative - -.modal-card-head - border-bottom: $modal-card-head-border-bottom - border-top-left-radius: $modal-card-head-radius - border-top-right-radius: $modal-card-head-radius - -.modal-card-title - color: $modal-card-title-color - flex-grow: 1 - flex-shrink: 0 - font-size: $modal-card-title-size - line-height: $modal-card-title-line-height - -.modal-card-foot - border-bottom-left-radius: $modal-card-foot-radius - border-bottom-right-radius: $modal-card-foot-radius - border-top: $modal-card-foot-border-top - .button - &:not(:last-child) - +ltr-property("margin", 0.5em) - -.modal-card-body - +overflow-touch - background-color: $modal-card-body-background-color - flex-grow: 1 - flex-shrink: 1 - overflow: auto - padding: $modal-card-body-padding diff --git a/style/components/navbar.sass b/style/components/navbar.sass deleted file mode 100755 index 54cdc05..0000000 --- a/style/components/navbar.sass +++ /dev/null @@ -1,488 +0,0 @@ -@import "../utilities/mixins" - -$navbar-background-color: $scheme-main !default -$navbar-box-shadow-size: 0 2px 0 0 !default -$navbar-box-shadow-color: var(--color-background) !default -$navbar-height: 3.25rem !default -$navbar-padding-vertical: 1rem !default -$navbar-padding-horizontal: 2rem !default -$navbar-z: 30 !default -$navbar-fixed-z: 30 !default - -$navbar-item-color: $text !default -$navbar-item-hover-color: $link !default -$navbar-item-hover-background-color: $scheme-main-bis !default -$navbar-item-active-color: $scheme-invert !default -$navbar-item-active-background-color: transparent !default -$navbar-item-img-max-height: 1.75rem !default - -$navbar-burger-color: $navbar-item-color !default - -$navbar-tab-hover-background-color: transparent !default -$navbar-tab-hover-border-bottom-color: $link !default -$navbar-tab-active-color: $link !default -$navbar-tab-active-background-color: transparent !default -$navbar-tab-active-border-bottom-color: $link !default -$navbar-tab-active-border-bottom-style: solid !default -$navbar-tab-active-border-bottom-width: 3px !default - -$navbar-dropdown-background-color: $scheme-main !default -$navbar-dropdown-border-top: 2px solid $border !default -$navbar-dropdown-offset: -4px !default -$navbar-dropdown-arrow: $link !default -$navbar-dropdown-radius: $radius-large !default -$navbar-dropdown-z: 20 !default - -$navbar-dropdown-boxed-radius: $radius-large !default -$navbar-dropdown-boxed-shadow: 0 8px 8px cocoRgba($scheme-invert, 0.1), 0 0 0 1px cocoRgba($scheme-invert, 0.1) !default - -$navbar-dropdown-item-hover-color: $scheme-invert !default -$navbar-dropdown-item-hover-background-color: var(--color-background) !default -$navbar-dropdown-item-active-color: $link !default -$navbar-dropdown-item-active-background-color: var(--color-background) !default - -$navbar-divider-background-color: var(--color-background) !default -$navbar-divider-height: 2px !default - -$navbar-bottom-box-shadow-size: 0 -2px 0 0 !default - -$navbar-breakpoint: $desktop !default - -$navbar-colors: $colors !default - -=navbar-fixed - left: 0 - position: fixed - right: 0 - z-index: $navbar-fixed-z - -/// Navbar - A responsive horizontal navbar that can support images, links, buttons, and dropdowns. -/// @name .navbar -/// @group components -/// @since 1.1.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/components-navbar -.navbar - background-color: $navbar-background-color - min-height: $navbar-height - position: relative - z-index: $navbar-z - @each $name, $pair in $navbar-colors - $color: nth($pair, 1) - $color-invert: nth($pair, 2) - &.is-#{$name} - background-color: $color - color: $color-invert - .navbar-brand - & > .navbar-item, - .navbar-link - color: $color-invert - & > a.navbar-item, - .navbar-link - &:focus, - &:hover, - &.is-active - background-color: cocoDarken($color, 5%) - color: $color-invert - .navbar-link - &::after - border-color: $color-invert - .navbar-burger - color: $color-invert - +from($navbar-breakpoint) - .navbar-start, - .navbar-end - & > .navbar-item, - .navbar-link - color: $color-invert - & > a.navbar-item, - .navbar-link - &:focus, - &:hover, - &.is-active - background-color: cocoDarken($color, 5%) - color: $color-invert - .navbar-link - &::after - border-color: $color-invert - .navbar-item.has-dropdown:focus .navbar-link, - .navbar-item.has-dropdown:hover .navbar-link, - .navbar-item.has-dropdown.is-active .navbar-link - background-color: cocoDarken($color, 5%) - color: $color-invert - .navbar-dropdown - a.navbar-item - &.is-active - background-color: $color - color: $color-invert - & > .container - align-items: stretch - display: flex - min-height: $navbar-height - width: 100% - &.has-shadow - box-shadow: $navbar-box-shadow-size $navbar-box-shadow-color - &.is-fixed-bottom, - &.is-fixed-top - +navbar-fixed - &.is-fixed-bottom - bottom: 0 - &.has-shadow - box-shadow: $navbar-bottom-box-shadow-size $navbar-box-shadow-color - &.is-fixed-top - top: 0 - &.is-sticky - position: -webkit-sticky - position: sticky - top: 0 - z-index: 2 - -html, -body - &.has-navbar-fixed-top - padding-top: $navbar-height - &.has-navbar-fixed-bottom - padding-bottom: $navbar-height - -.navbar-brand, -.navbar-tabs - align-items: stretch - display: flex - flex-shrink: 0 - min-height: $navbar-height - -.navbar-brand - a.navbar-item - &:focus, - &:hover - background-color: transparent - -.navbar-tabs - +overflow-touch - max-width: 100vw - overflow-x: auto - overflow-y: hidden - -.navbar-burger - @extend %reset - color: $navbar-burger-color - +hamburger($navbar-height) - +ltr-property("margin", auto, false) - -.navbar-menu - display: none - -/// Navbar Toggle - A responsive horizontal navbar prepared to work out-of-box. -/// @name input#coco-navbar-toggle -/// @group components -/// @since 2.1.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/components-coco-navbar-toggle -input#coco-navbar-toggle[type=checkbox] - display: none - &:checked ~ .navbar-menu - display: block - & + div > label - & > span:first-of-type - transform: rotate(0) - & > span:nth-of-type(2) - opacity: 1 - & > span:last-of-type - transform: rotate(0) - &:checked + div > label - & > span:first-of-type - transform: rotate(45deg) - transform-origin: 10% 10% - & > span:nth-of-type(2) - opacity: 0 - & > span:last-of-type - transform: rotate(-45deg) - transform-origin: 10% 90% - -.navbar-item, -.navbar-link - color: $navbar-item-color - display: block - line-height: 1.5 - padding: 0.5rem 0.75rem - position: relative - .icon - &:only-child - margin-left: -0.25rem - margin-right: -0.25rem - -a.navbar-item, -.navbar-link - cursor: pointer - &:focus, - &:focus-within, - &:hover, - &.is-active - background-color: $navbar-item-hover-background-color - color: $navbar-item-hover-color - -.navbar-item - flex-grow: 0 - flex-shrink: 0 - img - max-height: $navbar-item-img-max-height - &.has-dropdown - padding: 0 - &.is-expanded - flex-grow: 1 - flex-shrink: 1 - &.is-tab - border-bottom: 1px solid transparent - min-height: $navbar-height - padding-bottom: calc(0.5rem - 1px) - &:focus, - &:hover - background-color: $navbar-tab-hover-background-color - border-bottom-color: $navbar-tab-hover-border-bottom-color - &.is-active - background-color: $navbar-tab-active-background-color - border-bottom-color: $navbar-tab-active-border-bottom-color - border-bottom-style: $navbar-tab-active-border-bottom-style - border-bottom-width: $navbar-tab-active-border-bottom-width - color: $navbar-tab-active-color - padding-bottom: calc(0.5rem - #{$navbar-tab-active-border-bottom-width}) - -.navbar-content - flex-grow: 1 - flex-shrink: 1 - -.navbar-link:not(.is-arrowless) - +ltr-property("padding", 2.5em) - &::after - @extend %arrow - border-color: $navbar-dropdown-arrow - margin-top: -0.375em - +ltr-position(1.125em) - -.navbar-dropdown - font-size: 0.875rem - padding-bottom: 0.5rem - padding-top: 0.5rem - .navbar-item - padding-left: 1.5rem - padding-right: 1.5rem - -.navbar-divider - background-color: $navbar-divider-background-color - border: none - display: none - height: $navbar-divider-height - margin: 0.5rem 0 - -+until($navbar-breakpoint) - .navbar > .container - display: block - .navbar-brand, - .navbar-tabs - .navbar-item - align-items: center - display: flex - .navbar-link - &::after - display: none - .navbar-menu - background-color: $navbar-background-color - box-shadow: 0 8px 16px cocoRgba($scheme-invert, 0.1) - padding: 0.5rem 0 - &.is-active - display: block - // Fixed navbar - .navbar - &.is-fixed-bottom-touch, - &.is-fixed-top-touch - +navbar-fixed - &.is-fixed-bottom-touch - bottom: 0 - &.has-shadow - box-shadow: 0 -2px 3px cocoRgba($scheme-invert, 0.1) - &.is-fixed-top-touch - top: 0 - &.is-fixed-top, - &.is-fixed-top-touch - .navbar-menu - +overflow-touch - max-height: calc(100vh - #{$navbar-height}) - overflow: auto - &.is-sticky - position: -webkit-sticky - position: sticky - html, - body - &.has-navbar-fixed-top-touch - padding-top: $navbar-height - &.has-navbar-fixed-bottom-touch - padding-bottom: $navbar-height - -+from($navbar-breakpoint) - .navbar, - .navbar-menu, - .navbar-start, - .navbar-end - align-items: stretch - display: flex - .navbar - min-height: $navbar-height - &.is-spaced - padding: $navbar-padding-vertical $navbar-padding-horizontal - .navbar-start, - .navbar-end - align-items: center - a.navbar-item, - .navbar-link - border-radius: $radius - &.is-transparent - a.navbar-item, - .navbar-link - &:focus, - &:hover, - &.is-active - background-color: transparent !important - .navbar-item.has-dropdown - &.is-active, - &.is-hoverable:focus, - &.is-hoverable:focus-within, - &.is-hoverable:hover - .navbar-link - background-color: transparent !important - .navbar-dropdown - a.navbar-item - &:focus, - &:hover - background-color: $navbar-dropdown-item-hover-background-color - color: $navbar-dropdown-item-hover-color - &.is-active - background-color: $navbar-dropdown-item-active-background-color - color: $navbar-dropdown-item-active-color - .navbar-burger - display: none - .navbar-item, - .navbar-link - align-items: center - display: flex - .navbar-item - &.has-dropdown - align-items: stretch - &.has-dropdown-up - .navbar-link::after - transform: rotate(135deg) translate(0.25em, -0.25em) - .navbar-dropdown - border-bottom: $navbar-dropdown-border-top - border-radius: $navbar-dropdown-radius $navbar-dropdown-radius 0 0 - border-top: none - bottom: 100% - box-shadow: 0 -8px 8px cocoRgba($scheme-invert, 0.1) - top: auto - &.is-active, - &.is-hoverable:focus, - &.is-hoverable:focus-within, - &.is-hoverable:hover - .navbar-dropdown - display: block - .navbar.is-spaced &, - &.is-boxed - opacity: 1 - pointer-events: auto - transform: translateY(0) - .navbar-menu - flex-grow: 1 - flex-shrink: 0 - .navbar-start - justify-content: flex-start - +ltr-property("margin", auto) - .navbar-end - justify-content: flex-end - +ltr-property("margin", auto, false) - .navbar-dropdown - background-color: $navbar-dropdown-background-color - border-bottom-left-radius: $navbar-dropdown-radius - border-bottom-right-radius: $navbar-dropdown-radius - border-top: $navbar-dropdown-border-top - box-shadow: 0 8px 8px cocoRgba($navbar-dropdown-background-color, 0.1) - display: none - font-size: 0.875rem - +ltr-position(0, false) - min-width: 100% - position: absolute - top: 100% - z-index: $navbar-dropdown-z - .navbar-item - padding: 0.375rem 1rem - white-space: nowrap - a.navbar-item - +ltr-property("padding", 3rem) - &:focus, - &:hover - background-color: $navbar-dropdown-item-hover-background-color - color: $navbar-dropdown-item-hover-color - &.is-active - background-color: $navbar-dropdown-item-active-background-color - color: $navbar-dropdown-item-active-color - .navbar.is-spaced &, - &.is-boxed - border-radius: $navbar-dropdown-boxed-radius - border-top: none - box-shadow: $navbar-dropdown-boxed-shadow - display: block - opacity: 0 - pointer-events: none - top: calc(100% + (#{$navbar-dropdown-offset})) - transform: translateY(-5px) - transition-duration: $speed - transition-property: opacity, transform - &.is-right - left: auto - right: 0 - .navbar-divider - display: block - .navbar > .container, - .container > .navbar - .navbar-brand - +ltr-property("margin", -.75rem, false) - .navbar-menu - +ltr-property("margin", -.75rem) - // Fixed navbar - .navbar - &.is-fixed-bottom-desktop, - &.is-fixed-top-desktop - +navbar-fixed - &.is-fixed-bottom-desktop - bottom: 0 - &.has-shadow - box-shadow: 0 -2px 3px cocoRgba($scheme-invert, 0.1) - &.is-fixed-top-desktop - top: 0 - &.is-sticky - position: -webkit-sticky - position: sticky - html, - body - &.has-navbar-fixed-top-desktop - padding-top: $navbar-height - &.has-navbar-fixed-bottom-desktop - padding-bottom: $navbar-height - &.has-spaced-navbar-fixed-top - padding-top: $navbar-height + ($navbar-padding-vertical * 2) - &.has-spaced-navbar-fixed-bottom - padding-bottom: $navbar-height + ($navbar-padding-vertical * 2) - // Hover/Active states - a.navbar-item, - .navbar-link - &.is-active - color: $navbar-item-active-color - &.is-active:not(:focus):not(:hover) - background-color: $navbar-item-active-background-color - .navbar-item.has-dropdown - &:focus, - &:hover, - &.is-active - .navbar-link - background-color: $navbar-item-hover-background-color - -// Combination - -.hero - &.is-fullheight-with-navbar - min-height: calc(100vh - #{$navbar-height}) diff --git a/style/components/pagination.sass b/style/components/pagination.sass deleted file mode 100755 index 579e1b2..0000000 --- a/style/components/pagination.sass +++ /dev/null @@ -1,166 +0,0 @@ -@import "../utilities/mixins" - -$pagination-color: $text-strong !default -$pagination-border-color: $border !default -$pagination-margin: -0.25rem !default -$pagination-min-width: $control-height !default - -$pagination-item-font-size: 1em !default -$pagination-item-margin: 0.25rem !default -$pagination-item-padding-left: 0.5em !default -$pagination-item-padding-right: 0.5em !default - -$pagination-nav-padding-left: 0.75em !default -$pagination-nav-padding-right: 0.75em !default - -$pagination-hover-color: $link-hover !default -$pagination-hover-border-color: $link-hover-border !default - -$pagination-focus-color: $link-focus !default -$pagination-focus-border-color: $link-focus-border !default - -$pagination-active-color: $link-active !default -$pagination-active-border-color: $link-active-border !default - -$pagination-disabled-color: $text-light !default -$pagination-disabled-background-color: $border !default -$pagination-disabled-border-color: $border !default - -$pagination-current-color: $link-invert !default -$pagination-current-background-color: $link !default -$pagination-current-border-color: $link !default - -$pagination-ellipsis-color: $grey-light !default - -$pagination-shadow-inset: inset 0 1px 2px rgba($scheme-invert, 0.2) !default - -.pagination - @extend %block - font-size: $size-normal - margin: $pagination-margin - // Sizes - &.is-small - font-size: $size-small - &.is-medium - font-size: $size-medium - &.is-large - font-size: $size-large - &.is-rounded - .pagination-previous, - .pagination-next - padding-left: 1em - padding-right: 1em - border-radius: $radius-rounded - .pagination-link - border-radius: $radius-rounded - -.pagination, -.pagination-list - align-items: center - display: flex - justify-content: center - text-align: center - -.pagination-previous, -.pagination-next, -.pagination-link, -.pagination-ellipsis - @extend %control - @extend %unselectable - font-size: $pagination-item-font-size - justify-content: center - margin: $pagination-item-margin - padding-left: $pagination-item-padding-left - padding-right: $pagination-item-padding-right - text-align: center - -.pagination-previous, -.pagination-next, -.pagination-link - border-color: $pagination-border-color - color: $pagination-color - min-width: $pagination-min-width - &:hover - border-color: $pagination-hover-border-color - color: $pagination-color - &:focus - border-color: $pagination-focus-border-color - &:active - box-shadow: $pagination-shadow-inset - &[disabled], - &.is-disabled - background-color: $pagination-disabled-background-color - border-color: $pagination-disabled-border-color - box-shadow: none - color: $pagination-disabled-color - opacity: 0.5 - -.pagination-previous, -.pagination-next - padding-left: $pagination-nav-padding-left - padding-right: $pagination-nav-padding-right - white-space: nowrap - -.pagination-link - &.is-current - background-color: $pagination-current-background-color - border-color: $pagination-current-border-color - color: $pagination-current-color - -.pagination-ellipsis - color: $pagination-ellipsis-color - pointer-events: none - -.pagination-list - flex-wrap: wrap - li - list-style: none - -+mobile - .pagination - flex-wrap: wrap - .pagination-previous, - .pagination-next - flex-grow: 1 - flex-shrink: 1 - .pagination-list - li - flex-grow: 1 - flex-shrink: 1 - -+tablet - .pagination-list - flex-grow: 1 - flex-shrink: 1 - justify-content: flex-start - order: 1 - .pagination-previous, - .pagination-next, - .pagination-link, - .pagination-ellipsis - margin-bottom: 0 - margin-top: 0 - .pagination-previous - order: 2 - .pagination-next - order: 3 - .pagination - justify-content: space-between - margin-bottom: 0 - margin-top: 0 - &.is-centered - .pagination-previous - order: 1 - .pagination-list - justify-content: center - order: 2 - .pagination-next - order: 3 - &.is-right - .pagination-previous - order: 1 - .pagination-next - order: 2 - .pagination-list - justify-content: flex-end - order: 3 diff --git a/style/components/panel.sass b/style/components/panel.sass deleted file mode 100755 index 2a2e077..0000000 --- a/style/components/panel.sass +++ /dev/null @@ -1,121 +0,0 @@ -@import "../utilities/mixins" - -$panel-margin: $block-spacing !default -$panel-item-border: 1px solid $border-light !default -$panel-radius: $radius-large !default -$panel-shadow: $shadow !default - -$panel-heading-background-color: $border-light !default -$panel-heading-color: $text-strong !default -$panel-heading-line-height: 1.25 !default -$panel-heading-padding: 0.75em 1em !default -$panel-heading-radius: $radius !default -$panel-heading-size: 1.25em !default -$panel-heading-weight: $weight-bold !default - -$panel-tabs-font-size: 0.875em !default -$panel-tab-border-bottom: 1px solid $border !default -$panel-tab-active-border-bottom-color: $link-active-border !default -$panel-tab-active-color: $link-active !default - -$panel-list-item-color: $text !default -$panel-list-item-hover-color: $link !default - -$panel-block-color: $text-strong !default -$panel-block-hover-background-color: var(--color-background) !default -$panel-block-active-border-left-color: $link !default -$panel-block-active-color: $link-active !default -$panel-block-active-icon-color: $link !default - -$panel-icon-color: $text-light !default -$panel-colors: $colors !default - -.panel - border-radius: $panel-radius - box-shadow: $panel-shadow - font-size: $size-normal - &:not(:last-child) - margin-bottom: $panel-margin - // Colors - @each $name, $components in $panel-colors - $color: nth($components, 1) - $color-invert: nth($components, 2) - &.is-#{$name} - .panel-heading - background-color: $color - color: $color-invert - .panel-tabs a.is-active - border-bottom-color: $color - .panel-block.is-active .panel-icon - color: $color - -.panel-tabs, -.panel-block - &:not(:last-child) - border-bottom: $panel-item-border - -.panel-heading - background-color: $panel-heading-background-color - border-radius: $panel-radius $panel-radius 0 0 - color: $panel-heading-color - font-size: $panel-heading-size - font-weight: $panel-heading-weight - line-height: $panel-heading-line-height - padding: $panel-heading-padding - -.panel-tabs - align-items: flex-end - display: flex - font-size: $panel-tabs-font-size - justify-content: center - a - border-bottom: $panel-tab-border-bottom - margin-bottom: -1px - padding: 0.5em - // Modifiers - &.is-active - border-bottom-color: $panel-tab-active-border-bottom-color - color: $panel-tab-active-color - -.panel-list - a - color: $panel-list-item-color - &:hover - color: $panel-list-item-hover-color - -.panel-block - align-items: center - color: $panel-block-color - display: flex - justify-content: flex-start - padding: 0.5em 0.75em - input[type="checkbox"] - +ltr-property("margin", 0.75em) - & > .control - flex-grow: 1 - flex-shrink: 1 - width: 100% - &.is-wrapped - flex-wrap: wrap - &.is-active - border-left-color: $panel-block-active-border-left-color - color: $panel-block-active-color - .panel-icon - color: $panel-block-active-icon-color - &:last-child - border-bottom-left-radius: $panel-radius - border-bottom-right-radius: $panel-radius - -a.panel-block, -label.panel-block - cursor: pointer - &:hover - background-color: $panel-block-hover-background-color - -.panel-icon - +fa(14px, 1em) - color: $panel-icon-color - +ltr-property("margin", 0.75em) - em.oji - font-size: inherit - line-height: inherit diff --git a/style/components/tabs.sass b/style/components/tabs.sass deleted file mode 100755 index fa32e57..0000000 --- a/style/components/tabs.sass +++ /dev/null @@ -1,192 +0,0 @@ -@import "../utilities/mixins" - -$tabs-border-bottom-color: $border !default -$tabs-border-bottom-style: solid !default -$tabs-border-bottom-width: 1px !default -$tabs-link-color: $text !default -$tabs-link-hover-border-bottom-color: $text-strong !default -$tabs-link-hover-color: $text-strong !default -$tabs-link-active-border-bottom-color: $link !default -$tabs-link-active-color: $link !default -$tabs-link-padding: 0.5em 1em !default - -$tabs-boxed-link-radius: $radius !default -$tabs-boxed-link-hover-background-color: var(--color-background) !default -$tabs-boxed-link-hover-border-bottom-color: $border !default - -$tabs-boxed-link-active-background-color: $scheme-main !default -$tabs-boxed-link-active-border-color: $border !default -$tabs-boxed-link-active-border-bottom-color: transparent !default - -$tabs-toggle-link-border-color: $border !default -$tabs-toggle-link-border-style: solid !default -$tabs-toggle-link-border-width: 1px !default -$tabs-toggle-link-hover-background-color: var(--color-background) !default -$tabs-toggle-link-hover-border-color: $border-hover !default -$tabs-toggle-link-radius: $radius !default -$tabs-toggle-link-active-background-color: $link !default -$tabs-toggle-link-active-border-color: $link !default -$tabs-toggle-link-active-color: $link-invert !default - -.tabs - +overflow-touch - @extend %unselectable - align-items: stretch - display: flex - font-size: $size-normal - justify-content: space-between - overflow: hidden - overflow-x: auto - white-space: nowrap - margin-bottom: 0.2em - a - align-items: center - border-bottom-color: $tabs-border-bottom-color - border-bottom-style: $tabs-border-bottom-style - border-bottom-width: $tabs-border-bottom-width - color: $tabs-link-color - display: flex - justify-content: center - margin-bottom: -#{$tabs-border-bottom-width} - padding: $tabs-link-padding - &:hover - border-bottom-color: $tabs-link-hover-border-bottom-color - color: $tabs-link-hover-color - &:active - border-bottom-color: $tabs-link-active-border-bottom-color - color: $tabs-link-active-color - &:focus - border-bottom-color: $tabs-link-active-border-bottom-color - color: $tabs-link-active-color - li - display: block - &.is-active - a - border-bottom-color: $tabs-link-active-border-bottom-color - color: $tabs-link-active-color - ul - align-items: center - border-bottom-color: $tabs-border-bottom-color - border-bottom-style: $tabs-border-bottom-style - border-bottom-width: $tabs-border-bottom-width - display: flex - flex-grow: 1 - flex-shrink: 0 - justify-content: flex-start - margin: inherit - &.is-left - padding-right: 0.75em - &.is-center - flex: none - justify-content: center - padding-left: 0.75em - padding-right: 0.75em - &.is-right - justify-content: flex-end - padding-left: 0.75em - .icon - &:first-child - +ltr-property("margin", 0.5em) - &:last-child - +ltr-property("margin", 0.5em, false) - // Alignment - &.is-centered - ul, nav - justify-content: center - &.is-right - ul, nav - justify-content: flex-end - &.is-sticky - position: -webkit-sticky - position: sticky - top: 0 - z-index: 2 - // Styles - &.is-boxed - a - border: 1px solid transparent - +ltr - border-radius: $tabs-boxed-link-radius $tabs-boxed-link-radius 0 0 - +rtl - border-radius: 0 0 $tabs-boxed-link-radius $tabs-boxed-link-radius - &:hover - background-color: $tabs-boxed-link-hover-background-color - border-bottom-color: $tabs-boxed-link-hover-border-bottom-color - li - &.is-active - a - background-color: $tabs-boxed-link-active-background-color - border-color: $tabs-boxed-link-active-border-color - border-bottom-color: $tabs-boxed-link-active-border-bottom-color !important - &.is-fullwidth - li - flex-grow: 1 - flex-shrink: 0 - &.is-toggle - a - border-color: $tabs-toggle-link-border-color - border-style: $tabs-toggle-link-border-style - border-width: $tabs-toggle-link-border-width - margin-bottom: 0 - position: relative - &:hover - background-color: $tabs-toggle-link-hover-background-color - border-color: $tabs-toggle-link-hover-border-color - z-index: 2 - li - & + li - +ltr-property("margin", -#{$tabs-toggle-link-border-width}, false) - &:first-child a - +ltr - border-top-left-radius: $tabs-toggle-link-radius - border-bottom-left-radius: $tabs-toggle-link-radius - +rtl - border-top-right-radius: $tabs-toggle-link-radius - border-bottom-right-radius: $tabs-toggle-link-radius - &:last-child a - +ltr - border-top-right-radius: $tabs-toggle-link-radius - border-bottom-right-radius: $tabs-toggle-link-radius - +rtl - border-top-left-radius: $tabs-toggle-link-radius - border-bottom-left-radius: $tabs-toggle-link-radius - &.is-active - a - background-color: $tabs-toggle-link-active-background-color - border-color: $tabs-toggle-link-active-border-color - color: $tabs-toggle-link-active-color - z-index: 1 - ul - border-bottom: none - &.is-toggle-rounded - li - &:first-child a - +ltr - border-bottom-left-radius: $radius-rounded - border-top-left-radius: $radius-rounded - padding-left: 1.25em - +rtl - border-bottom-right-radius: $radius-rounded - border-top-right-radius: $radius-rounded - padding-right: 1.25em - &:last-child a - +ltr - border-bottom-right-radius: $radius-rounded - border-top-right-radius: $radius-rounded - padding-right: 1.25em - +rtl - border-bottom-left-radius: $radius-rounded - border-top-left-radius: $radius-rounded - padding-left: 1.25em - // Sizes - &.is-small - font-size: $size-small - &.is-medium - font-size: $size-medium - &.is-large - font-size: $size-large - -.tab-content > article:target ~ article:last-child, .tab-content > article - display: none -.tab-content > :last-child, .tab-content > article:target - display: block diff --git a/style/effects/_all.sass b/style/effects/_all.sass deleted file mode 100755 index 3f9bfe3..0000000 --- a/style/effects/_all.sass +++ /dev/null @@ -1,8 +0,0 @@ -@charset "utf-8" - -@import "chessboard" -@import "emoji" -@import "rotate" -@import "spin" -@import "spinner" -@import "theme" diff --git a/style/effects/chessboard.sass b/style/effects/chessboard.sass deleted file mode 100644 index 3ecffaf..0000000 --- a/style/effects/chessboard.sass +++ /dev/null @@ -1,15 +0,0 @@ -/// Chessboard effect - black and white geometric checkered pattern. Mostly best for backgrounds. -/// @name .effect.chessboard -/// @group effects -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-effects#chessboard -.effect - &.chessboard - background-position: 0 0,30px 30px - background-size: 20px 20px - &.is-light - background-color: #fff - background-image: linear-gradient(45deg,#f6f6f6 25%,transparent 0,transparent 75%,#f6f6f6 0,#f6f6f6),linear-gradient(45deg,#f6f6f6 25%,transparent 0,transparent 75%,#f6f6f6 0,#f6f6f6) - &.is-dark - background-color: transparent - background-image: linear-gradient(45deg,#2e3033 25%,transparent 0,transparent 75%,#2e3033 0,#2e3033),linear-gradient(45deg,#2e3033 25%,transparent 0,transparent 75%,#2e3033 0,#2e3033) diff --git a/style/effects/emoji.sass b/style/effects/emoji.sass deleted file mode 100755 index 19eb99a..0000000 --- a/style/effects/emoji.sass +++ /dev/null @@ -1,96 +0,0 @@ -/// Emoji are ideograms and smileys used in electronic messages and web pages. Emoji exist in various genres. -/// @name em.oji -/// @group effects -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-emoji -em.oji - font-style: normal - font-size: $emoji-dimensions - &.is-small - font-size: $emoji-dimensions-small - &.is-medium - font-size: $emoji-dimensions-medium - &.is-large - font-size: $emoji-dimensions-large - &.black - color: transparent - text-shadow: 0 0 $black - &.black-bis - color: transparent - text-shadow: 0 0 $black-bis - &.black-ter - color: transparent - text-shadow: 0 0 $black-ter - &.grey-darker - color: transparent - text-shadow: 0 0 $grey-darker - &.grey-dark - color: transparent - text-shadow: 0 0 $grey-dark - &.grey - color: transparent - text-shadow: 0 0 $grey - &.grey-light - color: transparent - text-shadow: 0 0 $grey-light - &.grey-lighter - color: transparent - text-shadow: 0 0 $grey-lighter - &.white-ter - color: transparent - text-shadow: 0 0 $white-ter - &.white-bis - color: transparent - text-shadow: 0 0 $white-bis - &.white - color: transparent - text-shadow: 0 0 $white - &.orange - color: transparent - text-shadow: 0 0 $orange - &.yellow - color: transparent - text-shadow: 0 0 $yellow - &.green - color: transparent - text-shadow: 0 0 $green - &.turquoise - color: transparent - text-shadow: 0 0 $turquoise - &.cyan - color: transparent - text-shadow: 0 0 $cyan - &.blue - color: transparent - text-shadow: 0 0 $blue - &.purple - color: transparent - text-shadow: 0 0 $purple - &.red - color: transparent - text-shadow: 0 0 $red - &.primary - color: transparent - text-shadow: 0 0 $primary - &.info - color: transparent - text-shadow: 0 0 $info - &.success - color: transparent - text-shadow: 0 0 $success - &.warning - color: transparent - text-shadow: 0 0 $warning - &.danger - color: transparent - text-shadow: 0 0 $danger - &.light - color: transparent - text-shadow: 0 0 $light - &.dark - color: transparent - text-shadow: 0 0 $dark - &.grayscale - filter: grayscale(1) - &.flat - filter: contrast(130%) brightness(130%) saturate(130%) grayscale(0.5) diff --git a/style/effects/rotate.sass b/style/effects/rotate.sass deleted file mode 100644 index c0aba20..0000000 --- a/style/effects/rotate.sass +++ /dev/null @@ -1,14 +0,0 @@ -$rotate-breakpoints: 30, 45, 60, 90, 120, 135, 150, 180, 210, 225, 240, 270, 300, 315, 330 - -=rotate - @each $breakpoint in $rotate-breakpoints - &.rotate-#{$breakpoint} - transform: rotate(#{$breakpoint}deg) - -/// Rotate in percentage units. -/// @name .effect.rotate -/// @group effects -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-effects#rotate -.effect - +rotate diff --git a/style/effects/spin.sass b/style/effects/spin.sass deleted file mode 100644 index ebfe35e..0000000 --- a/style/effects/spin.sass +++ /dev/null @@ -1,5 +0,0 @@ -@keyframes spinAround - from - transform: rotate(0deg) - to - transform: rotate(359deg) diff --git a/style/effects/spinner.sass b/style/effects/spinner.sass deleted file mode 100644 index 0f36fa0..0000000 --- a/style/effects/spinner.sass +++ /dev/null @@ -1,9 +0,0 @@ -/// Spinner animation -/// @name .effect.spinner -/// @group effects -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-effects#spinner -.effect - &.spinner - display: block - animation: spinAround 500ms infinite linear diff --git a/style/effects/theme.sass b/style/effects/theme.sass deleted file mode 100644 index 0ec3294..0000000 --- a/style/effects/theme.sass +++ /dev/null @@ -1,69 +0,0 @@ -/// Theme switch - Theme switcher without javascript. -/// @name label[for=coco-theme-switch] -/// @group effects -/// @since 2.1.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/components-coco-theme-switch -label[for=coco-theme-switch] - cursor: pointer - -webkit-tap-highlight-color: transparent - &:hover - border-radius: 50% - background-color: var(--color-grey) - transform: rotate(0.1deg) - transition: transform 0.25s cubic-bezier(0.5,400,0.5,-400) - .sun,.moon - padding: 0.5em -input#coco-theme-switch[type=checkbox] - display: none - &:not(:checked) - & ~ header > nav > .navbar-menu > div > div > label[for=coco-theme-switch] - & > .sun - &::before - content: var(--theme-sun) - & > .moon - &::before - content: var(--theme-moon) - &:checked - & ~ header > nav > .navbar-menu > div > div > label[for=coco-theme-switch] - & > .sun - &::before - content: var(--theme-moon) - & > .moon - &::before - content: var(--theme-sun) -@media (prefers-color-scheme: dark) - input#coco-theme-switch[type=checkbox] - &:not(:checked) - & ~ header > nav > .navbar-menu > div > div > label[for=coco-theme-switch] - & > .sun - &::before - content: var(--theme-moon) - & > .moon - &::before - content: var(--theme-sun) - &:checked - & ~ header > nav > .navbar-menu > div > div > label[for=coco-theme-switch] - & > .sun - &::before - content: var(--theme-sun) - & > .moon - &::before - content: var(--theme-moon) -\:root[data-theme=dark] - input#coco-theme-switch[type=checkbox] - &:not(:checked) - & ~ header > nav > .navbar-menu > div > div > label[for=coco-theme-switch] - & > .sun - &::before - content: var(--theme-moon) - & > .moon - &::before - content: var(--theme-sun) - &:checked - & ~ header > nav > .navbar-menu > div > div > label[for=coco-theme-switch] - & > .sun - &::before - content: var(--theme-sun) - & > .moon - &::before - content: var(--theme-moon) diff --git a/style/elements/_all.sass b/style/elements/_all.sass deleted file mode 100755 index c4c7a17..0000000 --- a/style/elements/_all.sass +++ /dev/null @@ -1,14 +0,0 @@ -@charset "utf-8" - -@import "box" -@import "button" -@import "content" -@import "container" -@import "icon" -@import "image" -@import "notification" -@import "progress" -@import "table" -@import "tag" -@import "title" -@import "other" diff --git a/style/elements/box.sass b/style/elements/box.sass deleted file mode 100755 index c07a434..0000000 --- a/style/elements/box.sass +++ /dev/null @@ -1,31 +0,0 @@ -@import "../utilities/mixins" - -$box-color: $text !default -$box-background-color: $scheme-main !default -$box-radius: $radius-large !default -$box-shadow: $shadow !default -$box-padding: 1.25rem !default - -$box-link-hover-shadow: 0 0.5em 1em -0.125em rgba($scheme-invert, 0.1), 0 0 0 1px $link !default -$box-link-active-shadow: inset 0 1px 2px rgba($scheme-invert, 0.2), 0 0 0 1px $link !default - -/// Box - A white box to contain other elements. -/// @name .box -/// @group elements -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/elements-box -.box - @extend %block - background-color: $box-background-color - border-radius: $box-radius - box-shadow: $box-shadow - color: $box-color - display: block - padding: $box-padding - -a.box - &:hover, - &:focus - box-shadow: $box-link-hover-shadow - &:active - box-shadow: $box-link-active-shadow diff --git a/style/elements/button.sass b/style/elements/button.sass deleted file mode 100755 index 47434ad..0000000 --- a/style/elements/button.sass +++ /dev/null @@ -1,358 +0,0 @@ -@import "../utilities/controls" -@import "../utilities/mixins" -@import "../utilities/extends" - -$button-color: $text-strong !default -$button-background-color: $scheme-main !default -$button-family: false !default - -$button-border-color: $border !default -$button-border-width: $control-border-width !default - -$button-padding-vertical: calc(0.5em - #{$button-border-width}) !default -$button-padding-horizontal: 1em !default - -$button-hover-color: $link-hover !default -$button-hover-border-color: $link-hover-border !default - -$button-focus-color: $link-focus !default -$button-focus-border-color: $link-focus-border !default -$button-focus-box-shadow-size: 0 0 0 0.125em !default -$button-focus-box-shadow-color: cocoRgba($link, 0.25) !default - -$button-active-color: $link-active !default -$button-active-border-color: $link-active-border !default - -$button-text-color: $text !default -$button-text-decoration: underline !default -$button-text-hover-background-color: var(--color-background) !default -$button-text-hover-color: $text-strong !default - -$button-ghost-background: none !default -$button-ghost-border-color: transparent !default -$button-ghost-color: $link !default -$button-ghost-decoration: none !default -$button-ghost-hover-color: $link !default -$button-ghost-hover-decoration: underline !default - -$button-disabled-background-color: $scheme-main !default -$button-disabled-border-color: $border !default -$button-disabled-shadow: none !default -$button-disabled-opacity: 0.5 !default - -$button-static-color: $text-light !default -$button-static-background-color: $scheme-main-ter !default -$button-static-border-color: $border !default - -$button-colors: $colors !default -$button-responsive-sizes: ("mobile": ("small": ($size-small * 0.75), "normal": ($size-small * 0.875), "medium": $size-small, "large": $size-normal), "tablet-only": ("small": ($size-small * 0.875), "normal": ($size-small), "medium": $size-normal, "large": $size-medium)) !default - -// The button sizes use mixins so they can be used at different breakpoints -=button-small - &:not(.is-rounded) - border-radius: $radius-small - font-size: $size-small -=button-normal - font-size: $size-normal -=button-medium - font-size: $size-medium -=button-large - font-size: $size-large - -.button - @extend %control - @extend %unselectable - background-color: $button-background-color - border-color: $button-border-color - border-width: $button-border-width - color: $button-color - cursor: pointer - @if $button-family - font-family: $button-family - justify-content: center - padding-bottom: $button-padding-vertical - padding-left: $button-padding-horizontal - padding-right: $button-padding-horizontal - padding-top: $button-padding-vertical - text-align: center - white-space: nowrap - strong - color: inherit - .icon - &, - &.is-small, - &.is-medium, - &.is-large - height: 1.5em - width: 1.5em - &:first-child:not(:last-child) - +ltr-property("margin", calc(#{-0.5 * $button-padding-horizontal} - #{$button-border-width}), false) - +ltr-property("margin", $button-padding-horizontal * 0.25) - &:last-child:not(:first-child) - +ltr-property("margin", $button-padding-horizontal * 0.25, false) - +ltr-property("margin", calc(#{-0.5 * $button-padding-horizontal} - #{$button-border-width})) - &:first-child:last-child - margin-left: calc(#{-0.5 * $button-padding-horizontal} - #{$button-border-width}) - margin-right: calc(#{-0.5 * $button-padding-horizontal} - #{$button-border-width}) - // States - &:hover, - &.is-hovered - border-color: $button-hover-border-color - color: $button-color - &:focus, - &.is-focused - border-color: $button-focus-border-color - color: $button-focus-color - &:not(:active) - box-shadow: $button-focus-box-shadow-size $button-focus-box-shadow-color - &:active, - &.is-active - border-color: $button-active-border-color - color: $button-active-color - // Colors - &.is-text - background-color: transparent - border-color: transparent - color: $button-text-color - text-decoration: $button-text-decoration - &:hover, - &.is-hovered, - &:focus, - &.is-focused - background-color: $button-text-hover-background-color - color: $button-text-hover-color - &:active, - &.is-active - background-color: cocoDarken($button-text-hover-background-color, 5%) - color: $button-text-hover-color - &[disabled], - fieldset[disabled] & - background-color: transparent - border-color: transparent - box-shadow: none - &.is-ghost - background: $button-ghost-background - border-color: $button-ghost-border-color - color: $button-ghost-color - text-decoration: $button-ghost-decoration - &:hover, - &.is-hovered - color: $button-ghost-hover-color - text-decoration: $button-ghost-hover-decoration - @each $name, $pair in $button-colors - $color: nth($pair, 1) - $color-invert: nth($pair, 2) - &.is-#{$name} - background-color: $color - border-color: transparent - color: $color-invert - &:hover, - &.is-hovered - background-color: cocoDarken($color, 2.5%) - border-color: transparent - color: $color-invert - &:focus, - &.is-focused - border-color: transparent - color: $color-invert - &:not(:active) - box-shadow: $button-focus-box-shadow-size cocoRgba($color, 0.25) - &:active, - &.is-active - background-color: cocoDarken($color, 5%) - border-color: transparent - color: $color-invert - &[disabled], - fieldset[disabled] & - background-color: $color - border-color: transparent - box-shadow: none - &.is-inverted - background-color: $color-invert - color: $color - &:hover, - &.is-hovered - background-color: cocoDarken($color-invert, 5%) - &[disabled], - fieldset[disabled] & - background-color: $color-invert - border-color: transparent - box-shadow: none - color: $color - &.is-loading - &::after - border-color: transparent transparent $color-invert $color-invert !important - &.is-outlined - background-color: transparent - border-color: $color - color: $color - &:hover, - &.is-hovered, - &:focus, - &.is-focused - background-color: $color - border-color: $color - color: $color-invert - &.is-loading - &::after - border-color: transparent transparent $color $color !important - &:hover, - &.is-hovered, - &:focus, - &.is-focused - &::after - border-color: transparent transparent $color-invert $color-invert !important - &[disabled], - fieldset[disabled] & - background-color: transparent - border-color: $color - box-shadow: none - color: $color - &.is-inverted.is-outlined - background-color: transparent - border-color: $color-invert - color: $color-invert - &:hover, - &.is-hovered, - &:focus, - &.is-focused - background-color: $color-invert - color: $color - &.is-loading - &:hover, - &.is-hovered, - &:focus, - &.is-focused - &::after - border-color: transparent transparent $color $color !important - &[disabled], - fieldset[disabled] & - background-color: transparent - border-color: $color-invert - box-shadow: none - color: $color-invert - // If light and dark colors are provided - @if length($pair) >= 4 - $color-light: nth($pair, 3) - $color-dark: nth($pair, 4) - &.is-light - background-color: #{$color-dark}24 - color: $color-dark - &:hover, - &.is-hovered - background-color: #{$color-dark}5e - border-color: transparent - color: $color-dark - &:active, - &.is-active - background-color: #{$color-dark}20 - border-color: transparent - color: $color-dark - // Sizes - &.is-small - +button-small - &.is-normal - +button-normal - &.is-medium - +button-medium - &.is-large - +button-large - // Modifiers - &[disabled], - fieldset[disabled] & - background-color: $button-disabled-background-color - border-color: $button-disabled-border-color - box-shadow: $button-disabled-shadow - opacity: $button-disabled-opacity - &.is-fullwidth - display: flex - width: 100% - &.is-loading - color: transparent !important - pointer-events: none - &::after - @extend %loader - +center(1em) - position: absolute !important - &.is-static - background-color: $button-static-background-color - border-color: $button-static-border-color - color: $button-static-color - box-shadow: none - pointer-events: none - &.is-rounded - border-radius: $radius-rounded - padding-left: calc(#{$button-padding-horizontal} + 0.25em) - padding-right: calc(#{$button-padding-horizontal} + 0.25em) - -.buttons - align-items: center - display: flex - flex-wrap: wrap - justify-content: flex-start - .button - margin-bottom: 0.5rem - &:not(:last-child):not(.is-fullwidth) - +ltr-property("margin", 0.5rem) - &:last-child - margin-bottom: -0.5rem - &:not(:last-child) - margin-bottom: 1rem - // Sizes - &.are-small - .button:not(.is-normal):not(.is-medium):not(.is-large) - +button-small - &.are-medium - .button:not(.is-small):not(.is-normal):not(.is-large) - +button-medium - &.are-large - .button:not(.is-small):not(.is-normal):not(.is-medium) - +button-large - &.has-addons - .button - &:not(:first-child) - border-bottom-left-radius: 0 - border-top-left-radius: 0 - &:not(:last-child) - border-bottom-right-radius: 0 - border-top-right-radius: 0 - +ltr-property("margin", -1px) - &:last-child - +ltr-property("margin", 0) - &:hover, - &.is-hovered - z-index: 2 - &:focus, - &.is-focused, - &:active, - &.is-active, - &.is-selected - z-index: 3 - &:hover - z-index: 4 - &.is-expanded - flex-grow: 1 - flex-shrink: 1 - &.is-centered - justify-content: center - &:not(.has-addons) - .button:not(.is-fullwidth) - margin-left: 0.25rem - margin-right: 0.25rem - &.is-right - justify-content: flex-end - &:not(.has-addons) - .button:not(.is-fullwidth) - margin-left: 0.25rem - margin-right: 0.25rem - -@each $bp-name, $bp-sizes in $button-responsive-sizes - +breakpoint($bp-name) - @each $size, $value in $bp-sizes - @if $size != "normal" - .button.is-responsive.is-#{$size} - font-size: $value - @else - .button.is-responsive, - .button.is-responsive.is-normal - font-size: $value diff --git a/style/elements/container.sass b/style/elements/container.sass deleted file mode 100755 index 0b0b2a2..0000000 --- a/style/elements/container.sass +++ /dev/null @@ -1,44 +0,0 @@ -@import "../utilities/mixins" - -$container-offset: calc(2 * $gap) !default -$container-max-width: $fullhd !default - -/// Container - A simple container to center your content horizontally. -/// @name .container -/// @group elements -/// @since 1.1.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/layout-container -.container - flex-grow: 1 - margin: 0 auto - position: relative - width: auto - &.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen) - max-width: min($fullhd, $container-max-width) - $container-offset - padding-left: $gap - padding-right: $gap - width: 100% - +mobile - padding-left: calc($gap / 2) - padding-right: calc($gap / 2) - &.is-fluidless - padding-left: inherit - padding-right: inherit - +tablet - max-width: $tablet - $container-offset - &.is-fluidless - max-width: inherit - +desktop - max-width: $desktop - $container-offset - +until-widescreen - &.is-widescreen:not(.is-max-desktop) - max-width: min($widescreen, $container-max-width) - $container-offset - +until-fullhd - &.is-fullhd - max-width: $fullhd - $container-offset - +widescreen - &:not(.is-max-desktop) - max-width: min($widescreen, $container-max-width) - $container-offset - +fullhd - &:not(.is-max-desktop):not(.is-max-widescreen) - max-width: min($fullhd, $container-max-width) - $container-offset diff --git a/style/elements/content.sass b/style/elements/content.sass deleted file mode 100755 index 0f61df1..0000000 --- a/style/elements/content.sass +++ /dev/null @@ -1,167 +0,0 @@ -@import "../utilities/mixins" - -$content-heading-color: $text-strong !default -$content-heading-weight: $weight-semibold !default -$content-heading-line-height: 1.125 !default - -$content-block-margin-bottom: 1em !default - -$content-blockquote-background-color: var(--color-background) !default -$content-blockquote-border-left: 5px solid $border !default -$content-blockquote-padding: 1.25em 1.5em !default - -$content-pre-padding: 1.25em 1.5em !default - -$content-table-cell-border: 1px solid $border !default -$content-table-cell-border-width: 0 0 1px !default -$content-table-cell-padding: 0.5em 0.75em !default -$content-table-cell-heading-color: $text-strong !default -$content-table-head-cell-border-width: 0 0 2px !default -$content-table-head-cell-color: $text-strong !default -$content-table-body-last-row-cell-border-bottom-width: 0 !default -$content-table-foot-cell-border-width: 2px 0 0 !default -$content-table-foot-cell-color: $text-strong !default - -/// Content - A single class to handle WYSIWYG generated content, where only HTML tags are available. -/// @name .content -/// @group elements -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/elements-content -.content - @extend %block - // Inline - li + li - margin-top: 0.25em - // Block - p, - dl, - ol, - ul, - blockquote, - pre, - table - &:not(:last-child) - margin-bottom: $content-block-margin-bottom - h1, - h2, - h3, - h4, - h5, - h6 - color: $content-heading-color - font-weight: $content-heading-weight - line-height: $content-heading-line-height - h1 - font-size: 2em - margin-bottom: 0.5em - &:not(:first-child) - margin-top: 1em - h2 - font-size: 1.75em - margin-bottom: 0.5714em - &:not(:first-child) - margin-top: 1.1428em - h3 - font-size: 1.5em - margin-bottom: 0.6666em - &:not(:first-child) - margin-top: 1.3333em - h4 - font-size: 1.25em - margin-bottom: 0.8em - h5 - font-size: 1.125em - margin-bottom: 0.8888em - h6 - font-size: 1em - margin-bottom: 1em - blockquote - background-color: $content-blockquote-background-color - +ltr-property("border", $content-blockquote-border-left, false) - padding: $content-blockquote-padding - ol - list-style-position: outside - +ltr-property("margin", 2em, false) - margin-top: 1em - &:not([type]) - list-style-type: decimal - &.is-lower-alpha - list-style-type: lower-alpha - &.is-lower-roman - list-style-type: lower-roman - &.is-upper-alpha - list-style-type: upper-alpha - &.is-upper-roman - list-style-type: upper-roman - ul - list-style: disc outside - +ltr-property("margin", 2em, false) - margin-top: 1em - ul - list-style-type: circle - margin-top: 0.5em - ul - list-style-type: square - dd - +ltr-property("margin", 2em, false) - figure - margin-left: 2em - margin-right: 2em - text-align: center - &:not(:first-child) - margin-top: 2em - &:not(:last-child) - margin-bottom: 2em - img - display: inline-block - figcaption - font-style: italic - pre - +overflow-touch - overflow-x: auto - padding: $content-pre-padding - white-space: pre - word-wrap: normal - sup, - sub - font-size: 75% - table - width: 100% - td, - th - border: $content-table-cell-border - border-width: $content-table-cell-border-width - padding: $content-table-cell-padding - vertical-align: top - th - color: $content-table-cell-heading-color - &:not([align]) - text-align: inherit - thead - td, - th - border-width: $content-table-head-cell-border-width - color: $content-table-head-cell-color - tfoot - td, - th - border-width: $content-table-foot-cell-border-width - color: $content-table-foot-cell-color - tbody - tr - &:last-child - td, - th - border-bottom-width: $content-table-body-last-row-cell-border-bottom-width - .tabs - li + li - margin-top: 0 - // Sizes - &.is-small - font-size: $size-small - &.is-normal - font-size: $size-normal - &.is-medium - font-size: $size-medium - &.is-large - font-size: $size-large diff --git a/style/elements/icon.sass b/style/elements/icon.sass deleted file mode 100755 index 10ab85a..0000000 --- a/style/elements/icon.sass +++ /dev/null @@ -1,53 +0,0 @@ -@import "../utilities/mixins" - -$icon-dimensions: 1.5rem !default -$icon-dimensions-small: 1rem !default -$icon-dimensions-medium: 2rem !default -$icon-dimensions-large: 3rem !default -$icon-text-spacing: 0.25em !default - -/// Icon - Put inside the code any icon you like. -/// @name .icon -/// @group elements -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/elements-icon -.icon - align-items: center - display: inline-flex - justify-content: center - height: $icon-dimensions - width: $icon-dimensions - // Sizes - &.is-small - height: $icon-dimensions-small - width: $icon-dimensions-small - &.is-medium - height: $icon-dimensions-medium - width: $icon-dimensions-medium - &.is-large - height: $icon-dimensions-large - width: $icon-dimensions-large - -.icon-text - align-items: flex-start - color: inherit - display: inline-flex - flex-wrap: wrap - line-height: $icon-dimensions - vertical-align: top - .icon - flex-grow: 0 - flex-shrink: 0 - &:not(:last-child) - +ltr - margin-right: $icon-text-spacing - +rtl - margin-left: $icon-text-spacing - &:not(:first-child) - +ltr - margin-left: $icon-text-spacing - +rtl - margin-right: $icon-text-spacing - -div.icon-text - display: flex diff --git a/style/elements/image.sass b/style/elements/image.sass deleted file mode 100755 index fab92fa..0000000 --- a/style/elements/image.sass +++ /dev/null @@ -1,78 +0,0 @@ -@import "../utilities/mixins" - -$dimensions: 16 24 32 48 64 96 128 !default - -/// Image - A container for responsive images. -/// @name .image -/// @group elements -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/elements-image -.image - display: block - position: relative - img - display: block - height: auto - width: 100% - &.is-rounded - border-radius: $radius-rounded - &.is-fullwidth - width: 100% - // Ratio - &.is-square, - &.is-1by1, - &.is-5by4, - &.is-4by3, - &.is-3by2, - &.is-5by3, - &.is-16by9, - &.is-2by1, - &.is-3by1, - &.is-4by5, - &.is-3by4, - &.is-2by3, - &.is-3by5, - &.is-9by16, - &.is-1by2, - &.is-1by3 - img, - .has-ratio - @extend %overlay - height: 100% - width: 100% - &.is-square, - &.is-1by1 - padding-top: 100% - &.is-5by4 - padding-top: 80% - &.is-4by3 - padding-top: 75% - &.is-3by2 - padding-top: 66.6666% - &.is-5by3 - padding-top: 60% - &.is-16by9 - padding-top: 56.25% - &.is-2by1 - padding-top: 50% - &.is-3by1 - padding-top: 33.3333% - &.is-4by5 - padding-top: 125% - &.is-3by4 - padding-top: 133.3333% - &.is-2by3 - padding-top: 150% - &.is-3by5 - padding-top: 166.6666% - &.is-9by16 - padding-top: 177.7777% - &.is-1by2 - padding-top: 200% - &.is-1by3 - padding-top: 300% - // Sizes - @each $dimension in $dimensions - &.is-#{$dimension}x#{$dimension} - height: $dimension * 1px - width: $dimension * 1px diff --git a/style/elements/notification.sass b/style/elements/notification.sass deleted file mode 100755 index e77e659..0000000 --- a/style/elements/notification.sass +++ /dev/null @@ -1,57 +0,0 @@ -@import "../utilities/mixins" - -$notification-background-color: var(--color-background) !default -$notification-code-background-color: $scheme-main !default -$notification-radius: $radius !default -$notification-padding: 1.25rem 2.5rem 1.25rem 1.5rem !default -$notification-padding-ltr: 1.25rem 2.5rem 1.25rem 1.5rem !default -$notification-padding-rtl: 1.25rem 1.5rem 1.25rem 2.5rem !default - -$notification-colors: $colors !default - -/// Notification - Bold notification blocks, to alert your users of something. -/// @name .notification -/// @group elements -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/elements-notification -.notification - @extend %block - background-color: $notification-background-color - border-radius: $notification-radius - position: relative - +ltr - padding: $notification-padding-ltr - +rtl - padding: $notification-padding-rtl - a:not(.button):not(.dropdown-item) - color: currentColor - text-decoration: underline - strong - color: currentColor - code, - pre - background: $notification-code-background-color - pre code - background: transparent - & > .delete - +ltr-position(0.5rem) - position: absolute - top: 0.5rem - .title, - .subtitle, - .content - color: currentColor - // Colors - @each $name, $pair in $notification-colors - $color: nth($pair, 1) - $color-invert: nth($pair, 2) - &.is-#{$name} - background-color: $color - color: $color-invert - // If light and dark colors are provided - @if length($pair) >= 4 - $color-light: nth($pair, 3) - $color-dark: nth($pair, 4) - &.is-light - background-color: #{$color-dark}24 - color: $color-dark diff --git a/style/elements/other.sass b/style/elements/other.sass deleted file mode 100755 index fd5244f..0000000 --- a/style/elements/other.sass +++ /dev/null @@ -1,56 +0,0 @@ -@import "../utilities/mixins" - -/// Block -/// @name .block -/// @group elements -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/elements-other#block -.block - @extend %block - -/// Delete -/// @name .delete -/// @group elements -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/elements-other#delete -.delete - @extend %delete - -/// Heading -/// @name .heading -/// @group elements -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/elements-other#heading -.heading - display: block - font-size: 11px - letter-spacing: 1px - margin-bottom: 5px - text-transform: uppercase - -/// Loader -/// @name .loader -/// @group elements -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/elements-other#loader -.loader - @extend %loader - -/// Number -/// @name .number -/// @group elements -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/elements-other#number -.number - align-items: center - background-color: var(--color-background) - border-radius: $radius-rounded - display: inline-flex - font-size: $size-medium - height: 2em - justify-content: center - margin-right: 1.5rem - min-width: 2.5em - padding: 0.25rem 0.5rem - text-align: center - vertical-align: top diff --git a/style/elements/progress.sass b/style/elements/progress.sass deleted file mode 100755 index e829628..0000000 --- a/style/elements/progress.sass +++ /dev/null @@ -1,78 +0,0 @@ -@import "../utilities/mixins" - -$progress-bar-background-color: $border-light !default -$progress-value-background-color: $text !default -$progress-border-radius: $radius-rounded !default - -$progress-indeterminate-duration: 1.5s !default - -$progress-colors: $colors !default - -/// Progress - Native HTML progress bars. -/// @name .progress -/// @group elements -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/elements-progress -.progress - @extend %block - -moz-appearance: none - -webkit-appearance: none - border: none - border-radius: $progress-border-radius - display: block - height: $size-normal - overflow: hidden - padding: 0 - width: 100% - &::-webkit-progress-bar - background-color: $progress-bar-background-color - &::-webkit-progress-value - background-color: $progress-value-background-color - &::-moz-progress-bar - background-color: $progress-value-background-color - &::-ms-fill - background-color: $progress-value-background-color - border: none - // Colors - @each $name, $pair in $progress-colors - $color: nth($pair, 1) - &.is-#{$name} - &::-webkit-progress-value - background-color: $color - &::-moz-progress-bar - background-color: $color - &::-ms-fill - background-color: $color - &:indeterminate - background-image: linear-gradient(to right, $color 30%, $progress-bar-background-color 30%) - - &:indeterminate - animation-duration: $progress-indeterminate-duration - animation-iteration-count: infinite - animation-name: moveIndeterminate - animation-timing-function: linear - background-color: $progress-bar-background-color - background-image: linear-gradient(to right, $text 30%, $progress-bar-background-color 30%) - background-position: top left - background-repeat: no-repeat - background-size: 150% 150% - &::-webkit-progress-bar - background-color: transparent - &::-moz-progress-bar - background-color: transparent - &::-ms-fill - animation-name: none - - // Sizes - &.is-small - height: $size-small - &.is-medium - height: $size-medium - &.is-large - height: $size-large - -@keyframes moveIndeterminate - from - background-position: 200% 0 - to - background-position: -200% 0 diff --git a/style/elements/table.sass b/style/elements/table.sass deleted file mode 100755 index 517c0bd..0000000 --- a/style/elements/table.sass +++ /dev/null @@ -1,139 +0,0 @@ -@import "../utilities/mixins" - -$table-color: $text-strong !default -$table-background-color: $scheme-main !default - -$table-cell-border: 1px solid $border !default -$table-cell-border-width: 0 0 1px !default -$table-cell-padding: 0.5em 0.75em !default -$table-cell-heading-color: $text-strong !default -$table-cell-text-align: left !default - -$table-head-cell-border-width: 0 0 2px !default -$table-head-cell-color: $text-strong !default -$table-foot-cell-border-width: 2px 0 0 !default -$table-foot-cell-color: $text-strong !default - -$table-head-background-color: transparent !default -$table-body-background-color: transparent !default -$table-foot-background-color: transparent !default - -$table-row-hover-background-color: $scheme-main-bis !default - -$table-row-active-background-color: $primary !default -$table-row-active-color: $primary-invert !default - -$table-striped-row-even-background-color: $scheme-main-bis !default -$table-striped-row-even-hover-background-color: $scheme-main-ter !default - -$table-colors: $colors !default - -/// Table - The inevitable HTML table, with special case cells. -/// @name .table -/// @group elements -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/elements-table -.table - @extend %block - background-color: $table-background-color - color: $table-color - td, - th - border: $table-cell-border - border-width: $table-cell-border-width - padding: $table-cell-padding - vertical-align: top - // Colors - @each $name, $pair in $table-colors - $color: nth($pair, 1) - $color-invert: nth($pair, 2) - &.is-#{$name} - background-color: $color - border-color: $color - color: $color-invert - // Modifiers - &.is-narrow - white-space: nowrap - width: 1% - &.is-selected - background-color: $table-row-active-background-color - color: $table-row-active-color - a, - strong - color: currentColor - &.is-vcentered - vertical-align: middle - th - color: $table-cell-heading-color - &:not([align]) - text-align: $table-cell-text-align - tr - &.is-selected - background-color: $table-row-active-background-color - color: $table-row-active-color - a, - strong - color: currentColor - td, - th - border-color: $table-row-active-color - color: currentColor - thead - background-color: $table-head-background-color - td, - th - border-width: $table-head-cell-border-width - color: $table-head-cell-color - tfoot - background-color: $table-foot-background-color - td, - th - border-width: $table-foot-cell-border-width - color: $table-foot-cell-color - tbody - background-color: $table-body-background-color - tr - &:last-child - td, - th - border-bottom-width: 0 - // Modifiers - &.is-bordered - td, - th - border-width: 1px - tr - &:last-child - td, - th - border-bottom-width: 1px - &.is-fullwidth - width: 100% - &.is-hoverable - tbody - tr:not(.is-selected) - &:hover - background-color: $table-row-hover-background-color - &.is-striped - tbody - tr:not(.is-selected) - &:hover - background-color: $table-row-hover-background-color - &:nth-child(even) - background-color: $table-striped-row-even-hover-background-color - &.is-narrow - td, - th - padding: 0.25em 0.5em - &.is-striped - tbody - tr:not(.is-selected) - &:nth-child(even) - background-color: $table-striped-row-even-background-color - -.table-container - @extend %block - +overflow-touch - overflow: auto - overflow-y: hidden - max-width: 100% diff --git a/style/elements/tag.sass b/style/elements/tag.sass deleted file mode 100755 index 57c1611..0000000 --- a/style/elements/tag.sass +++ /dev/null @@ -1,147 +0,0 @@ -@import "../utilities/mixins" - -$tag-background-color: var(--color-background) !default -$tag-color: $text !default -$tag-radius: $radius !default -$tag-delete-margin: 1px !default - -$tag-colors: $colors !default - -/// Tags - Small tag labels to insert anywhere. -/// @name .tag -/// @group elements -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/elements-tag -.tags - align-items: center - display: flex - flex-wrap: wrap - justify-content: flex-start - .tag - margin-bottom: 0.5rem - &:not(:last-child) - +ltr-property("margin", 0.5rem) - &:last-child - margin-bottom: -0.5rem - &:not(:last-child) - margin-bottom: 1rem - // Sizes - &.are-medium - .tag:not(.is-normal):not(.is-large) - font-size: $size-normal - &.are-large - .tag:not(.is-normal):not(.is-medium) - font-size: $size-medium - &.is-centered - justify-content: center - .tag - margin-right: 0.25rem - margin-left: 0.25rem - &.is-right - justify-content: flex-end - .tag - &:not(:first-child) - margin-left: 0.5rem - &:not(:last-child) - margin-right: 0 - &.has-addons - .tag - +ltr-property("margin", 0) - &:not(:first-child) - +ltr-property("margin", 0, false) - +ltr - border-top-left-radius: 0 - border-bottom-left-radius: 0 - +rtl - border-top-right-radius: 0 - border-bottom-right-radius: 0 - &:not(:last-child) - +ltr - border-top-right-radius: 0 - border-bottom-right-radius: 0 - +rtl - border-top-left-radius: 0 - border-bottom-left-radius: 0 - -.tag:not(body) - align-items: center - background-color: $tag-background-color - border-radius: $tag-radius - color: $tag-color - display: inline-flex - font-size: $size-small - height: 2em - justify-content: center - line-height: 1.5 - padding-left: 0.75em - padding-right: 0.75em - white-space: nowrap - .delete - +ltr-property("margin", 0.25rem, false) - +ltr-property("margin", -0.375rem) - // Colors - @each $name, $pair in $tag-colors - $color: nth($pair, 1) - $color-invert: nth($pair, 2) - &.is-#{$name} - background-color: $color - color: $color-invert - // If a light and dark colors are provided - @if length($pair) > 3 - $color-light: nth($pair, 3) - $color-dark: nth($pair, 4) - &.is-light - background-color: #{$color-dark}24 - color: $color-dark - // Sizes - &.is-normal - font-size: $size-small - &.is-medium - font-size: $size-normal - &.is-large - font-size: $size-medium - .icon - &:first-child:not(:last-child) - +ltr-property("margin", -0.375em, false) - +ltr-property("margin", 0.1875em) - &:last-child:not(:first-child) - +ltr-property("margin", 0.1875em, false) - +ltr-property("margin", -0.375em) - &:first-child:last-child - +ltr-property("margin", -0.375em, false) - +ltr-property("margin", -0.375em) - // Modifiers - &.is-delete - +ltr-property("margin", $tag-delete-margin, false) - padding: 0 - position: relative - width: 2em - &::before, - &::after - background-color: currentColor - content: "" - display: block - left: 50% - position: absolute - top: 50% - transform: translateX(-50%) translateY(-50%) rotate(45deg) - transform-origin: center center - &::before - height: 1px - width: 50% - &::after - height: 50% - width: 1px - &:hover, - &:focus - background-color: $tag-background-color - filter: brightness(0.95) - &:active - background-color: $tag-background-color - filter: brightness(0.90) - &.is-rounded - border-radius: $radius-rounded - -a.tag - &:hover - text-decoration: underline diff --git a/style/elements/title.sass b/style/elements/title.sass deleted file mode 100755 index 5902483..0000000 --- a/style/elements/title.sass +++ /dev/null @@ -1,95 +0,0 @@ -@import "../utilities/mixins" - -$title-color: $text-strong !default -$title-family: false !default -$title-size: var(--size-3) !default -$title-weight: $weight-semibold !default -$title-line-height: 1.125 !default -$title-strong-color: inherit !default -$title-strong-weight: inherit !default -$title-sub-size: 0.75em !default -$title-sup-size: 0.75em !default - -$subtitle-color: $text !default -$subtitle-family: false !default -$subtitle-size: var(--size-5) !default -$subtitle-weight: $weight-normal !default -$subtitle-line-height: 1.25 !default -$subtitle-strong-color: $text-strong !default -$subtitle-strong-weight: $weight-semibold !default -$subtitle-negative-margin: -1.25rem !default - -.title, -.subtitle, -h1, h2, h3, h4, h5, h6 - @extend %block - word-break: break-word - em, - span - font-weight: inherit - sub - font-size: $title-sub-size - sup - font-size: $title-sup-size - .tag - vertical-align: middle - -/// Title - Simple headings to add depth to your page. -/// @name .title -/// @group elements -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/elements-title#title -.title, -h1, h2, h3, h4, h5, h6 - color: $title-color - @if $title-family - font-family: $title-family - font-size: $title-size - font-weight: $title-weight - line-height: $title-line-height - strong - color: $title-strong-color - font-weight: $title-strong-weight - &:not(.is-spaced) + .subtitle - margin-top: $subtitle-negative-margin - // Sizes - @each $size in $sizes - $i: index($sizes, $size) - &.is-#{$i} - font-size: var(--#{$i}) - -h1 - font-size: var(--size-1) -h2 - font-size: var(--size-2) -h3 - font-size: var(--size-3) -h4 - font-size: var(--size-4) -h5 - font-size: var(--size-5) -h6 - font-size: var(--size-6) - -/// Subtitle - More informations for your headings.. -/// @name .subtitle -/// @group elements -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/elements-title#subtitle -.subtitle - color: $subtitle-color - @if $subtitle-family - font-family: $subtitle-family - font-size: $subtitle-size - font-weight: $subtitle-weight - line-height: $subtitle-line-height - strong - color: $subtitle-strong-color - font-weight: $subtitle-strong-weight - &:not(.is-spaced) + .title - margin-top: $subtitle-negative-margin - // Sizes - @each $size in $sizes - $i: index($sizes, $size) - &.is-#{$i} - font-size: var(--#{$i}) diff --git a/style/filters/1977.sass b/style/filters/1977.sass deleted file mode 100644 index 63bc30c..0000000 --- a/style/filters/1977.sass +++ /dev/null @@ -1,21 +0,0 @@ -/// 1977 effect. As the name suggests, this filter gives a you nostalgic 70’s feel by making photos brighter as well as faded. -/// @name .filter.seventyseven -/// @group filters -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-filters#1977 -.filter - &.seventyseven - position: relative - filter: contrast(110%) brightness(110%) saturate(130%) - -webkit-filter: contrast(110%) brightness(110%) saturate(130%) - &::before - content: "" - display: block - height: 100% - width: 100% - top: 0 - left: 0 - position: absolute - pointer-events: none - mix-blend-mode: screen - background: rgba(243, 106, 188, 0.3) diff --git a/style/filters/_all.sass b/style/filters/_all.sass deleted file mode 100755 index b5f1e5f..0000000 --- a/style/filters/_all.sass +++ /dev/null @@ -1,21 +0,0 @@ -@charset "utf-8" - -@import "blur" -@import "brightness" -@import "contrast" -@import "grayscale" -@import "hue-rotate" -@import "invert" -@import "opacity" -@import "saturate" -@import "sepia" -@import "1977" -@import "aden" -@import "amaro" -@import "brannan" -@import "brooklyn" -@import "clarendon" -@import "earlybird" -@import "gingham" -@import "hudson" -@import "inkwell" diff --git a/style/filters/amaro.sass b/style/filters/amaro.sass deleted file mode 100644 index 2a0b472..0000000 --- a/style/filters/amaro.sass +++ /dev/null @@ -1,9 +0,0 @@ -/// This filter adds more light to the centre of the photo and darkens around the edges. -/// @name .filter.amaro -/// @group filters -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-filters#amaro -.filter - &.amaro - filter: contrast(90%) brightness(110%) saturate(150%) hue-rotate(-10deg) - -webkit-filter: contrast(90%) brightness(110%) saturate(150%) hue-rotate(-10deg) diff --git a/style/filters/blur.sass b/style/filters/blur.sass deleted file mode 100644 index 6e0711e..0000000 --- a/style/filters/blur.sass +++ /dev/null @@ -1,14 +0,0 @@ -$blur-breakpoints: '1px', '2px', '3px', '4px', '5px', '6px', '7px', '8px', '9px', '10px' - -=blur - @each $breakpoint in $blur-breakpoints - &.blur-#{$breakpoint} - filter: blur($breakpoint) - -/// Applies a blur effect to the image. A larger value will create more blur. -/// @name .filter.blur -/// @group filters -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-filters#blur -.filter - +blur diff --git a/style/filters/brannan.sass b/style/filters/brannan.sass deleted file mode 100644 index 8757a07..0000000 --- a/style/filters/brannan.sass +++ /dev/null @@ -1,21 +0,0 @@ -/// Brannan adds high contrast and exposure to your photo, giving it some stylish metallic tint. This photo effect is soft and washed out, like a photo from old granny’s album. -/// @name .filter.brannan -/// @group filters -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-filters#brannan -.filter - &.brannan - position: relative - filter: contrast(140%) sepia(50%) - -webkit-filter: contrast(140%) sepia(50%) - &::before - content: "" - display: block - height: 100% - width: 100% - top: 0 - left: 0 - position: absolute - pointer-events: none - mix-blend-mode: lighten - background: rgba(161, 44, 199, 0.31) diff --git a/style/filters/brightness.sass b/style/filters/brightness.sass deleted file mode 100644 index b1610d3..0000000 --- a/style/filters/brightness.sass +++ /dev/null @@ -1,14 +0,0 @@ -$brightness-breakpoints: 0, 10, 25, 40, 50, 60, 75, 110, 125, 150, 175, 200 - -=brightness - @each $breakpoint in $brightness-breakpoints - &.brightness-#{$breakpoint} - filter: unquote("brightness(#{$breakpoint}%)") - -/// The Brightness filter provides advanced options for adjusting brightness. -/// @name .filter.brightness -/// @group filters -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-filters#brightness -.filter - +brightness diff --git a/style/filters/brooklyn.sass b/style/filters/brooklyn.sass deleted file mode 100644 index 064af02..0000000 --- a/style/filters/brooklyn.sass +++ /dev/null @@ -1,22 +0,0 @@ -/// Brooklyn brightens up your image and boosts its yellow tones. Depending on the image, it can give it an ethereal look. -/// @name .filter.brooklyn -/// @group filters -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-filters#brooklyn -.filter - &.brooklyn - position: relative - filter: contrast(90%) brightness(110%) - -webkit-filter: contrast(90%) brightness(110%) - &::before - content: "" - display: block - height: 100% - width: 100% - top: 0 - left: 0 - position: absolute - pointer-events: none - mix-blend-mode: overlay - background: -webkit-radial-gradient(circle closest-corner, rgba(168, 223, 193, 0.4), rgba(183, 196, 200, 0.2)) - background: radial-gradient(circle closest-corner, rgba(168, 223, 193, 0.4), rgba(183, 196, 200, 0.2)) diff --git a/style/filters/clarendon.sass b/style/filters/clarendon.sass deleted file mode 100644 index 15d94bf..0000000 --- a/style/filters/clarendon.sass +++ /dev/null @@ -1,21 +0,0 @@ -/// Clarendon filter will brighten the highlights found in your photos, while also making the shadows a bit bolder. -/// @name .filter.clarendon -/// @group filters -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-filters#clarendon -.filter - &.clarendon - position: relative - filter: contrast(120%) saturate(125%) - -webkit-filter: contrast(120%) saturate(125%) - &::before - content: "" - display: block - height: 100% - width: 100% - top: 0 - left: 0 - position: absolute - pointer-events: none - mix-blend-mode: overlay - background: rgba(127, 187, 227, 0.2) diff --git a/style/filters/contrast.sass b/style/filters/contrast.sass deleted file mode 100644 index 6c28a5d..0000000 --- a/style/filters/contrast.sass +++ /dev/null @@ -1,14 +0,0 @@ -$contrast-breakpoints: 0, 10, 25, 40, 50, 60, 75, 110, 125, 150, 175, 200 - -=contrast - @each $breakpoint in $contrast-breakpoints - &.contrast-#{$breakpoint} - filter: unquote("contrast(#{$breakpoint}%)") - -/// Contrast filter adjusts the contrast of an image. -/// @name .filter.contrast -/// @group filters -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-filters#contrast -.filter - +contrast diff --git a/style/filters/earlybird.sass b/style/filters/earlybird.sass deleted file mode 100644 index 9150bf1..0000000 --- a/style/filters/earlybird.sass +++ /dev/null @@ -1,22 +0,0 @@ -/// Earlybird to get a retro β€œPolaroid” feel with soft faded colors and a hint of yellow. -/// @name .filter.earlybird -/// @group filters -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-filters#earlybird -.filter - &.earlybird - position: relative - filter: contrast(90%) sepia(20%) - -webkit-filter: contrast(90%) sepia(20%) - &::before - content: "" - display: block - height: 100% - width: 100% - top: 0 - left: 0 - position: absolute - pointer-events: none - mix-blend-mode: overlay - background: -webkit-radial-gradient(circle closest-corner, rgba(208, 186, 142, 1), rgba(29, 2, 16, 0.2)) - background: radial-gradient(circle closest-corner, rgba(208, 186, 142, 1), rgba(29, 2, 16, 0.2)) diff --git a/style/filters/gingham.sass b/style/filters/gingham.sass deleted file mode 100644 index e2e4839..0000000 --- a/style/filters/gingham.sass +++ /dev/null @@ -1,22 +0,0 @@ -/// Gingham muddy highlights, brightness, a slight haze and a subtle warm up of the tones by carefully applying red and magenta to selected parts of the image. -/// @name .filter.gingham -/// @group filters -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-filters#gingham -.filter - &.gingham - position: relative - filter: brightness(105%) hue-rotate(350deg) - -webkit-filter: brightness(105%) hue-rotate(350deg) - &::before - content: "" - display: block - height: 100% - width: 100% - top: 0 - left: 0 - position: absolute - pointer-events: none - mix-blend-mode: darken - background: -webkit-linear-gradient(to right, rgba(66, 10, 14, 0.2), rgba(0, 0, 0, 0)) - background: linear-gradient(to right, rgba(66, 10, 14, 0.2), rgba(0, 0, 0, 0)) diff --git a/style/filters/grayscale.sass b/style/filters/grayscale.sass deleted file mode 100644 index aac9f7f..0000000 --- a/style/filters/grayscale.sass +++ /dev/null @@ -1,16 +0,0 @@ -$grayscale-breakpoints: 0, 10, 25, 40, 50, 60, 75, 100 - -=grayscale - @each $breakpoint in $grayscale-breakpoints - &.grayscale-#{$breakpoint} - filter: unquote("grayscale(#{$breakpoint}%)") - -/// Converts the image to grayscale. -/// @name .filter.grayscale -/// @group filters -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-filters#grayscale -.filter - +grayscale - &.grayscale - filter: unquote("grayscale(100%)") diff --git a/style/filters/hudson.sass b/style/filters/hudson.sass deleted file mode 100644 index 40d9a38..0000000 --- a/style/filters/hudson.sass +++ /dev/null @@ -1,22 +0,0 @@ -/// Hudson emphasizes light in your image and gives your photos a bluish, colder feel. -/// @name .filter.hudson -/// @group filters -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-filters#hudson -.filter - &.hudson - position: relative - filter: contrast(90%) brightness(120%) saturate(110%) - -webkit-filter: contrast(90%) brightness(120%) saturate(110%) - &::before - content: "" - display: block - height: 100% - width: 100% - top: 0 - left: 0 - position: absolute - pointer-events: none - mix-blend-mode: darken - background: -webkit-radial-gradient(circle closest-corner, rgba(255, 177, 166, 1), rgba(52, 33, 52, 1)) - background: radial-gradient(circle closest-corner, rgba(255, 177, 166, 1), rgba(52, 33, 52, 1)) diff --git a/style/filters/hue-rotate.sass b/style/filters/hue-rotate.sass deleted file mode 100644 index ce1ef54..0000000 --- a/style/filters/hue-rotate.sass +++ /dev/null @@ -1,14 +0,0 @@ -$hue-rotate-breakpoints: 0, 30, 45, 60, 90, 120, 135, 150, 180, 210, 225, 240, 270, 300, 315, 330 - -=hue-rotate - @each $breakpoint in $hue-rotate-breakpoints - &.hue-rotate-#{$breakpoint} - filter: hue-rotate(#{$breakpoint}deg) - -/// Applies a hue rotation on the image. The value defines the number of degrees around the color circle the image samples will be adjusted. -/// @name .filter.hue-rotate -/// @group filters -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-filters#hue-rotate -.filter - +hue-rotate diff --git a/style/filters/invert.sass b/style/filters/invert.sass deleted file mode 100644 index 1cd73af..0000000 --- a/style/filters/invert.sass +++ /dev/null @@ -1,14 +0,0 @@ -$invert-breakpoints: 0, 10, 25, 40, 50, 60, 75, 100 - -=invert - @each $breakpoint in $invert-breakpoints - &.invert-#{$breakpoint} - filter: unquote("invert(#{$breakpoint}%)") - -/// Inverts the samples in the image. 0% (0) is default and represents the original image. 100% (100) will make the image completely inverted. -/// @name .filter.invert -/// @group filters -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-filters#invert -.filter - +invert diff --git a/style/filters/opacity.sass b/style/filters/opacity.sass deleted file mode 100644 index 4de4387..0000000 --- a/style/filters/opacity.sass +++ /dev/null @@ -1,14 +0,0 @@ -$opacity-breakpoints: 0, 10, 25, 40, 50, 60, 75, 100 - -=opacity - @each $breakpoint in $opacity-breakpoints - &.opacity-#{$breakpoint} - filter: unquote("opacity(#{$breakpoint}%)") - -/// Sets the opacity level for the image. The opacity-level describes the transparency-level, where: 0% (0) is completely transparent. 100% (100) is default and represents the original image (no transparency). -/// @name .filter.opacity -/// @group filters -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-filters#opacity -.filter - +opacity diff --git a/style/filters/sepia.sass b/style/filters/sepia.sass deleted file mode 100644 index 891d340..0000000 --- a/style/filters/sepia.sass +++ /dev/null @@ -1,14 +0,0 @@ -$sepia-breakpoints: 0, 10, 25, 40, 50, 60, 75, 100 - -=sepia - @each $breakpoint in $sepia-breakpoints - &.sepia-#{$breakpoint} - filter: unquote("sepia(#{$breakpoint}%)") - -/// Converts the image to sepia. 0% (0) is default and represents the original image. 100% (100) will make the image completely sepia. -/// @name .filter.sepia -/// @group filters -/// @since 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-filters#sepia -.filter - +sepia diff --git a/style/form/_all.sass b/style/form/_all.sass deleted file mode 100755 index 9129367..0000000 --- a/style/form/_all.sass +++ /dev/null @@ -1,10 +0,0 @@ -@charset "utf-8" - -@import "shared" -@import "input-textarea" -@import "checkbox-radio" -@import "select" -@import "file" -@import "tools" -@import "toggle" -@import "emutton" diff --git a/style/form/checkbox-radio.sass b/style/form/checkbox-radio.sass deleted file mode 100755 index 53e6a9e..0000000 --- a/style/form/checkbox-radio.sass +++ /dev/null @@ -1,22 +0,0 @@ -%checkbox-radio - cursor: pointer - display: inline-block - line-height: 1.25 - position: relative - input - cursor: pointer - &:hover - color: $input-hover-color - &[disabled], - fieldset[disabled] &, - input[disabled] - color: $input-disabled-color - cursor: not-allowed - -.checkbox - @extend %checkbox-radio - -.radio - @extend %checkbox-radio - & + .radio - +ltr-property("margin", 0.5em, false) diff --git a/style/form/emutton.sass b/style/form/emutton.sass deleted file mode 100644 index adba6bd..0000000 --- a/style/form/emutton.sass +++ /dev/null @@ -1,64 +0,0 @@ -.emutton - display: inline-grid - cursor: pointer - width: var(--emutton-r) - height: var(--emutton-r) - border-radius: 50% - margin: calc(var(--emutton-r)/3) - line-height: var(--emutton-r) - text-align: center - transform: rotate(0) - & > em.oji - filter: grayscale(100%) - transform: scale(1) - grid-area: 1/1 - display: inherit - transition: transform .6s cubic-bezier(0.5,-12,1,-12) - grid-area: 1/1 - font-style: normal - font-size: calc(0.6*var(--emutton-r)) - &:after - background-size: calc(var(--emutton-r)/8) calc(var(--emutton-r)/8) - transform: rotate(60deg) scale(0) - &:hover - transform: rotate(0.1deg) - transition: transform 0.25s cubic-bezier(0.5,400,0.5,-400) - &:before - content: "" - grid-area: 1/1 - border-radius: 50% - border: solid var(--emutton-primary) calc(var(--emutton-r)/2) - transform: scale(0) - &:after, & > em.oji:after - content: "" - grid-area: 1/1 - margin: calc(var(--emutton-r)/-2) - --emutton-c1: radial-gradient(var(--emutton-secondary) 50%,#0000 60%) - --emutton-c2: radial-gradient(var(--emutton-primary) 50%,#0000 60%) - background: var(--emutton-c1),var(--emutton-c1),var(--emutton-c1), var(--emutton-c1), var(--emutton-c2),var(--emutton-c2),var(--emutton-c2),var(--emutton-c2) - background-size: calc(var(--emutton-r)/6) calc(var(--emutton-r)/6) - background-position: calc(50% - var(--emutton-r)/2) calc(50% - var(--emutton-r)/2), calc(50% + var(--emutton-r)/2) calc(50% - var(--emutton-r)/2), calc(50% - var(--emutton-r)/2) calc(50% + var(--emutton-r)/2), calc(50% + var(--emutton-r)/2) calc(50% + var(--emutton-r)/2), 50% calc(50% + var(--emutton-r)*0.707), calc(50% + var(--emutton-r)*0.707) calc(50% + 0px), calc(50% - var(--emutton-r)*0.707) calc(50% + 0px), calc(50% + 0px) calc(50% - var(--emutton-r)*0.707) - background-repeat: no-repeat - transform: scale(0) -input.emutton-hidden - position: absolute - visibility: hidden - clip-path: inset(50%) - &:checked - & + .emutton - em.oji - filter: grayscale(0) - transform: scale(0.95) - transition: filter .5s .5s, transform 1s cubic-bezier(0,26.67,.5,26.67) - &:after - transform: rotate(55deg) scale(1) - &:before - border-width: 0 - transform: scale(1) - transition: transform 0.5s, border-width 0.5s 0.5s -input.emutton-hidden:checked + .emutton:after, -input.emutton-hidden:checked + .emutton em.oji:after - transform: scale(1) - opacity: 0 - background-size: 0 0 - transition: transform 0.5s 0.5s, opacity 0.4s 0.9s, background-size 0.5s 0.9s diff --git a/style/form/file.sass b/style/form/file.sass deleted file mode 100755 index 8d13fe4..0000000 --- a/style/form/file.sass +++ /dev/null @@ -1,182 +0,0 @@ -$file-border-color: $border !default -$file-radius: $radius !default - -$file-cta-background-color: $scheme-main-ter !default -$file-cta-color: $text !default -$file-cta-hover-color: $text-strong !default -$file-cta-active-color: $text-strong !default - -$file-name-border-color: $border !default -$file-name-border-style: solid !default -$file-name-border-width: 1px 1px 1px 0 !default -$file-name-max-width: 16em !default - -$file-colors: $form-colors !default - -input[type=file], .file - @extend %unselectable - display: flex - justify-content: flex-start - // Colors - @each $name, $pair in $file-colors - $color: nth($pair, 1) - $color-invert: nth($pair, 2) - &.is-#{$name} - .file-cta - background-color: $color - border-color: transparent - color: $color-invert - &:hover, - &.is-hovered - .file-cta - background-color: cocoDarken($color, 2.5%) - border-color: transparent - color: $color-invert - &:focus, - &.is-focused - .file-cta - border-color: transparent - box-shadow: 0 0 0.5em cocoRgba($color, 0.25) - color: $color-invert - &:active, - &.is-active - .file-cta - background-color: cocoDarken($color, 5%) - border-color: transparent - color: $color-invert - // Sizes - &.is-small - font-size: $size-small - &.is-normal - font-size: $size-normal - &.is-medium - font-size: $size-medium - .file-icon - em.oji - font-size: 21px - &.is-large - font-size: $size-large - .file-icon - em.oji - font-size: 28px - // Modifiers - &.has-name - .file-cta - border-bottom-right-radius: 0 - border-top-right-radius: 0 - .file-name - border-bottom-left-radius: 0 - border-top-left-radius: 0 - &.is-empty - .file-cta - border-radius: $file-radius - .file-name - display: none - &.is-boxed - .file-label - flex-direction: column - .file-cta - flex-direction: column - height: auto - padding: 1em 3em - .file-name - border-width: 0 1px 1px - .file-icon - height: 1.5em - width: 1.5em - em.oji - font-size: 21px - &.is-small - .file-icon em.oji - font-size: 14px - &.is-medium - .file-icon em.oji - font-size: 28px - &.is-large - .file-icon em.oji - font-size: 35px - &.has-name - .file-cta - border-radius: $file-radius $file-radius 0 0 - .file-name - border-radius: 0 0 $file-radius $file-radius - border-width: 0 1px 1px - &.is-centered - justify-content: center - &.is-fullwidth - .file-label - width: 100% - .file-name - flex-grow: 1 - max-width: none - &.is-right - justify-content: flex-end - .file-cta - border-radius: 0 $file-radius $file-radius 0 - .file-name - border-radius: $file-radius 0 0 $file-radius - border-width: 1px 0 1px 1px - order: -1 - -.file-label - align-items: stretch - display: flex - cursor: pointer - justify-content: flex-start - overflow: hidden - position: relative - &:hover - .file-cta - background-color: cocoDarken($file-cta-background-color, 2.5%) - color: $file-cta-hover-color - .file-name - border-color: cocoDarken($file-name-border-color, 2.5%) - &:active - .file-cta - background-color: cocoDarken($file-cta-background-color, 5%) - color: $file-cta-active-color - .file-name - border-color: cocoDarken($file-name-border-color, 5%) - -.file-input - height: 100% - left: 0 - opacity: 0 - outline: none - position: absolute - top: 0 - width: 100% - -.file-cta, -.file-name - @extend %control - border-color: $file-border-color - border-radius: $file-radius - font-size: 1em - padding-left: 1em - padding-right: 1em - white-space: nowrap - -.file-cta - background-color: $file-cta-background-color - color: $file-cta-color - -.file-name - border-color: $file-name-border-color - border-style: $file-name-border-style - border-width: $file-name-border-width - display: block - max-width: $file-name-max-width - overflow: hidden - text-align: inherit - text-overflow: ellipsis - -.file-icon - align-items: center - display: flex - height: 1em - justify-content: center - +ltr-property("margin", 0.5em) - width: 1em - em.oji - font-size: 14px diff --git a/style/form/input-textarea.sass b/style/form/input-textarea.sass deleted file mode 100755 index b9b4f51..0000000 --- a/style/form/input-textarea.sass +++ /dev/null @@ -1,66 +0,0 @@ -$textarea-padding: $control-padding-horizontal !default -$textarea-max-height: 40em !default -$textarea-min-height: 8em !default - -$textarea-colors: $form-colors !default - -%input-textarea - @extend %input - box-shadow: $input-shadow - max-width: 100% - width: 100% - &[readonly] - box-shadow: none - // Colors - @each $name, $pair in $textarea-colors - $color: nth($pair, 1) - &.is-#{$name} - border-color: $color - &:focus, - &.is-focused, - &:active, - &.is-active - box-shadow: $input-focus-box-shadow-size cocoRgba($color, 0.25) - // Sizes - &.is-small - +control-small - &.is-medium - +control-medium - &.is-large - +control-large - // Modifiers - &.is-fullwidth - display: block - width: 100% - &.is-inline - display: inline - width: auto - -.input - @extend %input-textarea - &.is-rounded - border-radius: $radius-rounded - padding-left: calc(#{$control-padding-horizontal} + 0.375em) - padding-right: calc(#{$control-padding-horizontal} + 0.375em) - &.is-static - background-color: transparent - border-color: transparent - box-shadow: none - padding-left: 0 - padding-right: 0 - -.textarea - @extend %input-textarea - display: block - max-width: 100% - min-width: 100% - padding: $textarea-padding - resize: vertical - &:not([rows]) - max-height: $textarea-max-height - min-height: $textarea-min-height - &[rows] - height: initial - // Modifiers - &.has-fixed-size - resize: none diff --git a/style/form/select.sass b/style/form/select.sass deleted file mode 100755 index dab9938..0000000 --- a/style/form/select.sass +++ /dev/null @@ -1,88 +0,0 @@ -$select-colors: $form-colors !default - -.select - display: inline-block - max-width: 100% - position: relative - vertical-align: top - &:not(.is-multiple) - height: $input-height - &:not(.is-multiple):not(.is-loading) - &::after - @extend %arrow - border-color: $input-arrow - +ltr-position(1.125em) - z-index: 4 - &.is-rounded - select - border-radius: $radius-rounded - +ltr-property("padding", 1em, false) - select - @extend %input - cursor: pointer - display: block - font-size: 1em - max-width: 100% - outline: none - &::-ms-expand - display: none - &[disabled]:hover, - fieldset[disabled] &:hover - border-color: $input-disabled-border-color - &:not([multiple]) - +ltr-property("padding", 2.5em) - &[multiple] - height: auto - padding: 0 - option - padding: 0.5em 1em - // States - &:not(.is-multiple):not(.is-loading):hover - &::after - border-color: $input-hover-color - // Colors - @each $name, $pair in $select-colors - $color: nth($pair, 1) - &.is-#{$name} - &:not(:hover)::after - border-color: $color - select - border-color: $color - &:hover, - &.is-hovered - border-color: cocoDarken($color, 5%) - &:focus, - &.is-focused, - &:active, - &.is-active - box-shadow: $input-focus-box-shadow-size cocoRgba($color, 0.25) - // Sizes - &.is-small - +control-small - &.is-medium - +control-medium - &.is-large - +control-large - // Modifiers - &.is-disabled - &::after - border-color: $input-disabled-color !important - opacity: 0.5 - &.is-fullwidth - width: 100% - select - width: 100% - &.is-loading - &::after - @extend %loader - margin-top: 0 - position: absolute - +ltr-position(0.625em) - top: 0.625em - transform: none - &.is-small:after - font-size: $size-small - &.is-medium:after - font-size: $size-medium - &.is-large:after - font-size: $size-large diff --git a/style/form/shared.sass b/style/form/shared.sass deleted file mode 100755 index 9e8094b..0000000 --- a/style/form/shared.sass +++ /dev/null @@ -1,60 +0,0 @@ -@import "../utilities/controls" -@import "../utilities/mixins" - -$form-colors: $colors !default - -$input-color: $text-strong !default -$input-background-color: $scheme-main !default -$input-border-color: $border !default -$input-height: $control-height !default -$input-shadow: inset 0 0.0625em 0.125em rgba($scheme-invert, 0.05) !default -$input-placeholder-color: cocoRgba($input-color, 0.3) !default - -$input-hover-color: $text-strong !default -$input-hover-border-color: $border-hover !default - -$input-focus-color: $text-strong !default -$input-focus-border-color: $link !default -$input-focus-box-shadow-size: 0 0 0 0.125em !default -$input-focus-box-shadow-color: cocoRgba($link, 0.25) !default - -$input-disabled-color: $text-light !default -$input-disabled-background-color: var(--color-background) !default -$input-disabled-border-color: var(--color-background) !default -$input-disabled-placeholder-color: cocoRgba($input-disabled-color, 0.3) !default - -$input-arrow: $link !default - -$input-icon-color: $border !default -$input-icon-active-color: $text !default - -$input-radius: $radius !default - -=input - @extend %control - background-color: $input-background-color - border-color: $input-border-color - border-radius: $input-radius - color: $input-color - +placeholder - color: $input-placeholder-color - &:hover, - &.is-hovered - border-color: $input-hover-border-color - &:focus, - &.is-focused, - &:active, - &.is-active - border-color: $input-focus-border-color - box-shadow: $input-focus-box-shadow-size $input-focus-box-shadow-color - &[disabled], - fieldset[disabled] & - background-color: $input-disabled-background-color - border-color: $input-disabled-border-color - box-shadow: none - color: $input-disabled-color - +placeholder - color: $input-disabled-placeholder-color - -%input - +input diff --git a/style/form/toggle.sass b/style/form/toggle.sass deleted file mode 100644 index 7331a30..0000000 --- a/style/form/toggle.sass +++ /dev/null @@ -1,94 +0,0 @@ -$toggle-width: 60px -$toggle-height: 34px -$toggle-space: 4px -$toggle-inner: 26px -$toggle-colors: $colors !default - -.toggle - position: relative - display: inline-block - width: $toggle-width - height: $toggle-height - input[type=checkbox] - display: none - &:checked + .slider - background-color: var(--primary) - &:focus + .slider - box-shadow: 0 0 1px var(--primary) - &:checked + .slider:before - -webkit-transform: translateX($toggle-inner) - -ms-transform: translateX($toggle-inner) - transform: translateX($toggle-inner) - .slider - position: absolute - cursor: pointer - top: 0 - left: 0 - right: 0 - bottom: 0 - background-color: var(--color-grey) - -webkit-transition: .4s - transition: .4s - &:before - position: absolute - content: "" - height: $toggle-inner - width: $toggle-inner - left: $toggle-space - bottom: $toggle-space - background-color: var(--color-white) - -webkit-transition: .4s - transition: .4s - &.is-rounded - .slider - border-radius: $toggle-height - &:before - border-radius: 50% - &.is-small - width: calc(#{$toggle-width}*0.6) - height: calc(#{$toggle-height}*0.6) - input - &:checked + .slider:before - -webkit-transform: translateX(calc(#{$toggle-inner}*0.6)) - -ms-transform: translateX(calc(#{$toggle-inner}*0.6)) - transform: translateX(calc(#{$toggle-inner}*0.6)) - > span - &:before - height: calc(#{$toggle-inner}*0.6) - width: calc(#{$toggle-inner}*0.6) - left: calc(#{$toggle-space}*0.6) - bottom: calc(#{$toggle-space}*0.6) - &.is-medium - width: calc(#{$toggle-width}*0.75) - height: calc(#{$toggle-height}*0.75) - input - &:checked + .slider:before - -webkit-transform: translateX(calc(#{$toggle-inner}*0.75)) - -ms-transform: translateX(calc(#{$toggle-inner}*0.75)) - transform: translateX(calc(#{$toggle-inner}*0.75)) - > span - &:before - height: calc(#{$toggle-inner}*0.75) - width: calc(#{$toggle-inner}*0.75) - left: calc(#{$toggle-space}*0.75) - bottom: calc(#{$toggle-space}*0.75) - &.is-large - width: calc(#{$toggle-width}*1.5) - height: calc(#{$toggle-height}*1.5) - input - &:checked + .slider:before - -webkit-transform: translateX(calc(#{$toggle-inner}*1.5)) - -ms-transform: translateX(calc(#{$toggle-inner}*1.5)) - transform: translateX(calc(#{$toggle-inner}*1.5)) - > span - &:before - height: calc(#{$toggle-inner}*1.5) - width: calc(#{$toggle-inner}*1.5) - left: calc(#{$toggle-space}*1.5) - bottom: calc(#{$toggle-space}*1.5) - @each $name, $pair in $toggle-colors - $color: nth($pair, 1) - $color-invert: nth($pair, 2) - &.is-#{$name} - .slider - background-color: $color diff --git a/style/form/tools.sass b/style/form/tools.sass deleted file mode 100755 index c60c0ac..0000000 --- a/style/form/tools.sass +++ /dev/null @@ -1,220 +0,0 @@ -$label-color: $text-strong !default -$label-weight: $weight-bold !default - -$help-size: $size-small !default - -$label-colors: $form-colors !default - -.label - color: $label-color - display: block - font-size: $size-normal - font-weight: $label-weight - cursor: pointer - &:not(:last-child) - margin-bottom: 0.5em - // Sizes - &.is-small - font-size: $size-small - &.is-medium - font-size: $size-medium - &.is-large - font-size: $size-large - -.help - display: block - font-size: $help-size - margin-top: 0.25rem - @each $name, $pair in $label-colors - $color: nth($pair, 1) - &.is-#{$name} - color: $color - -// Containers - -.field - &:not(:last-child) - margin-bottom: 0.75rem - // Modifiers - &.has-addons - display: flex - justify-content: flex-start - .control - &:not(:last-child) - +ltr-property("margin", -1px) - &:not(:first-child):not(:last-child) - .button, - .input, - .select select - border-radius: 0 - &:first-child:not(:only-child) - .button, - .input, - .select select - +ltr - border-bottom-right-radius: 0 - border-top-right-radius: 0 - +rtl - border-bottom-left-radius: 0 - border-top-left-radius: 0 - &:last-child:not(:only-child) - .button, - .input, - .select select - +ltr - border-bottom-left-radius: 0 - border-top-left-radius: 0 - +rtl - border-bottom-right-radius: 0 - border-top-right-radius: 0 - &.is-fullwidth - width: -moz-available - width: -webkit-fill-available - width: stretch - .button, - .input, - .select select - &:not([disabled]) - &:hover, - &.is-hovered - z-index: 2 - &:focus, - &.is-focused, - &:active, - &.is-active - z-index: 3 - &:hover - z-index: 4 - &.is-expanded - flex-grow: 1 - flex-shrink: 1 - &.has-addons-centered - justify-content: center - &.has-addons-right - justify-content: flex-end - &.has-addons-fullwidth - .control - flex-grow: 1 - flex-shrink: 0 - &.is-grouped - display: flex - justify-content: flex-start - & > .control - flex-shrink: 0 - &:not(:last-child) - margin-bottom: 0 - +ltr-property("margin", 0.75rem) - &.is-expanded - flex-grow: 1 - flex-shrink: 1 - &.is-grouped-centered - justify-content: center - &.is-grouped-right - justify-content: flex-end - &.is-grouped-multiline - flex-wrap: wrap - & > .control - &:last-child, - &:not(:last-child) - margin-bottom: 0.75rem - &:last-child - margin-bottom: -0.75rem - &:not(:last-child) - margin-bottom: 0 - &.is-horizontal - +tablet - display: flex - -.field-label - .label - font-size: inherit - +mobile - margin-bottom: 0.5rem - +tablet - flex-basis: 0 - flex-grow: 1 - flex-shrink: 0 - +ltr-property("margin", 1.5rem) - text-align: right - &.is-small - font-size: $size-small - padding-top: 0.375em - &.is-normal - padding-top: 0.375em - &.is-medium - font-size: $size-medium - padding-top: 0.375em - &.is-large - font-size: $size-large - padding-top: 0.375em - -.field-body - .field .field - margin-bottom: 0 - +tablet - display: flex - flex-basis: 0 - flex-grow: 5 - flex-shrink: 1 - .field - margin-bottom: 0 - & > .field - flex-shrink: 1 - &:not(.is-narrow) - flex-grow: 1 - &:not(:last-child) - +ltr-property("margin", 0.75rem) - -.control - box-sizing: border-box - clear: both - font-size: $size-normal - position: relative - text-align: inherit - // Modifiers - &.has-icons-left, - &.has-icons-right - .input, - .select - &:focus - & ~ .icon - color: $input-icon-active-color - &.is-small ~ .icon - font-size: $size-small - &.is-medium ~ .icon - font-size: $size-medium - &.is-large ~ .icon - font-size: $size-large - .icon - color: $input-icon-color - height: $input-height - pointer-events: none - position: absolute - top: 0 - width: $input-height - z-index: 4 - &.has-icons-left - .input, - .select select - padding-left: $input-height - .icon.is-left - left: 0 - &.has-icons-right - .input, - .select select - padding-right: $input-height - .icon.is-right - right: 0 - &.is-loading - &::after - @extend %loader - position: absolute !important - +ltr-position(0.625em) - top: 0.625em - z-index: 4 - &.is-small:after - font-size: $size-small - &.is-medium:after - font-size: $size-medium - &.is-large:after - font-size: $size-large diff --git a/style/grid/_all.sass b/style/grid/_all.sass deleted file mode 100755 index 438a14d..0000000 --- a/style/grid/_all.sass +++ /dev/null @@ -1,5 +0,0 @@ -@charset "utf-8" - -@import "columns" -@import "grid" -@import "tiles" diff --git a/style/grid/columns.sass b/style/grid/columns.sass deleted file mode 100755 index 989ca2f..0000000 --- a/style/grid/columns.sass +++ /dev/null @@ -1,513 +0,0 @@ -@import "../utilities/mixins" - -$column-gap: 0.75rem !default - -.column - display: block - flex-basis: 0 - flex-grow: 1 - flex-shrink: 1 - padding: $column-gap - .columns.is-mobile > &.is-narrow - flex: none - width: unset - .columns.is-mobile > &.is-full - flex: none - width: 100% - .columns.is-mobile > &.is-three-quarters - flex: none - width: 75% - .columns.is-mobile > &.is-two-thirds - flex: none - width: 66.6666% - .columns.is-mobile > &.is-half - flex: none - width: 50% - .columns.is-mobile > &.is-one-third - flex: none - width: 33.3333% - .columns.is-mobile > &.is-one-quarter - flex: none - width: 25% - .columns.is-mobile > &.is-one-fifth - flex: none - width: 20% - .columns.is-mobile > &.is-two-fifths - flex: none - width: 40% - .columns.is-mobile > &.is-three-fifths - flex: none - width: 60% - .columns.is-mobile > &.is-four-fifths - flex: none - width: 80% - .columns.is-mobile > &.is-offset-three-quarters - +ltr-property("margin", 75%, false) - .columns.is-mobile > &.is-offset-two-thirds - +ltr-property("margin", 66.6666%, false) - .columns.is-mobile > &.is-offset-half - +ltr-property("margin", 50%, false) - .columns.is-mobile > &.is-offset-one-third - +ltr-property("margin", 33.3333%, false) - .columns.is-mobile > &.is-offset-one-quarter - +ltr-property("margin", 25%, false) - .columns.is-mobile > &.is-offset-one-fifth - +ltr-property("margin", 20%, false) - .columns.is-mobile > &.is-offset-two-fifths - +ltr-property("margin", 40%, false) - .columns.is-mobile > &.is-offset-three-fifths - +ltr-property("margin", 60%, false) - .columns.is-mobile > &.is-offset-four-fifths - +ltr-property("margin", 80%, false) - @for $i from 0 through 12 - .columns.is-mobile > &.is-#{$i} - flex: none - width: percentage(divide($i, 12)) - .columns.is-mobile > &.is-offset-#{$i} - +ltr-property("margin", percentage(divide($i, 12)), false) - +mobile - &.is-narrow-mobile - flex: none - width: unset - &.is-full-mobile - flex: none - width: 100% - &.is-three-quarters-mobile - flex: none - width: 75% - &.is-two-thirds-mobile - flex: none - width: 66.6666% - &.is-half-mobile - flex: none - width: 50% - &.is-one-third-mobile - flex: none - width: 33.3333% - &.is-one-quarter-mobile - flex: none - width: 25% - &.is-one-fifth-mobile - flex: none - width: 20% - &.is-two-fifths-mobile - flex: none - width: 40% - &.is-three-fifths-mobile - flex: none - width: 60% - &.is-four-fifths-mobile - flex: none - width: 80% - &.is-offset-three-quarters-mobile - +ltr-property("margin", 75%, false) - &.is-offset-two-thirds-mobile - +ltr-property("margin", 66.6666%, false) - &.is-offset-half-mobile - +ltr-property("margin", 50%, false) - &.is-offset-one-third-mobile - +ltr-property("margin", 33.3333%, false) - &.is-offset-one-quarter-mobile - +ltr-property("margin", 25%, false) - &.is-offset-one-fifth-mobile - +ltr-property("margin", 20%, false) - &.is-offset-two-fifths-mobile - +ltr-property("margin", 40%, false) - &.is-offset-three-fifths-mobile - +ltr-property("margin", 60%, false) - &.is-offset-four-fifths-mobile - +ltr-property("margin", 80%, false) - @for $i from 0 through 12 - &.is-#{$i}-mobile - flex: none - width: percentage(divide($i, 12)) - &.is-offset-#{$i}-mobile - +ltr-property("margin", percentage(divide($i, 12)), false) - +tablet - &.is-narrow, - &.is-narrow-tablet - flex: none - width: unset - &.is-full, - &.is-full-tablet - flex: none - width: 100% - &.is-three-quarters, - &.is-three-quarters-tablet - flex: none - width: 75% - &.is-two-thirds, - &.is-two-thirds-tablet - flex: none - width: 66.6666% - &.is-half, - &.is-half-tablet - flex: none - width: 50% - &.is-one-third, - &.is-one-third-tablet - flex: none - width: 33.3333% - &.is-one-quarter, - &.is-one-quarter-tablet - flex: none - width: 25% - &.is-one-fifth, - &.is-one-fifth-tablet - flex: none - width: 20% - &.is-two-fifths, - &.is-two-fifths-tablet - flex: none - width: 40% - &.is-three-fifths, - &.is-three-fifths-tablet - flex: none - width: 60% - &.is-four-fifths, - &.is-four-fifths-tablet - flex: none - width: 80% - &.is-offset-three-quarters, - &.is-offset-three-quarters-tablet - +ltr-property("margin", 75%, false) - &.is-offset-two-thirds, - &.is-offset-two-thirds-tablet - +ltr-property("margin", 66.6666%, false) - &.is-offset-half, - &.is-offset-half-tablet - +ltr-property("margin", 50%, false) - &.is-offset-one-third, - &.is-offset-one-third-tablet - +ltr-property("margin", 33.3333%, false) - &.is-offset-one-quarter, - &.is-offset-one-quarter-tablet - +ltr-property("margin", 25%, false) - &.is-offset-one-fifth, - &.is-offset-one-fifth-tablet - +ltr-property("margin", 20%, false) - &.is-offset-two-fifths, - &.is-offset-two-fifths-tablet - +ltr-property("margin", 40%, false) - &.is-offset-three-fifths, - &.is-offset-three-fifths-tablet - +ltr-property("margin", 60%, false) - &.is-offset-four-fifths, - &.is-offset-four-fifths-tablet - +ltr-property("margin", 80%, false) - @for $i from 0 through 12 - &.is-#{$i}, - &.is-#{$i}-tablet - flex: none - width: percentage(divide($i, 12)) - &.is-offset-#{$i}, - &.is-offset-#{$i}-tablet - +ltr-property("margin", percentage(divide($i, 12)), false) - +touch - &.is-narrow-touch - flex: none - width: unset - &.is-full-touch - flex: none - width: 100% - &.is-three-quarters-touch - flex: none - width: 75% - &.is-two-thirds-touch - flex: none - width: 66.6666% - &.is-half-touch - flex: none - width: 50% - &.is-one-third-touch - flex: none - width: 33.3333% - &.is-one-quarter-touch - flex: none - width: 25% - &.is-one-fifth-touch - flex: none - width: 20% - &.is-two-fifths-touch - flex: none - width: 40% - &.is-three-fifths-touch - flex: none - width: 60% - &.is-four-fifths-touch - flex: none - width: 80% - &.is-offset-three-quarters-touch - +ltr-property("margin", 75%, false) - &.is-offset-two-thirds-touch - +ltr-property("margin", 66.6666%, false) - &.is-offset-half-touch - +ltr-property("margin", 50%, false) - &.is-offset-one-third-touch - +ltr-property("margin", 33.3333%, false) - &.is-offset-one-quarter-touch - +ltr-property("margin", 25%, false) - &.is-offset-one-fifth-touch - +ltr-property("margin", 20%, false) - &.is-offset-two-fifths-touch - +ltr-property("margin", 40%, false) - &.is-offset-three-fifths-touch - +ltr-property("margin", 60%, false) - &.is-offset-four-fifths-touch - +ltr-property("margin", 80%, false) - @for $i from 0 through 12 - &.is-#{$i}-touch - flex: none - width: percentage(divide($i, 12)) - &.is-offset-#{$i}-touch - +ltr-property("margin", percentage(divide($i, 12)), false) - +desktop - &.is-narrow-desktop - flex: none - width: unset - &.is-full-desktop - flex: none - width: 100% - &.is-three-quarters-desktop - flex: none - width: 75% - &.is-two-thirds-desktop - flex: none - width: 66.6666% - &.is-half-desktop - flex: none - width: 50% - &.is-one-third-desktop - flex: none - width: 33.3333% - &.is-one-quarter-desktop - flex: none - width: 25% - &.is-one-fifth-desktop - flex: none - width: 20% - &.is-two-fifths-desktop - flex: none - width: 40% - &.is-three-fifths-desktop - flex: none - width: 60% - &.is-four-fifths-desktop - flex: none - width: 80% - &.is-offset-three-quarters-desktop - +ltr-property("margin", 75%, false) - &.is-offset-two-thirds-desktop - +ltr-property("margin", 66.6666%, false) - &.is-offset-half-desktop - +ltr-property("margin", 50%, false) - &.is-offset-one-third-desktop - +ltr-property("margin", 33.3333%, false) - &.is-offset-one-quarter-desktop - +ltr-property("margin", 25%, false) - &.is-offset-one-fifth-desktop - +ltr-property("margin", 20%, false) - &.is-offset-two-fifths-desktop - +ltr-property("margin", 40%, false) - &.is-offset-three-fifths-desktop - +ltr-property("margin", 60%, false) - &.is-offset-four-fifths-desktop - +ltr-property("margin", 80%, false) - @for $i from 0 through 12 - &.is-#{$i}-desktop - flex: none - width: percentage(divide($i, 12)) - &.is-offset-#{$i}-desktop - +ltr-property("margin", percentage(divide($i, 12)), false) - +widescreen - &.is-narrow-widescreen - flex: none - width: unset - &.is-full-widescreen - flex: none - width: 100% - &.is-three-quarters-widescreen - flex: none - width: 75% - &.is-two-thirds-widescreen - flex: none - width: 66.6666% - &.is-half-widescreen - flex: none - width: 50% - &.is-one-third-widescreen - flex: none - width: 33.3333% - &.is-one-quarter-widescreen - flex: none - width: 25% - &.is-one-fifth-widescreen - flex: none - width: 20% - &.is-two-fifths-widescreen - flex: none - width: 40% - &.is-three-fifths-widescreen - flex: none - width: 60% - &.is-four-fifths-widescreen - flex: none - width: 80% - &.is-offset-three-quarters-widescreen - +ltr-property("margin", 75%, false) - &.is-offset-two-thirds-widescreen - +ltr-property("margin", 66.6666%, false) - &.is-offset-half-widescreen - +ltr-property("margin", 50%, false) - &.is-offset-one-third-widescreen - +ltr-property("margin", 33.3333%, false) - &.is-offset-one-quarter-widescreen - +ltr-property("margin", 25%, false) - &.is-offset-one-fifth-widescreen - +ltr-property("margin", 20%, false) - &.is-offset-two-fifths-widescreen - +ltr-property("margin", 40%, false) - &.is-offset-three-fifths-widescreen - +ltr-property("margin", 60%, false) - &.is-offset-four-fifths-widescreen - +ltr-property("margin", 80%, false) - @for $i from 0 through 12 - &.is-#{$i}-widescreen - flex: none - width: percentage(divide($i, 12)) - &.is-offset-#{$i}-widescreen - +ltr-property("margin", percentage(divide($i, 12)), false) - +fullhd - &.is-narrow-fullhd - flex: none - width: unset - &.is-full-fullhd - flex: none - width: 100% - &.is-three-quarters-fullhd - flex: none - width: 75% - &.is-two-thirds-fullhd - flex: none - width: 66.6666% - &.is-half-fullhd - flex: none - width: 50% - &.is-one-third-fullhd - flex: none - width: 33.3333% - &.is-one-quarter-fullhd - flex: none - width: 25% - &.is-one-fifth-fullhd - flex: none - width: 20% - &.is-two-fifths-fullhd - flex: none - width: 40% - &.is-three-fifths-fullhd - flex: none - width: 60% - &.is-four-fifths-fullhd - flex: none - width: 80% - &.is-offset-three-quarters-fullhd - +ltr-property("margin", 75%, false) - &.is-offset-two-thirds-fullhd - +ltr-property("margin", 66.6666%, false) - &.is-offset-half-fullhd - +ltr-property("margin", 50%, false) - &.is-offset-one-third-fullhd - +ltr-property("margin", 33.3333%, false) - &.is-offset-one-quarter-fullhd - +ltr-property("margin", 25%, false) - &.is-offset-one-fifth-fullhd - +ltr-property("margin", 20%, false) - &.is-offset-two-fifths-fullhd - +ltr-property("margin", 40%, false) - &.is-offset-three-fifths-fullhd - +ltr-property("margin", 60%, false) - &.is-offset-four-fifths-fullhd - +ltr-property("margin", 80%, false) - @for $i from 0 through 12 - &.is-#{$i}-fullhd - flex: none - width: percentage(divide($i, 12)) - &.is-offset-#{$i}-fullhd - +ltr-property("margin", percentage(divide($i, 12)), false) - -.columns - +ltr-property("margin", (-$column-gap), false) - +ltr-property("margin", (-$column-gap)) - margin-top: (-$column-gap) - &:last-child - margin-bottom: (-$column-gap) - &:not(:last-child) - margin-bottom: calc(1.5rem - #{$column-gap}) - // Modifiers - &.is-centered - justify-content: center - &.is-gapless - +ltr-property("margin", 0, false) - +ltr-property("margin", 0) - margin-top: 0 - & > .column - margin: 0 - padding: 0 !important - &:not(:last-child) - margin-bottom: 1.5rem - &:last-child - margin-bottom: 0 - &.is-mobile - display: flex - &.is-multiline - flex-wrap: wrap - &.is-vcentered - align-items: center - // Responsiveness - +tablet - &:not(.is-desktop) - display: flex - +desktop - // Modifiers - &.is-desktop - display: flex - -@if $variable-columns - .columns.is-variable - --columnGap: 0.75rem - +ltr-property("margin", calc(-1 * var(--columnGap)), false) - +ltr-property("margin", calc(-1 * var(--columnGap))) - > .column - padding-left: var(--columnGap) - padding-right: var(--columnGap) - @for $i from 0 through 8 - &.is-#{$i} - --columnGap: #{$i * 0.25rem} - +mobile - &.is-#{$i}-mobile - --columnGap: #{$i * 0.25rem} - +tablet - &.is-#{$i}-tablet - --columnGap: #{$i * 0.25rem} - +tablet-only - &.is-#{$i}-tablet-only - --columnGap: #{$i * 0.25rem} - +touch - &.is-#{$i}-touch - --columnGap: #{$i * 0.25rem} - +desktop - &.is-#{$i}-desktop - --columnGap: #{$i * 0.25rem} - +desktop-only - &.is-#{$i}-desktop-only - --columnGap: #{$i * 0.25rem} - +widescreen - &.is-#{$i}-widescreen - --columnGap: #{$i * 0.25rem} - +widescreen-only - &.is-#{$i}-widescreen-only - --columnGap: #{$i * 0.25rem} - +fullhd - &.is-#{$i}-fullhd - --columnGap: #{$i * 0.25rem} diff --git a/style/grid/grid.sass b/style/grid/grid.sass deleted file mode 100644 index c84cbb1..0000000 --- a/style/grid/grid.sass +++ /dev/null @@ -1,105 +0,0 @@ -$max-column-count: 16 - -.grid - --grid-gap: 1.5rem - --column-count: 12 - --grid-gap-count: calc(var(--column-count) - 1) - --grid-column-min: calc(calc(100% / var(--column-count)) - calc(var(--grid-gap-count) / var(--column-count) * var(--grid-column-gap, var(--grid-gap)))) - --cell-column-span: 1 - --cell-row-span: 1 - display: grid - grid-gap: var(--grid-gap) - grid-column-gap: var(--grid-column-gap, var(--grid-gap)) - grid-row-gap: var(--grid-row-gap, var(--grid-gap)) - grid-template-columns: repeat(auto-fit, minmax(var(--grid-column-min), 1fr)) - grid-template-rows: auto - +mobile - --column-count: 2 - +tablet - --column-count: 4 - +desktop - --column-count: 8 - +widescreen - --column-count: 12 - +fullhd - --column-count: 16 - -=cell-properties($suffix: '') - @for $i from 1 through $max-column-count - $name: $i + $suffix - &.is-col-start-#{$name} - --cell-column-start: #{$i} - &.is-col-from-end-#{$name} - --cell-column-start: #{$i * -1} - &.is-col-span-#{$name} - --cell-column-span: #{$i} - &.is-row-start-#{$name} - --cell-row-start: #{$i} - &.is-row-from-end-#{$name} - --cell-row-start: #{$i * -1} - &.is-row-span-#{$name} - --cell-row-span: #{$i} - -.cell - background-color: lavender - border-radius: 1em - grid-column-end: span var(--cell-column-span) - grid-column-start: var(--cell-column-start) - grid-row-end: span var(--cell-row-span) - grid-row-start: var(--cell-row-start) - padding: 0.75em - // Sizes - &.is-col-start-end - --cell-column-start: -1 - &.is-row-start-end - --cell-row-start: -1 - +cell-properties - +mobile - +cell-properties('-mobile') - +tablet - +cell-properties('-tablet') - +tablet-only - +cell-properties('-tablet-only') - +desktop - +cell-properties('-desktop') - +desktop-only - +cell-properties('-desktop-only') - +widescreen - +cell-properties('-widescreen') - +widescreen-only - +cell-properties('-widescreen-only') - +fullhd - +cell-properties('-fullhd') - -=grid-properties($suffix: '') - .has-1-cols#{$suffix} - --column-count: 1 - @for $i from 2 through $max-column-count - .has-#{$i}-cols#{$suffix} - --column-count: #{$i} - -+grid-properties - -+mobile - +grid-properties('-mobile') - -+tablet - +grid-properties('-tablet') - -+tablet-only - +grid-properties('-tablet-only') - -+desktop - +grid-properties('-desktop') - -+desktop-only - +grid-properties('-desktop-only') - -+widescreen - +grid-properties('-widescreen') - -+widescreen-only - +grid-properties('-widescreen-only') - -+fullhd - +grid-properties('-fullhd') diff --git a/style/grid/tiles.sass b/style/grid/tiles.sass deleted file mode 100755 index d41446a..0000000 --- a/style/grid/tiles.sass +++ /dev/null @@ -1,36 +0,0 @@ -@import "../utilities/mixins" - -$tile-spacing: 0.75rem !default - -.tile - align-items: stretch - display: block - flex-basis: 0 - flex-grow: 1 - flex-shrink: 1 - min-height: min-content - // Modifiers - &.is-ancestor - margin-left: $tile-spacing * -1 - margin-right: $tile-spacing * -1 - margin-top: $tile-spacing * -1 - &:last-child - margin-bottom: $tile-spacing * -1 - &:not(:last-child) - margin-bottom: $tile-spacing - &.is-child - margin: 0 !important - &.is-parent - padding: $tile-spacing - &.is-vertical - flex-direction: column - & > .tile.is-child:not(:last-child) - margin-bottom: 1.5rem !important - // Responsiveness - +tablet - &:not(.is-child) - display: flex - @for $i from 1 through 12 - &.is-#{$i} - flex: none - width: (divide($i, 12)) * 100% diff --git a/style/helpers/_all.sass b/style/helpers/_all.sass deleted file mode 100644 index 38ab602..0000000 --- a/style/helpers/_all.sass +++ /dev/null @@ -1,11 +0,0 @@ -@charset "utf-8" - -@import "color" -@import "flexbox" -@import "float" -@import "other" -@import "overflow" -@import "position" -@import "spacing" -@import "typography" -@import "visibility" diff --git a/style/helpers/color.sass b/style/helpers/color.sass deleted file mode 100644 index 42a985e..0000000 --- a/style/helpers/color.sass +++ /dev/null @@ -1,39 +0,0 @@ -@import "../utilities/derived-variables" - -@each $name, $pair in $colors - $color: nth($pair, 1) - .has-text-#{$name} - color: $color !important - a.has-text-#{$name} - &:hover, - &:focus - color: cocoDarken($color, 10%) !important - .has-background-#{$name} - background-color: $color !important - @if length($pair) >= 4 - $color-light: nth($pair, 3) - $color-dark: nth($pair, 4) - // Light - .has-text-#{$name}-light - color: $color-light !important - a.has-text-#{$name}-light - &:hover, - &:focus - color: cocoDarken($color-light, 10%) !important - .has-background-#{$name}-light - background-color: $color-light !important - // Dark - .has-text-#{$name}-dark - color: $color-dark !important - a.has-text-#{$name}-dark - &:hover, - &:focus - color: cocoLighten($color-dark, 10%) !important - .has-background-#{$name}-dark - background-color: $color-dark !important - -@each $name, $shade in $shades - .has-text-#{$name} - color: $shade !important - .has-background-#{$name} - background-color: $shade !important diff --git a/style/helpers/flexbox.sass b/style/helpers/flexbox.sass deleted file mode 100644 index 6139c14..0000000 --- a/style/helpers/flexbox.sass +++ /dev/null @@ -1,35 +0,0 @@ -$flex-direction-values: row, row-reverse, column, column-reverse -@each $value in $flex-direction-values - .is-flex-direction-#{$value} - flex-direction: $value !important - -$flex-wrap-values: nowrap, wrap, wrap-reverse -@each $value in $flex-wrap-values - .is-flex-wrap-#{$value} - flex-wrap: $value !important - -$justify-content-values: flex-start, flex-end, center, space-between, space-around, space-evenly, start, end, left, right -@each $value in $justify-content-values - .is-justify-content-#{$value} - justify-content: $value !important - -$align-content-values: flex-start, flex-end, center, space-between, space-around, space-evenly, stretch, start, end, baseline -@each $value in $align-content-values - .is-align-content-#{$value} - align-content: $value !important - -$align-items-values: stretch, flex-start, flex-end, center, baseline, start, end, self-start, self-end -@each $value in $align-items-values - .is-align-items-#{$value} - align-items: $value !important - -$align-self-values: auto, flex-start, flex-end, center, baseline, stretch -@each $value in $align-self-values - .is-align-self-#{$value} - align-self: $value !important - -$flex-operators: grow, shrink -@each $operator in $flex-operators - @for $i from 0 through 5 - .is-flex-#{$operator}-#{$i} - flex-#{$operator}: $i !important diff --git a/style/helpers/float.sass b/style/helpers/float.sass deleted file mode 100644 index 9a82288..0000000 --- a/style/helpers/float.sass +++ /dev/null @@ -1,10 +0,0 @@ -@import "../utilities/mixins" - -.is-clearfix - +clearfix - -.is-pulled-left - float: left !important - -.is-pulled-right - float: right !important diff --git a/style/helpers/other.sass b/style/helpers/other.sass deleted file mode 100644 index 19c1f2b..0000000 --- a/style/helpers/other.sass +++ /dev/null @@ -1,14 +0,0 @@ -@import "../utilities/mixins" - -.is-radiusless - border-radius: 0 !important - -.is-shadowless - box-shadow: none !important - -.is-clickable - cursor: pointer !important - pointer-events: all !important - -.is-unselectable - @extend %unselectable diff --git a/style/helpers/overflow.sass b/style/helpers/overflow.sass deleted file mode 100644 index e5a102a..0000000 --- a/style/helpers/overflow.sass +++ /dev/null @@ -1,2 +0,0 @@ -.is-clipped - overflow: hidden !important diff --git a/style/helpers/position.sass b/style/helpers/position.sass deleted file mode 100644 index 0583aa4..0000000 --- a/style/helpers/position.sass +++ /dev/null @@ -1,7 +0,0 @@ -@import "../utilities/mixins" - -.is-overlay - @extend %overlay - -.is-relative - position: relative !important diff --git a/style/helpers/spacing.sass b/style/helpers/spacing.sass deleted file mode 100644 index da0b9b9..0000000 --- a/style/helpers/spacing.sass +++ /dev/null @@ -1,31 +0,0 @@ -.is-marginless - margin: 0 !important - -.is-paddingless - padding: 0 !important - -$spacing-shortcuts: ("margin": "m", "padding": "p") !default -$spacing-directions: ("top": "t", "right": "r", "bottom": "b", "left": "l") !default -$spacing-horizontal: "x" !default -$spacing-vertical: "y" !default -$spacing-values: ("0": 0, "1": 0.25rem, "2": 0.5rem, "3": 0.75rem, "4": 1rem, "5": 1.5rem, "6": 3rem, "auto": auto) !default - -@each $property, $shortcut in $spacing-shortcuts - @each $name, $value in $spacing-values - // All directions - .#{$shortcut}-#{$name} - #{$property}: $value !important - // Cardinal directions - @each $direction, $suffix in $spacing-directions - .#{$shortcut}#{$suffix}-#{$name} - #{$property}-#{$direction}: $value !important - // Horizontal axis - @if $spacing-horizontal != null - .#{$shortcut}#{$spacing-horizontal}-#{$name} - #{$property}-left: $value !important - #{$property}-right: $value !important - // Vertical axis - @if $spacing-vertical != null - .#{$shortcut}#{$spacing-vertical}-#{$name} - #{$property}-top: $value !important - #{$property}-bottom: $value !important diff --git a/style/helpers/typography.sass b/style/helpers/typography.sass deleted file mode 100644 index 4cceb8d..0000000 --- a/style/helpers/typography.sass +++ /dev/null @@ -1,103 +0,0 @@ -@import "../utilities/mixins" - -=typography-size($target:'') - @each $size in $sizes - $i: index($sizes, $size) - .is-size-#{$i}#{if($target == '', '', '-' + $target)} - font-size: var(--size-#{$i}) !important - -+typography-size() - -+mobile - +typography-size('mobile') - -+tablet - +typography-size('tablet') - -+touch - +typography-size('touch') - -+desktop - +typography-size('desktop') - -+widescreen - +typography-size('widescreen') - -+fullhd - +typography-size('fullhd') - -$alignments: ('centered': 'center', 'justified': 'justify', 'left': 'left', 'right': 'right') - -@each $alignment, $text-align in $alignments - .has-text-#{$alignment} - text-align: #{$text-align} !important - -@each $alignment, $text-align in $alignments - +mobile - .has-text-#{$alignment}-mobile - text-align: #{$text-align} !important - +tablet - .has-text-#{$alignment}-tablet - text-align: #{$text-align} !important - +tablet-only - .has-text-#{$alignment}-tablet-only - text-align: #{$text-align} !important - +touch - .has-text-#{$alignment}-touch - text-align: #{$text-align} !important - +desktop - .has-text-#{$alignment}-desktop - text-align: #{$text-align} !important - +desktop-only - .has-text-#{$alignment}-desktop-only - text-align: #{$text-align} !important - +widescreen - .has-text-#{$alignment}-widescreen - text-align: #{$text-align} !important - +widescreen-only - .has-text-#{$alignment}-widescreen-only - text-align: #{$text-align} !important - +fullhd - .has-text-#{$alignment}-fullhd - text-align: #{$text-align} !important - -.is-capitalized - text-transform: capitalize !important - -.is-lowercase - text-transform: lowercase !important - -.is-uppercase - text-transform: uppercase !important - -.is-italic - font-style: italic !important - -.is-underlined - text-decoration: underline !important - -.has-text-weight-light - font-weight: $weight-light !important -.has-text-weight-normal - font-weight: $weight-normal !important -.has-text-weight-medium - font-weight: $weight-medium !important -.has-text-weight-semibold - font-weight: $weight-semibold !important -.has-text-weight-bold - font-weight: $weight-bold !important - -.is-family-primary - font-family: var(--family-primary) !important - -.is-family-secondary - font-family: var(--family-secondary) !important - -.is-family-sans-serif - font-family: var(--family-sans-serif) !important - -.is-family-monospace - font-family: var(--family-monospace) !important - -.is-family-code - font-family: var(--family-code) !important diff --git a/style/helpers/visibility.sass b/style/helpers/visibility.sass deleted file mode 100644 index 11c238a..0000000 --- a/style/helpers/visibility.sass +++ /dev/null @@ -1,122 +0,0 @@ -@import "../utilities/mixins" - -$displays: 'block' 'flex' 'inline' 'inline-block' 'inline-flex' - -@each $display in $displays - .is-#{$display} - display: #{$display} !important - +mobile - .is-#{$display}-mobile - display: #{$display} !important - +tablet - .is-#{$display}-tablet - display: #{$display} !important - +tablet-only - .is-#{$display}-tablet-only - display: #{$display} !important - +touch - .is-#{$display}-touch - display: #{$display} !important - +desktop - .is-#{$display}-desktop - display: #{$display} !important - +desktop-only - .is-#{$display}-desktop-only - display: #{$display} !important - +widescreen - .is-#{$display}-widescreen - display: #{$display} !important - +widescreen-only - .is-#{$display}-widescreen-only - display: #{$display} !important - +fullhd - .is-#{$display}-fullhd - display: #{$display} !important - -.is-hidden - display: none !important - -.is-sr-only - border: none !important - clip: rect(0, 0, 0, 0) !important - height: 0.01em !important - overflow: hidden !important - padding: 0 !important - position: absolute !important - white-space: nowrap !important - width: 0.01em !important - -+mobile - .is-hidden-mobile - display: none !important - -+tablet - .is-hidden-tablet - display: none !important - -+tablet-only - .is-hidden-tablet-only - display: none !important - -+touch - .is-hidden-touch - display: none !important - -+desktop - .is-hidden-desktop - display: none !important - -+desktop-only - .is-hidden-desktop-only - display: none !important - -+widescreen - .is-hidden-widescreen - display: none !important - -+widescreen-only - .is-hidden-widescreen-only - display: none !important - -+fullhd - .is-hidden-fullhd - display: none !important - -.is-invisible - visibility: hidden !important - -+mobile - .is-invisible-mobile - visibility: hidden !important - -+tablet - .is-invisible-tablet - visibility: hidden !important - -+tablet-only - .is-invisible-tablet-only - visibility: hidden !important - -+touch - .is-invisible-touch - visibility: hidden !important - -+desktop - .is-invisible-desktop - visibility: hidden !important - -+desktop-only - .is-invisible-desktop-only - visibility: hidden !important - -+widescreen - .is-invisible-widescreen - visibility: hidden !important - -+widescreen-only - .is-invisible-widescreen-only - visibility: hidden !important - -+fullhd - .is-invisible-fullhd - visibility: hidden !important diff --git a/style/layout/_all.sass b/style/layout/_all.sass deleted file mode 100755 index 8792926..0000000 --- a/style/layout/_all.sass +++ /dev/null @@ -1,5 +0,0 @@ -@charset "utf-8" - -@import "hero" -@import "section" -@import "footer" diff --git a/style/layout/footer.sass b/style/layout/footer.sass deleted file mode 100755 index e5e5ad0..0000000 --- a/style/layout/footer.sass +++ /dev/null @@ -1,11 +0,0 @@ -@import "../utilities/derived-variables" - -$footer-background-color: $scheme-main-bis !default -$footer-color: false !default -$footer-padding: 3rem 1.5rem !default - -.footer - background-color: $footer-background-color - padding: $footer-padding - @if $footer-color - color: $footer-color diff --git a/style/layout/hero.sass b/style/layout/hero.sass deleted file mode 100755 index 63643e0..0000000 --- a/style/layout/hero.sass +++ /dev/null @@ -1,156 +0,0 @@ -@use 'sass:color' - -@import "../utilities/mixins" - -$hero-body-padding: 3rem 1.5rem !default -$hero-body-padding-tablet: 3rem 3rem !default -$hero-body-padding-small: 1.5rem !default -$hero-body-padding-medium: 9rem 4.5rem !default -$hero-body-padding-large: 18rem 6rem !default - -$hero-colors: $colors !default - -// Main container -.hero - align-items: stretch - display: flex - flex-direction: column - justify-content: space-between - .navbar - background: none - .tabs - ul - border-bottom: none - // Colors - @each $name, $pair in $hero-colors - $color: nth($pair, 1) - $color-invert: nth($pair, 2) - &.is-#{$name} - background-color: $color - color: $color-invert - a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), - strong - color: inherit - .title - color: $color-invert - .subtitle - color: cocoRgba($color-invert, 0.9) - a:not(.button), - strong - color: $color-invert - .navbar-menu - +touch - background-color: $color - .navbar-item, - .navbar-link - color: cocoRgba($color-invert, 0.7) - a.navbar-item, - .navbar-link - &:hover, - &.is-active - background-color: cocoDarken($color, 5%) - color: $color-invert - .tabs - a - color: $color-invert - opacity: 0.9 - &:hover - opacity: 1 - li - &.is-active a - color: $color !important - opacity: 1 - &.is-boxed, - &.is-toggle - a - color: $color-invert - &:hover - background-color: cocoRgba($scheme-invert, 0.1) - li.is-active a - &, - &:hover - background-color: $color-invert - border-color: $color-invert - color: $color - // Modifiers - @if type-of($color) == 'color' - &.is-bold - $gradient-top-left: color.adjust(color.scale(color.adjust($color, $hue: -10deg), $saturation: 10%), $lightness: -10%) - $gradient-bottom-right: color.adjust(color.scale(color.adjust($color, $hue: 10deg), $saturation: 5%), $lightness: 5%) - background-image: linear-gradient(141deg, $gradient-top-left 0%, $color 71%, $gradient-bottom-right 100%) - +mobile - .navbar-menu - background-image: linear-gradient(141deg, $gradient-top-left 0%, $color 71%, $gradient-bottom-right 100%) - - // Sizes - &.is-small - .hero-body - padding: $hero-body-padding-small - &.is-medium - +tablet - .hero-body - padding: $hero-body-padding-medium - &.is-large - +tablet - .hero-body - padding: $hero-body-padding-large - &.is-halfheight, - &.is-fullheight, - &.is-fullheight-with-navbar - .hero-body - align-items: center - display: flex - & > .container - flex-grow: 1 - flex-shrink: 1 - &.is-halfheight - min-height: 50vh - &.is-fullheight - min-height: 100vh - -// Components - -.hero-video - @extend %overlay - overflow: hidden - video - left: 50% - min-height: 100% - min-width: 100% - position: absolute - top: 50% - transform: translate3d(-50%, -50%, 0) - // Modifiers - &.is-transparent - opacity: 0.3 - // Responsiveness - +mobile - display: none - -.hero-buttons - margin-top: 1.5rem - // Responsiveness - +mobile - .button - display: flex - &:not(:last-child) - margin-bottom: 0.75rem - +tablet - display: flex - justify-content: center - .button:not(:last-child) - +ltr-property("margin", 1.5rem) - -// Containers - -.hero-head, -.hero-foot - flex-grow: 0 - flex-shrink: 0 - -.hero-body - flex-grow: 1 - flex-shrink: 0 - padding: $hero-body-padding - +tablet - padding: $hero-body-padding-tablet diff --git a/style/layout/section.sass b/style/layout/section.sass deleted file mode 100755 index 55d1954..0000000 --- a/style/layout/section.sass +++ /dev/null @@ -1,17 +0,0 @@ -@import "../utilities/mixins" - -$section-padding: 3rem 1.5rem !default -$section-padding-desktop: 3rem 3rem !default -$section-padding-medium: 9rem 4.5rem !default -$section-padding-large: 18rem 6rem !default - -.section - padding: $section-padding - // Responsiveness - +desktop - padding: $section-padding-desktop - // Sizes - &.is-medium - padding: $section-padding-medium - &.is-large - padding: $section-padding-large diff --git a/style/utilities/_all.sass b/style/utilities/_all.sass deleted file mode 100755 index 1abf8c5..0000000 --- a/style/utilities/_all.sass +++ /dev/null @@ -1,9 +0,0 @@ -@charset "utf-8" - -@import "initial-variables" -@import "functions" -@import "derived-variables" -@import "css-variables" -@import "mixins" -@import "controls" -@import "extends" diff --git a/style/utilities/controls.sass b/style/utilities/controls.sass deleted file mode 100755 index db29a30..0000000 --- a/style/utilities/controls.sass +++ /dev/null @@ -1,49 +0,0 @@ -@import "derived-variables" - -$control-radius: $radius !default -$control-radius-small: $radius-small !default - -$control-border-width: 1px !default - -$control-height: 2.5em !default -$control-line-height: 1.5 !default - -$control-padding-vertical: calc(0.5em - #{$control-border-width}) !default -$control-padding-horizontal: calc(0.75em - #{$control-border-width}) !default - -=control - -moz-appearance: none - -webkit-appearance: none - align-items: center - border: $control-border-width solid transparent - border-radius: $control-radius - box-shadow: none - display: inline-flex - font-size: $size-normal - height: $control-height - justify-content: flex-start - line-height: $control-line-height - padding-bottom: $control-padding-vertical - padding-left: $control-padding-horizontal - padding-right: $control-padding-horizontal - padding-top: $control-padding-vertical - position: relative - vertical-align: top - // States - &:focus, - &.is-focused, - &:active, - &.is-active - outline: none - &[disabled], - fieldset[disabled] & - cursor: not-allowed - -// The controls sizes use mixins so they can be used at different breakpoints -=control-small - border-radius: $control-radius-small - font-size: $size-small -=control-medium - font-size: $size-medium -=control-large - font-size: $size-large diff --git a/style/utilities/css-variables.sass b/style/utilities/css-variables.sass deleted file mode 100644 index 03f6069..0000000 --- a/style/utilities/css-variables.sass +++ /dev/null @@ -1,157 +0,0 @@ -@use "sass:meta" -@import "initial-variables" -@import "derived-variables" -@import "themes" -@import "../base/generic" - -\:root, -:root[data-theme=light] - --color-black: #{$black} - --color-black-bis: #{$black-bis} - --color-black-ter: #{$black-ter} - --color-grey-darkest: #{$grey-darkest} - --color-grey-darker: #{$grey-darker} - --color-grey-dark: #{$grey-dark} - --color-grey: #{$grey} - --color-grey-light: #{$grey-light} - --color-grey-lighter: #{$grey-lighter} - --color-grey-lightest: #{$grey-lightest} - --color-white: #{$white} - --color-white-bis: #{$white-bis} - --color-white-ter: #{$white-ter} - --color-orange: #{$orange} - --color-yellow: #{$yellow} - --color-green: #{$green} - --color-green-core: #{$green-core} - --color-turquoise: #{$turquoise} - --color-cyan: #{$cyan} - --color-blue: #{$blue} - --color-purple: #{$purple} - --color-red: #{$red} - --color-background: #{$white-ter} - --family-sans-serif: #{meta.inspect($family-sans-serif)} - --family-monospace: #{meta.inspect($family-monospace)} - --size-1: #{$size-1} - --size-2: #{$size-2} - --size-3: #{$size-3} - --size-4: #{$size-4} - --size-5: #{$size-5} - --size-6: #{$size-6} - --size-7: #{$size-7} - --weight-light: #{$weight-light} - --weight-normal: #{$weight-normal} - --weight-medium: #{$weight-medium} - --weight-semibold: #{$weight-semibold} - --weight-bold: #{$weight-bold} - --rtl: #{$rtl} - // Extended - --primary: #{$primary} - --info: #{$info} - --success: #{$success} - --warning: #{$warning} - --danger: #{$danger} - --light: #{$light} - --dark: #{$dark} - --orange-invert: #{$orange-invert} - --yellow-invert: #{$yellow-invert} - --green-invert: #{$green-invert} - --turquoise-invert: #{$turquoise-invert} - --cyan-invert: #{$cyan-invert} - --blue-invert: #{$blue-invert} - --purple-invert: #{$purple-invert} - --red-invert: #{$red-invert} - --primary-invert: #{$primary-invert} - --primary-light: #{$primary-light} - --primary-dark: #{$primary-dark} - --primary-highlight: #{$primary-highlight} - --info-invert: #{$info-invert} - --info-light: #{$info-light} - --info-dark: #{$info-dark} - --success-invert: #{$success-invert} - --success-light: #{$success-light} - --success-dark: #{$success-dark} - --warning-invert: #{$warning-invert} - --warning-light: #{$warning-light} - --warning-dark: #{$warning-dark} - --danger-invert: #{$danger-invert} - --danger-light: #{$danger-light} - --danger-dark: #{$danger-dark} - --light-invert: #{$light-invert} - --dark-invert: #{$dark-invert} - --scheme-main: #{$scheme-main} - --scheme-main-bis: #{$scheme-main-bis} - --scheme-main-ter: #{$scheme-main-ter} - --scheme-invert: #{$scheme-invert} - --scheme-invert-bis: #{$scheme-invert-bis} - --scheme-invert-ter: #{$scheme-invert-ter} - --background: #{$background} - --border: #{$border} - --border-hover: #{$border-hover} - --border-light: #{$border-light} - --border-light-hover: #{$border-light-hover} - --text: #{$text} - --text-invert: #{$text-invert} - --text-light: #{$text-light} - --text-strong: #{$text-strong} - --code: #{$code} - --code-background: #{$code-background} - --code-size: #{$code-size} - --code-weight: #{$code-weight} - --code-padding: #{$code-padding} - --pre: #{$pre} - --pre-background: #{$pre-background} - --pre-font-size: #{$pre-font-size} - --pre-padding: #{$pre-padding} - --pre-code-font-size: #{$pre-code-font-size} - --link: #{$link} - --link-invert: #{$link-invert} - --link-light: #{$link-light} - --link-dark: #{$link-dark} - --link-visited: #{$link-visited} - --link-hover: #{$link-hover} - --link-hover-border: #{$link-hover-border} - --link-focus: #{$link-focus} - --link-focus-border: #{$link-focus-border} - --link-active: #{$link-active} - --link-active-border: #{$link-active-border} - --family-primary: #{meta.inspect($family-primary)} - --family-secondary: #{meta.inspect($family-secondary)} - --family-code: #{$family-code} - --size-small: #{$size-small} - --size-normal: #{$size-normal} - --size-medium: #{$size-medium} - --size-large: #{$size-large} - --shadow: #{$shadow} - --hr-background-color: #{$hr-background-color} - --hr-height: #{$hr-height} - --hr-margin: #{$hr-margin} - --small-font-size: #{$small-font-size} - --strong-color: #{$strong-color} - --strong-weight: #{$strong-weight} - --primary-highlight: #{$primary-highlight} - --radius: #{$radius} - --emutton-r: 100px - --emutton-primary: #{$orange} - --emutton-secondary: #{$red} - --theme-sun: "πŸ”†" - --theme-moon: "πŸŒ™" - -@each $theme in $load-themes - @if $autoselect-theme - @if $theme == light - @media (prefers-color-scheme: #{$theme}) - \:root - @include theme($theme) - @if $theme == dark - @media (prefers-color-scheme: #{$theme}) - \:root - @include theme($theme) - @if $theme == light - \:root[data-theme=#{$theme}], html:has(> body > input#coco-theme-switch[type=checkbox]), body:has(> input#coco-theme-switch[type=checkbox]), input#coco-theme-switch[type=checkbox] ~ header, input#coco-theme-switch[type=checkbox] ~ main, input#coco-theme-switch[type=checkbox] ~ article, input#coco-theme-switch[type=checkbox] ~ footer - @include theme($theme) - @if $theme == dark - \:root[data-theme=#{$theme}], html:has(> body > input#coco-theme-switch[type=checkbox]:checked), body:has(> input#coco-theme-switch[type=checkbox]:checked), input#coco-theme-switch[type=checkbox]:checked ~ header, input#coco-theme-switch[type=checkbox]:checked ~ main, input#coco-theme-switch[type=checkbox]:checked ~ article, input#coco-theme-switch[type=checkbox]:checked ~ footer - @include theme($theme) - @else - \:root[data-theme=#{$theme}] - @include theme($theme) diff --git a/style/utilities/derived-variables.sass b/style/utilities/derived-variables.sass deleted file mode 100755 index 9226f38..0000000 --- a/style/utilities/derived-variables.sass +++ /dev/null @@ -1,117 +0,0 @@ -@use 'sass:color' - -@import "initial-variables" -@import "functions" - -$primary: $green-core !default - -$info: $cyan !default -$success: $green !default -$warning: $yellow !default -$danger: $red !default - -$light: $white-ter !default -$dark: $grey-darker !default - -// Invert colors - -$orange-invert: findColorInvert($orange) !default -$yellow-invert: findColorInvert($yellow) !default -$green-invert: findColorInvert($green) !default -$turquoise-invert: findColorInvert($turquoise) !default -$cyan-invert: findColorInvert($cyan) !default -$blue-invert: findColorInvert($blue) !default -$purple-invert: findColorInvert($purple) !default -$red-invert: findColorInvert($red) !default - -$primary-invert: findColorInvert($primary) !default -$primary-light: findLightColor($primary) !default -$primary-dark: findDarkColor($primary) !default -$primary-highlight: color.adjust(color.adjust($primary, $saturation: 20%), $lightness: 20%) !default -$info-invert: findColorInvert($info) !default -$info-light: findLightColor($info) !default -$info-dark: findDarkColor($info) !default -$success-invert: findColorInvert($success) !default -$success-light: findLightColor($success) !default -$success-dark: findDarkColor($success) !default -$warning-invert: findColorInvert($warning) !default -$warning-light: findLightColor($warning) !default -$warning-dark: findDarkColor($warning) !default -$danger-invert: findColorInvert($danger) !default -$danger-light: findLightColor($danger) !default -$danger-dark: findDarkColor($danger) !default -$light-invert: findColorInvert($light) !default -$dark-invert: findColorInvert($dark) !default - -// General colors - -$scheme-main: var(--color-white) !default -$scheme-main-bis: var(--color-white-bis) !default -$scheme-main-ter: var(--color-white-ter) !default -$scheme-invert: var(--color-black) !default -$scheme-invert-bis: var(--color-black-bis) !default -$scheme-invert-ter: var(--color-black-ter) !default - -$background: $white-ter !default - -$border: var(--color-grey-lighter) !default -$border-hover: var(--color-grey-light) !default -$border-light: var(--color-grey-lightest) !default -$border-light-hover: var(--color-grey-light) !default - -// Text colors - -$text: var(--color-grey-dark) !default -$text-invert: findColorInvert($text) !default -$text-light: var(--color-grey) !default -$text-strong: var(--color-grey-darker) !default - -// Code colors - -$code: color.adjust($red, $lightness: -15%) !default -$code-background: var(--color-background) !default - -$pre: $text !default -$pre-background: var(--color-background) !default - -// Link colors - -$link: $primary !default -$link-invert: findColorInvert($link) !default -$link-light: findLightColor($link) !default -$link-dark: findDarkColor($link) !default -$link-visited: $purple !default - -$link-hover: $grey-darker !default -$link-hover-border: $grey-light !default - -$link-focus: $grey-darker !default -$link-focus-border: $blue !default - -$link-active: $grey-darker !default -$link-active-border: $grey-dark !default - -// Typography - -$family-primary: $family-sans-serif !default -$family-secondary: $family-sans-serif !default -$family-code: $family-monospace !default - -$size-small: $size-7 !default -$size-normal: $size-6 !default -$size-medium: $size-5 !default -$size-large: $size-4 !default - -// Effects - -$shadow: 0 0.5em 1em -0.125em rgba($scheme-invert, 0.1), 0 0px 0 1px rgba($scheme-invert, 0.02) !default - -// Lists and maps -$custom-colors: null !default -$custom-shades: null !default - -$colors: mergeColorMaps(("white": ($white, $black), "black": ($black, $white), "light": ($light, $light-invert), "dark": ($dark, $dark-invert), "primary": ($primary, $primary-invert, $primary-light, $primary-dark), "link": ($link, $link-invert, $link-light, $link-dark), "info": ($info, $info-invert, $info-light, $info-dark), "success": ($success, $success-invert, $success-light, $success-dark), "warning": ($warning, $warning-invert, $warning-light, $warning-dark), "danger": ($danger, $danger-invert, $danger-light, $danger-dark)), $custom-colors) !default - -$shades: mergeColorMaps(("black-bis": $black-bis, "black-ter": $black-ter, "grey-darker": $grey-darker, "grey-dark": $grey-dark, "grey": $grey, "grey-light": $grey-light, "grey-lighter": $grey-lighter, "white-ter": $white-ter, "white-bis": $white-bis), $custom-shades) !default - -$sizes: $size-1 $size-2 $size-3 $size-4 $size-5 $size-6 $size-7 !default diff --git a/style/utilities/extends.sass b/style/utilities/extends.sass deleted file mode 100644 index 752f81b..0000000 --- a/style/utilities/extends.sass +++ /dev/null @@ -1,25 +0,0 @@ -@import "mixins" - -%control - +control - -%unselectable - +unselectable - -%arrow - +arrow - -%block - +block - -%delete - +delete - -%loader - +loader - -%overlay - +overlay - -%reset - +reset diff --git a/style/utilities/functions.sass b/style/utilities/functions.sass deleted file mode 100755 index 5542caf..0000000 --- a/style/utilities/functions.sass +++ /dev/null @@ -1,133 +0,0 @@ -@use 'sass:color' - -@function mergeColorMaps($coco-colors, $custom-colors) - // We return at least coco's hard-coded colors - $merged-colors: $coco-colors - - // We want a map as input - @if type-of($custom-colors) == 'map' - @each $name, $components in $custom-colors - // The color name should be a string - // and the components either a single color - // or a colors list with at least one element - @if type-of($name) == 'string' and (type-of($components) == 'list' or type-of($components) == 'color') and length($components) >= 1 - $color-base: null - $color-invert: null - $color-light: null - $color-dark: null - $value: null - - // The param can either be a single color - // or a list of 2 colors - @if type-of($components) == 'color' - $color-base: $components - $color-invert: findColorInvert($color-base) - $color-light: findLightColor($color-base) - $color-dark: findDarkColor($color-base) - @else if type-of($components) == 'list' - $color-base: nth($components, 1) - // If Invert, Light and Dark are provided - @if length($components) > 3 - $color-invert: nth($components, 2) - $color-light: nth($components, 3) - $color-dark: nth($components, 4) - // If only Invert and Light are provided - @else if length($components) > 2 - $color-invert: nth($components, 2) - $color-light: nth($components, 3) - $color-dark: findDarkColor($color-base) - // If only Invert is provided - @else - $color-invert: nth($components, 2) - $color-light: findLightColor($color-base) - $color-dark: findDarkColor($color-base) - - $value: ($color-base, $color-invert, $color-light, $color-dark) - - // We only want to merge the map if the color base is an actual color - @if type-of($color-base) == 'color' - // We merge this colors elements as map with coco's colors map - // (we can override them this way, no multiple definition for the same name) - // $merged-colors: map_merge($merged-colors, ($name: ($color-base, $color-invert, $color-light, $color-dark))) - $merged-colors: map_merge($merged-colors, ($name: $value)) - - @return $merged-colors - -@function powerNumber($number, $exp) - $value: 1 - @if $exp > 0 - @for $i from 1 through $exp - $value: $value * $number - @else if $exp < 0 - @for $i from 1 through -$exp - $value: divide($value, $number) - @return $value - -@function colorLuminance($color) - @if type-of($color) != 'color' - @return 0.55 - $color-rgb: ('red': color.channel($color, "red", $space: rgb), 'green': color.channel($color, "green", $space: rgb), 'blue': color.channel($color, "blue", $space: rgb)) - @each $name, $value in $color-rgb - $value: divide($value, 255) - @if $value < 0.03928 - $value: divide($value, 12.92) - @else - $value: divide(($value + .055), 1.055) - $value: powerNumber($value, 2) - $color-rgb: map-merge($color-rgb, ($name: $value)) - @return (map-get($color-rgb, 'red') * .2126) + (map-get($color-rgb, 'green') * .7152) + (map-get($color-rgb, 'blue') * .0722) - -@function findColorInvert($color) - @if (colorLuminance($color) > 0.55) - @return rgba(#000, 0.7) - @else - @return #fff - -@function findLightColor($color, $l: 96%) - @if type-of($color) == 'color' - @if color.channel($color, 'lightness', $space: hsl) > 96% - $l: lightness($color) - @return change-color($color, $lightness: $l) - @return $background - -@function findDarkColor($color, $base-l: 29%) - @if type-of($color) == 'color' - $luminance: colorLuminance($color) - $luminance-delta: (0.53 - $luminance) - $target-l: round($base-l + ($luminance-delta * 53)) - @return change-color($color, $lightness: max($base-l, $target-l)) - @return $text-strong - -@function cocoRgba($color, $alpha) - @if type-of($color) != 'color' - @return $color - @return rgba($color, $alpha) - -@function cocoDarken($color, $amount) - @if type-of($color) != 'color' - @return $color - @return color.adjust($color, $lightness: -$amount) - -@function cocoLighten($color, $amount) - @if type-of($color) != 'color' - @return $color - @return color.adjust($color, $lightness: $amount) - -@function divide($dividend, $divisor, $precision: 10) - $sign: if($dividend > 0 and $divisor > 0, 1, -1) - $dividend: abs($dividend) - $divisor: abs($divisor) - $quotient: 0 - $remainder: $dividend - @if $dividend == 0 - @return 0 - @if $divisor == 0 - @error "Cannot divide by 0" - @if $divisor == 1 - @return $dividend - @while $remainder >= $divisor - $quotient: $quotient + 1 - $remainder: $remainder - $divisor - @if $remainder > 0 and $precision > 0 - $remainder: divide($remainder * 10, $divisor, $precision - 1) * .1 - @return ($quotient + $remainder) * $sign diff --git a/style/utilities/initial-variables.sass b/style/utilities/initial-variables.sass deleted file mode 100755 index c8869fd..0000000 --- a/style/utilities/initial-variables.sass +++ /dev/null @@ -1,79 +0,0 @@ -// Colors -$black: hsl(0, 0%, 4%) !default -$black-bis: hsl(0, 0%, 7%) !default -$black-ter: hsl(0, 0%, 14%) !default -$grey-darkest: hsl(0, 0%, 7%) !default -$grey-darker: hsl(0, 0%, 21%) !default -$grey-dark: hsl(0, 0%, 29%) !default -$grey: hsl(0, 0%, 48%) !default -$grey-light: hsl(0, 0%, 71%) !default -$grey-lighter: hsl(0, 0%, 86%) !default -$grey-lightest: hsl(0, 0%, 93%) !default -$white: hsl(0, 0%, 100%) !default -$white-bis: hsl(0, 0%, 98%) !default -$white-ter: hsl(0, 0%, 96%) !default -$orange: hsl(14, 100%, 53%) !default -$yellow: hsl(44, 100%, 77%) !default -$green: hsl(153, 53%, 53%) !default -$green-core: hsl(122, 44%, 49%) !default -$turquoise: hsl(171, 100%, 41%) !default -$cyan: hsl(207, 61%, 53%) !default -$blue: hsl(229, 53%, 53%) !default -$purple: hsl(271, 100%, 71%) !default -$red: hsl(348, 86%, 61%) !default - -// Typography -$family-sans-serif: BlinkMacSystemFont, -apple-system, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif !default -$family-monospace: monospace !default -$render-mode: optimizeLegibility !default - -$size-1: 3rem !default -$size-2: 2.5rem !default -$size-3: 2rem !default -$size-4: 1.5rem !default -$size-5: 1.25rem !default -$size-6: 1rem !default -$size-7: 0.75rem !default - -$weight-light: 300 !default -$weight-normal: 400 !default -$weight-medium: 500 !default -$weight-semibold: 600 !default -$weight-bold: 700 !default - -// Spacing -$block-spacing: 1rem !default - -// Responsiveness - -// The container horizontal gap, which acts as the offset for breakpoints -$gap: 32px !default -// 960, 1152, and 1344 have been chosen because they are divisible by both 12 and 16 -$tablet: 769px !default -// 960px container + 4rem -$desktop: 960px + calc(2 * $gap) !default -// 1152px container + 4rem -$widescreen: 1152px + calc(2 * $gap) !default -$widescreen-enabled: true !default -// 1344px container + 4rem -$fullhd: 1344px + calc(2 * $gap) !default -$fullhd-enabled: true !default -$breakpoints: ("mobile": ("until": $tablet), "tablet": ("from": $tablet), "tablet-only": ("from": $tablet, "until": $desktop), "touch": ("from": $desktop), "desktop": ("from": $desktop), "desktop-only": ("from": $desktop, "until": $widescreen), "until-widescreen": ("until": $widescreen), "widescreen": ("from": $widescreen), "widescreen-only": ("from": $widescreen, "until": $fullhd), "until-fullhd": ("until": $fullhd), "fullhd": ("from": $fullhd)) !default - -// Miscellaneous -$easing: ease-out !default -$radius-small: 2px !default -$radius: 4px !default -$radius-large: 6px !default -$radius-rounded: 9999px !default -$speed: 86ms !default - -// Flags -$variable-columns: true !default -$rtl: false !default - -// Em.oji -$emoji-dimensions: 1rem !default -$emoji-dimensions-small: .75rem !default -$emoji-dimensions-medium: 1.5rem !default -$emoji-dimensions-large: 2rem !default diff --git a/style/utilities/mixins.sass b/style/utilities/mixins.sass deleted file mode 100755 index 794d899..0000000 --- a/style/utilities/mixins.sass +++ /dev/null @@ -1,303 +0,0 @@ -@import "derived-variables" - -=clearfix - &::after - clear: both - content: " " - display: table - -=center($width, $height: 0) - position: absolute - @if $height != 0 - left: calc(50% - (#{$width} * 0.5)) - top: calc(50% - (#{$height} * 0.5)) - @else - left: calc(50% - (#{$width} * 0.5)) - top: calc(50% - (#{$width} * 0.5)) - -=fa($size, $dimensions) - display: inline-block - font-size: $size - height: $dimensions - line-height: $dimensions - text-align: center - vertical-align: top - width: $dimensions - -=hamburger($dimensions) - -moz-appearance: none - -webkit-appearance: none - appearance: none - background: none - border: none - cursor: pointer - display: block - height: $dimensions - position: relative - width: $dimensions - span - background-color: currentColor - display: block - height: 1px - left: calc(50% - 8px) - position: absolute - transform-origin: center - transition-duration: $speed - transition-property: background-color, opacity, transform - transition-timing-function: $easing - width: 16px - &:nth-child(1) - top: calc(50% - 6px) - &:nth-child(2) - top: calc(50% - 1px) - &:nth-child(3) - top: calc(50% + 4px) - &:hover - background-color: cocoRgba(black, 0.05) - // Modifers - &.is-active - span - &:nth-child(1) - transform: translateY(5px) rotate(45deg) - &:nth-child(2) - opacity: 0 - &:nth-child(3) - transform: translateY(-5px) rotate(-45deg) - -=overflow-touch - -webkit-overflow-scrolling: touch - -=placeholder - $placeholders: ':-moz' ':-webkit-input' '-moz' '-ms-input' - @each $placeholder in $placeholders - &:#{$placeholder}-placeholder - @content - -=reset - -moz-appearance: none - -webkit-appearance: none - appearance: none - background: none - border: none - color: currentColor - font-family: inherit - font-size: 1em - margin: 0 - padding: 0 - -// Responsiveness - -=from($device) - @media screen and (min-width: $device) - @content - -=until($device) - @media screen and (max-width: $device - 1px) - @content - -=between($from, $until) - @media screen and (min-width: $from) and (max-width: $until - 1px) - @content - -=mobile - @media screen and (max-width: $tablet - 1px) - @content - -=tablet - @media screen and (min-width: $tablet), print - @content - -=tablet-only - @media screen and (min-width: $tablet) and (max-width: $desktop - 1px) - @content - -=touch - @media screen and (max-width: $desktop - 1px) - @content - -=desktop - @media screen and (min-width: $desktop) - @content - -=desktop-only - @if $widescreen-enabled - @media screen and (min-width: $desktop) and (max-width: $widescreen - 1px) - @content - -=until-widescreen - @if $widescreen-enabled - @media screen and (max-width: $widescreen - 1px) - @content - -=widescreen - @if $widescreen-enabled - @media screen and (min-width: $widescreen) - @content - -=widescreen-only - @if $widescreen-enabled and $fullhd-enabled - @media screen and (min-width: $widescreen) and (max-width: $fullhd - 1px) - @content - -=until-fullhd - @if $fullhd-enabled - @media screen and (max-width: $fullhd - 1px) - @content - -=fullhd - @if $fullhd-enabled - @media screen and (min-width: $fullhd) - @content - -=breakpoint($name) - $breakpoint: map-get($breakpoints, $name) - @if $breakpoint - $from: map-get($breakpoint, "from") - $until: map-get($breakpoint, "until") - @if $from and $until - +between($from, $until) - @content - @else if $from - +from($from) - @content - @else if $until - +until($until) - @content - -=ltr - @if not $rtl - @content - -=rtl - @if $rtl - @content - -=ltr-property($property, $spacing, $right: true) - $normal: if($right, "right", "left") - $opposite: if($right, "left", "right") - @if $rtl - #{$property}-#{$opposite}: $spacing - @else - #{$property}-#{$normal}: $spacing - -=ltr-position($spacing, $right: true) - $normal: if($right, "right", "left") - $opposite: if($right, "left", "right") - @if $rtl - #{$opposite}: $spacing - @else - #{$normal}: $spacing - -// Placeholders - -=unselectable - -webkit-touch-callout: none - -webkit-user-select: none - -moz-user-select: none - -ms-user-select: none - user-select: none - -=arrow($color: transparent) - border: 3px solid $color - border-radius: 2px - border-right: 0 - border-top: 0 - content: " " - display: block - height: 0.625em - margin-top: -0.4375em - pointer-events: none - position: absolute - top: 50% - transform: rotate(-45deg) - transform-origin: center - width: 0.625em - -=block($spacing: $block-spacing) - &:not(:last-child) - margin-bottom: $spacing - -=delete - +unselectable - -moz-appearance: none - -webkit-appearance: none - background-color: cocoRgba($scheme-invert, 0.2) - border: none - border-radius: $radius-rounded - cursor: pointer - pointer-events: auto - display: inline-block - flex-grow: 0 - flex-shrink: 0 - font-size: 0 - height: 20px - max-height: 20px - max-width: 20px - min-height: 20px - min-width: 20px - outline: none - position: relative - vertical-align: top - width: 20px - &::before, - &::after - background-color: $scheme-main - content: "" - display: block - left: 50% - position: absolute - top: 50% - transform: translateX(-50%) translateY(-50%) rotate(45deg) - transform-origin: center center - &::before - height: 2px - width: 50% - &::after - height: 50% - width: 2px - &:hover, - &:focus - background-color: cocoRgba($scheme-invert, 0.3) - &:active - background-color: cocoRgba($scheme-invert, 0.4) - // Sizes - &.is-small - height: 16px - max-height: 16px - max-width: 16px - min-height: 16px - min-width: 16px - width: 16px - &.is-medium - height: 24px - max-height: 24px - max-width: 24px - min-height: 24px - min-width: 24px - width: 24px - &.is-large - height: 32px - max-height: 32px - max-width: 32px - min-height: 32px - min-width: 32px - width: 32px - -=loader - animation: spinAround 500ms infinite linear - border: 2px solid $grey-lighter - border-radius: $radius-rounded - border-right-color: transparent - border-top-color: transparent - content: "" - display: block - height: 1em - position: relative - width: 1em - -=overlay($offset: 0) - bottom: $offset - left: $offset - position: absolute - right: $offset - top: $offset diff --git a/style/utilities/themes.sass b/style/utilities/themes.sass deleted file mode 100644 index 714b639..0000000 --- a/style/utilities/themes.sass +++ /dev/null @@ -1,24 +0,0 @@ -@use "sass:meta" -@import "initial-variables" -@import "derived-variables" - -// Loaded themes delimited by comma `,` -// Note: Light theme is default -$load-themes: dark - -@mixin theme($theme) - @if $theme == dark - --color-black: #{$white} - --color-black-bis: #{$white-bis} - --color-black-ter: #{$white-ter} - --color-grey-darkest: #{$grey-lightest} - --color-grey-darker: #{$grey-lighter} - --color-grey-dark: #{$grey-light} - --color-grey: #{$grey} - --color-grey-light: #{$grey-dark} - --color-grey-lighter: #{$grey-darker} - --color-grey-lightest: #{$grey-darkest} - --color-white: #{$black} - --color-white-bis: #{$black-bis} - --color-white-ter: #{$black-ter} - --color-background: #{$black-ter} diff --git a/test/bs-config.js b/test/bs-config.js deleted file mode 100644 index e28f978..0000000 --- a/test/bs-config.js +++ /dev/null @@ -1,96 +0,0 @@ -module.exports = { - "ui": { - "port": 3001 - }, - "files": ["./test/*.{html,htm,css}", "./dist/css/*.{css,map}"], - "watchEvents": [ - "change" - ], - "watch": true, - "ignore": [], - "single": false, - "watchOptions": { - "ignoreInitial": true - }, - "server": { - "baseDir": ["./test", "./dist"] - }, - "proxy": false, - "port": 3000, - "middleware": false, - "serveStatic": [], - "ghostMode": { - "clicks": true, - "scroll": true, - "location": true, - "forms": { - "submit": true, - "inputs": true, - "toggles": true - } - }, - "logLevel": "info", - "logPrefix": "Browsersync", - "logConnections": false, - "logFileChanges": true, - "logSnippet": true, - "rewriteRules": [], - "open": "local", - "browser": "default", - "cors": false, - "xip": false, - "hostnameSuffix": false, - "reloadOnRestart": false, - "notify": true, - "scrollProportionally": true, - "scrollThrottle": 0, - "scrollRestoreTechnique": "window.name", - "scrollElements": [], - "scrollElementMapping": [], - "reloadDelay": 0, - "reloadDebounce": 500, - "reloadThrottle": 0, - "plugins": [], - "injectChanges": true, - "startPath": null, - "minify": true, - "host": null, - "localOnly": false, - "codeSync": true, - "timestamps": true, - "clientEvents": [ - "scroll", - "scroll:element", - "input:text", - "input:toggles", - "form:submit", - "form:reset", - "click" - ], - "socket": { - "socketIoOptions": { - "log": false - }, - "socketIoClientConfig": { - "reconnectionAttempts": 50 - }, - "path": "/browser-sync/socket.io", - "clientPath": "/browser-sync", - "namespace": "/browser-sync", - "clients": { - "heartbeatTimeout": 5000 - } - }, - "tagNames": { - "less": "link", - "scss": "link", - "css": "link", - "jpg": "img", - "jpeg": "img", - "png": "img", - "svg": "img", - "gif": "img", - "js": "script" - }, - "injectNotification": false -}; diff --git a/test/function/_config.scss b/test/function/_config.scss new file mode 100755 index 0000000..afc1a10 --- /dev/null +++ b/test/function/_config.scss @@ -0,0 +1,9 @@ +@use 'true' as *; +@use '../../scss/config' as *; +@use '../../scss/function/config' as *; + +@include describe('config()') { + @include it('should return "0.75em 1em" as the base padding for the button elements') { + @include assert-equal(config('padding', $btn), 0.75em 1em); + } +} diff --git a/test/function/_index.scss b/test/function/_index.scss new file mode 100755 index 0000000..34d56fc --- /dev/null +++ b/test/function/_index.scss @@ -0,0 +1 @@ +@forward 'config'; diff --git a/test/index.html b/test/index.html deleted file mode 100644 index 304896c..0000000 --- a/test/index.html +++ /dev/null @@ -1,770 +0,0 @@ - - - - πŸ₯₯ Coco test website - - - - - -
-
-
-

- Coco CSS -

-

- COCO is an open source CSS framework based on Flexbox without any piece of JavaScript. -

-
-
-
-
- -
-
-

Section

-

- A simple container to divide your page into sections, like the one you're currently reading. -

-
- -
-
-
-
-

- -

-
-
-
-

- John Doe @johndoe 0s -
- Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. -

-
- -
-
- -
-
-
-
-
-
- -
-
-
-
-
-

Hello World

- -
-
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque risus mi, tempus Link light tag quis placerat ut, porta nec nulla. Vestibulum rhoncus ac ex sit amet fringilla. Nullam gravida purus diam, et dictum felis venenatis efficitur. Aenean ac eleifend lacus, in mollis lectus. Donec sodales, arcu et sollicitudin porttitor, tortor urna tempor ligula, id porttitor mi magna a neque. Donec dui urna, vehicula et sem eget, facilisis sodales sem. -
-
-
- - -
-

H1 β€” One word brings another.

-

H2 β€” One word brings another.

-

H3 β€” One word brings another.

-

H4 β€” One word brings another.

-
H5 β€” One word brings another.
-
H6 β€” One word brings another.
-
-
-
-
-
-
- -
-
-
- -
-
-
-
-
-
- -
- -
-
- -
- -
- - - πŸ‘€ - - - βœ… - -
-

This username is available

-
- -
- -
- - - πŸ“§ - - - ❌ - -
-

This email is invalid

-
- -
- -
-
- -
-
-
- -
- -
- -
-
- -
-
- -
-
- -
-
- - -
-
- -
-
- - - - - -
-
- -
-
- - -
-
- - -
-
- -
-
- -
-
- -
-
- -
-
- -
-
-
- -
-
-
-
- -
-
-
-
-
-
- -
-
- - - - - ⛓️ - -
-
- - βœ… -
-
-
-
-
-

Progress bars

- 90% - 15% - 60% -
-
-
-

Hello World

-

Lorem ipsum[1] dolor sit amet, consectetur adipiscing elit. Nulla accumsan, metus ultrices eleifend gravida, nulla nunc varius lectus, nec rutrum justo nibh eu lectus. Ut vulputate semper dui. Fusce erat odio, sollicitudin vel erat vel, interdum mattis neque. Subscript works as well!

-

Second level

-

Curabitur accumsan turpis pharetra augue tincidunt blandit. Quisque condimentum maximus mi, sit amet commodo arcu rutrum id. Proin pretium urna vel cursus venenatis. Suspendisse potenti. Etiam mattis sem rhoncus lacus dapibus facilisis. Donec at dignissim dui. Ut et neque nisl.

-
    -
  • In fermentum leo eu lectus mollis, quis dictum mi aliquet.
  • -
  • Morbi eu nulla lobortis, lobortis est in, fringilla felis.
  • -
  • Aliquam nec felis in sapien venenatis viverra fermentum nec lectus.
  • -
  • Ut non enim metus.
  • -
-

Third level

-

Quisque ante lacus, malesuada ac auctor vitae, congue non ante. Phasellus lacus ex, semper ac tortor nec, fringilla condimentum orci. Fusce eu rutrum tellus.

-
    -
  1. Donec blandit a lorem id convallis.
  2. -
  3. Cras gravida arcu at diam gravida gravida.
  4. -
  5. Integer in volutpat libero.
  6. -
  7. Donec a diam tellus.
  8. -
  9. Aenean nec tortor orci.
  10. -
  11. Quisque aliquam cursus urna, non bibendum massa viverra eget.
  12. -
  13. Vivamus maximus ultricies pulvinar.
  14. -
-
Ut venenatis, nisl scelerisque sollicitudin fermentum, quam libero hendrerit ipsum, ut blandit est tellus sit amet turpis.
-

Quisque at semper enim, eu hendrerit odio. Etiam auctor nisl et justo sodales elementum. Maecenas ultrices lacus quis neque consectetur, et lobortis nisi molestie.

-

Sed sagittis enim ac tortor maximus rutrum. Nulla facilisi. Donec mattis vulputate risus in luctus. Maecenas vestibulum interdum commodo.

-
-
Web
-
The part of the Internet that contains websites and web pages
-
HTML
-
A markup language for creating web pages
-
CSS
-
A technology to make HTML look better
-
-

Suspendisse egestas sapien non felis placerat elementum. Morbi tortor nisl, suscipit sed mi sit amet, mollis malesuada nulla. Nulla facilisi. Nullam ac erat ante.

-

Fourth level

-

Nulla efficitur eleifend nisi, sit amet bibendum sapien fringilla ac. Mauris euismod metus a tellus laoreet, at elementum ex efficitur.

-
-					<!DOCTYPE html>
-					<html>
-						<head>
-							<title>Hello World</title>
-						</head>
-						<body>
-							<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec viverra nec nulla vitae mollis.</p>
-						</body>
-					</html>
-					
-

Maecenas eleifend sollicitudin dui, faucibus sollicitudin augue cursus non. Ut finibus eleifend arcu ut vehicula. Mauris eu est maximus est porta condimentum in eu justo. Nulla id iaculis sapien.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
OneTwo
ThreeFour
FiveSix
SevenEight
NineTen
ElevenTwelve
-

Phasellus porttitor enim id metus volutpat ultricies. Ut nisi nunc, blandit sed dapibus at, vestibulum in felis. Etiam iaculis lorem ac nibh bibendum rhoncus. Nam interdum efficitur ligula sit amet ullamcorper. Etiam tristique, leo vitae porta faucibus, mi lacus laoreet metus, at cursus leo est vel tellus. Sed ac posuere est. Nunc ultricies nunc neque, vitae ultricies ex sodales quis. Aliquam eu nibh in libero accumsan pulvinar. Nullam nec nisl placerat, pretium metus vel, euismod ipsum. Proin tempor cursus nisl vel condimentum. Nam pharetra varius metus non pellentesque.

-
Fifth level
-

Aliquam sagittis rhoncus vulputate. Cras non luctus sem, sed tincidunt ligula. Vestibulum at nunc elit. Praesent aliquet ligula mi, in luctus elit volutpat porta. Phasellus molestie diam vel nisi sodales, a eleifend augue laoreet. Sed nec eleifend justo. Nam et sollicitudin odio.

-
- - -
- Figure 1: Some beautiful placeholders -
-
-
Sixth level
-

Cras in nibh lacinia, venenatis nisi et, auctor urna. Donec pulvinar lacus sed diam dignissim, ut eleifend eros accumsan. Phasellus non tortor eros. Ut sed rutrum lacus. Etiam purus nunc, scelerisque quis enim vitae, malesuada ultrices turpis. Nunc vitae maximus purus, nec consectetur dui. Suspendisse euismod, elit vel rutrum commodo, ipsum tortor maximus dui, sed varius sapien odio vitae est. Etiam at cursus metus.

-
- Summary 1 -

Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.

-
-
- Summary 2 -

Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.

-
-
-
-
-
-
-
-
-
-

Vertical...

-

Top tile

-
-
-

...tiles

-

Bottom tile

-
-
-
-
-

Middle tile

-

With an image & filter

-
- -
-
-
-
-
-
-

Wide tile

-

Aligned with the right tile

-
- Content -
-
-
-
-
-
-
-

Tall tile

-

With even more content

-
- Content -
-
-
-
-
-
-
-
-
-

- -

-
-
-
-

- Euripides -
- One word brings another. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis porta eros lacus, nec ultricies elit blandit non. Suspendisse pellentesque mauris sit amet dolor blandit rutrum. Nunc in tempus turpis. -
- Like Β· Reply Β· 3 hrs -

-
- -
-
-

- -

-
-
-
-

- Democritus -
- World is decay, life is perception. Donec sollicitudin urna eget eros malesuada sagittis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam blandit nisl a nulla sagittis, a lobortis leo feugiat. -
- Like Β· Reply Β· 2 hrs -

-
- -
- Vivamus quis semper metus, non tincidunt dolor. Vivamus in mi eu lorem cursus ullamcorper sit amet nec massa. -
- -
- Morbi vitae diam et purus tincidunt porttitor vel vitae augue. Praesent malesuada metus sed pharetra euismod. Cras tellus odio, tincidunt iaculis diam non, porta aliquet tortor. -
-
-
- -
-
-

- -

-
-
-
-

- Heraclitus -
- This world, which is the same for all, has not been made by any god or man, but it always has been, is, and will be an ever-living fire. -
- Like Β· Reply Β· 2 hrs -

-
-
-
-
-
- -
-
-

- -

-
-
-
-

- -

-
-
-

- -

-
-
-
-
-
- -
-
-
-
-
-

- πŸ₯₯ Coco version . Source code located at: - GitHub. Feel free to contribute. -

-
-
- - diff --git a/test/sass.test.js b/test/sass.test.js new file mode 100755 index 0000000..611043a --- /dev/null +++ b/test/sass.test.js @@ -0,0 +1,5 @@ +const path = require('path'); +const sassTrue = require('sass-true'); + +const sassFile = path.join(__dirname, 'test.scss'); +sassTrue.runSass({ describe, it }, sassFile); diff --git a/test/test.scss b/test/test.scss new file mode 100755 index 0000000..9edb546 --- /dev/null +++ b/test/test.scss @@ -0,0 +1 @@ +@forward 'function';
- -