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.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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.
-
-
-
-
-
-
- Repositories
-
-
-
- All
- Public
- Private
- Sources
- Forks
-
-
-
- π
-
- coco Primary
-
-
-
- π
-
- marksheet Link
-
-
-
- π
-
- minireset.css Warning
-
-
-
- π
-
- repo.github.io
-
-
-
- π
-
- hello/infboard
-
-
-
- π
-
- world
-
-
-
- remember me
-
-
-
- Reset all filters
-
-
-
-
-
-
- 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.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Username
-
-
-
- π€
-
-
- β
-
-
-
This username is available
-
-
-
-
Email
-
-
-
- π§
-
-
- β
-
-
-
This email is invalid
-
-
-
-
Subject
-
-
-
- Select dropdown
- With options
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Submit
-
-
- Cancel
-
-
- Reset
-
-
-
-
-
-
-
-
-
-
- π€
-
-
- Choose a fileβ¦
-
-
-
- Screen Shot 2020-01-01 at 15.00.00.png
-
-
-
-
-
-
-
-
-
-
- π€
-
-
- Choose a fileβ¦
-
-
-
- Screen Shot 2020-01-01 at 15.00.00.png
-
-
-
-
-
-
-
-
-
Transport network
-
-
-
-
- XCB
- ICAN
- Cash
-
-
-
- βοΈ
-
-
-
-
- β
-
-
-
-
-
- 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.
-
- Donec blandit a lorem id convallis.
- Cras gravida arcu at diam gravida gravida.
- Integer in volutpat libero.
- Donec a diam tellus.
- Aenean nec tortor orci.
- Quisque aliquam cursus urna, non bibendum massa viverra eget.
- Vivamus maximus ultricies pulvinar.
-
-
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.
-
-
-
- One
- Two
-
-
-
-
- Three
- Four
-
-
- Five
- Six
-
-
- Seven
- Eight
-
-
- Nine
- Ten
-
-
- Eleven
- Twelve
-
-
-
-
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';