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 38818a8..0000000 --- a/.github/workflows/documentation.yml +++ /dev/null @@ -1,37 +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: 20.x - registry-url: 'https://registry.npmjs.org' - - - name: Install Nucleus - run: npm i -g nucleus-styleguide - - - name: Install & Build - run: npm i && npm run build - - - name: Generate documentation - run: npm run styleguide - - - 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 056ebf2..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 βš—οΈ --- | --- | --- | --- @@ -89,8 +89,6 @@ After installation, import the CSS file into your project: @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 48a58bd..7e8e257 --- a/package.json +++ b/package.json @@ -1,78 +1,62 @@ { - "name": "@blockchainhub/coco", - "version": "2.2.0", - "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.scss", - "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": "awk 'NR==2 && /^\\$v:/ {sub(/^\\$v:.*/, \"$v: \\\"$(echo $npm_package_version)\\\";\")} NR!=2 || !/^\\$v:/ {print} NR==1 {print \"$v: \\\"$(echo $npm_package_version)\\\";\"}' style/coco.scss > temp && mv temp style/coco.scss", - "build-add-version-rtl": "npm run build-add-version && sed -i.old '3s;false;true;' style/coco.scss && rm -rf style/coco.scss.old", - "build-remove-version": "awk 'NR==2 && /^\\$v:/ {next} {print}' style/coco.scss > temp && mv temp style/coco.scss", - "build-rtl-to-ltr": "sed -i.old '3s;true;false;' style/coco.scss && rm -rf style/coco.scss.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.scss dist/css/coco.css", - "build-css-rtl": "sass style/coco.scss dist/css/coco-rtl.css", - "build-sass": "cp -a style dist/sass && stripcomments -w --language=Sass --confirm-overwrite dist/sass/**/*.scss && spaces-to-tabs dist/sass/**/*.scss -s 2", - "build-sass-doc": "cp -a style dist/sass && spaces-to-tabs dist/sass/**/*.scss -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", - "styleguide": "nucleus --config config.nucleus.json" - }, + "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/**/*.scss" - } + ] } 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 0000000..1fb3386 Binary files /dev/null and b/preview/assets/fonts/montserrat-v25-latin-ext_latin-700.woff2 differ diff --git a/preview/assets/fonts/montserrat-v25-latin-ext_latin-regular.woff2 b/preview/assets/fonts/montserrat-v25-latin-ext_latin-regular.woff2 new file mode 100755 index 0000000..a9b646c Binary files /dev/null and b/preview/assets/fonts/montserrat-v25-latin-ext_latin-regular.woff2 differ diff --git a/preview/assets/img/favicon-32x32.png b/preview/assets/img/favicon-32x32.png new file mode 100755 index 0000000..3ccfc6c Binary files /dev/null and b/preview/assets/img/favicon-32x32.png differ 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/style/filters/1977.scss b/scss/filters/_1977.scss similarity index 86% rename from style/filters/1977.scss rename to scss/filters/_1977.scss index 705b7ad..b25eb48 100644 --- a/style/filters/1977.scss +++ b/scss/filters/_1977.scss @@ -1,8 +1,7 @@ /// 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 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-filters#1977 +/// @since 2.0.0 .filter { &.seventyseven { position: relative; diff --git a/style/filters/aden.scss b/scss/filters/_aden.scss similarity index 88% rename from style/filters/aden.scss rename to scss/filters/_aden.scss index 3749589..2827cd0 100644 --- a/style/filters/aden.scss +++ b/scss/filters/_aden.scss @@ -1,8 +1,7 @@ /// 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 +/// @since 2.0.0 .filter { &.aden { position: relative; diff --git a/style/filters/amaro.scss b/scss/filters/_amaro.scss similarity index 76% rename from style/filters/amaro.scss rename to scss/filters/_amaro.scss index 30cd42a..6749664 100644 --- a/style/filters/amaro.scss +++ b/scss/filters/_amaro.scss @@ -1,8 +1,7 @@ /// This filter adds more light to the center 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 +/// @since 2.0.0 .filter { &.amaro { filter: contrast(90%) brightness(110%) saturate(150%) hue-rotate(-10deg); diff --git a/style/filters/blur.scss b/scss/filters/_blur.scss similarity index 79% rename from style/filters/blur.scss rename to scss/filters/_blur.scss index 99ef111..688d5ba 100644 --- a/style/filters/blur.scss +++ b/scss/filters/_blur.scss @@ -11,8 +11,7 @@ $blur-breakpoints: '1px', '2px', '3px', '4px', '5px', '6px', '7px', '8px', '9px' /// 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 +/// @since 2.0.0 .filter { @include blur; } diff --git a/style/filters/brannan.scss b/scss/filters/_brannan.scss similarity index 85% rename from style/filters/brannan.scss rename to scss/filters/_brannan.scss index 43895ad..79853d4 100644 --- a/style/filters/brannan.scss +++ b/scss/filters/_brannan.scss @@ -1,8 +1,7 @@ /// 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 +/// @since 2.0.0 .filter { &.brannan { position: relative; diff --git a/style/filters/brightness.scss b/scss/filters/_brightness.scss similarity index 79% rename from style/filters/brightness.scss rename to scss/filters/_brightness.scss index 265a474..e46b46d 100644 --- a/style/filters/brightness.scss +++ b/scss/filters/_brightness.scss @@ -11,8 +11,7 @@ $brightness-breakpoints: 0, 10, 25, 40, 50, 60, 75, 110, 125, 150, 175, 200; /// 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 +/// @since 2.0.0 .filter { @include brightness; } diff --git a/style/filters/brooklyn.scss b/scss/filters/_brooklyn.scss similarity index 87% rename from style/filters/brooklyn.scss rename to scss/filters/_brooklyn.scss index 777672d..0734462 100644 --- a/style/filters/brooklyn.scss +++ b/scss/filters/_brooklyn.scss @@ -1,8 +1,7 @@ /// 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 +/// @since 2.0.0 .filter { &.brooklyn { position: relative; diff --git a/style/filters/clarendon.scss b/scss/filters/_clarendon.scss similarity index 84% rename from style/filters/clarendon.scss rename to scss/filters/_clarendon.scss index 191ed41..a2520ba 100644 --- a/style/filters/clarendon.scss +++ b/scss/filters/_clarendon.scss @@ -1,8 +1,7 @@ /// 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 +/// @since 2.0.0 .filter { &.clarendon { position: relative; diff --git a/style/filters/contrast.scss b/scss/filters/_contrast.scss similarity index 78% rename from style/filters/contrast.scss rename to scss/filters/_contrast.scss index d0a9470..344d098 100644 --- a/style/filters/contrast.scss +++ b/scss/filters/_contrast.scss @@ -11,8 +11,7 @@ $contrast-breakpoints: 0, 10, 25, 40, 50, 60, 75, 110, 125, 150, 175, 200; /// 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 +/// @since 2.0.0 .filter { @include contrast; } diff --git a/style/filters/earlybird.scss b/scss/filters/_earlybird.scss similarity index 86% rename from style/filters/earlybird.scss rename to scss/filters/_earlybird.scss index 216462e..510fc67 100644 --- a/style/filters/earlybird.scss +++ b/scss/filters/_earlybird.scss @@ -1,8 +1,7 @@ /// 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 +/// @since 2.0.0 .filter { &.earlybird { position: relative; 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/style/filters/gingham.scss b/scss/filters/_gingham.scss similarity index 87% rename from style/filters/gingham.scss rename to scss/filters/_gingham.scss index a35e360..c220757 100644 --- a/style/filters/gingham.scss +++ b/scss/filters/_gingham.scss @@ -1,8 +1,7 @@ /// 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 +/// @since 2.0.0 .filter { &.gingham { position: relative; diff --git a/style/filters/grayscale.scss b/scss/filters/_grayscale.scss similarity index 79% rename from style/filters/grayscale.scss rename to scss/filters/_grayscale.scss index 7916e04..68ce5f8 100644 --- a/style/filters/grayscale.scss +++ b/scss/filters/_grayscale.scss @@ -11,8 +11,7 @@ $grayscale-breakpoints: 0, 10, 25, 40, 50, 60, 75, 100; /// 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 +/// @since 2.0.0 .filter { @include grayscale; diff --git a/style/filters/hudson.scss b/scss/filters/_hudson.scss similarity index 87% rename from style/filters/hudson.scss rename to scss/filters/_hudson.scss index 46c39e0..b94371f 100644 --- a/style/filters/hudson.scss +++ b/scss/filters/_hudson.scss @@ -1,8 +1,7 @@ /// 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 +/// @since 2.0.0 .filter { &.hudson { position: relative; diff --git a/style/filters/hue-rotate.scss b/scss/filters/_hue-rotate.scss similarity index 82% rename from style/filters/hue-rotate.scss rename to scss/filters/_hue-rotate.scss index 89b4ad1..4286b35 100644 --- a/style/filters/hue-rotate.scss +++ b/scss/filters/_hue-rotate.scss @@ -11,8 +11,7 @@ $hue-rotate-breakpoints: 0, 30, 45, 60, 90, 120, 135, 150, 180, 210, 225, 240, 2 /// 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 +/// @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.scss b/scss/filters/_inkwell.scss similarity index 76% rename from style/filters/inkwell.scss rename to scss/filters/_inkwell.scss index d79737d..7f29c2d 100644 --- a/style/filters/inkwell.scss +++ b/scss/filters/_inkwell.scss @@ -1,8 +1,7 @@ /// 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 +/// @since 2.0.0 .filter { &.inkwell { position: relative; diff --git a/style/filters/invert.scss b/scss/filters/_invert.scss similarity index 81% rename from style/filters/invert.scss rename to scss/filters/_invert.scss index da058a4..0e8eb8d 100644 --- a/style/filters/invert.scss +++ b/scss/filters/_invert.scss @@ -11,8 +11,7 @@ $invert-breakpoints: 0, 10, 25, 40, 50, 60, 75, 100; /// 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 +/// @since 2.0.0 .filter { @include invert; } diff --git a/style/filters/opacity.scss b/scss/filters/_opacity.scss similarity index 83% rename from style/filters/opacity.scss rename to scss/filters/_opacity.scss index 5536484..0cc7c02 100644 --- a/style/filters/opacity.scss +++ b/scss/filters/_opacity.scss @@ -11,8 +11,7 @@ $opacity-breakpoints: 0, 10, 25, 40, 50, 60, 75, 100; /// 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 +/// @since 2.0.0 .filter { @include opacity; } diff --git a/scss/filters/_saturate.scss b/scss/filters/_saturate.scss new file mode 100644 index 0000000..f625d84 --- /dev/null +++ b/scss/filters/_saturate.scss @@ -0,0 +1,17 @@ +$saturate-breakpoints: 0, 10, 25, 40, 50, 60, 75, 110, 125, 150, 175, 200, 300, 400, 500; + +@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 2.0.0 +.filter { + @include saturate; +} diff --git a/style/filters/sepia.scss b/scss/filters/_sepia.scss similarity index 80% rename from style/filters/sepia.scss rename to scss/filters/_sepia.scss index 0e088a5..034c03b 100644 --- a/style/filters/sepia.scss +++ b/scss/filters/_sepia.scss @@ -11,8 +11,7 @@ $sepia-breakpoints: 0, 10, 25, 40, 50, 60, 75, 100; /// 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 +/// @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.scss b/style/base/_all.scss deleted file mode 100755 index b3ca00a..0000000 --- a/style/base/_all.scss +++ /dev/null @@ -1,4 +0,0 @@ -@charset "utf-8"; - -@import "minireset"; -@import "generic"; diff --git a/style/base/generic.scss b/style/base/generic.scss deleted file mode 100644 index aced574..0000000 --- a/style/base/generic.scss +++ /dev/null @@ -1,221 +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(--coco-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(--coco-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(--coco-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(--coco-link); - cursor: pointer; - text-decoration: none; - strong { - color: currentColor; - } - &:hover { - color: var(--coco-link-hover); - } - &:focus { - color: var(--coco-link-focus); - } - &:active { - color: var(--coco-link-active); - } - &:visited { - color: var(--coco-link-visited); - } -} - -hr { - background-color: var(--coco-hr-background-color); - border: none; - display: block; - height: var(--coco-hr-height); - margin: var(--coco-hr-margin); -} - -img { - height: auto; - max-width: 100%; -} - -input[type="checkbox"], -input[type="radio"] { - vertical-align: baseline; -} - -small { - font-size: var(--coco-small-font-size); -} - -span { - font-style: inherit; - font-weight: inherit; -} - -strong { - color: var(--coco-strong-color); - font-weight: var(--coco-strong-weight); -} - -// Block -fieldset { - border: none; -} - -code { - background-color: var(--coco-code-background); - color: var(--coco-code); - font-size: var(--coco-code-size); - font-weight: var(--coco-code-weight); - padding: var(--coco-code-padding); - border-radius: var(--coco-radius); -} - -pre { - background-color: var(--coco-pre-background); - color: var(--coco-pre); - font-size: var(--coco-pre-font-size); - overflow-x: auto; - padding: var(--coco-pre-padding); - white-space: pre; - word-wrap: normal; - border-radius: var(--coco-radius); - - code { - background-color: transparent; - color: var(--coco-code); - font-weight: var(--coco-code-weight); - font-size: var(--coco-pre-code-font-size); - padding: 0; - } -} - -table { - td, - th { - vertical-align: top; - &:not([align]) { - text-align: inherit; - } - } - th { - color: var(--coco-text-strong); - } -} - -dl { - & > dt { - font-style: oblique; - letter-spacing: 0.12em; - } - & > dd { - margin-left: 2em; - } -} - -mark { - background-color: var(--coco-primary-highlight); -} - -details { - & > summary { - cursor: pointer; - font-weight: var(--coco-weight-medium); - &::marker { - color: var(--coco-primary-dark); - } - } -} - -ul, ol { - list-style-position: inside; -} diff --git a/style/base/minireset.scss b/style/base/minireset.scss deleted file mode 100755 index 82ad8ea..0000000 --- a/style/base/minireset.scss +++ /dev/null @@ -1,88 +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.scss b/style/coco.scss deleted file mode 100644 index 6089941..0000000 --- a/style/coco.scss +++ /dev/null @@ -1,21 +0,0 @@ -@charset "utf-8"; -$rtl: false; -$autoselect-theme: false; - -.coco.version::after { - content: "#{$v}"; -} - -@debug "COCO v#{$v}"; -@debug "RTL version: #{$rtl}"; - -@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.scss b/style/components/_all.scss deleted file mode 100755 index 5e1717d..0000000 --- a/style/components/_all.scss +++ /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.scss b/style/components/breadcrumb.scss deleted file mode 100755 index 53dca23..0000000 --- a/style/components/breadcrumb.scss +++ /dev/null @@ -1,112 +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 { - @include 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 { - @include ltr-property("margin", 0.5em); - } - - &:last-child { - @include 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.scss b/style/components/card.scss deleted file mode 100755 index 313ca9d..0000000 --- a/style/components/card.scss +++ /dev/null @@ -1,117 +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 { - @include 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) { - @include ltr-property("border", $card-footer-border-top); - } -} - -// Combinations -.card { - .media:not(:last-child) { - margin-bottom: $card-media-margin; - } -} diff --git a/style/components/dropdown.scss b/style/components/dropdown.scss deleted file mode 100755 index e72df5e..0000000 --- a/style/components/dropdown.scss +++ /dev/null @@ -1,102 +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(--coco-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; - @include 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 { - @include 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.scss b/style/components/level.scss deleted file mode 100755 index 9de0aa3..0000000 --- a/style/components/level.scss +++ /dev/null @@ -1,122 +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; - @include ltr-property("margin", $level-item-spacing); - } - - &:not(.is-narrow) { - flex-grow: 1; - } - } - } - - // Responsiveness - @include 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 - @include 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 - @include tablet { - &:not(:last-child) { - @include ltr-property("margin", $level-item-spacing); - } - } - } -} - -.level-left { - align-items: center; - justify-content: flex-start; - - // Responsiveness - @include mobile { - & + .level-right { - margin-top: 1.5rem; - } - } - - @include tablet { - display: flex; - } -} - -.level-right { - align-items: center; - justify-content: flex-end; - - // Responsiveness - @include tablet { - display: flex; - } -} diff --git a/style/components/media.scss b/style/components/media.scss deleted file mode 100755 index a5fa9a4..0000000 --- a/style/components/media.scss +++ /dev/null @@ -1,81 +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 { - @include ltr-property("margin", $media-spacing); -} - -.media-right { - @include ltr-property("margin", $media-spacing, false); -} - -@include mobile { - .media-content { - overflow-x: auto; - } -} diff --git a/style/components/menu.scss b/style/components/menu.scss deleted file mode 100755 index 3d3c94a..0000000 --- a/style/components/menu.scss +++ /dev/null @@ -1,81 +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(--coco-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 { - @include ltr-property("border", $menu-list-border-left, false); - margin: $menu-nested-list-margin; - @include 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.scss b/style/components/message.scss deleted file mode 100755 index 88635ad..0000000 --- a/style/components/message.scss +++ /dev/null @@ -1,132 +0,0 @@ -@import "../utilities/mixins"; - -$message-background-color: var(--coco-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% - lightness($color)) - 2%, 0%); - $color-light: lighten($color, $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; - @include 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.scss b/style/components/modal.scss deleted file mode 100755 index 07b1012..0000000 --- a/style/components/modal.scss +++ /dev/null @@ -1,135 +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(--coco-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(--coco-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 - @include 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; - @include 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; - overflow-y: visible; - -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) { - @include ltr-property("margin", 0.5em); - } - } -} - -.modal-card-body { - @include 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.scss b/style/components/navbar.scss deleted file mode 100755 index 60901e9..0000000 --- a/style/components/navbar.scss +++ /dev/null @@ -1,693 +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(--coco-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(--coco-color-background) !default; -$navbar-dropdown-item-active-color: $link !default; -$navbar-dropdown-item-active-background-color: var(--coco-color-background) !default; - -$navbar-divider-background-color: var(--coco-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; - -@mixin navbar-fixed { - left: 0; - position: fixed; - right: 0; - z-index: $navbar-fixed-z; -} - -.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; - } - - @include 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 { - @include 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 { - @include overflow-touch; - max-width: 100vw; - overflow-x: auto; - overflow-y: hidden; -} - -.navbar-burger { - @extend %reset; - color: $navbar-burger-color; - @include hamburger($navbar-height); - @include ltr-property("margin", auto, false); -} - -.navbar-menu { - display: none; -} - -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) { - @include ltr-property("padding", 2.5em); - - &::after { - @extend %arrow; - border-color: $navbar-dropdown-arrow; - margin-top: -0.375em; - @include 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: block; - height: $navbar-divider-height; - margin: 0.5rem 0; -} - -@include 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 { - @include 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 { - @include 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; - } - } -} - -@include 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; - @include ltr-property("margin", auto); - } - - .navbar-end { - justify-content: flex-end; - @include 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; - @include 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 { - @include 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 { - @include ltr-property("margin", -.75rem, false); - } - - .navbar-menu { - @include ltr-property("margin", -.75rem); - } - } - - // Fixed navbar - .navbar { - &.is-fixed-bottom-desktop, - &.is-fixed-top-desktop { - @include 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 - .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.scss b/style/components/pagination.scss deleted file mode 100755 index d0e9f69..0000000 --- a/style/components/pagination.scss +++ /dev/null @@ -1,225 +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; - } -} - -@include mobile { - .pagination { - flex-wrap: wrap; - } - - .pagination-previous, - .pagination-next { - flex-grow: 1; - flex-shrink: 1; - } - - .pagination-list li { - flex-grow: 1; - flex-shrink: 1; - } -} - -@include 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.scss b/style/components/panel.scss deleted file mode 100755 index 7687db5..0000000 --- a/style/components/panel.scss +++ /dev/null @@ -1,164 +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(--coco-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"] { - @include 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 { - @include fa(14px, 1em); - color: $panel-icon-color; - @include ltr-property("margin", 0.75em); - - em.oji { - font-size: inherit; - line-height: inherit; - } -} diff --git a/style/components/tabs.scss b/style/components/tabs.scss deleted file mode 100755 index 890d4fc..0000000 --- a/style/components/tabs.scss +++ /dev/null @@ -1,263 +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(--coco-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(--coco-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 { - @include 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 { - @include ltr-property("margin", 0.5em); - } - - &:last-child { - @include 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; - - @include ltr { - border-radius: $tabs-boxed-link-radius $tabs-boxed-link-radius 0 0; - } - - @include 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 { - @include ltr-property("margin", -#{$tabs-toggle-link-border-width}, false); - } - - li:first-child a { - @include ltr { - border-top-left-radius: $tabs-toggle-link-radius; - border-bottom-left-radius: $tabs-toggle-link-radius; - } - - @include rtl { - border-top-right-radius: $tabs-toggle-link-radius; - border-bottom-right-radius: $tabs-toggle-link-radius; - } - } - - li:last-child a { - @include ltr { - border-top-right-radius: $tabs-toggle-link-radius; - border-bottom-right-radius: $tabs-toggle-link-radius; - } - - @include rtl { - border-top-left-radius: $tabs-toggle-link-radius; - border-bottom-left-radius: $tabs-toggle-link-radius; - } - } - - li.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 { - @include ltr { - border-bottom-left-radius: $radius-rounded; - border-top-left-radius: $radius-rounded; - padding-left: 1.25em; - } - - @include rtl { - border-bottom-right-radius: $radius-rounded; - border-top-right-radius: $radius-rounded; - padding-right: 1.25em; - } - } - - li:last-child a { - @include ltr { - border-bottom-right-radius: $radius-rounded; - border-top-right-radius: $radius-rounded; - padding-right: 1.25em; - } - - @include 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.scss b/style/effects/_all.scss deleted file mode 100755 index a46cb5a..0000000 --- a/style/effects/_all.scss +++ /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.scss b/style/effects/chessboard.scss deleted file mode 100644 index d5bbf5d..0000000 --- a/style/effects/chessboard.scss +++ /dev/null @@ -1,23 +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.scss b/style/effects/emoji.scss deleted file mode 100755 index 65226e6..0000000 --- a/style/effects/emoji.scss +++ /dev/null @@ -1,159 +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.scss b/style/effects/rotate.scss deleted file mode 100644 index 9c8a726..0000000 --- a/style/effects/rotate.scss +++ /dev/null @@ -1,18 +0,0 @@ -$rotate-breakpoints: 30, 45, 60, 90, 120, 135, 150, 180, 210, 225, 240, 270, 300, 315, 330; - -@mixin 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 { - @include rotate; -} diff --git a/style/effects/spin.scss b/style/effects/spin.scss deleted file mode 100644 index 05b1afa..0000000 --- a/style/effects/spin.scss +++ /dev/null @@ -1,8 +0,0 @@ -@keyframes spinAround { - from { - transform: rotate(0deg); - } - to { - transform: rotate(359deg); - } -} diff --git a/style/effects/spinner.scss b/style/effects/spinner.scss deleted file mode 100644 index 2efa37e..0000000 --- a/style/effects/spinner.scss +++ /dev/null @@ -1,11 +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.scss b/style/effects/theme.scss deleted file mode 100644 index ef1df18..0000000 --- a/style/effects/theme.scss +++ /dev/null @@ -1,129 +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(--coco-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(--coco-theme-sun); - } - } - - & > .moon { - &::before { - content: var(--coco-theme-moon); - } - } - } - } - - &:checked { - & ~ header > nav > .navbar-menu > div > div > label[for=coco-theme-switch] { - & > .sun { - &::before { - content: var(--coco-theme-moon); - } - } - - & > .moon { - &::before { - content: var(--coco-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(--coco-theme-moon); - } - } - - & > .moon { - &::before { - content: var(--coco-theme-sun); - } - } - } - } - - &:checked { - & ~ header > nav > .navbar-menu > div > div > label[for=coco-theme-switch] { - & > .sun { - &::before { - content: var(--coco-theme-sun); - } - } - - & > .moon { - &::before { - content: var(--coco-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(--coco-theme-moon); - } - } - - & > .moon { - &::before { - content: var(--coco-theme-sun); - } - } - } - } - - &:checked { - & ~ header > nav > .navbar-menu > div > div > label[for=coco-theme-switch] { - & > .sun { - &::before { - content: var(--coco-theme-sun); - } - } - - & > .moon { - &::before { - content: var(--coco-theme-moon); - } - } - } - } - } -} diff --git a/style/elements/_all.scss b/style/elements/_all.scss deleted file mode 100755 index b067025..0000000 --- a/style/elements/_all.scss +++ /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.scss b/style/elements/box.scss deleted file mode 100755 index 7cbaa70..0000000 --- a/style/elements/box.scss +++ /dev/null @@ -1,35 +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.scss b/style/elements/button.scss deleted file mode 100755 index e103fd1..0000000 --- a/style/elements/button.scss +++ /dev/null @@ -1,535 +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(--coco-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 -@mixin button-small { - &:not(.is-rounded) { - border-radius: $radius-small; - } - font-size: $size-small; -} - -@mixin button-normal { - font-size: $size-normal; -} - -@mixin button-medium { - font-size: $size-medium; -} - -@mixin 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) { - @include ltr-property("margin", calc(#{-0.5 * $button-padding-horizontal} - #{$button-border-width}), false); - @include ltr-property("margin", $button-padding-horizontal * 0.25); - } - - &:last-child:not(:first-child) { - @include ltr-property("margin", $button-padding-horizontal * 0.25, false); - @include 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 { - @include button-small; - } - - &.is-normal { - @include button-normal; - } - - &.is-medium { - @include button-medium; - } - - &.is-large { - @include 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; - @include 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) { - @include 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) { - @include button-small; - } - } - - &.are-medium { - .button:not(.is-small):not(.is-normal):not(.is-large) { - @include button-medium; - } - } - - &.are-large { - .button:not(.is-small):not(.is-normal):not(.is-medium) { - @include 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; - @include ltr-property("margin", -1px); - } - - &:last-child { - @include 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; - } - } - } -} - -// Responsive button sizes -@each $bp-name, $bp-sizes in $button-responsive-sizes { - @include 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.scss b/style/elements/container.scss deleted file mode 100755 index 390fbbc..0000000 --- a/style/elements/container.scss +++ /dev/null @@ -1,69 +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%; - } - - @include mobile { - padding-left: calc($gap / 2); - padding-right: calc($gap / 2); - - &.is-fluidless { - padding-left: inherit; - padding-right: inherit; - } - } - - @include tablet { - max-width: $tablet - $container-offset; - - &.is-fluidless { - max-width: inherit; - } - } - - @include desktop { - max-width: $desktop - $container-offset; - } - - @include until-widescreen { - &.is-widescreen:not(.is-max-desktop) { - max-width: min($widescreen, $container-max-width) - $container-offset; - } - } - - @include until-fullhd { - &.is-fullhd { - max-width: $fullhd - $container-offset; - } - } - - @include widescreen { - &:not(.is-max-desktop) { - max-width: min($widescreen, $container-max-width) - $container-offset; - } - } - - @include fullhd { - &:not(.is-max-desktop):not(.is-max-widescreen) { - max-width: min($fullhd, $container-max-width) - $container-offset; - } - } -} diff --git a/style/elements/content.scss b/style/elements/content.scss deleted file mode 100755 index 740e075..0000000 --- a/style/elements/content.scss +++ /dev/null @@ -1,217 +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(--coco-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; - @include ltr-property("border", $content-blockquote-border-left, false); - padding: $content-blockquote-padding; - } - ol { - list-style-position: outside; - @include 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; - @include ltr-property("margin", 2em, false); - margin-top: 1em; - ul { - list-style-type: circle; - margin-top: 0.5em; - ul { - list-style-type: square; - } - } - } - dd { - @include 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 { - @include 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.scss b/style/elements/icon.scss deleted file mode 100755 index ffa450b..0000000 --- a/style/elements/icon.scss +++ /dev/null @@ -1,72 +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) { - @include ltr { - margin-right: $icon-text-spacing; - } - @include rtl { - margin-left: $icon-text-spacing; - } - } - - &:not(:first-child) { - @include ltr { - margin-left: $icon-text-spacing; - } - @include rtl { - margin-right: $icon-text-spacing; - } - } - } -} - -div.icon-text { - display: flex; -} diff --git a/style/elements/image.scss b/style/elements/image.scss deleted file mode 100755 index 4355363..0000000 --- a/style/elements/image.scss +++ /dev/null @@ -1,121 +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.scss b/style/elements/notification.scss deleted file mode 100755 index 8f5fd79..0000000 --- a/style/elements/notification.scss +++ /dev/null @@ -1,82 +0,0 @@ -@import "../utilities/mixins"; - -$notification-background-color: var(--coco-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; - - @include ltr { - padding: $notification-padding-ltr; - } - - @include 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 { - @include 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.scss b/style/elements/other.scss deleted file mode 100755 index d203d4e..0000000 --- a/style/elements/other.scss +++ /dev/null @@ -1,61 +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(--coco-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.scss b/style/elements/progress.scss deleted file mode 100755 index e3e33d7..0000000 --- a/style/elements/progress.scss +++ /dev/null @@ -1,114 +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; - border: none; - border-radius: $progress-border-radius; - display: block; - height: $size-normal; - overflow: hidden; - padding: 0; - width: 100%; - - background-color: $progress-bar-background-color; - - &::-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.scss b/style/elements/table.scss deleted file mode 100755 index a91c804..0000000 --- a/style/elements/table.scss +++ /dev/null @@ -1,193 +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-background-color; - } - } - } - } - - &.is-narrow { - td, - th { - padding: 0.25em 0.5em; - } - } -} - -.table-container { - @extend %block; - @include overflow-touch; - overflow: auto; - overflow-y: hidden; - max-width: 100%; -} diff --git a/style/elements/tag.scss b/style/elements/tag.scss deleted file mode 100755 index 63a5e47..0000000 --- a/style/elements/tag.scss +++ /dev/null @@ -1,226 +0,0 @@ -@import "../utilities/mixins"; - -$tag-background-color: var(--coco-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) { - @include 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 { - @include ltr-property("margin", 0); - - &:not(:first-child) { - @include ltr-property("margin", 0, false); - @include ltr { - border-top-left-radius: 0; - border-bottom-left-radius: 0; - } - - @include rtl { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - } - } - - &:not(:last-child) { - @include ltr { - border-top-right-radius: 0; - border-bottom-right-radius: 0; - } - - @include 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 { - @include ltr-property("margin", 0.25rem, false); - @include 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) { - @include ltr-property("margin", -0.375em, false); - @include ltr-property("margin", 0.1875em); - } - - &:last-child:not(:first-child) { - @include ltr-property("margin", 0.1875em, false); - @include ltr-property("margin", -0.375em); - } - - &:first-child:last-child { - @include ltr-property("margin", -0.375em, false); - @include ltr-property("margin", -0.375em); - } - } - - // Modifiers - &.is-delete { - @include 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.scss b/style/elements/title.scss deleted file mode 100755 index ee9f293..0000000 --- a/style/elements/title.scss +++ /dev/null @@ -1,139 +0,0 @@ -@import "../utilities/mixins"; - -$title-color: $text-strong !default; -$title-family: false !default; -$title-size: var(--coco-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(--coco-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(--coco-#{$i}); - } - } -} - -h1 { - font-size: var(--coco-size-1); -} - -h2 { - font-size: var(--coco-size-2); -} - -h3 { - font-size: var(--coco-size-3); -} - -h4 { - font-size: var(--coco-size-4); -} - -h5 { - font-size: var(--coco-size-5); -} - -h6 { - font-size: var(--coco-size-6); -} - -/// Subtitle - More information 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(--coco-#{$i}); - } - } -} diff --git a/style/filters/_all.scss b/style/filters/_all.scss deleted file mode 100755 index 0e95030..0000000 --- a/style/filters/_all.scss +++ /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/saturate.scss b/style/filters/saturate.scss deleted file mode 100644 index 5536484..0000000 --- a/style/filters/saturate.scss +++ /dev/null @@ -1,18 +0,0 @@ -$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 1.0.0 -/// @link https://github.com/cryptohub-digital/coco/wiki/effects-filters#opacity -.filter { - @include opacity; -} diff --git a/style/form/_all.scss b/style/form/_all.scss deleted file mode 100755 index 66723a9..0000000 --- a/style/form/_all.scss +++ /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.scss b/style/form/checkbox-radio.scss deleted file mode 100755 index 5eea4f2..0000000 --- a/style/form/checkbox-radio.scss +++ /dev/null @@ -1,33 +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 { - @include ltr-property("margin", 0.5em, false); - } -} diff --git a/style/form/emutton.scss b/style/form/emutton.scss deleted file mode 100644 index 569fce4..0000000 --- a/style/form/emutton.scss +++ /dev/null @@ -1,86 +0,0 @@ -.emutton { - display: inline-grid; - cursor: pointer; - width: var(--coco-emutton-r); - height: var(--coco-emutton-r); - border-radius: 50%; - margin: calc(var(--coco-emutton-r)/3); - line-height: var(--coco-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); - font-style: normal; - font-size: calc(0.6*var(--coco-emutton-r)); - - &:after { - background-size: calc(var(--coco-emutton-r)/8) calc(var(--coco-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(--coco-emutton-primary) calc(var(--coco-emutton-r)/2); - transform: scale(0); - } - - &:after, & > em.oji:after { - content: ""; - grid-area: 1/1; - margin: calc(var(--coco-emutton-r)/-2); - --coco-emutton-c1: radial-gradient(var(--coco-emutton-secondary) 50%, #0000 60%); - --coco-emutton-c2: radial-gradient(var(--coco-emutton-primary) 50%, #0000 60%); - background: var(--coco-emutton-c1), var(--coco-emutton-c1), var(--coco-emutton-c1), var(--coco-emutton-c1), var(--coco-emutton-c2), var(--coco-emutton-c2), var(--coco-emutton-c2), var(--coco-emutton-c2); - background-size: calc(var(--coco-emutton-r)/6) calc(var(--coco-emutton-r)/6); - background-position: calc(50% - var(--coco-emutton-r)/2) calc(50% - var(--coco-emutton-r)/2), calc(50% + var(--coco-emutton-r)/2) calc(50% - var(--coco-emutton-r)/2), calc(50% - var(--coco-emutton-r)/2) calc(50% + var(--coco-emutton-r)/2), calc(50% + var(--coco-emutton-r)/2) calc(50% + var(--coco-emutton-r)/2), 50% calc(50% + var(--coco-emutton-r)*0.707), calc(50% + var(--coco-emutton-r)*0.707) calc(50% + 0px), calc(50% - var(--coco-emutton-r)*0.707) calc(50% + 0px), calc(50% + 0px) calc(50% - var(--coco-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.scss b/style/form/file.scss deleted file mode 100755 index 59e4dff..0000000 --- a/style/form/file.scss +++ /dev/null @@ -1,277 +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; - - .file-icon { - em.oji { - font-size: 21px; - } - } - } - - &.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; - - @include ltr-property("margin", 0.5em); - width: 1em; - - em.oji { - font-size: 14px; - } -} diff --git a/style/form/input-textarea.scss b/style/form/input-textarea.scss deleted file mode 100755 index 047c1bf..0000000 --- a/style/form/input-textarea.scss +++ /dev/null @@ -1,97 +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 { - @include control-small; - } - - &.is-medium { - @include control-medium; - } - - &.is-large { - @include 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.scss b/style/form/select.scss deleted file mode 100755 index 9eba7d2..0000000 --- a/style/form/select.scss +++ /dev/null @@ -1,145 +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; - @include ltr-position(1.125em); - z-index: 4; - } - } - - &.is-rounded { - select { - border-radius: $radius-rounded; - @include 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]) { - @include 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 { - @include control-small; - } - - &.is-medium { - @include control-medium; - } - - &.is-large { - @include 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; - @include 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.scss b/style/form/shared.scss deleted file mode 100755 index eea6c37..0000000 --- a/style/form/shared.scss +++ /dev/null @@ -1,72 +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(--coco-color-background) !default; -$input-disabled-border-color: var(--coco-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; - -@mixin input { - @extend %control; - background-color: $input-background-color; - border-color: $input-border-color; - border-radius: $input-radius; - color: $input-color; - - @include 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; - - @include placeholder { - color: $input-disabled-placeholder-color; - } - } -} - -%input { - @include input; -} diff --git a/style/form/toggle.scss b/style/form/toggle.scss deleted file mode 100644 index d0a4a53..0000000 --- a/style/form/toggle.scss +++ /dev/null @@ -1,141 +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(--coco-primary); - } - - &:focus + .slider { - box-shadow: 0 0 1px var(--coco-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(--coco-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(--coco-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.scss b/style/form/tools.scss deleted file mode 100755 index f30cd48..0000000 --- a/style/form/tools.scss +++ /dev/null @@ -1,357 +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) { - @include 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 { - @include ltr { - border-bottom-right-radius: 0; - border-top-right-radius: 0; - } - - @include rtl { - border-bottom-left-radius: 0; - border-top-left-radius: 0; - } - } - } - - &:last-child:not(:only-child) { - .button, - .input, - .select select { - @include ltr { - border-bottom-left-radius: 0; - border-top-left-radius: 0; - } - - @include 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; - @include 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 { - @include tablet { - display: flex; - } - } -} - -.field-label { - .label { - font-size: inherit; - - @include mobile { - margin-bottom: 0.5rem; - } - - @include tablet { - flex-basis: 0; - flex-grow: 1; - flex-shrink: 0; - @include 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; - } - - @include 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) { - @include 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; - @include 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.scss b/style/grid/_all.scss deleted file mode 100755 index 04eb276..0000000 --- a/style/grid/_all.scss +++ /dev/null @@ -1,5 +0,0 @@ -@charset "utf-8"; - -@import "columns"; -@import "grid"; -@import "tiles"; diff --git a/style/grid/columns.scss b/style/grid/columns.scss deleted file mode 100755 index 7ade14c..0000000 --- a/style/grid/columns.scss +++ /dev/null @@ -1,584 +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 { - @include ltr-property("margin", 75%, false); - } - - .columns.is-mobile > &.is-offset-two-thirds { - @include ltr-property("margin", 66.6666%, false); - } - - .columns.is-mobile > &.is-offset-half { - @include ltr-property("margin", 50%, false); - } - - .columns.is-mobile > &.is-offset-one-third { - @include ltr-property("margin", 33.3333%, false); - } - - .columns.is-mobile > &.is-offset-one-quarter { - @include ltr-property("margin", 25%, false); - } - - .columns.is-mobile > &.is-offset-one-fifth { - @include ltr-property("margin", 20%, false); - } - - .columns.is-mobile > &.is-offset-two-fifths { - @include ltr-property("margin", 40%, false); - } - - .columns.is-mobile > &.is-offset-three-fifths { - @include ltr-property("margin", 60%, false); - } - - .columns.is-mobile > &.is-offset-four-fifths { - @include 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} { - @include ltr-property("margin", percentage(divide($i, 12)), false); - } - } - - @include 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 { - @include ltr-property("margin", 75%, false); - } - - &.is-offset-two-thirds-mobile { - @include ltr-property("margin", 66.6666%, false); - } - - &.is-offset-half-mobile { - @include ltr-property("margin", 50%, false); - } - - &.is-offset-one-third-mobile { - @include ltr-property("margin", 33.3333%, false); - } - - &.is-offset-one-quarter-mobile { - @include ltr-property("margin", 25%, false); - } - - &.is-offset-one-fifth-mobile { - @include ltr-property("margin", 20%, false); - } - - &.is-offset-two-fifths-mobile { - @include ltr-property("margin", 40%, false); - } - - &.is-offset-three-fifths-mobile { - @include ltr-property("margin", 60%, false); - } - - &.is-offset-four-fifths-mobile { - @include 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 { - @include ltr-property("margin", percentage(divide($i, 12)), false); - } - } - } - - @include 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 { - @include ltr-property("margin", 75%, false); - } - - &.is-offset-two-thirds, - &.is-offset-two-thirds-tablet { - @include ltr-property("margin", 66.6666%, false); - } - - &.is-offset-half, - &.is-offset-half-tablet { - @include ltr-property("margin", 50%, false); - } - - &.is-offset-one-third, - &.is-offset-one-third-tablet { - @include ltr-property("margin", 33.3333%, false); - } - - &.is-offset-one-quarter, - &.is-offset-one-quarter-tablet { - @include ltr-property("margin", 25%, false); - } - - &.is-offset-one-fifth, - &.is-offset-one-fifth-tablet { - @include ltr-property("margin", 20%, false); - } - - &.is-offset-two-fifths, - &.is-offset-two-fifths-tablet { - @include ltr-property("margin", 40%, false); - } - - &.is-offset-three-fifths, - &.is-offset-three-fifths-tablet { - @include ltr-property("margin", 60%, false); - } - - &.is-offset-four-fifths, - &.is-offset-four-fifths-tablet { - @include 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 { - @include ltr-property("margin", percentage(divide($i, 12)), false); - } - } - } - - @include 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 { - @include ltr-property("margin", 75%, false); - } - - &.is-offset-two-thirds-touch { - @include ltr-property("margin", 66.6666%, false); - } - - &.is-offset-half-touch { - @include ltr-property("margin", 50%, false); - } - - &.is-offset-one-third-touch { - @include ltr-property("margin", 33.3333%, false); - } - - &.is-offset-one-quarter-touch { - @include ltr-property("margin", 25%, false); - } - - &.is-offset-one-fifth-touch { - @include ltr-property("margin", 20%, false); - } - - &.is-offset-two-fifths-touch { - @include ltr-property("margin", 40%, false); - } - - &.is-offset-three-fifths-touch { - @include ltr-property("margin", 60%, false); - } - - &.is-offset-four-fifths-touch { - @include 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 { - @include ltr-property("margin", percentage(divide($i, 12)), false); - } - } - } -} - -.columns { - @include ltr-property("margin", (-$column-gap), false); - @include 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 { - @include ltr-property("margin", 0, false); - @include 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 - @include tablet { - &:not(.is-desktop) { - display: flex; - } - } - - @include desktop { - // Modifiers - &.is-desktop { - display: flex; - } - } -} - -@if $variable-columns { - .columns.is-variable { - --coco-columnGap: 0.75rem; - @include ltr-property("margin", calc(-1 * var(--coco-columnGap)), false); - @include ltr-property("margin", calc(-1 * var(--coco-columnGap))); - - > .column { - padding-left: var(--coco-columnGap); - padding-right: var(--coco-columnGap); - } - - @for $i from 0 through 8 { - &.is-#{$i} { - --coco-columnGap: #{$i * 0.25rem}; - } - - @include mobile { - &.is-#{$i}-mobile { - --coco-columnGap: #{$i * 0.25rem}; - } - } - - @include tablet { - &.is-#{$i}-tablet { - --coco-columnGap: #{$i * 0.25rem}; - } - } - - @include tablet-only { - &.is-#{$i}-tablet-only { - --coco-columnGap: #{$i * 0.25rem}; - } - } - - @include touch { - &.is-#{$i}-touch { - --coco-columnGap: #{$i * 0.25rem}; - } - } - - @include desktop { - &.is-#{$i}-desktop { - --coco-columnGap: #{$i * 0.25rem}; - } - } - - @include desktop-only { - &.is-#{$i}-desktop-only { - --coco-columnGap: #{$i * 0.25rem}; - } - } - - @include widescreen { - &.is-#{$i}-widescreen { - --coco-columnGap: #{$i * 0.25rem}; - } - } - - @include widescreen-only { - &.is-#{$i}-widescreen-only { - --coco-columnGap: #{$i * 0.25rem}; - } - } - - @include fullhd { - &.is-#{$i}-fullhd { - --coco-columnGap: #{$i * 0.25rem}; - } - } - } - } -} diff --git a/style/grid/grid.scss b/style/grid/grid.scss deleted file mode 100644 index bfa75c1..0000000 --- a/style/grid/grid.scss +++ /dev/null @@ -1,165 +0,0 @@ -$max-column-count: 16; - -.grid { - --coco-grid-gap: 1.5rem; - --coco-column-count: 12; - --coco-grid-gap-count: calc(var(--coco-column-count) - 1); - --coco-grid-column-min: calc(calc(100% / var(--coco-column-count)) - calc(var(--coco-grid-gap-count) / var(--coco-column-count) * var(--coco-grid-column-gap, var(--coco-grid-gap)))); - --coco-cell-column-span: 1; - --coco-cell-row-span: 1; - display: grid; - grid-gap: var(--coco-grid-gap); - grid-column-gap: var(--coco-grid-column-gap, var(--coco-grid-gap)); - grid-row-gap: var(--coco-grid-row-gap, var(--coco-grid-gap)); - grid-template-columns: repeat(auto-fit, minmax(var(--coco-grid-column-min), 1fr)); - grid-template-rows: auto; - - @include mobile { - --coco-column-count: 2; - } - - @include tablet { - --coco-column-count: 4; - } - - @include desktop { - --coco-column-count: 8; - } - - @include widescreen { - --coco-column-count: 12; - } - - @include fullhd { - --coco-column-count: 16; - } -} - -@mixin cell-properties($suffix: '') { - @for $i from 1 through $max-column-count { - $name: $i + $suffix; - - &.is-col-start-#{$name} { - --coco-cell-column-start: #{$i}; - } - - &.is-col-from-end-#{$name} { - --coco-cell-column-start: #{$i * -1}; - } - - &.is-col-span-#{$name} { - --coco-cell-column-span: #{$i}; - } - - &.is-row-start-#{$name} { - --coco-cell-row-start: #{$i}; - } - - &.is-row-from-end-#{$name} { - --coco-cell-row-start: #{$i * -1}; - } - - &.is-row-span-#{$name} { - --coco-cell-row-span: #{$i}; - } - } -} - -.cell { - background-color: lavender; - border-radius: 1em; - grid-column-end: span var(--coco-cell-column-span); - grid-column-start: var(--coco-cell-column-start); - grid-row-end: span var(--coco-cell-row-span); - grid-row-start: var(--coco-cell-row-start); - padding: 0.75em; - - // Sizes - &.is-col-start-end { - --coco-cell-column-start: -1; - } - - &.is-row-start-end { - --coco-cell-row-start: -1; - } - - @include cell-properties; - - @include mobile { - @include cell-properties('-mobile'); - } - - @include tablet { - @include cell-properties('-tablet'); - } - - @include tablet-only { - @include cell-properties('-tablet-only'); - } - - @include desktop { - @include cell-properties('-desktop'); - } - - @include desktop-only { - @include cell-properties('-desktop-only'); - } - - @include widescreen { - @include cell-properties('-widescreen'); - } - - @include widescreen-only { - @include cell-properties('-widescreen-only'); - } - - @include fullhd { - @include cell-properties('-fullhd'); - } -} - -@mixin grid-properties($suffix: '') { - .has-1-cols#{$suffix} { - --coco-column-count: 1; - } - - @for $i from 2 through $max-column-count { - .has-#{$i}-cols#{$suffix} { - --coco-column-count: #{$i}; - } - } -} - -@include grid-properties; - -@include mobile { - @include grid-properties('-mobile'); -} - -@include tablet { - @include grid-properties('-tablet'); -} - -@include tablet-only { - @include grid-properties('-tablet-only'); -} - -@include desktop { - @include grid-properties('-desktop'); -} - -@include desktop-only { - @include grid-properties('-desktop-only'); -} - -@include widescreen { - @include grid-properties('-widescreen'); -} - -@include widescreen-only { - @include grid-properties('-widescreen-only'); -} - -@include fullhd { - @include grid-properties('-fullhd'); -} diff --git a/style/grid/tiles.scss b/style/grid/tiles.scss deleted file mode 100755 index 6c44b22..0000000 --- a/style/grid/tiles.scss +++ /dev/null @@ -1,57 +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 - @include tablet { - &:not(.is-child) { - display: flex; - } - - @for $i from 1 through 12 { - &.is-#{$i} { - flex: none; - width: percentage(divide($i, 12)); - } - } - } -} diff --git a/style/helpers/_all.scss b/style/helpers/_all.scss deleted file mode 100644 index 58b1517..0000000 --- a/style/helpers/_all.scss +++ /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.scss b/style/helpers/color.scss deleted file mode 100644 index fb050dd..0000000 --- a/style/helpers/color.scss +++ /dev/null @@ -1,67 +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.scss b/style/helpers/flexbox.scss deleted file mode 100644 index 13bd0e7..0000000 --- a/style/helpers/flexbox.scss +++ /dev/null @@ -1,50 +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.scss b/style/helpers/float.scss deleted file mode 100644 index 848a20c..0000000 --- a/style/helpers/float.scss +++ /dev/null @@ -1,13 +0,0 @@ -@import "../utilities/mixins"; - -.is-clearfix { - @include clearfix; -} - -.is-pulled-left { - float: left !important; -} - -.is-pulled-right { - float: right !important; -} diff --git a/style/helpers/other.scss b/style/helpers/other.scss deleted file mode 100644 index 003aeda..0000000 --- a/style/helpers/other.scss +++ /dev/null @@ -1,18 +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.scss b/style/helpers/overflow.scss deleted file mode 100644 index 82e3d99..0000000 --- a/style/helpers/overflow.scss +++ /dev/null @@ -1,3 +0,0 @@ -.is-clipped { - overflow: hidden !important; -} diff --git a/style/helpers/position.scss b/style/helpers/position.scss deleted file mode 100644 index 639187c..0000000 --- a/style/helpers/position.scss +++ /dev/null @@ -1,9 +0,0 @@ -@import "../utilities/mixins"; - -.is-overlay { - @extend %overlay; -} - -.is-relative { - position: relative !important; -} diff --git a/style/helpers/spacing.scss b/style/helpers/spacing.scss deleted file mode 100644 index 0c7b464..0000000 --- a/style/helpers/spacing.scss +++ /dev/null @@ -1,45 +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.scss b/style/helpers/typography.scss deleted file mode 100644 index 22e8de5..0000000 --- a/style/helpers/typography.scss +++ /dev/null @@ -1,152 +0,0 @@ -@import "../utilities/mixins"; - -@mixin typography-size($target:'') { - @each $size in $sizes { - $i: index($sizes, $size); - .is-size-#{$i}#{if($target == '', '', '-' + $target)} { - font-size: var(--coco-size-#{$i}) !important; - } - } -} - -@include typography-size(); - -@include mobile { - @include typography-size('mobile'); -} - -@include tablet { - @include typography-size('tablet'); -} - -@include touch { - @include typography-size('touch'); -} - -@include desktop { - @include typography-size('desktop'); -} - -@include widescreen { - @include typography-size('widescreen'); -} - -@include fullhd { - @include 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 { - @include mobile { - .has-text-#{$alignment}-mobile { - text-align: #{$text-align} !important; - } - } - @include tablet { - .has-text-#{$alignment}-tablet { - text-align: #{$text-align} !important; - } - } - @include tablet-only { - .has-text-#{$alignment}-tablet-only { - text-align: #{$text-align} !important; - } - } - @include touch { - .has-text-#{$alignment}-touch { - text-align: #{$text-align} !important; - } - } - @include desktop { - .has-text-#{$alignment}-desktop { - text-align: #{$text-align} !important; - } - } - @include desktop-only { - .has-text-#{$alignment}-desktop-only { - text-align: #{$text-align} !important; - } - } - @include widescreen { - .has-text-#{$alignment}-widescreen { - text-align: #{$text-align} !important; - } - } - @include widescreen-only { - .has-text-#{$alignment}-widescreen-only { - text-align: #{$text-align} !important; - } - } - @include 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(--coco-family-primary) !important; -} - -.is-family-secondary { - font-family: var(--coco-family-secondary) !important; -} - -.is-family-sans-serif { - font-family: var(--coco-family-sans-serif) !important; -} - -.is-family-monospace { - font-family: var(--coco-family-monospace) !important; -} - -.is-family-code { - font-family: var(--coco-family-code) !important; -} diff --git a/style/helpers/visibility.scss b/style/helpers/visibility.scss deleted file mode 100644 index 1b2923b..0000000 --- a/style/helpers/visibility.scss +++ /dev/null @@ -1,190 +0,0 @@ -@import "../utilities/mixins"; - -$displays: 'block', 'flex', 'inline', 'inline-block', 'inline-flex'; - -@each $display in $displays { - .is-#{$display} { - display: #{$display} !important; - } - - @include mobile { - .is-#{$display}-mobile { - display: #{$display} !important; - } - } - - @include tablet { - .is-#{$display}-tablet { - display: #{$display} !important; - } - } - - @include tablet-only { - .is-#{$display}-tablet-only { - display: #{$display} !important; - } - } - - @include touch { - .is-#{$display}-touch { - display: #{$display} !important; - } - } - - @include desktop { - .is-#{$display}-desktop { - display: #{$display} !important; - } - } - - @include desktop-only { - .is-#{$display}-desktop-only { - display: #{$display} !important; - } - } - - @include widescreen { - .is-#{$display}-widescreen { - display: #{$display} !important; - } - } - - @include widescreen-only { - .is-#{$display}-widescreen-only { - display: #{$display} !important; - } - } - - @include 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; -} - -@include mobile { - .is-hidden-mobile { - display: none !important; - } -} - -@include tablet { - .is-hidden-tablet { - display: none !important; - } -} - -@include tablet-only { - .is-hidden-tablet-only { - display: none !important; - } -} - -@include touch { - .is-hidden-touch { - display: none !important; - } -} - -@include desktop { - .is-hidden-desktop { - display: none !important; - } -} - -@include desktop-only { - .is-hidden-desktop-only { - display: none !important; - } -} - -@include widescreen { - .is-hidden-widescreen { - display: none !important; - } -} - -@include widescreen-only { - .is-hidden-widescreen-only { - display: none !important; - } -} - -@include fullhd { - .is-hidden-fullhd { - display: none !important; - } -} - -.is-invisible { - visibility: hidden !important; -} - -@include mobile { - .is-invisible-mobile { - visibility: hidden !important; - } -} - -@include tablet { - .is-invisible-tablet { - visibility: hidden !important; - } -} - -@include tablet-only { - .is-invisible-tablet-only { - visibility: hidden !important; - } -} - -@include touch { - .is-invisible-touch { - visibility: hidden !important; - } -} - -@include desktop { - .is-invisible-desktop { - visibility: hidden !important; - } -} - -@include desktop-only { - .is-invisible-desktop-only { - visibility: hidden !important; - } -} - -@include widescreen { - .is-invisible-widescreen { - visibility: hidden !important; - } -} - -@include widescreen-only { - .is-invisible-widescreen-only { - visibility: hidden !important; - } -} - -@include fullhd { - .is-invisible-fullhd { - visibility: hidden !important; - } -} diff --git a/style/layout/_all.scss b/style/layout/_all.scss deleted file mode 100755 index 1da051f..0000000 --- a/style/layout/_all.scss +++ /dev/null @@ -1,5 +0,0 @@ -@charset "utf-8"; - -@import "hero"; -@import "section"; -@import "footer"; diff --git a/style/layout/footer.scss b/style/layout/footer.scss deleted file mode 100755 index 08a520e..0000000 --- a/style/layout/footer.scss +++ /dev/null @@ -1,14 +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.scss b/style/layout/hero.scss deleted file mode 100755 index 005c1fb..0000000 --- a/style/layout/hero.scss +++ /dev/null @@ -1,238 +0,0 @@ -@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: rgba($color-invert, 0.9); - - a:not(.button), - strong { - color: $color-invert; - } - } - - .navbar-menu { - @include touch { - background-color: $color; - } - } - - .navbar-item, - .navbar-link { - color: rgba($color-invert, 0.7); - } - - a.navbar-item, - .navbar-link { - &:hover, - &.is-active { - background-color: adjust-color($color, $lightness: -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: rgba($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: adjust-color(scale-color(adjust-color($color, $hue: -10deg), $saturation: 10%), $lightness: -10%); - $gradient-bottom-right: adjust-color(scale-color(adjust-color($color, $hue: 10deg), $saturation: 5%), $lightness: 5%); - background-image: linear-gradient(141deg, $gradient-top-left 0%, $color 71%, $gradient-bottom-right 100%); - - @include 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 { - @include tablet { - .hero-body { - padding: $hero-body-padding-medium; - } - } - } - - &.is-large { - @include 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 - @include mobile { - display: none; - } -} - -.hero-buttons { - margin-top: 1.5rem; - - // Responsiveness - @include mobile { - .button { - display: flex; - - &:not(:last-child) { - margin-bottom: 0.75rem; - } - } - } - - @include tablet { - display: flex; - justify-content: center; - - .button:not(:last-child) { - @include 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; - - @include tablet { - padding: $hero-body-padding-tablet; - } -} diff --git a/style/layout/section.scss b/style/layout/section.scss deleted file mode 100755 index ea6aec7..0000000 --- a/style/layout/section.scss +++ /dev/null @@ -1,24 +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 - @include desktop { - padding: $section-padding-desktop; - - // Sizes - &.is-medium { - padding: $section-padding-medium; - } - - &.is-large { - padding: $section-padding-large; - } - } -} diff --git a/style/utilities/_all.scss b/style/utilities/_all.scss deleted file mode 100755 index 824bca6..0000000 --- a/style/utilities/_all.scss +++ /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.scss b/style/utilities/controls.scss deleted file mode 100755 index 9805c45..0000000 --- a/style/utilities/controls.scss +++ /dev/null @@ -1,57 +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; - -@mixin 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 -@mixin control-small { - border-radius: $control-radius-small; - font-size: $size-small; -} - -@mixin control-medium { - font-size: $size-medium; -} - -@mixin control-large { - font-size: $size-large; -} diff --git a/style/utilities/css-variables.scss b/style/utilities/css-variables.scss deleted file mode 100644 index 08b7881..0000000 --- a/style/utilities/css-variables.scss +++ /dev/null @@ -1,171 +0,0 @@ -@import "initial-variables"; -@import "derived-variables"; -@import "themes"; -@import "../base/generic"; - -:root, -:root[data-theme=light] { - --coco-color-black: #{$black}; - --coco-color-black-bis: #{$black-bis}; - --coco-color-black-ter: #{$black-ter}; - --coco-color-grey-darkest: #{$grey-darkest}; - --coco-color-grey-darker: #{$grey-darker}; - --coco-color-grey-dark: #{$grey-dark}; - --coco-color-grey: #{$grey}; - --coco-color-grey-light: #{$grey-light}; - --coco-color-grey-lighter: #{$grey-lighter}; - --coco-color-grey-lightest: #{$grey-lightest}; - --coco-color-white: #{$white}; - --coco-color-white-bis: #{$white-bis}; - --coco-color-white-ter: #{$white-ter}; - --coco-color-orange: #{$orange}; - --coco-color-yellow: #{$yellow}; - --coco-color-green: #{$green}; - --coco-color-green-core: #{$green-core}; - --coco-color-turquoise: #{$turquoise}; - --coco-color-cyan: #{$cyan}; - --coco-color-blue: #{$blue}; - --coco-color-purple: #{$purple}; - --coco-color-red: #{$red}; - --coco-color-background: #{$white-ter}; - --coco-family-sans-serif: "#{$family-sans-serif}"; - --coco-family-monospace: "#{$family-monospace}"; - --coco-size-1: #{$size-1}; - --coco-size-2: #{$size-2}; - --coco-size-3: #{$size-3}; - --coco-size-4: #{$size-4}; - --coco-size-5: #{$size-5}; - --coco-size-6: #{$size-6}; - --coco-size-7: #{$size-7}; - --coco-weight-light: #{$weight-light}; - --coco-weight-normal: #{$weight-normal}; - --coco-weight-medium: #{$weight-medium}; - --coco-weight-semibold: #{$weight-semibold}; - --coco-weight-bold: #{$weight-bold}; - --coco-rtl: #{$rtl}; - // Extended - --coco-primary: #{$primary}; - --coco-info: #{$info}; - --coco-success: #{$success}; - --coco-warning: #{$warning}; - --coco-danger: #{$danger}; - --coco-light: #{$light}; - --coco-dark: #{$dark}; - --coco-orange-invert: #{$orange-invert}; - --coco-yellow-invert: #{$yellow-invert}; - --coco-green-invert: #{$green-invert}; - --coco-turquoise-invert: #{$turquoise-invert}; - --coco-cyan-invert: #{$cyan-invert}; - --coco-blue-invert: #{$blue-invert}; - --coco-purple-invert: #{$purple-invert}; - --coco-red-invert: #{$red-invert}; - --coco-primary-invert: #{$primary-invert}; - --coco-primary-light: #{$primary-light}; - --coco-primary-dark: #{$primary-dark}; - --coco-primary-highlight: #{$primary-highlight}; - --coco-info-invert: #{$info-invert}; - --coco-info-light: #{$info-light}; - --coco-info-dark: #{$info-dark}; - --coco-success-invert: #{$success-invert}; - --coco-success-light: #{$success-light}; - --coco-success-dark: #{$success-dark}; - --coco-warning-invert: #{$warning-invert}; - --coco-warning-light: #{$warning-light}; - --coco-warning-dark: #{$warning-dark}; - --coco-danger-invert: #{$danger-invert}; - --coco-danger-light: #{$danger-light}; - --coco-danger-dark: #{$danger-dark}; - --coco-light-invert: #{$light-invert}; - --coco-dark-invert: #{$dark-invert}; - --coco-scheme-main: #{$scheme-main}; - --coco-scheme-main-bis: #{$scheme-main-bis}; - --coco-scheme-main-ter: #{$scheme-main-ter}; - --coco-scheme-invert: #{$scheme-invert}; - --coco-scheme-invert-bis: #{$scheme-invert-bis}; - --coco-scheme-invert-ter: #{$scheme-invert-ter}; - --coco-background: #{$background}; - --coco-border: #{$border}; - --coco-border-hover: #{$border-hover}; - --coco-border-light: #{$border-light}; - --coco-border-light-hover: #{$border-light-hover}; - --coco-text: #{$text}; - --coco-text-invert: #{$text-invert}; - --coco-text-light: #{$text-light}; - --coco-text-strong: #{$text-strong}; - --coco-code: #{$code}; - --coco-code-background: #{$code-background}; - --coco-code-size: #{$code-size}; - --coco-code-weight: #{$code-weight}; - --coco-code-padding: #{$code-padding}; - --coco-pre: #{$pre}; - --coco-pre-background: #{$pre-background}; - --coco-pre-font-size: #{$pre-font-size}; - --coco-pre-padding: #{$pre-padding}; - --coco-pre-code-font-size: #{$pre-code-font-size}; - --coco-link: #{$link}; - --coco-link-invert: #{$link-invert}; - --coco-link-light: #{$link-light}; - --coco-link-dark: #{$link-dark}; - --coco-link-visited: #{$link-visited}; - --coco-link-hover: #{$link-hover}; - --coco-link-hover-border: #{$link-hover-border}; - --coco-link-focus: #{$link-focus}; - --coco-link-focus-border: #{$link-focus-border}; - --coco-link-active: #{$link-active}; - --coco-link-active-border: #{$link-active-border}; - --coco-family-primary: "#{$family-primary}"; - --coco-family-secondary: "#{$family-secondary}"; - --coco-family-code: #{$family-code}; - --coco-size-small: #{$size-small}; - --coco-size-normal: #{$size-normal}; - --coco-size-medium: #{$size-medium}; - --coco-size-large: #{$size-large}; - --coco-shadow: #{$shadow}; - --coco-hr-background-color: #{$hr-background-color}; - --coco-hr-height: #{$hr-height}; - --coco-hr-margin: #{$hr-margin}; - --coco-small-font-size: #{$small-font-size}; - --coco-strong-color: #{$strong-color}; - --coco-strong-weight: #{$strong-weight}; - --coco-primary-highlight: #{$primary-highlight}; - --coco-radius: #{$radius}; - --coco-emutton-r: 100px; - --coco-emutton-primary: #{$orange}; - --coco-emutton-secondary: #{$red}; - --coco-theme-sun: "πŸ”†"; - --coco-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.scss b/style/utilities/derived-variables.scss deleted file mode 100755 index 0f4eb10..0000000 --- a/style/utilities/derived-variables.scss +++ /dev/null @@ -1,134 +0,0 @@ -@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 using SCSS functions -$orange-invert: invert($orange) !default; -$yellow-invert: invert($yellow) !default; -$green-invert: invert($green) !default; -$turquoise-invert: invert($turquoise) !default; -$cyan-invert: invert($cyan) !default; -$blue-invert: invert($blue) !default; -$purple-invert: invert($purple) !default; -$red-invert: invert($red) !default; - -$primary-invert: invert($primary) !default; -$primary-light: lighten($primary, 20%) !default; -$primary-dark: darken($primary, 20%) !default; -$primary-highlight: lighten(saturate($primary, 20%), 20%) !default; - -$info-invert: invert($info) !default; -$info-light: lighten($info, 20%) !default; -$info-dark: darken($info, 20%) !default; - -$success-invert: invert($success) !default; -$success-light: lighten($success, 20%) !default; -$success-dark: darken($success, 20%) !default; - -$warning-invert: invert($warning) !default; -$warning-light: lighten($warning, 20%) !default; -$warning-dark: darken($warning, 20%) !default; - -$danger-invert: invert($danger) !default; -$danger-light: lighten($danger, 20%) !default; -$danger-dark: darken($danger, 20%) !default; - -$light-invert: invert($light) !default; -$dark-invert: invert($dark) !default; - -// General colors -$scheme-main: var(--coco-color-white) !default; -$scheme-main-bis: var(--coco-color-white-bis) !default; -$scheme-main-ter: var(--coco-color-white-ter) !default; -$scheme-invert: var(--coco-color-black) !default; -$scheme-invert-bis: var(--coco-color-black-bis) !default; -$scheme-invert-ter: var(--coco-color-black-ter) !default; - -$background: $white-ter !default; - -$border: var(--coco-color-grey-lighter) !default; -$border-hover: var(--coco-color-grey-light) !default; -$border-light: var(--coco-color-grey-lightest) !default; -$border-light-hover: var(--coco-color-grey-light) !default; - -// Text colors -$text: var(--coco-color-grey-dark) !default; -$text-invert: invert($text) !default; -$text-light: var(--coco-color-grey) !default; -$text-strong: var(--coco-color-grey-darker) !default; - -// Code colors -$code: darken($red, 15%) !default; -$code-background: var(--coco-color-background) !default; - -$pre: $text !default; -$pre-background: var(--coco-color-background) !default; - -// Link colors -$link: $primary !default; -$link-invert: invert($link) !default; -$link-light: lighten($link, 20%) !default; -$link-dark: darken($link, 20%) !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.scss b/style/utilities/extends.scss deleted file mode 100644 index beb7cb5..0000000 --- a/style/utilities/extends.scss +++ /dev/null @@ -1,33 +0,0 @@ -@import "mixins"; - -%control { - @include control; -} - -%unselectable { - @include unselectable; -} - -%arrow { - @include arrow; -} - -%block { - @include block; -} - -%delete { - @include delete; -} - -%loader { - @include loader; -} - -%overlay { - @include overlay; -} - -%reset { - @include reset; -} diff --git a/style/utilities/functions.scss b/style/utilities/functions.scss deleted file mode 100755 index 6bc6e0a..0000000 --- a/style/utilities/functions.scss +++ /dev/null @@ -1,162 +0,0 @@ -@import "mixins"; - -@function mergeColorMaps($coco-colors, $custom-colors) { - $merged-colors: $coco-colors; - - @if type-of($custom-colors) == 'map' { - @each $name, $components in $custom-colors { - @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; - - @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 length($components) > 3 { - $color-invert: nth($components, 2); - $color-light: nth($components, 3); - $color-dark: nth($components, 4); - } @else if length($components) > 2 { - $color-invert: nth($components, 2); - $color-light: nth($components, 3); - $color-dark: findDarkColor($color-base); - } @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); - - @if type-of($color-base) == 'color' { - $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': red($color), 'green': green($color), 'blue': blue($color)); - @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 lightness($color) > 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 darken($color, $amount); -} - -@function cocoLighten($color, $amount) { - @if type-of($color) != 'color' { - @return $color; - } - @return lighten($color, $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.scss b/style/utilities/initial-variables.scss deleted file mode 100755 index 490e08a..0000000 --- a/style/utilities/initial-variables.scss +++ /dev/null @@ -1,85 +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 -$gap: 32px !default; -$tablet: 769px !default; -$desktop: 960px + calc(2 * $gap) !default; -$widescreen: 1152px + calc(2 * $gap) !default; -$widescreen-enabled: true !default; -$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.scss b/style/utilities/mixins.scss deleted file mode 100755 index fad268c..0000000 --- a/style/utilities/mixins.scss +++ /dev/null @@ -1,393 +0,0 @@ -@import "derived-variables"; - -@mixin clearfix { - &::after { - clear: both; - content: " "; - display: table; - } -} - -@mixin 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)); - } -} - -@mixin fa($size, $dimensions) { - display: inline-block; - font-size: $size; - height: $dimensions; - line-height: $dimensions; - text-align: center; - vertical-align: top; - width: $dimensions; -} - -@mixin 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); - } - &.is-active { - span { - &:nth-child(1) { - transform: translateY(5px) rotate(45deg); - } - &:nth-child(2) { - opacity: 0; - } - &:nth-child(3) { - transform: translateY(-5px) rotate(-45deg); - } - } - } -} - -@mixin overflow-touch { - -webkit-overflow-scrolling: touch; -} - -@mixin placeholder { - $placeholders: ':-moz' ':-webkit-input' '-moz' '-ms-input'; - @each $placeholder in $placeholders { - &:#{$placeholder}-placeholder { - @content; - } - } -} - -@mixin 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 -@mixin from($device) { - @media screen and (min-width: $device) { - @content; - } -} - -@mixin until($device) { - $max-width: $device - 1px; - @media screen and (max-width: $max-width) { - @content; - } -} - -@mixin between($from, $until) { - $max-width: $until - 1px; - @media screen and (min-width: $from) and (max-width: $max-width) { - @content; - } -} - -@mixin mobile { - $max-width: $tablet - 1px; - @media screen and (max-width: $max-width) { - @content; - } -} - -@mixin tablet { - @media screen and (min-width: $tablet), print { - @content; - } -} - -@mixin tablet-only { - $max-width: $desktop - 1px; - @media screen and (min-width: $tablet) and (max-width: $max-width) { - @content; - } -} - -@mixin touch { - $max-width: $desktop - 1px; - @media screen and (max-width: $max-width) { - @content; - } -} - -@mixin desktop { - @media screen and (min-width: $desktop) { - @content; - } -} - -@mixin desktop-only { - @if $widescreen-enabled { - $max-width: $widescreen - 1px; - @media screen and (min-width: $desktop) and (max-width: $max-width) { - @content; - } - } -} - -@mixin until-widescreen { - @if $widescreen-enabled { - $max-width: $widescreen - 1px; - @media screen and (max-width: $max-width) { - @content; - } - } -} - -@mixin widescreen { - @if $widescreen-enabled { - @media screen and (min-width: $widescreen) { - @content; - } - } -} - -@mixin widescreen-only { - @if $widescreen-enabled and $fullhd-enabled { - $max-width: $fullhd - 1px; - @media screen and (min-width: $widescreen) and (max-width: $max-width) { - @content; - } - } -} - -@mixin until-fullhd { - @if $fullhd-enabled { - $max-width: $fullhd - 1px; - @media screen and (max-width: $max-width) { - @content; - } - } -} - -@mixin fullhd { - @if $fullhd-enabled { - @media screen and (min-width: $fullhd) { - @content; - } - } -} - -@mixin breakpoint($name) { - $breakpoint: map-get($breakpoints, $name); - @if $breakpoint { - $from: map-get($breakpoint, "from"); - $until: map-get($breakpoint, "until"); - @if $from and $until { - @include between($from, $until) { - @content; - } - } @else if $from { - @include from($from) { - @content; - } - } @else if $until { - @include until($until) { - @content; - } - } - } -} - -@mixin ltr { - @if not $rtl { - @content; - } -} - -@mixin rtl { - @if $rtl { - @content; - } -} - -@mixin 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; - } -} - -@mixin ltr-position($spacing, $right: true) { - $normal: if($right, "right", "left"); - $opposite: if($right, "left", "right"); - @if $rtl { - #{$opposite}: $spacing; - } @else { - #{$normal}: $spacing; - } -} - -// Placeholders -@mixin unselectable { - -webkit-touch-callout: none; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -@mixin 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; -} - -@mixin block($spacing: $block-spacing) { - &:not(:last-child) { - margin-bottom: $spacing; - } -} - -@mixin delete { - @include 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; - } -} - -@mixin 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; -} - -@mixin overlay($offset: 0) { - bottom: $offset; - left: $offset; - position: absolute; - right: $offset; - top: $offset; -} diff --git a/style/utilities/themes.scss b/style/utilities/themes.scss deleted file mode 100644 index cfd4a05..0000000 --- a/style/utilities/themes.scss +++ /dev/null @@ -1,23 +0,0 @@ -@import "initial-variables"; -@import "derived-variables"; - -$load-themes: dark; - -@mixin theme($theme) { - @if $theme == dark { - --coco-color-black: #{$white}; - --coco-color-black-bis: #{$white-bis}; - --coco-color-black-ter: #{$white-ter}; - --coco-color-grey-darkest: #{$grey-lightest}; - --coco-color-grey-darker: #{$grey-lighter}; - --coco-color-grey-dark: #{$grey-light}; - --coco-color-grey: #{$grey}; - --coco-color-grey-light: #{$grey-dark}; - --coco-color-grey-lighter: #{$grey-darker}; - --coco-color-grey-lightest: #{$grey-darkest}; - --coco-color-white: #{$black}; - --coco-color-white-bis: #{$black-bis}; - --coco-color-white-ter: #{$black-ter}; - --coco-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 -

-
-
-
-
-
- -
-
-

- -

-
-
-
-

- -

-
-
-

- -

-
-
-
-
-
- -
-
-
- - - 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';